ROS 多机通讯配置

        本文目的为了能够实现多设备之间ROS通信功能,辅助以ROS为基础的小车、机器人等的开发,有bug地方还请指正,共同学习

配置流程

所有的ros主控都处于同一个网络下;如果是多个设备过程也相似,选一个作为主机,其他全都是从机;下面以两台设备为例,一台是虚拟机(ubuntu),一台是机器人小车Transbot (jetson nano)。

在两台设备上进行ssh服务器的安装;装上chrony包,用于实现同步:

sudo apt-get install chrony openssh-server

查看两台设备的ip信息和主机名:

命令 : ifconfig 和 hostname

修改/etc文件夹下的hosts文件  主机  从机都得一样:

sudo chmod a+w /etc/hosts

sudo vim /etc/hosts

将两台设备的IP和主机名分别添加到两台设备的hosts文件下,绑定用户;前面的IP,后面的是名字,尽量对齐 ;

修改完以后,在两台设备上都输入下列命令重启以下网络,实现两台设备间通信:

sudo /etc/init.d/networking restart

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

ps -e|grep ssh

 

最好分别 ping一下,看看通信是否正常

ping 设备的主机名

修改~/.bashrc文件

sudo vim ~/.bashrc

把这段加到主机中的 ~/.bashrc 文件中

export ROS_HOSTNAME=本机用户名

export ROS_MASTER_URI=http://主机用户名:11311

 

同理在从机上这个文件中加上这段:

export ROS_HOSTNAME=本机用户名

export ROS_MASTER_URI=http://主机用户名:11311

假如以jetson nano为主机。  #注释的打开

设置好IP后,最好刷新一下,就可以通信了。

source ~/.bashrc

效果演示

主机 Transbot(jetson nano)

Roscore

从机 Ubuntu(虚拟机):

rosrun turtlesim turtlesim_node

rosrun turtlesim turtle_teleop_key

问题与解决方案

1,多机通讯 Ping 不通

        解决办法: 虚拟机需要采用桥接模式

2,使用前检查jetson nano IP 地址,如果变化了,需要修改的地方

  • VNC
  • 主从机器的

sudo gedit /etc/hosts   修改成新ip

sudo /etc/init.d/networking restart  重启通信

sudo gedit ~/.bashrc   修改成新ip

source ~/.bashrc

3,虚拟机网络未托管

Ubuntu18.04连不网 报"有线连接未托管" - 不明白就去明白 - 博客园icon-default.png?t=M4ADhttps://www.cnblogs.com/Rainingday/p/12392097.html

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值