Ubuntu16.04中使用ROS kinetic实现多设备通信


要实现多个设备通信,先要使多个设备链接在同一个局域网下,然后通过配置使设备之间能够互相识别。设备无线网卡具有AP模式的情况下(可以通过iwlist查询),可以配置成Ad-hoc模式和Hotspot模式,实测发现Ad-hoc模式会出现无法连接或搜索不到的问题,因此更倾向于使用热点Hotspot模式,配置时发现在配置成功后要重启再连接才会生效。在完成两台设备之间的联网后,需要进行以下操作:

1. 修改hosts文件

这一步的目的是为了让两台设备之间能够互相识别,通过以下命令打开hosts文件:

sudo vim /etc/hosts

并在hosts文件中添加以下内容(每台设备都要添加):

192.168.1.105	master_hostname		#用于打开master的设备
192.168.1.104	device1_hostname		#其它设备
192.168.1.103	devuce2_hostname

其中不同设备的192.168.1.105等ip可以通过ifconfig命令来查看,后面的master_hostname等设备名可以通过hostname命令来查看。

2. 安装同步包

通过以下命令安装同步包和ssh服务端,有时安装服务端会失败,需要先卸载ssh客户端后重新将两者安装即可。

sudo apt-get install chrony 
sudo apt-get install openssh-server

3. 检查是否通信成功

可以先通过ssh+本设备hostname,再使用ping+另一设备hostname来判断。例如本设备hostname为miniPC,另一设备hostname为laptop(通过hostname命令查询得到的),则在本设备使用

ssh miniPC
ping laptop

在另一台设备也使用同样的方法判断是否双边通信已经建立成功。使用ps -e|grep ssh命令可以查看ssh服务是否启动,若什么都没有出现,则需要使用sudo /etc/init.d/ssh restart命令来重启服务,然后再使用ps -e|grep ssh就可以看到有sshd的字样,代表启动成功。ping另一台设备时若无响应则应检查两台设备之间的网络连接是否正常(是否在同一局域网以及是否都已经更改了hosts文件)。

4. 启动节点

在以上通信建立完成后,设备之间已经能进行相互通信,仍以miniPClaptop为例,在用来产生master节点管理器的设备上,通过sudo vim ~/.bashrc命令在.bashrc文件中添加以下内容:

export ROS_HOSTNAME=miniPC
export ROS_MASTER_URI=https://miniPC:11311

在另一设备上的.bashrc文件中添加以下内容:

export ROS_HOSTNAME=laptop
export ROS_MASTER_URI=https://miniPC:11311

.bashrc文件中加入该命令是在终端启动时执行命令,不需要每次开启一个新终端都要执行一次。
添加成功后在mini PC上运行节点,在laptop中使用rostopic list可以看到mini PC上的主题,并且可以对其进行订阅、可视化等操作。

参考:
ROS多机器人通信详细讲解,ros机器人讲解
Ubuntu 下建立WiFi热点的方法
ubuntu16.04开起wifi热点

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值