Communication between OpenDDS and ROS2 (eprosima Fast DDS) #3974
Replies: 9 comments 1 reply
-
We can help with this. Please add some combination of logs, wireshark packet capture, and steps to reproduce the issue. It would be ideal to have a minimal example using eProsima's DDS without ROS2, but since the ROS2 code is open source (and we are familiar with it) we can work with that too. |
Beta Was this translation helpful? Give feedback.
-
Steps to reproduce:
The publisher is recognised by the ros command line tool
With the second publisher visible being the the publisher seems to be recognised in the topic monitor as well but the subscriber never actually receives any of the messages where as the teleop_key works as intended and the published messages can be seen moving the turtle and with At debug level 10 here is a snippet of the terminal output of the openDDS publish attempts
In terms of wireshark I'm unsure what I should be looking for, I am able to see the initial acknowledge attempt from OpenDDS and the FastDDS communication but don't really understand what I am looking for or what I should share here. Let me know if there's anything else that could make this easier or is unclear I very much appreciate the help! |
Beta Was this translation helpful? Give feedback.
-
Is there something we can run that doesn't require a graphical desktop? Would be great to just SSH in to the build server and run commands. If not we can set up a full desktop.
Please add the specific steps to compile and run
The DataWriter doesn't have any matched DataReaders to send this data sample. So the part of the log we're looking for involves discovery.
This article may be helpful https://objectcomputing.com/resources/publications/sett/october-2021-wireshark-and-opendds |
Beta Was this translation helpful? Give feedback.
-
I've setup an example repo with build steps in the readme. It's a simple example attempting to publish a test string to the /chatter topic Should be able to run the basic ROS2 command line listener node using Seem to be running into the same discovery issue you mentioned with this example aswell |
Beta Was this translation helpful? Give feedback.
-
I got this output from meson:
|
Beta Was this translation helpful? Give feedback.
-
Repo updated with opendds install script and instructions, make sure to delete the build folder and redo the build steps after installing. Quick note: meson expects OpenDDS to be installed and findable by either pkg-config or cmake FindPackage |
Beta Was this translation helpful? Give feedback.
-
So it seems that I have fixed the problem (atleast for a basic string message) There were two problems first one relevant to opendds. The default DatawriterQoS representation value is left blank for openDDS while for ROS2 is set to Secondly there was an ip mismatch which was easily fixed by setting DCPSInfoRepo to localhost. Both solved by the help of the RTI Admin Console tool that allows match analysis to see which QoS settings are mismatched. Hopefully the bit about XCDR is useful for anyone trying to do this in the future. |
Beta Was this translation helpful? Give feedback.
-
When it was set to the default and didn't work, did you observe |
Beta Was this translation helpful? Give feedback.
-
Hello @spelletier1996 and OpenDDS team, I've been closely following the discussion in #3974 regarding communication between OpenDDS and ROS2 using eprosima Fast DDS. It's great to see the progress made on basic string messages. My project also involves integrating OpenDDS with ROS2, but extends beyond simple strings to include more complex data types like sensor data, status information, and control commands. Have there been any developments in transmitting these more complex data types? Additionally, I wonder if the OpenDDS team might have insights or suggestions on this topic. The resolution of the DatawriterQoS and IP mismatch issues was enlightening, and I'm curious if similar approaches could be applied for complex data types. Any guidance or advice from either @spelletier1996 or the OpenDDS team would be greatly appreciated. Thank you for your contributions to the community and for any help you can provide. Best regards |
Beta Was this translation helpful? Give feedback.
-
I would like to establish a communication between non ROS2 program running OpenDDS and ROS2 with eprosima Fast DDS as the middleware. I have been using the turtlesim example nodes as well as its respective topics (specifically the /turtle1/cmd_vel topic) but have not succeeded in actually establishing either a subscription or actual publication of data. ROS2 seems to be able to see the OpenDDS topics but something is missing preventing the final publishing. If any of the OpenDDS devs have any experience with OpenDDS and Fast DDS interoperability or with ROS2 your insight would be much appreciated.
What we have tried so far:
Apologies if this is not the appropriate place for this type of question.
Beta Was this translation helpful? Give feedback.
All reactions