Inter-Robot comms with dds over wifi?
I have a situation where I have multiple identical ROS2 robots (still stuck on dashing...) that need to communicate with a central domain participant over a sketchy wireless network. Currently doing this with a custom jenk udp packet solution, but I'm wanting to see if it can be replaced with ros2/dds communication instead.
What is the recommended way to use dds (specifically fastrtps) to provide low-bandwidth communications between robots and central domain participant, while preventing high-volume internal robot traffic from getting published on the wireless network?
From what I can understand about the fastrtps profiles, it looks like that's the way to go, but I wanted to try and get other opinions/feedback. I'd like to avoid as much unique configuration per robot as possible, but not sure if I can get around that.
Asked by ChuiV on 2021-03-04 15:14:41 UTC
Answers
Here's what I ended up doing. I made node similar in function to the eprosima Soss tool or the ros1 bridge. This node uses the rclcpp api to create a participant, then uses a conglomeration of rmw_fastrtps_cpp code, modified to allow specifying a fastrtps profile name to use for that publisher or subscriber. This allows me to configure this bridge to publish and subscribe ros2 topics, and forward those messages according to the fastrtps profile. This lets me constrain all high-volume traffic to the robot, while being able to select which of those messages gets sent to the fleet controller (link to our Mobius Command and Control software). This also gives me the flexibility to take advantage of modifying the transport, discovery, qos, domain, partition, etc on the dds traffic over the wireless network.
Asked by ChuiV on 2021-10-06 08:36:06 UTC
Comments