局域网内多Master通信方法

视频效果:
本文局域网特指单网络环境,比如只有一个路由器的情况。
使用 multimaster_fkie 方案,它主要包含的软件包:
- master_discovery:作用是周期性广播消息;检测本地 master 消息的变化并告知其他的 master;
- master_sync:利用- master_discovery提供的数据为本地 master 注册远程的 topic 和 service。
配置步骤
- 修改/etc/hosts绑定主机名(Host)与IP
- 修改~/.bashrc的 ROS_MASTER_URI 并$source ~/.bashrc
- 开启组播(multicast)并确认,默认的组播IP地址是 224.0.0.1,确认是否开启$ping 224.0.0.1
示例
<node name="master_discovery" pkg="master_discovery_fkie" type="master_discovery">
    <param name="mcast_group" value="224.0.0.1" />
</node>
<node name="master_sync" pkg="master_sync_fkie" type="master_sync">
    <rosparam param="sync_topics">
    [/master/goal_task,/wing/goal_task]
    </rosparam>
    <rosparam param="ignore_services">[/*]</rosparam>
</node>
topic 传递流:
master —— /master/goal_task ——> wing
wing —— /wing/goal_task ——> master
如何在 launch 文件中统一修改 topic 的命名空间:
<group ns="master">
 ...
</group>
Debug-Namespace(命名空间)
- base
- relative/name
- /global/name
- ~private/name