ROS 2 DDS Direct Test¶
Purpose¶
Validate the ROS 2 DDS transport path over Ethernet before running full ShadowHound bringup. This exercises the go2_ros2_sdk driver and confirms topics flow over CycloneDDS without relying on WebRTC.
Prerequisites¶
- Robot reachable over Ethernet or LAN where DDS multicast is allowed.
- ROS 2 Humble environment available in the devcontainer.
- Network allows UDP 7400-7500 for CycloneDDS discovery/data.
Steps¶
- Ensure CONN_TYPE is set to
cyclonedds(or unset) and RMW uses CycloneDDS. - Launch the Unitree SDK driver normally.
- Verify basic topics and run a couple of quick checks.
Environment¶
# Optional: make DDS explicit (default is CycloneDDS)
export CONN_TYPE=cyclonedds
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
# Optional: pin ROS_DOMAIN_ID for isolation
export ROS_DOMAIN_ID=0
Launch Driver¶
cd /workspaces/shadowhound
source /opt/ros/humble/setup.bash
# If you've built the workspace locally, source it too
[ -f install/setup.bash ] && source install/setup.bash
# Use the upstream/dimos launch file via helper script
./scripts/test_dds_direct.sh
Quick Checks¶
- List topics and confirm GO2 data is present:
ros2 topic list | grep -E "go2_|camera|imu|odom"
- Echo state once:
ros2 topic echo /go2_states --once
Troubleshooting¶
- If topics don't appear:
- Verify Ethernet connectivity to robot bridge.
- Check firewall rules for UDP 7400-7500.
- Ensure only one ROS_DOMAIN_ID is in use across machines.
Validation¶
- [ ] Driver launches without errors
- [ ]
/go2_statespublishes - [ ] Camera/IMU topics appear (if enabled)
- [ ] No WebRTC-only topics required
See Also¶
- WebRTC Direct Test - WiFi alternative with camera streaming
- Network Topologies - Router and LAN setup for DDS
- Startup Validation - Common launch issues