【multimaster_fkie】多 ros master core 通信库,不配置主从机进行 ros 多机通信

1. 简介

多个 ros 系统之间可以通过配置 ros 主从机实现互相通信,但有的场景每个 ros 系统都需要运行 rosmaster/roscore ,这种情况下就需要使用 multimaster_fkie 库来实现 ros 通信。
Github:https://github.com/fkie/multimaster_fkie
ROS wiki:http://wiki.ros.org/multimaster_fkie/Tutorials/Setup a ROS master synchronization

2. 安装 multimaster_fkie

多个 ros 系统中都要进行以下安装步骤

2.1. 安装 python grpc 工具

# # 比 ubuntu-18.04 更早的系统
# pip install grpcio-tools  # 如果 ros 适配的是 python3 (viobot)

# ubuntu-18.04
sudo add-apt-repository ppa:roehling/grpc
sudo apt update
sudo apt install python-grpcio python-grpc-tools

# # ubuntu-18.10 以及更新的系统
# sudo apt install python-grpcio python-grpc-tools

2.2. 安装 fkie_multimaster

# 新建一个空的 catkin_ws
mkdir -p ~/catkin_ws_for_build/src
cd ~/catkin_ws_for_build/src
git clone https://github.com/fkie/multimaster_fkie.git multimaster

rosdep update
rosdep install -i --as-root pip:false --reinstall --from-paths multimaster

cd ..
catkin build fkie_multimaster

如果最后的 catkin build 报错 catkin:未找到命令 ,运行以下指令

sudo apt install python-catkin-tools

2.3. 将安装好的库添加到 ros 环境和 python 环境中

~/.bashrc 内添加以下 ros 环境变量:

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/catkin_ws_for_build/src

将 catkin build 生成的 python 包移到 python 环境中

# 如果 ros 是 python2
sudo cp -r ~/catkin_ws_for_build/devel/lib/python2.x/dist-packages/* /usr/local/lib/python2.x/dist-packages/

# # 如果 ros 是 python3
# sudo cp -r ~/catkin_ws_for_build/devel/lib/python3.x/dist-packages/* /usr/local/lib/python3.x/dist-packages/

2.4. 设置网络

  1. 多个 ros 系统之间需要可以直接互相访问 ip 和全部端口(即之间没有防火墙),互相有线连接最佳。

  2. /etc/hosts 文件中添加行 <本机在网络中的 ip> <本机 hostname>,分别可以用 hostname -Ihostname 命令查询得。

  3. /etc/sysctl.conf 加入以下内容:

net.ipv4.ip_forward=1
net.ipv4.icmp_echo_ignore_broadcasts=0
  1. 使以上网络设置生效:sudo service procps restart

  2. 测试能否 multicast 连通其他主机:ping 224.0.0.1,出现本机和他机的 ping 结果即为成功

3. 测试多 ros master 通信

多个 ros 系统中,都在含有 fkie_master_xxx packages 的 python 环境中运行 multimaster_fkie

rosrun fkie_master_discovery master_discovery >/dev/null 2>&1 &
rosrun fkie_master_sync master_sync >/dev/null 2>&1 &

然后使用命令 rostopic list --host 查看可以访问的 rostopic,出现本机以及他机的 rostopic 即为成功。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值