ros2 arm fails to communicate with pc
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:ff
inet 192.168.186.3/24 brd 192.168.186.255 scope global dynamic enp0s20f0u2
Asked by alsora on 2018-08-28 17:06:10 UTC
Comments
Doesn't the
nc
output show that it used TCP to connect?Asked by gvdhoorn on 2018-08-29 01:38:06 UTC
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?Asked by alsora on 2018-08-29 14:11:37 UTC
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.
Asked by Dirk Thomas on 2018-08-30 11:43:56 UTC
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 :)).
Asked by Windel on 2019-06-20 03:12:10 UTC