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

Simulate simple 2D robot dynamics #151

Merged
merged 7 commits into from
Nov 4, 2023
Merged

Simulate simple 2D robot dynamics #151

merged 7 commits into from
Nov 4, 2023

Conversation

sea-bass
Copy link
Owner

@sea-bass sea-bass commented Oct 29, 2023

This PR adds simple 2D robot dynamics to core (non-ROS) pyrobosim.

Partially closes #148

@github-actions
Copy link

github-actions bot commented Oct 29, 2023

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__.py40100% 
   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
   trajectory.py500100% 
   world_graph.py70395%118, 121, 145
planning
   __init__.py30100% 
   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__.py00100% 
   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
TOTAL350159882% 

Tests Skipped Failures Errors Time
163 0 💤 0 ❌ 0 🔥 5m 17s ⏱️

@sea-bass sea-bass marked this pull request as ready for review October 29, 2023 20:36
Copy link
Collaborator

@ibrahiminfinite ibrahiminfinite left a comment

Choose a reason for hiding this comment

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

I like how the dynamics is implemented and only have a few small comments.

pyrobosim/pyrobosim/core/dynamics.py Outdated Show resolved Hide resolved
@@ -23,6 +24,10 @@ def __init__(
radius=0.0,
height=0.0,
color=(0.8, 0.0, 0.8),
max_linear_velocity=np.inf,
Copy link
Collaborator

Choose a reason for hiding this comment

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

I am in favour of always getting a limit from user instead of an infinity default limit.

Copy link
Owner Author

Choose a reason for hiding this comment

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

I think the default should actually be unlimited, because there will probably be a core set of users who just want to command a velocity based on something else. So I might leave this as is.

pyrobosim/pyrobosim/core/robot.py Outdated Show resolved Hide resolved
:return: True if the robot is moving, False otherwise.
:rtype: bool
"""
return self.executing_nav or np.count_nonzero(self.dynamics.velocity) > 0
Copy link
Collaborator

Choose a reason for hiding this comment

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

A get_current_velocity() method in the RobotDynamics2D could be useful here, instead of directly accessing the velocity attribute.

Copy link
Owner Author

Choose a reason for hiding this comment

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

I think the RobotDynamics2D instance can be considered a part of the Robot class... so I'm OK leaving this to just directly access velocity here, as is done in Robot.get_pose() which directly accesses robot.dynamics.pose.

@sea-bass
Copy link
Owner Author

sea-bass commented Nov 4, 2023

Thanks for the review @ibrahiminfinite! I made a few of the changes suggested, and will most likely leave the rest as is, if that's okay. Will work on the ROS wrapper now...

@ibrahiminfinite
Copy link
Collaborator

Thanks for the review @ibrahiminfinite! I made a few of the changes suggested, and will most likely leave the rest as is, if that's okay. Will work on the ROS wrapper now...

Yeah, the rest can be ignored.
This PR can go in then I guess.

@sea-bass sea-bass merged commit 772db49 into main Nov 4, 2023
6 checks passed
@sea-bass sea-bass deleted the robot-dynamics branch November 9, 2023 02:33
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.

Support basic robot simulation and velocity commands
2 participants