Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Trajectory class #164

Merged
merged 8 commits into from
Mar 18, 2024
Merged

Add Trajectory class #164

merged 8 commits into from
Mar 18, 2024

Conversation

sea-bass
Copy link
Owner

@sea-bass sea-bass commented Mar 17, 2024

Adds a new Trajectory class that replaces the (t_pts, x_pts, y_pts, yaw_pts) tuple that was being used before.

Closes #135.

@sea-bass sea-bass self-assigned this Mar 17, 2024
Copy link

github-actions bot commented Mar 17, 2024

Coverage

Coverage Report
FileStmtsMissCoverMissing
__init__.py00100% 
core
   __init__.py90100% 
   dynamics.py430100% 
   gazebo.py136894%55, 124, 230, 244–248
   hallway.py731086%59, 61, 63, 96, 158, 196–199, 205
   locations.py1262183%53, 55, 69, 84–85, 87, 98–99, 101–102, 119, 177, 192, 217, 227, 273, 284–285, 287–288, 312
   objects.py69494%78, 106, 137, 197
   robot.py2145872%140–141, 203, 216, 263, 277–278, 282, 286, 292–293, 295–296, 313–314, 342, 344–345, 366–367, 370–373, 376–378, 403, 407–409, 411, 413–416, 429–431, 435, 437–439, 441, 444–445, 448, 470–471, 479, 484–489, 492, 505
   room.py48197%113
   world.py57113875%146–147, 183–184, 188, 241–242, 244–245, 273–274, 325, 339–340, 342–343, 372–376, 378–380, 382–383, 386, 390–394, 397–399, 402–409, 440, 476–477, 480, 496, 526–527, 538, 541, 563–567, 569–571, 574–575, 578–581, 583, 586, 588–590, 592–594, 596, 615, 625–629, 664–665, 668–671, 688–689, 695–696, 698–699, 701, 703–704, 706, 708–709, 719–720, 723, 725, 739, 741, 748, 795, 826–827, 846–847, 851–852, 887–888, 890, 907–908, 927–931, 943–946, 958–961, 986–987, 989, 1033–1034, 1166–1167
   yaml_utils.py1061189%64, 68, 152–154, 158–159, 182–183, 207–208
gui
   __init__.py20100% 
   main.py1522980%22, 24–26, 28, 49, 178–181, 188–191, 193, 196–202, 206–208, 212–213, 219, 230
   world_canvas.py2265276%34–36, 110, 112, 114, 177, 181, 232–237, 243–244, 246–248, 253–254, 257, 260–262, 265, 270–271, 273, 300, 322–327, 330, 333–334, 349–351, 354, 371, 400, 418–419, 421–422, 464, 480, 487
manipulation
   __init__.py10100% 
   grasping.py2366174%102, 110–112, 114–122, 124, 132, 462, 464–466, 470–472, 566–568, 571–575, 583, 586–588, 593–594, 600–604, 607–614, 617–619, 628, 630, 632–638
navigation
   __init__.py30100% 
   a_star.py781087%67–72, 74–76, 165
   execution.py34488%46–47, 49–50
   occupancy_grid.py1391489%44–47, 49–53, 56, 192, 226, 234, 238
   path_planner.py26676%32, 35, 37, 41, 84, 89
   planner_base.py591771%29–35, 51, 57–59, 140–145
   prm.py725622%40–44, 46, 50–51, 54, 57–64, 66–67, 76–79, 85, 101–102, 104–109, 111–112, 115–118, 121–126, 135, 144, 154, 156, 158–159, 161, 174–178
   rrt.py172795%228, 353–354, 360–361, 363, 392
   world_graph.py70395%118, 121, 145
planning
   __init__.py00100% 
   actions.py664334%59–60, 62, 66–75, 77–80, 82–86, 88–91, 93–97, 99–100, 102–104, 150–151, 154–158
planning/pddlstream
   __init__.py7185%13
   default_mappings.py90100% 
   planner.py40880%119–126
   primitives.py57296%68, 208
   utils.py85396%66, 99–100
utils
   __init__.py00100% 
   general.py33487%23, 45, 51–52
   knowledge.py1391688%90–91, 100, 135–138, 145, 149–150, 163, 178, 182, 224, 240, 295
   motion.py60690%56, 67–71
   polygon.py1110100% 
   pose.py89396%79, 211, 227
   search_graph.py93396%241–243
   trajectory.py650100% 
TOTAL351959982% 

Tests Skipped Failures Errors Time
168 0 💤 0 ❌ 0 🔥 3m 19s ⏱️

Copy link
Collaborator

@eholum eholum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Giving me work! Also check out that sweet, sweet cached docker build.

Took a quick skim and added some small thoughts. Nothing too important. I haven't checked anything locally... yet. This will encourage me to finally setup my new computer.

:type yaw_pts: :class:`numpy.array`
"""
num_pts = len(t_pts)
if len(x_pts) != num_pts or len(y_pts) != num_pts or len(yaw_pts) != num_pts:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is six of one, half dozen of the other, but if you stored a list of something more akin to StampedPose (ugh) it would simplify the code slightly. You could just add a time value to Pose and then only use it in trajectories. Then I think the only place that you would need to do conversions to/from np arrays is in interpolate, and you could delete a bunch of these kinds of statements and those on line 37. It's still the same amount of converting back and forth though...

Though idk how you feel about adding a time value to Pose. Also this is just fine so might not be worth changing.

Copy link
Owner Author

@sea-bass sea-bass Mar 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this seems to work well, actually. I might have been overthinking how bad that was gonna be. Thanks!

As a huge bonus, storing as poses lets me do the interpolation for a generic SO(3) trajectory -- not that pyrobosim is using that right now, but if it ever does we're all set here 💪🏻

pyrobosim/pyrobosim/utils/trajectory.py Show resolved Hide resolved
pyrobosim/pyrobosim/utils/trajectory.py Outdated Show resolved Hide resolved
pyrobosim/pyrobosim/utils/trajectory.py Outdated Show resolved Hide resolved
pyrobosim/pyrobosim/utils/trajectory.py Outdated Show resolved Hide resolved
test/utils/test_trajectory.py Outdated Show resolved Hide resolved
test/utils/test_trajectory.py Outdated Show resolved Hide resolved
@sea-bass sea-bass requested a review from eholum March 18, 2024 01:05
Copy link
Collaborator

@eholum eholum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can still bring my apple to the bathroom, and that's all that matters.

image

pyrobosim/pyrobosim/utils/trajectory.py Outdated Show resolved Hide resolved
@sea-bass sea-bass merged commit 5468516 into main Mar 18, 2024
6 checks passed
@sea-bass sea-bass deleted the trajectory-class branch March 18, 2024 02:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Use Trajectory class instead of tuples
2 participants