Replies: 6 comments 6 replies
-
Is that a template or do you want me to introduce myself? Re: ROS1/ROS2 support. I don't know basically anything about ROS2 wire protocol other than that it's built on DDS. Given that things like were bridging between ROS1 and ROS2 were possible I suspect from a paradigm level it's not going to be incompatible with having a single RosClient trait. However, I also think we can take our time designing the trait and in parallel start to work out backend support and re-implementation of ROS1 ros_comm and the equivalent in ROS2. For ROS1 at least I see the path being something like this:
It will be easier to find a common trait API that can work for both rosbridge and ros1 if we've got an implementation already in place that we're just trying to massage the compiler to accept. |
Beta Was this translation helpful? Give feedback.
-
For ros2, the https://github.com/ros2-rust/ros2_rust/ exists and seems to have a lot of info we could pull from. I've been poking around in their codebase today. Looks like they've done a non-async api, but that is kinda forced by wrapping the underlying C lib (as ROS2 reccomends). I think you are totally right that slowly evolving the central trait is a great path forward. Building out the ros1 portions behind a feature flag and using that to as proving grounds for common interface makes a ton of sense to me. I do think at some point we should really reach out to the authors of ros2_rust and rosrust and see if we can't get some kind of summit together on a shared future. I'm still not sure if this crate support ros1 and ros2 native communications is actually the "right" thing or the best path forward. An alternative to that could be. We build the best rosbridge crate, we work with the other folks to define a common "RosClient" trait, and then we impl that trait on all 3 crates. Move towards a shared rust eco system for ROS instead individual silos of implementations. All of this to kinda say I'm hesitant to start impl on any of this even if we have a technical path forward. |
Beta Was this translation helpful? Give feedback.
-
Sorta "zooming out" I'm potentially more interested in us supporting ros2 rosbridge as a next step over the native implementations. I really haven't done the research to see what that looks like yet. |
Beta Was this translation helpful? Give feedback.
-
@Carter12s I'm reviving this thread to plan ROS1 native implementation. I need a better understanding of what's been implemented already as it was a while ago and it was a large PR. What is possible with current If the above is not possible, I think it makes sense to create a long-lived feature branch with the goal of developing that functionality (and putting it behind an |
Beta Was this translation helpful? Give feedback.
-
Hell yeah... Good call, and frankly it has also been long enough for me that I had to go double check the current state.
Yes, too a point. I'd recommend looking at (and running) src/ros1/master_client/test which has good coverage of the currently implemented features. We're able to call a variety of xmlrpc endpoints on the rosmaster and parse the results. We're able to register and unregister services, subscribers, and publisher as have rosmaster report our node as a known entity for each of them. There is a second half of this, is that to be compliant with ROS API our node must also host an XMLRPC server and provide a series of endpoints itself. These are found in src/ros1/node_server with decent tests. Several of these are unimplemented or partially implemented and need to be finished for full compliance.
No, but we're getting very close. I wanted to get our node publishing and regular ros node subscribing as the first case to test. We're up to the point of the subscriber node calling "requestTopic" on our nodes' xmlrpc server, but we are not yet validly replying to that message. Doing so requires us opening a TCPROS socket and giving the socket URI back to the subscriber. I would say we are fully through the "xmlrpc negotiation" phase of the communication, and next step is really standing up TCPROS if we want to get "light through the system".
My response to this is multi-faceted:
Next Goals:
Upcoming Tasks to Achieve this Goal:
I'd be really happy if we just got native publishing dialed, I think once we have this done, subscribtions, and services will come super fast. |
Beta Was this translation helpful? Give feedback.
-
What are your thoughts re: rewriting handy tooling like |
Beta Was this translation helpful? Give feedback.
-
👋 Welcome!
We’re using Discussions as a place to connect with other members of our community. We hope that you:
build together 💪.
To get started, comment below with an introduction of yourself and tell us about what you do with this community.
Beta Was this translation helpful? Give feedback.
All reactions