Skip to content

Network & DDS Configuration

The RBQ ROS 2 driver uses CycloneDDS as its middleware. This page explains how to configure the network so that your developer PC can discover and exchange topics with the robot.


Network topology

HostRoleDefault IP
Wi-Fi Access PointL2 bridge between robot and user PC192.168.0.1
Robot PC (Motion)Runs rbq_driver, publishes all topics192.168.0.10
Developer PCRuns your ROS 2 nodes192.168.0.12 (DHCP)

Both machines must be on the same subnet (192.168.0.0/24) and reachable via ping before DDS discovery will work.


Required setup

1. Set the RMW implementation

Both the robot driver and your terminal must use CycloneDDS:

bash
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp

Add to ~/.bashrc to persist across terminals:

bash
echo 'export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp' >> ~/.bashrc
source ~/.bashrc

2. Domain ID

ROS_DOMAIN_ID is not set by the robot or any RBQ script — both sides use the default domain 0. No extra configuration is needed.


Verify connectivity

bash
# 1. Ping the robot
ping 192.168.0.10

# 2. Check topics appear
ros2 topic list

# 3. Echo a live topic
ros2 topic echo /rbq/imu/IMU_state --once

Firewall

If ros2 topic list returns nothing but ping succeeds, UFW may be blocking multicast:

bash
# Allow DDS traffic on the Wi-Fi interface (replace wlp4s0)
sudo ufw allow in on wlp4s0
sudo ufw allow out on wlp4s0

# Or disable UFW entirely for testing
sudo ufw disable

Troubleshooting

No topics appear

  1. Confirm both machines are on the same subnet: ping 192.168.0.10
  2. Confirm RMW_IMPLEMENTATION=rmw_cyclonedds_cpp is set in every terminal you use
  3. If you have multiple network interfaces (Wi-Fi + Ethernet), specify the correct one explicitly:
bash
export CYCLONEDDS_URI='<CycloneDDS><Domain><General><Interfaces>
  <NetworkInterface name="wlp4s0"/>
</Interfaces></General></Domain></CycloneDDS>'

Replace wlp4s0 with your Wi-Fi interface name (ip link show to check).

Topics appear but lag or drop

Multicast may be unreliable over some Wi-Fi routers. Add a unicast peer hint:

bash
export CYCLONEDDS_URI='<CycloneDDS><Domain><General>
  <Interfaces><NetworkInterface name="wlp4s0"/></Interfaces>
</General><Discovery><Peers><Peer address="192.168.0.10"/></Peers></Discovery>
</Domain></CycloneDDS>'

rbq_msgs types show as unknown

The custom message package must be built and sourced on your PC:

bash
cd ros2
colcon build --packages-select rbq_msgs
source install/setup.bash

This user manual is intended for RBQ users.