ROS中的分布式通讯(树莓派与虚拟机)

一、前言

在移动机器人开发过程中,RVIZ 是一个非常好用的可视化工具,但是运行ROS系统的硬件平台往往都是放在机器人上随机器人运动的,不利于我们外接显示屏去使用RVIZ。

所以,在本篇文章中,将介绍如何在ROS中进行分布式通信,实现效果是在树莓派(树莓派安装在机器人上)上运行roscore时,在个人PC中即使不运行roscore也可以正常运行RVIZ。

在正式介绍实现过程前,先确保以下几点:
1、树莓派安装好 ubuntu 以及 ROS 系统;个人PC中安装好 虚拟机、 ubuntu 以及 ROS 系统。在本文中,虚拟机用的是VMWare,ubuntu是20.04版本,ROS是 noetic 版本。
2、使树莓派与个人PC处于同一局域网下;

二、树莓派连接WIFI

树莓派终端输入下面指令打开编辑文本:

sudo gedit /etc/netplan/50-cloud-init.yaml

改为以下格式即可(注意每行的缩进,一个缩进为4个空格,不能使用TAB键):
请添加图片描述

然后使用sudo reboot指令重启树莓派,使配置生效。

三、查找局域网下的其他设备 IP

通过命令行输入arp -a指令就可以看到树莓派的 IP 地址。

方法1、在个人PC端输入arp -a指令:
在这里插入图片描述
PS:树莓派的 IP 一般不会是.1.255结尾的,并且前缀是和本机的IP一样的,如上图所示,所以树莓派IP应该是 192.168.43.8。

方法2、在树莓派端输入arp -a指令可以看到其他设备IP:
在这里插入图片描述但是这种方法不能看到本机 IP,只能看到其他设备的 IP

方法3、树莓派端输入iwconfig指令可以看到 WIFI 名称:
在这里插入图片描述方法4、树莓派端输入ifconfig -a指令可以看到本机 IP:
在这里插入图片描述

四、确定可以ping通

找到 IP 后,可以使用ping 对方IP的指令看看是否能ping通,如:
在这里插入图片描述如果虚拟机无法ping通树莓派,可以看看本文第九章内容。

五、配置文件修改

分别修改不同计算机的 /etc/hosts 文件,在该文件中加入对方的IP地址和计算机名:

主机端:
从机的IP 从机计算机名
在这里插入图片描述

从机端:
主机的IP 主机计算机名
在这里插入图片描述

六、配置主机 IP

配置主机的 IP 地址:

树莓派端输入以下命令配置.bashrc文件:

sudo gedit ~/.bashrc

加入以下代码:

export ROS_MASTER_URI=http://主机IP:11311
export ROS_HOSTNAME=主机IP

如:
在这里插入图片描述设置完后,保存退出。

然后是最最最关键的一步:一定要source一下,不然运行不了roscore

source ~/.bashrc

在这里插入图片描述

七、配置从机 IP

配置从机的 IP 地址,从机可以有多台,每台都做如下设置:

我这里从机是我的笔记本电脑,所以我在虚拟机端输入以下命令配置.bashrc文件:

sudo gedit ~/.bashrc

加入以下代码:

export ROS_MASTER_URI=http://主机IP:11311
export ROS_HOSTNAME=从机IP

如:
在这里插入图片描述设置完后,保存退出。

然后是最最最关键的一步:一定要source一下,不然运行不了roscore

source ~/.bashrc

在这里插入图片描述

八、测试

1、主机(树莓派)启动 roscore

2、主机启动RVIZ,可以启动则为配置成功

九、局域网内文件传输

1、上传文件:

scp 本地文件路径 账号@ip:接收端文件路径

2、上传文件夹:

scp -r 本地文件夹路径 账号@ip:接收端文件路径

例如:
有一个文件夹名为catkin_src,它在windows下的桌面里,即在路径C:\Users\ASUS\Desktop中,需要把它放到树莓派的路径/home/pi/桌面中,则应该在windows下运行:

scp -r C:\Users\ASUS\Desktop\catkin_src pi@192.168.x.xx:/home/pi/桌面

3、下载文件

scp 账号@ip:需要下载的文件路径 本地文件夹路径

4、下载文件夹:

scp -r 账号@ip:需要下载的文件路径 本地文件夹路径

例如:
有一个文件夹名为stm32_main,它在树莓派下的桌面里,即在路径/home/pi/桌面中,需要把它放到windows的路径C:\Users\ASUS\Desktop中,则应该在windows下运行:

scp -r pi@192.168.x.xx:/home/pi/桌面/stm32_main C:\Users\ASUS\Desktop\

十、可能会遇到的问题

1、虚拟机无法ping通树莓派:
在ping的时候出现网络不可达或者目标不可达的情况,并且右上角的网络小图标也不见了。
在这里插入图片描述

可尝试以下操作:

sudo service network-manager stop
sudo rm /var/lib/NetworkManager/NetworkManager.state
sudo service network-manager start

执行到这一步可以尝试使用ping指令测试网络是否通畅。

如果图标或者网络还不正常可以继续尝试下面两条命令。

sudo gedit /etc/NetworkManager/nm-system-settings.conf

把false改成true

sudo service network-manager restart

2、树莓派端运行roscore没有反应,要按几次ctrl+c才能中断运行:
这种情况一般是由于切换了 WiFi 造成的,切换 WIFI 后必须按照本文第五六七章修改对应文件才可以,并且一定要source一下:

source ~/.bashrc

猜你喜欢

转载自blog.csdn.net/weixin_44415639/article/details/124617671