ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

ROS2 multiple machines

asked 2021-05-05 04:02:56 -0500

whenderpsfly gravatar image

Hi all, I have an Odroid XU4 and a laptop, both running Ubuntu 18.04. I have also installed ROS2 Dashing (but also tried Eloquent/Crystal before) on both systems.

I have also tried most, if not all of the solutions here: https://answers.ros.org/question/3576... and up to page 5 of Google search

I have narrowed down the problem to find out that it is the multicasting in ROS2 that is not working, i.e: I run ros2 multicast receive on machine A and ros2 multicast send on machine B but machine A does not receive anything.

However, I have also tried this https://walchko.github.io/blog/ros-2/... and is able to receive and send UDP multicast network packets.

Please assist thank you very much!

edit retag flag offensive close merge delete

Comments

Fwiw I have found that logging info messages can prevent my robot's nodes and topics from publishing beyond itself across my home network if I have that robot reporting logging messages too frequently. E.g. every 10ms dumping 4+ info messages via a Python node.

My robot is using a RaspberryPi 4 with 1GB RAM and on-board Wifi, and it's running Ubuntu 20.04. My other machine is a desktop running Linux Mint Ulyssa 20, and it's connected directly to my router. Both machines are running ROS2 Foxy

I can generally run ROS2 tools on my desktop and see expected results, but when I'm testing very noisy nodes I've noticed that nodes and topics won't even show-up on my desktop. Full-disclosure: I'm doing literally nothing with QoS on either machine which I suspect to be a huge problem.

How easily can you ping ...(more)

Spectre gravatar image Spectre  ( 2021-05-09 01:24:04 -0500 )edit

Hi Spectre, Thanks for the reply. I can easily ping the Odroid from my laptop and vice versa, and the network seems to be fine. Also, outside of ROS2 traffic they can see each other, but for some weird reason they just can't see each other on ROS2.

This may or may not help but ROS1 works completely fine and normal, it is only ROS2 that is not working. I'm starting to suspect it may be the WiFi dongle that maybe causing the issues which I have yet to investigate.

I have tried testing with the ros2 multicast package as mentioned above, as well as the 'Hello world' equivalent of ros2 run demo_nodes_cpp talker and ros2 run demo_nodes_cpp listener but to no avail.

whenderpsfly gravatar image whenderpsfly  ( 2021-05-09 01:53:10 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2021-05-10 09:18:22 -0500

djchopp gravatar image

I just ran a quick test with 2 foxy VM's. I think this may be a case of the linux networking subsystem dropping your packets because there is no defined route. Unless you have a very permissive mask on your ip settings for each computer, the multicast addresses are probably out of the mask range and will be dropped.

Try manually adding a multicast route to the interface on each machine:

sudo ip route add 224.0.0.0/4 dev eno1 but replace eno1 with your actual interface name on each machine.

After that, retry ros2 multicast receive on one machine and ros2 multicast send on the other.

A good debugging strategy would be to have wireshark open on the interface of each machine. When you start ros2 multicast receive you should see a IGMP Membership Join message on both sides.

Hope this helps.

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2021-05-05 04:02:56 -0500

Seen: 864 times

Last updated: May 10 '21