Stretch 3 Offloading Computation Issues


I have followed all the steps listed here for offloading computation from the Stretch Robot to a remote computer over WiFi: Offloading Computation - Stretch Docs. However, running the command “ros2 topic list” on the remote computer does not return all the possible robot topics that are available on the Stretch 3 Robot. I tried the suggested troubleshooting steps:

  1. I pinged the robot from the remote computer, and the ping was successful.

  2. I used the ifconfig command, and the first three parts of the IP addresses match (and the last part of the IP addresses are 26 and 27).

In addition to the suggested troubleshooting steps, I have attempted the following:

  1. Disabling the firewall on both the robot and the remote computer using “sudo ufw disable”

  2. Confirming that both the remote computer and robot have the same DDS middleware installed by running “ros2 doctor -r | grep middleware” on both devices, as recommended by this post Tf_static does not be sent by network - #8 by Yongbo.

  3. Running “ros2 multicast send” on the robot and “ros2 multicast receive” on the remote desktop, as per the instructions here: Installation troubleshooting — ROS 2 Documentation: Rolling documentation. Similarly, I tried running send on the remote desktop and receive on the robot. In both cases, the receiver does not receive any message.

  4. Running “ros2 multicast send” on the robot in one terminal, and running “ros2 multicast receive” on the robot in a second terminal. In this case, the receiver terminal does receive the message, suggesting that sending/receiving works over loopback. I tried the same on the remote desktop and successfully sent and received over loopback as well.

  5. Connecting the remote computer and robot via ethernet cable and running “ros2 multicast send” on one device and “ros2 multicast receive” on the other. Initially, sending/receiving does not work. However, after running “sudo ip route add dev ” on both the robot and remote computer, the sending/receiving works successfully.

  6. Disconnecting the ethernet cable, and running “sudo ip route add dev ” on both the robot and remote computer, and then running “ros2 multicast receive” on one device and “ros2 multicast send” on the other. Sending/receiving does NOT work in this case.

  7. Running “ros2 run demo_nodes_cpp listener” on one device and “ros2 run demo_nodes_cpp talker” on another device. The listener does not receive any of the talker’s broadcasts.

  8. The router has IGMP snooping disabled. As far as I am aware, this may prevent multicasting. Thus, I tried disabling multicasting and hardcoding the peer IPs. I attempted so using both the code/instructions in this answer: ROS2 Talker Listener node not working - Robotics Stack Exchange and a slightly modified version of the code in that answer per the eProsima docs for disabling multicasting: Typical Use-Cases — Fast RTPS 1.10.0 documentation.

For all of these steps, I ensured that the ROS_DOMAIN_ID environment variable was set to 5. Also, the remote computer and robot are able to communicate successfully via ethernet cable, but not over WiFi.

Any help in resolving this issue would be greatly appreciated.

We fixed this issue using unicast_discovery_from_another_host.xml and the corresponding instructions here.

1 Like