Blocked Multicast IPs - TurtleBot3 and Remote PC
hi,
I'm new to ROS2 and currently setting up the TurtleBot 3 Burger like on the website link text advised. My PC is running with Ubuntu 18.04.4 LTS just as my TB3 Burger. Both are using the Debian Package of ROS2 Dashing the rest is just like in the e-manual recommended.
They are on the same wireless network and multicast is working too. But after i initialized the
ros2 launch turtlebot3_bringup robot.launch.py
on the e-manual via SSH i do not get any topics or nodes from the Turtlebot on my remote PC with
rqt
or
ros2 topic list
I don't even get an error to look into. The Simulations worked fine and without problems on my PC.
It would be helpful to understand how the two devices are communicating.
edit: ROSDOMAINID is the same on both and the firewall enables both IPs. I sourced multiple times too. Is there a possibility to install wrong?
Asked by ROS2apprentice on 2020-05-13 04:11:34 UTC
Answers
After some days of testing and new setups the problem could be isolated and solved.
There were some combinations of misfortune happening here. First of i had eloquent and dashing on one system that i frequently switched and reinstalled that may have destroyed some stuff.
More important was that Wireshark did show Multicast IPs on the network but we couldn't say the source were from our access-point (UniFi AP-AC-LR). They were actually connected per Ethernet on the main router that is why it is seen on Wireshark. The main Router had IGMP-Snooping allowed but the access-point would purge every IP above the 224.255.255.255 and ROS2 is working in 239.X.X.X addresses. The testing tool ros2 multicast
is working in the specific IP of 225.0.0.1:49150. This could be changed easily in the api folder of the package and that is how we found out the access-point is blocking specific Multicast IPs. We solved the problem with setting up a Hot-spot on a Smartphone and are on to change the default options of the AP.
Here a quick Guide on how to check different Mulitcast IPs with the ros2 mulitcast
command without changing the original multicast
command in ros2:
Download the repository of ros2cli and delete all folders except the multicast one (some packages interfere with
ros2 topic
).Open the
__init__.py
inros2cli-dashing/ros2multicast/ros2multicast/api
and change the IP to your liking.Open the
multicast.py
in/ros2cli-dashing/ros2multicast/ros2multicast/command
and add afterdef main(self, *, parser, args):
the lineprint("CUSTOM MULTICAST")
to know your custom multicast was loaded.Do a quick
colcon build
in/ros2cli-dashing
andsource install/setup.bash
to apply the new multicast in that Terminal.
Now you can test different IPs without fiddling in the original ros2. Be sure to apply the custom multicast on both of your devices and matching IPs.
Asked by ROS2apprentice on 2020-05-18 04:20:57 UTC
Comments
The usual demo listener/talker nodes does work on the same machine but not to the other one. I even disabled the
ufw
. Through Wireshark on the Remote PC I could see that no messages withros2 multicast
was send even when they are in the same Group. Network also allows multicasting because some devices (I think the Scanner/Printer) are using the IP range (239.255.0.251) of multicast.Asked by ROS2apprentice on 2020-05-14 06:22:06 UTC
So i went deeper and found out that the packages that were send to the multicast port 17900 are not being used by ros2 but the "hint" that it is on the multicast channel were definitively there. I will try to set up another ros2 dashing (i had debian) and later on the eloquent to try things out
Asked by ROS2apprentice on 2020-05-15 00:57:16 UTC
After completely wiping my PC and the TurtleBot3-Burger it still does not communicate with ros-dashing with the listerner/talker and the multicast. I even enabled the
ufw
ports like in the Troubleshoot advised. I tried to minimize the installations and don't even have the TurtleBot Package on it because i think the listener/talker demo should be functioning first.Asked by ROS2apprentice on 2020-05-15 06:33:02 UTC