近期做的项目中需要用到ros进行通信,一是坐标传输,二是视频传输。同时需要在两台终端上实现通信,接下来对我碰到的问题做下记录,希望能帮助到有需要的开发者。
一、两台终端实现ROS通信
第一步需要在两台终端(我的两台都是ubuntu 18.04)上都安装好ros,安装的步骤我就不细讲了,可以按照下面的两篇参考连接,基本就能装好。
ROS安装参考链接一
ROS安装参考链接二
在安装的时候需要注意的是一定要确定当前ubuntu的版本,不同的版本安装ROS的时候命令有差异。
不知道自己当前ubuntu版本的,可以在终端输入:lsb_release -a
Distributor ID: Ubuntu 类别是Ubuntu
Description:Ubuntu 20.04.3 LTS LTS是Long Term Support:长时间支持版本,支持周期长达三年至五年
Release 20.04 发行日期或者发行版本号
Codename: focal ubuntu的代号名称
具体Ubuntu版本和ROS版本对应如下,如果你的ubuntu是20.04的话,那恭喜你,后面cv_bridge的问题应该与你无缘,如果像我一样是18.04的冤种,那感谢你拜读我后续的内容!
如果想深入了解一下ROS通信的原理,可以拜读一下以下文章:
参考一
参考二
接下来就是怎么实现ROS下两台计算机话题交互了。
首先确定两台终端的ip,分别输入:ifconfig
查看。
随后确定主机和从机,例如我现在从A机获得摄像头视频流,需要通过ROS通信协议发送给B机,那么可以将A机设置为主机,B机设置为从机。
在终端输入:sudo gedit ~/.bashrc
,在最下面插入以下命令。注意注意!主从机有差异,上面两行export ROS_IP=***.***.*.*** export ROS_HOSTNAME=***.***.*.***
是当前设备的IP,最下面一行是你设定的主机IPexport ROS_MASTER_URI=http://**.***.*.***
:11311`,例如我将A机设为主机,那么要插入:
export ROS_IP=192.168.1.102
export ROS_HOSTNAME=192.168.1.102
export ROS_MASTER_URI=http://192.168.1.102:11311
B机从机要插入如下内容。
export ROS_IP=192.168.1.103
export ROS_HOSTNAME