ROS分布式通信

在ROS1种,分布式通信有主机、从机之分,只有主机启动roscore后才可以通信。

首先将分布式机器连接至同一路由器下。

IP配置

根据网段设置固定IP,防止电脑重启后被重新分配IP,需重新配置文件

设置hosts

在局域网或者是万维网上,主机之间可以通过ip(如IPV4地址:192.168.1.150)地址进行通讯,但出于数字难以记忆,我们使用含义丰富的英文名称(即主机名或域名)来映射该ip,让网络程序直接解析该英文名称进行通信,从而在调用ip时避免记错数字而出错。使用英文名称查询对应ip地址的过程被称为域名解析(将域名映射为IP地址的过程)

cursor给出的回答

 

参考:

(74条消息) /etc/hosts文件修改后如何生效_/etc/hosts 生效_华夏追颖的博客-CSDN博客

(74条消息) Linux修改/etc/hosts_linux /etc/hosts include_低调小一的博客-CSDN博客

linux环境下/etc/hosts文件详解 - 简书 (jianshu.com)

此处,我们就要在主机和从机上设置其它主机的ip地址,在局域网中根据主机名对应的ip地址进行ROS通信。

# hostname查看并修改(若名称太长不方便使用)
sudo gedit /etc/hostname

# 设置其它分布式电脑IP
sudo gedit /etc/hosts
# 格式为
# ip地址   主机名/域名   (主机别名)
# 具体细节也可以在Ubuntu上man hosts命令查看

 配置完成后需重启网络,重新加载配置文件。

sudo /etc/init.d/dns-clean start
sudo /etc/init.d/networking restart

 配置ROS_HOSTNAME, ROS_MASTER

根据在/etc/hostname和/etc/hosts文件中的配置的域名映射,我们可以直接在进行ROS主机ip和本机ip配置时使用。

sudo gedit ~/.bashrc
# 在末尾加入如下

# 替换主机IP(主机只有一个,所以此处主从机都一样)
export ROS_MASTER_URI=http://hosts文件中设置的主机名:11311  

#替换本机IP(根据本机的主机名配置,所以此处主从机不一样)
export ROS_HOST_NAME=hostname文件中设置的本机名  

修改完后记得
source ~/.bashrc

测试

主机启动:
roscore
新窗口
rosrun turtlesim turtlesim_node


从机启动:
rosrun turtlesim turtle_teleop_key

在从机可以控制主机的小乌龟移动即通信成功

参考:

两个ROS系统进行通信(通过路由器,可上网)_ros通信系统_hhz_999的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值