视频效果:

本文局域网特指单网络环境,比如只有一个路由器的情况。

使用 multimaster_fkie 方案,它主要包含的软件包:

  • master_discovery:作用是周期性广播消息;检测本地 master 消息的变化并告知其他的 master;
  • master_sync:利用master_discovery提供的数据为本地 master 注册远程的 topic 和 service。

配置步骤

  1. 修改/etc/hosts绑定主机名(Host)与IP
  2. 修改~/.bashrc 的 ROS_MASTER_URI 并 $source ~/.bashrc
  3. 开启组播(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(命名空间)

  1. base
  2. relative/name
  3. /global/name
  4. ~private/name

References

  1. multimaster FKIE
  2. Multi-master ROS systems
  3. Multimaster ROS configuration and multimaster_fkie