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
    评论
要在多台PC之间进行ROS通信配置,需要进行以下步骤: 1. 安装ROS:首先,在每台PC上安装相同版本的ROS。可以按照ROS官方文档提供的安装指南进行操作。 2. 设置ROS Master:选择一台PC作为ROS Master,并在该PC上启动ROS Master。可以使用以下命令启动ROS Master: ``` $ roscore ``` 3. 配置网络:确保所有PC都连接在同一个局域网中,并且可以相互访问。可以通过ping命令测试PC之间的连通性。 4. 设置环境变量:在每台PC上设置ROS_MASTER_URI和ROS_IP环境变量。ROS_MASTER_URI应设置为ROS Master所在PC的IP地址,而ROS_IP应设置为当前PC的IP地址。 ``` $ export ROS_MASTER_URI=http://<ROS_MASTER_IP>:11311 $ export ROS_IP=<CURRENT_PC_IP> ``` 其中,<ROS_MASTER_IP>是ROS Master所在PC的IP地址,<CURRENT_PC_IP>是当前PC的IP地址。 5. 运行节点:在每台PC上运行节点,使其能够与ROS Master进行通信。可以使用以下命令运行节点: ``` $ rosrun <package_name> <node_name> ``` 其中,<package_name>是节点所在的包名,<node_name>是节点的名称。 6. 测试通信:在每台PC上,可以使用rostopic或rosnode命令测试节点之间的通信。例如,可以使用以下命令查看当前PC与ROS Master之间的连接情况: ``` $ rostopic list $ rosnode list ``` 如果能够看到正确的话题和节点列表,则表示ROS通信配置成功。 请根据实际情况进行相应的配置和调整,以上步骤仅作为通用指南提供。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值