ROS项目开发实战(二)——不同ROS版本的多计算机通信


    ROS多机通信就是多个装有ROS的不同计算机之间共用同一个ROS主机(Master)实现节点与话题共享,本人经验建议当你遇到以下问题时候可以尝试使用多机通信解决:

Case①: 一个team多个成员共同开发一个ROS项目,但是不同成员可能安装的ubuntu版本与ROS版本不同,当需要将各个成员完成的模块进行集成调试时可以使用多机通信;

Case②:   当你要使用一个ROS包却发现使用软件源下载提示未发现软件包,这种问题的基本原因就是你要下载的包不匹配你的ubuntu版本(包括32位、64位区分)、ros版本,这种情况你可以找一台装有匹配的ROS版本的电脑(或者虚拟机再安装一个ubuntu及ROS),在两台计算机上进行交互调试。

    下面就直接开始设置,假设你有两台计算机A和B(在同一局域网下),现在要设置A为主机。

一、网络设置

1. 分别查看两台计算机IP与名称

//分别打开A、B两台计算机终端并在其中输入:
$ ifconfig    
//查看ip
$ hostname   
//查看name

    IP查看结果(当然点击右上角系统设置,直接打开网络也可以看到ip地址):ROS项目开发实战(二)——不同ROS版本的多计算机通信_第1张图片

Name查看结果:ROS项目开发实战(二)——不同ROS版本的多计算机通信_第2张图片

2. 查看计算机之间能否通信

    方法:在A、B计算机终端分别ping对方IP地址,命令如下:

//在A机终端输入:ping B机IP :
$ ping 192.168.0.104  //IP根据自己实际情况 
//B机终端同上

    若通信成功,可以看到显示接收到包的time,通常是0.3ms左右;

    若显示以下结果,则通常是物理连接的问题,检查你的网线跟路由器设置:

    From 192.168.1.2 icmp_seq=3 Destination Host Unreachable

3.修改A、B机hosts文件内容,并重启网络设置使其生效

    在A、B机上分别打开hosts文件终,端命令:

$ sudo gedit /etc/hosts

    然后在文件末添加A、B的IP与hostname(IP与hostname为上面步骤1查看的结果)并保存(其中红色区域为添加的部分,注意这里在A、B添加的内容是一样的,添加时候不带[]):

ROS项目开发实战(二)——不同ROS版本的多计算机通信_第3张图片

    添加完成后重启A、B两机网络设置,终端命令:

sudo /etc/init.d/networking restart

二、ROS环境设置

    分别在A、B两机上打开~/.bashrc 文件,在文件最后添加ROS主机与分机环境变量(这里A、B两机修改内容一样,add为修改内容),命令:

$ sudo gedit ~/.bashrc  //打开hosts文件
export ROS_HOSTNAME=hostname_B    #add
export ROS_MASTER_URI=http://hostname_A:11311              #add
//hostname为上面步骤1的查看结果

    以下为本人电脑上设置,其中X230为主机:

三、通信测试

打开主机A,终端roscore启动ROS,在主机B中直接rostopic list 查看话题,如下图若可以查看到话题则表示成功:

ROS项目开发实战(二)——不同ROS版本的多计算机通信_第4张图片




你可能感兴趣的:(ROS)