基于ROS的多机网络通信

概述

本文要解决的是通过ROS节点实现局域网中不同计算机之间的通信问题。
ROS设计的灵魂就在于其分布式计算。一个优秀的节点不需要考虑在哪台机器上运行,它允许实时分配计算量以最大化的利用系统资源。在多个机器人上使用ROS是一件很简单的事,你只需要记住一下几点:

  • 你只需要一个master,只要在一个机器上运行它就可以了。
  • 所有节点都必须通过配置 ROS_MASTER_URI连接到同一个master。

准备工作

1.在Terminal中输入下列命令查看ip地址:

ifconfig

我笔记本得到的结果如下:
在这里插入图片描述
2.在Terminal中输入下列命令查看主机名称:

hostname

在这里插入图片描述
通过上述两个步骤,查得两个主机的信息如下:

主机A   IP地址:192.168.1.100     hostname: shiqi
主机B   IP地址:192.168.1.116     hosename:shiqi-ThinkPad-PC

3.修改/etc文件夹下的hosts文件:
修改hosts文件的目的是将两电脑的ip和主机名绑定,两台电脑之间通过hostname就能找到对方。没有这一步的时候,你直接去ping 对方主机名时,结果是无法解析对方主机名。

sudo apt-get install gksu
gksu gedit /etc/hosts

打开hosts后,你看到hosts文件内开头已经有了两行,我们从第三行开始插入你刚刚查到的两台电脑的ip地址和主机名hostname,中间用tab键隔开,不是空格,如下图所示:
在这里插入图片描述
修改完以后,在两台电脑上都输入下列命令重启以下网络:

sudo /etc/init.d/networking restart

4.在两台电脑上安装chrony包,用于实现同步

sudo apt-get install chrony

5.在两台电脑上安装ssh服务器(Ubuntu自带ssh客户端,不需要安装)

sudo apt-get install openssh-server

安装完之后,确认服务器是否已经启动:

ps -e|grep ssh

如果只有ssh-agent,那ssh-server还没有启动,需要/etc/init.d/ssh start,如果看到sshd那说明ssh-server已经启动了,如下图所示:
在这里插入图片描述
6.网络连接测试

利用hostname代替ip地址,用主机A去ping主机B,测试网络连接情况:

ssh shiqi
ping shiqi-ThinkPad-E70

如下图所示代表网路连接成功,反过来用主机Bping主机A测试一下:
在这里插入图片描述7.修改.bashrc.文件,在文件末尾添加环境变量

主机A

gedit ~/.bashrc
export ROS_HOSTNAME=shiqi
export ROS_MASTER_URI=http://shiqi:11311

主机B

gedit ~/.bashrc
export ROS_HOSTNAME=shiqi-ThinkPad-PC
export ROS_MASTER_URI=http://shiqi:11311

ROS运行时必须知道有哪些机器在运行,因此需要知道每一台机器的名字,通过设置ROS_HOSTNAME变量来完成;
必须告诉每个主机的master节点在哪,也就是现在是哪台机器在运行roscore,将ROS_MASTER_URI都指向运行roscore的主机名(本文在主机A上运行roscore)

遥控小海龟测试

(1)在主机A上运行roscore

roscore

(2) 在主机B上启动小海龟仿真节点

rosrun turtlesim turtlesim_node

(3) 在主机A上新开一个终端,遥控小海龟

rosrun turtlesim draw_square

在这里插入图片描述
这时可以看到小海龟在走正方形:

在这里插入图片描述

小觅相机测试

1.首先安装MYNT-EYE-D-SDK,参考网址:MYNT-EYE-D SDK 安装指南:

2. 在主机A上运行roscore

roscore

3.在主机A上切换到MYNT-EYE-D-SDK目录下,运行下列命令发布信息:

source ./wrappers/ros/devel/setup.bash
roslaunch mynteye_wrapper_d mynteye.launch

4.在主机B上执行命令

cd /MYNT-EYE-D-SDK/wrappers/ros/devel/lib/mynteye_wrapper_d
./mynteye_listener_d

相机插在主机A上,在主机B上可以实时显示左右目和深度图像,经测试发现,信号传输没有延迟,网络传输速度暂时可以满足要求
在这里插入图片描述参考文章:
ROS 教程之 network:多台计算机之间网络通信

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值