[CycloneDDS] Sharing topic between Unitree Go2 and Containers

I have the Go2 up and running with your qre_go2 repository [foxy-nvidia branch]

Now, I’m trying to set up a node on a PC that is not running Ubuntu [i.e., Debian 12] using the official ROS2 containers.
The container is up and running, and I was able to compile the foxy branch of the repo. However, I’m not able to obtain anything when running ros2 topic list

I’ve installed the ros-foxy-rmw-cyclonedds-cpp package, configured the RMW_IMPLEMENTATION variable, and set the CYCLONEDDS_URI variable to point to an XML file.
However, any XML configuration setup I have found online is not able to sort out the issue. Some packets are exchanged as shown by the ddsperf tool.

Dear @TheNino,

You have to follow the instructions carefully as mentioned in the repository:

Installation

Requires ROS2 Foxy on Ubuntu 20.04

  • Install Dependencies
sudo apt install ros-$ROS_DISTRO-rmw-cyclonedds-cpp
sudo apt install ros-$ROS_DISTRO-rosidl-generator-dds-idl
  • Unsource ros foxy in the terminal (i.e. by commenting it out from .bashrc)
colcon build --packages-select cyclonedds 
source install/setup.bash
source /opt/ros/foxy/setup.bash
colcon build --symlink-install 
  • Connect to 123 network with static ip (No DHCP, as it disrupts the network)

Note down the network interface

  • Edit and source go2_bringup/config/setup.bash with the corrected network interface e.g.
#!/bin/bash

echo "Setup unitree ros2 environment"
source /opt/ros/foxy/setup.bash
source $HOME/qre_go2/install/setup.bash

export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export CYCLONEDDS_URI='<CycloneDDS><Domain><General><Interfaces>
                            <NetworkInterface name="enp92s0" priority="default" multicast="default" />
                        </Interfaces></General></Domain></CycloneDDS>'
  • Add to .bashrc

  • Check ros2 topic list.

Please tell in which step it is not working in?

If Ubuntu 20.04 with ROS2 Foxy is not bare metal but is installed in a docker container (i.e., taken from the official ROS repository) the basic version of the CYCLONEDDS_URI is not enough to allow communication between the PC and the Go2.

Correct, it requires configuration as per Unitrees documentation.

Can you please provide a link? We were not able to find a valid configuration to set up ports and peers to support containerized ROS.

Dear @TheNino,

We ourselves do not use the containerized ROS due to complications with the networks settings, so unfortunately we cannot help you in there.