ros2 arm fails to communicate with pc

asked 2018-08-28 17:06:10 -0500

alsora gravatar image

updated 2018-08-29 14:35:33 -0500

Hi, I have installed ROS2 bouncy on my ubuntu 16 pc and also cross compiled it for an ARM system, as described in the official guide.

I can execute ROS2 nodes on the ARM system without any problem.

However I am not able to run a simple talker/listener pair of nodes with one of them on my pc and one on the ARM. Both devices are connected to the same wifi network and have been successfully tested for ROS individually.

Laptop config:

$ echo $ROS_DOMAIN_ID
1 
$ ip addr show
  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     inet 127.0.0.1/8 scope host lo
  3: wlp58s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 7c:2a:31:9c:7c:00 brd ff:ff:ff:ff:ff:ff
    inet 10.22.92.83/24 brd 10.22.92.255 scope global dynamic wlp58s0

ARM config:

$ echo $ROS_DOMAIN_ID
1
$ ip addr show
  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
  4: rndis0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether ba:93:b5:81:de:4d brd ff:ff:ff:ff:ff:ff
    inet 192.168.186.2/24 brd 192.168.186.255 scope global rndis0
  5: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 98:bb:1e:01:f5:21 brd ff:ff:ff:ff:ff:ff
    inet 10.22.92.109/24 brd 10.22.92.255 scope global wlan0

I can ping between the two machines

On the arm

$ ping 10.22.92.83
  64 bytes from 10.22.92.83: icmp_req=1 ttl=64 time=7.60 ms

On the pc

$ ping 10.22.92.105
  64 bytes from 10.22.92.105: icmp_seq=1 ttl=64 time=5.68 ms

I tested the TCP connection for the ports used by ros (2222X, with X 2,3,4,5)

On the arm (using busybox nc, it does not allow -u parameter for udp)

$ nc -l -p 22222

On the pc

$ nc -v 10.22.92.109  22222 
  Connection to 10.22.92.109 22222 port [tcp/*] succeeded!

Do you have any idea why ROS2 nodes do not see each other when run from these two machines?

If on my laptop I use the USB port as NIC for tethering, then the following interface is added and the ROS nodes work! How to achieve the same result using only wi-fi ?

27: enp0s20f0u2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 72:70:9f:4a:5d:4e brd ff:ff:ff:ff:ff ...
(more)
edit retag flag offensive close merge delete

Comments

Doesn't the nc output show that it used TCP to connect?

gvdhoorn gravatar image gvdhoorn  ( 2018-08-29 01:38:06 -0500 )edit

You're right. Actually I tried to connect using the -u flag, but the busybox version of netcat does not support it. How could I check that my network allows multicast UDP connections?

alsora gravatar image alsora  ( 2018-08-29 14:11:37 -0500 )edit
1

You could try these two mini-tools which I wrote to check exactly that: https://github.com/ros2/ros2cli/pull/145 You will need to build the new package from source.

Dirk Thomas gravatar image Dirk Thomas  ( 2018-08-30 11:43:56 -0500 )edit

I have exactly this problem. I tried multicast test both directions, which worked fine. I even can see nodes, with ros2 node list, but using topics is a whole other topic! (pun intended :)).

Windel gravatar image Windel  ( 2019-06-20 03:12:10 -0500 )edit