Only one of the masters detects the other
mericgeren opened this issue · comments
Hello,
I have 2 computers in the same local network which i am trying to connect them via fkie multimaster:
Laptop
-
OS: Windows 10
-
VM: Linux Ubuntu 20.04 (I am using this for ROS and multimaster)
-
VM Software: VMware Workstation 17 Player (17.0.2 build-21581411)
-
Connection Method: Wifi
-
IP Address: 192.XXX.XXX.ab (Ip of VM, in the same network with the other computer)
-
IP Address: 192.XXX.XXX.ae (original ip of the laptop, same network with the other computers)
-
VM Network Configuration: Bridged (So i don't have a changing ip and VM machine is just like any other device in the local network)
-
ROS Distro: Noetic
-
ROS Parameters: Set in ".bashrc" and just like following:
export ROS_MASTER_URI=http://192.168.88.ab:11311
export ROS_IP=192.XXX.XXX.ab
-
Multimaster: fkie_multimaster installed.
-
/etc/hosts:
127.0.0.1 localhost
127.0.0.1 laptop-linux
192.XXX.XXX.ab laptop-linux
192.XXX.XXX.dc pc-linux
PC
-
OS: Linux Ubuntu 18.04 (non-VM)
-
VM: None
-
Connection Method: Ethernet
-
IP Address: 192.XXX.XXX.dc (In the same network with the other computer)
-
ROS Distro: Melodic
-
ROS Parameters: Set in ".bashrc" and just like following:
export ROS_MASTER_URI=http://192.XXX.XXX.dc:11311
export ROS_IP=192.XXX.XXX.dc
-
Multimaster: fkie_multimaster installed.
-
/etc/hosts:
127.0.0.1 localhost
127.0.0.1 pc-linux
192.XXX.XXX.ab laptop-linux
192.XXX.XXX.ae laptop-windows
192.XXX.XXX.dc pc-linux
I can ping from both computer to each other. When, i ping i get such an output in laptop-linux:
PING 192.XXX.XXX.dc (192.XXX.XXX.dc) 56(84) bytes of data.
From 192.XXX.XXX.ae icmp_seq=1 Redirect Network(New nexthop: dc.XXX.XXX.192)
64 bytes from 192.XXX.XXX.dc: icmp_seq=1 ttl=64 time=1.35 ms
64 bytes from 192.XXX.XXX.dc: icmp_seq=1 ttl=63 time=1.35 ms (DUP!)
64 bytes from 192.XXX.XXX.dc: icmp_seq=1 ttl=64 time=1.48 ms (DUP!)
64 bytes from 192.XXX.XXX.dc: icmp_seq=1 ttl=63 time=1.48 ms (DUP!)
--- 192.XXX.XXX.dc ping statistics ---
1 packets transmitted, 1 received, +3 duplicates, +1 errors, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.352/1.418/1.484/0.066 ms
this is the output at the pc-linux:
PING 192.XXX.XXX.ab (192.XXX.XXX.ab) 56(84) bytes of data.
From 192.XXX.XXX.ae icmp_seq=1 Redirect Network(New nexthop: 192.XXX.XXX.ab)
64 bytes from 192.XXX.XXX.ab: icmp_seq=1 ttl=63 time=1.75 ms
64 bytes from 192.XXX.XXX.ab: icmp_seq=1 ttl=64 time=1.78 ms (DUP!)
64 bytes from 192.XXX.XXX.ab: icmp_seq=1 ttl=63 time=2.07 ms (DUP!)
64 bytes from 192.XXX.XXX.ab: icmp_seq=1 ttl=64 time=2.10 ms (DUP!)
--- 192.XXX.XXX.ab ping statistics ---
1 packets transmitted, 1 received, +3 duplicates, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.753/1.928/2.103/0.167 ms
Then i do a roslaunch on a custom launch file on both computers. This is the custom launch in laptop-linux:
<launch>
<node name="master_discovery" pkg="fkie_master_discovery" type="master_discovery">
<rosparam param="robot_hosts">[192.XXX.XXX.dc]</rosparam>
<rosparam param="listen_mcast">false</rosparam>
<rosparam param="send_mcast">false</rosparam>
</node>
<node name="master_sync" pkg="fkie_master_sync" type="master_sync">
</node>
</launch>
This is the launch file in the pc-linux:
<launch>
<node name="master_discovery" pkg="fkie_master_discovery" type="master_discovery">
<rosparam param="robot_hosts">[192.XXX.XXX.ae]</rosparam>
<rosparam param="listen_mcast">false</rosparam>
<rosparam param="send_mcast">false</rosparam>
</node>
<node name="master_sync" pkg="fkie_master_sync" type="master_sync">
</node>
</launch>
Then, when i enter rosservice call /master_discovery/list at pc-linux i see the following output:
masters:
-
name: "192.XXX.XXX.dc"
uri: "http://192.XXX.XXX.dc:11311/"
last_change:
secs: 1685523372
nsecs: 169858455
last_change_local:
secs: 1685523372
nsecs: 169858455
online: True
discoverer_name: "/master_discovery"
monitoruri: "http://localhost:11611"
-
name: "192.XXX.XXX.ab"
uri: "http://192.XXX.XXX.ab:11311"
last change:
secs: 1685523389
nsecs: 283982753
last_change_local:
secs: 1685523389
nsecs: 283982753
online: True
discoverer_name: "/master_discovery"
monitoruri: "http://192.XXX.XXX.ab:11611"
As you can see from the output the master_discovery node on pc-linux can detect the master in laptop-linux. But, when i enter the same command in the laptop-linux, i get the following output:
masters:
-
name: "192.XXX.XXX.ab"
uri: "http://192.XXX.XXX.ab:11311/"
last_change:
secs: 1685523389
nsecs: 283982753
last_change_local:
secs: 1685523389
nsecs: 283982753
online: True
discoverer_name: "/master_discovery"
monitoruri: "http://localhost:11611"
Can you help me on this issue please?
Thanks in advance.
If I understand the configuration correctly, the launch in the pc-linux should contain the IP address of laptop-linux:
<rosparam param="robot_hosts">[192.XXX.XXX.ab]</rosparam>
I just tried that. But, when i try the setting with 192.XXX.XXX.ab, both pc-linux and laptop-linux couldn't see each other.
That is strange! Are you sure, you changed 192.XXX.XXX.ae to 192.XXX.XXX.ab on pc-linux?
Can you post the log output of both master_discovery
This is the output of launch on laptop-linux:
started roslaunch server http://192.XXX.XXX.ab:33415/
SUMMARY
========
PARAMETERS
* /master_discovery/listen_mcast: False
* /master_discovery/robot_hosts: ['192.XXX.XXX.dc']
* /master_discovery/send_mcast: False
* /rosdistro: noetic
* /rosversion: 1.16.0
NODES
/
master_discovery (fkie_master_discovery/master_discovery)
master_sync (fkie_master_sync/master_sync)
ROS_MASTER_URI=http://192.XXX.XXX.ab:11311
process[master_discovery-1]: started with pid [2627]
process[master_sync-2]: started with pid [2628]
[WARN] [1685527211.398182]: Send multicast is disabled.
[WARN] [1685527211.399327]: Listen to multicast is disabled.
[WARN] [1685527211.466337]: Multicast disabled! This master is only by unicast reachable!
This is the output of the launch on pc-linux:
started roslaunch server http://192.XXX.XXX.dc:41693/
SUMMARY
========
PARAMETERS
* /master_discovery/listen_mcast: False
* /master_discovery/robot_hosts: ['192.XXX.XXX.ab']
* /master_discovery/send_mcast: False
* /rosdistro: melodic
* /rosversion: 1.14.13
NODES
/
master_discovery (fkie_master_discovery/master_discovery)
master_sync (fkie_master_sync/master_sync)
ROS_MASTER_URI=http://192.XXX.XXX.dc:11311
process[master_discovery-1]: started with pid [3347]
process[master_sync-2]: started with pid [3348]
[WARN] [1685523371. 007897]: Send multicast is disabled
[WARN] [1685523371. 009964]: Listen to multicast is disabled
[WARN] [1685523371. 021482]: master_discovery node appear not to running @192.168.88.37, only found on []. Wait for topic with type 'MasterState' @192.168.88.37.
[WARN] [1685523371. 038358]: Multicast disabled! This master is only unicast reachable!
The launch server prevents the output of the master_discovery. Can you launch the the master_discovery manually and look if you see something wrong, like wrong discovered IP's...
For debug output you have to start the node twice, without to stop the roscore.
rosrun fkie_master_discovery master_discovery _log_level:=DEBUG _robot_hosts:=['192.XXX.XXX.ab'] send_mcast:=False listen_mcast:=False
Thank you so much. I don't know how but in logs now i can see they added each other and when i write rosservice /master_discovery/list_masters
i can see that there are 2 masters listed. Thank you so much for all the help you have offered and your time. I you don't mind i am closing this issue as completed.
Glad I could help!
can you try with send_mcast:=True listen_mcast:=True