-
Notifications
You must be signed in to change notification settings - Fork 1
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
Proposal for simulation interfaces #1
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Adam Dąbrowski <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As stated in the comments, I think EntityState should not be a part of Entity. Instead, a message EntityWithState could be created to bind the two.
Co-authored-by: Martin Pecka <[email protected]> Co-authored-by: Steve Peters <[email protected]>
Signed-off-by: Adam Dąbrowski <[email protected]>
Signed-off-by: Adam Dąbrowski <[email protected]>
Signed-off-by: Adam Dąbrowski <[email protected]>
Signed-off-by: Adam Dąbrowski <[email protected]> robot_namespace -> namespace Signed-off-by: Adam Dąbrowski <[email protected]>
Signed-off-by: Adam Dąbrowski <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left a couple comments. Unfortunately, I haven't had much time to review this PR, so there are still parts I haven't reached. I'll be on vacation for a couple weeks, but I'll try to make this a priority when I return.
Signed-off-by: Adam Dąbrowski <[email protected]>
Signed-off-by: Adam Dąbrowski <[email protected]>
Signed-off-by: Adam Dąbrowski <[email protected]>
Signed-off-by: Adam Dąbrowski <[email protected]>
All comments so far have been addressed, please take another look and approve / suggest changes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for putting in this work.
For progress sake, you may want to consider breaking this up into several PRs. If you made one with just the package metadata, then merge that immediately, and then the other bits can go in chunks.
I'd also like to integrate another interface for collisions but that is blocked at the moment.
Co-authored-by: David V. Lu!! <[email protected]>
Co-authored-by: David V. Lu!! <[email protected]>
- wording change for stepping service - features message - comment documentation for USD and URDF formats - custom formats list field Signed-off-by: Adam Dąbrowski <[email protected]>
@DLu thank you for the review, I applied most of your comments and responded to remaining 2 with some argumentation. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry for the long delay in responding. I like the scope of the PR and the direction it's been evolving so far.
I'd like to ask if @omichel would also chime in for the Webots perspective.
|
||
std_msgs/Header header # Frame and timestamp for pose and twist. Empty frame defaults to world. | ||
geometry_msgs/Pose pose # Pose in reference frame, ground truth. | ||
geometry_msgs/Twist twist # Ground truth body twist in the reference frame. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think for ground truth twist, the body twist has to be expressed in the world frame. In the convention mentioned in ros2/common_interfaces#240, we'd have:
body_frame_id = "frame_name_of_entity"
header.frame_id = "world"
reference_frame_id = "world"
@tfoote can you confirm? When both header.frame_id
and reference_frame_id
are "world", it looks like a spatial twist, but that's not what we need here. Maybe we need to clarify that the VelocityStamped
message always represents body twists, but expressed in the frame specified by reference_frame_id
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@DLu asked me to take a look at this due to my work on https://github.com/sea-bass/pyrobosim -- as such, you now have even more feedback in this very ambitious (and unenviable) task of standardizing such a thing.
Hope this is helpful!
Co-authored-by: David V. Lu!! <[email protected]> Co-authored-by: Addisu Z. Taddese <[email protected]>
- Changed SpawnPose to NamedPose, added tags. - SpawnEntity interface substantially updated. - Some improved documentation, especially regarding spawning. - applied other code review comments Signed-off-by: Adam Dąbrowski <[email protected]>
# Robot or other object which can be spawned in simulation runtime. | ||
|
||
string uri # URI which will be accepted by SpawnEntity service. | ||
string description # Optional description for the user, e.g. "robot X with sensors A,B,C". |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, this field makes more sense as an input for the GetSpawnables
service. I'd imagine a simulator can have multiple sources of spawnables:
- Local disk (other ROS packages, files placed in directories where the simulator expects, etc.)
- Remote (Files from a remote service, such as Fuel)
Both of these sources may have subcategorizations to limit the number spawnables returned as well the depth of searching required.
We could make the field an array of strings and let the simulator define what the values are, or we can make them enums if there is broad agreement on what the enums should be. I lean toward an array of strings.
Signed-off-by: Adam Dąbrowski <[email protected]>
Following ros-infrastructure/rep#410, this PR contains a first version of simulation interfaces.