Ask Your Question
0

Blocked Multicast IPs - TurtleBot3 and Remote PC

asked 2020-05-13 04:11:34 -0500

ROS2apprentice gravatar image

updated 2020-05-18 04:38:33 -0500

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: ROS_DOMAIN_ID is the same on both and the firewall enables both IPs. I sourced multiple times too. Is there a possibility to install wrong?

edit retag flag offensive close merge delete

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 with ros2 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.

ROS2apprentice gravatar image ROS2apprentice  ( 2020-05-14 06:22:06 -0500 )edit

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

ROS2apprentice gravatar image ROS2apprentice  ( 2020-05-15 00:57:16 -0500 )edit

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 ufwports like in the [Troubleshoot] (https://index.ros.org/doc/ros2/Troubl...) 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.

ROS2apprentice gravatar image ROS2apprentice  ( 2020-05-15 06:33:02 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2020-05-18 04:20:57 -0500

ROS2apprentice gravatar image

updated 2020-05-19 01:58:28 -0500

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:

  1. Download the repository of ros2cli and delete all folders except the multicast one (some packages interfere with ros2 topic).

  2. Open the __init__.py in ros2cli-dashing/ros2multicast/ros2multicast/api and change the IP to your liking.

  3. Open the multicast.py in /ros2cli-dashing/ros2multicast/ros2multicast/command and add after def main(self, *, parser, args): the line print("CUSTOM MULTICAST") to know your custom multicast was loaded.

  4. Do a quick colcon build in /ros2cli-dashing and source 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.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2020-05-13 04:11:34 -0500

Seen: 321 times

Last updated: May 19 '20