How to run example talker/listener on 2 machines with different ipaddr?

Hi @jwang11

ROS2 (and more precisely DDS) uses UDP multicast to communicate the metadata allowing different node to discover each other and establish communication.
Additionaly DDS allows you to specify a domain ID that is a logical barrier to segregate networks.

If your two machines are on the same network and your network configuration allows UDP multicast communication you should be able to run talker/listener across machines by running:
On machine 1:

source <YOUR_ROS2_WORKSPACE>/setup.bash
ros2 run demo_nodes_cpp talker

On machine 2:

source <YOUR_ROS2_WORKSPACE>/setup.bash
ros2 run demo_nodes_cpp listener

If you don’t want to interfere with other DDS systems on the same network you can set a domain ID, the domain ID is a number between 0 and 255, I’ll use 42 in the following example:
On machine 1:

export ROS_DOMAIN_ID=42
source <YOUR_ROS2_WORKSPACE>/setup.bash
ros2 run demo_nodes_cpp talker

On machine 2:

export ROS_DOMAIN_ID=42
source <YOUR_ROS2_WORKSPACE>/setup.bash
ros2 run demo_nodes_cpp listener
6 Likes