DDS to ROS2 messages
What's the latest recommended approach for interfacing between native DDS and ROS2 messages assuming they are wire compatible? I'm on the latest rolling distro.
I have a system that has applications that publish on native DDS and I need to interface these to my ROS2 nodes. I understand there are specific prefixes in the topics names for ROS2 in DDS. In the past, I have also seen methods of interfacing native DDS to a specific rmw e.g. FastDDS, Cyclone or Connext. Is there a middleware-agnostic approach to interface to native DDS in ROS2?
There seems to be a way but it's not transparent. Here a user already told about some of his findings. Also I'm trying right now to communicate between ROS2 and CycloneDDS and have an issue running in the CycloneDDS Github.
Thanks. I think I am on a similar path.
I have custom ROS 2 message types I need to use with a native DDS application. So I needed to convert the custom messages to IDL that could be used in the native DDS application. I first started with the utility provided by ros2 that I found from comments here. I was able to run this utility and generate an IDL. However, after trying this IDL out, I found my native DDS application would not see the message. After some more research, I discovered what others have discovered i.e. the additional nesting in the IDL as well as the name mangling. So the ros2 tool doesn't generate the correct IDL. I still haven't found a tool that generates the correct IDL with the name mangling. I manually updated the IDL and will try it on the native DDS application again.
So what i found out so far: