-
Notifications
You must be signed in to change notification settings - Fork 108
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
Review imported messages from ROS 1 #1
Comments
|
Please make sure to enable the linters for the message packages. |
Ok, I'll make a PR with the fixes that those stricter rules require, so everyone can see it.
I'll do that when I propose a pr to remove
Will do. Is it just the |
Another question, @ros2/owners should we drop After doing some archeology I've found some references in the now defunct ros-trac which seem to indicate that removing
And this sparse ticket from Brian:
@tfoote also referenced Brian's ticket from ROS answers: http://answers.ros.org/question/55126/why-does-ros-overwrite-my-sequence-number/?answer=55132#post-id-55132 Jack also seems to mention it here, with backup from @tfoote again: http://answers.ros.org/question/38856/ros-header-increasing-seq-in-service-calls/?answer=38933#post-id-38933 |
RTPS/DDS provides a 64 bit sequence number, so if we do want to expose
|
Well, I think exposing the sequence number might be ok, but it should be an immutable part of the middleware interaction, rather than a user settable element in only some of the messages. I think the fact that it was inconsistently set by publish was confusing to users, which is evident in the questions about Python auto incrementing for pub/sub and the seq not getting set for services. I'd personally vote to get rid of it, and optionally expose the DDS sequence number through our middleware API. It depends on how we implement intra-process comms, but either way having a sequence number in intra-process comms is probably trivial to implement. |
If we alter the message definitions imported from ROS 1 what should the strategy then be for the bridge?
I remember a similar discussion about the But we should be careful about making changes since every modification will make the bridge more complicated. |
+1 for removing seq. I think typing frame_id would be very valuable especially as we consider multi-robot system coordination. And on top of making the bridge more complicated, it will make porting code forward just that much harder. |
I can't imagine a scenario where not exchanging std_msgs/Header with std_interface/Header would be acceptable. Even if messages cannot be automatically exchanged (and even if they can be), it should always be possible for developers to optionally insert some kind of transfer function to help convert between messages. Pending that dynamic capability, we should do everything we can for the core messages in our first static bridge. If we have a message that needs to change so drastically, maybe we reconsider the idea of not allowing it through the bridge, but that's a pretty extreme reaction.
I think it depends on the case by case basis. For sequence number, we can do a few different things. If the sequence number is coming from ROS 1, then we'll have to ignore it and use what ever sequence number is provided by DDS (assuming we can't set the sequence number in ROS 2), but for messages originating from ROS 2 we can stuff the ROS 1 I'm not up to speed on why we want a FrameId msg, but that seems like a straight forward transfer function. My feeling is that keeping the migration simple is important, but we shouldn't shy away from changes like this because this is really the only opportunity we have to make these adjustments. I agree that we shouldn't make arbitrary changes though, like changing field names unless there is a good rational for doing so. We can also summarize these proposed changes to the base messages and share them with the ros-ng-sig and get feedback. |
In 6b792c4 I've converted I'll make a pr for removing |
I'm starting to migrate other interfaces from ROS 1 packages in
Does that sound ok to everyone? |
Sounds good to me. |
Agreed |
+1 |
1 similar comment
+1 |
Ok, I went ahead an ported everything, except the
With the idea that we can enable them again when and if we need them. I'll test again for others, but the I've also refactored the examples repository and made changes necessary to work with the renaming of I also put a tag on the I'll be opening more pr's soon and testing them on the farm. Hopefully all of this will be ready for review by tomorrow and it will be minimally disruptive to other branches people are starting. |
Please feel free make a last pass over the current state of this repository and comment here, but I'm going to close this for now. |
While disabling most of the messages is a viable short term fix (to reduce the compile time) this seems to be an important thing to address. |
What should be addressed? The compile time? To be clear I'm not disabling them due to ros2/rosidl#25. |
Yes, if the compile time is "so bad" we should consider looking into it to come up with ways to speed it up. |
Short of having less messages or building with less rmw implementations by default, I'm not sure what we can do. It's not that the compile time is unbearable, but I just thought that as long as no one is using those messages that we might as well save some compile time. |
On
I'm not sure I understood the multi-robot comment cited above (#1 (comment)). Is the intention to use the |
@adolfo-rt We can't remove the frame_id. The Header is primarily a pair of frame_id and timestamp. If you don't need the frame_id you can just use a timestamp in the datatype. There are some tools which look for the Header as a subdatatype. Such as the message syncronizers. They could be generalized by the introduction of a standard name for a timestamp field where it could be made to work with any timestamped or Header containing message. The question about frame_ids is whether to leave it as a string datatype or to make it a strongly typed datatype FrameId or something similar. When data transfers between robot systems with different tf trees all data will need to be rewritten to be consistent with the target systems frame_id tree. left_gripper from two robots must be disambiguated when you have two robots with left hands. Both the transform tree and the message with the frame_id embedded must be converted. If the frame_id is strongly typed introspecting for the conversion would be a lot simpler. While at the moment we cannot apply a frame_id remapping to any string argument, they need to be manually whitelisted. |
Co-authored-by: Shane Loretz <[email protected]>
…tamped-msg Suggestions to VelocityStamped
In 5240924 I just copied them over 1 for 1, only removing trailing whitespace and ensuring a newline at the end of the files. You mentioned that there would be some changes that need to be made to the fields? What additional things should I check? Some things I plan to do currently:
time
andduration
withbuiltin_interfaces/Time
andbuiltin_interfaces/Duration
.I'll also propose pr's for some more substantial changes which I think we'll have to discuss before committing.
Is it required to always use
<package_name>/<msg_name>
now? Or is just the<msg_name>
allowed within the same package? I think it's the former, and if so, I think we'll need to fix that in a few places as well.@ros2/owners
The text was updated successfully, but these errors were encountered: