【Prometheus自主无人机】03 ROS多机及ssh教程

【Prometheus自主无人机】03 ROS多机及ssh教程

  • 实测
  • ROS多机及SSH教程
  • ROS多机配置
  • 实机测试

  • 本文是转载自官方wiki: https://github.com/amov-lab/Prometheus/wiki
  • 标题 : Prometheus 二次开发课程入门:
  • 课程网址:https://bbs.amovlab.com/plugin.php?id=zhanmishu_video:video&mod=video&cid=43
  • 课程项目网址 : https://github.com/amov-lab/Prometheus

实测

实测 会出现以下报错
【Prometheus自主无人机】03 ROS多机及ssh教程_第1张图片
可能原因是因为缺少ros包组建 并不开源 ,暂时放着 ,解决了再发实现方法

ROS多机及SSH教程

为什么使用ROS多机及SSH?

一句话概括,就是为了在真实实验时,借助SSH使得地面电脑能够操控机载电脑(运行存储于机载电脑中的launch文件),借助ROS多机使得地面电脑和机载电脑建立相互通信(地面电脑显示机载电脑发布的状态量话题,同时,机载电脑接收地面电脑发布的指令话题)。

其次,SSH和ROS多机并不需要绑定使用,如果仅需要远程控制机载电脑,只安装SSH即可。

最后,ROS多机可以帮助我们简易的实现无人机之间的通信(所有机载电脑连接同一路由器),达成一个地面站控制多个无人机的目的,也可以通过软件的编写模拟分布式通信网络。

准备工作
一个路由器(如果是多无人机控制,建议使用较好的路由器,保证通信带宽)
一台地面电脑(,建议使用有线连接的方式连接路由器)
ubuntu系统并安装Prometheus项目
通过’ifconfig’指令查询本机IP,假设为 192.168.1.1
通过’hostname’指令查询本机名字,假设为 ground_pc
五台无人机均配备机载电脑
ubuntu系统并安装Prometheus项目
通过’ifconfig’指令查询本机IP,假设为 192.168.1.11,192.168.1.12,192.168.1.13,192.168.1.14,192.168.1.15
通过’hostname’指令查询本机名字,假设为 onboard_pc1,onboard_pc2,onboard_pc3,onboard_pc4,onboard_pc5
SSH使用
对上述地面电脑及机载电脑,进行如下操作:

安装chrony包,用于实现同步

sudo apt-get install chrony

安装SSH服务器

sudo apt-get install openssh-server

确定SSH已经启动

ps -e|grep ssh

此时就已经可以进行SSH远程操作了,在地面电脑上,

测试是否能ping通机载电脑,并查看延时

ping 192.168.1.1x

使用SSH远程登陆,用户名即登陆该电脑的账户名,不一定和hostname一致,
ssh 用户名@192.168.1.1x
然后根据提示输入登陆密码,登陆成功可以发现终端显示已变成远程连接电脑的名字

参考链接:https://blog.csdn.net/lixujie666/article/details/80260445

ROS多机配置

对上述地面电脑及机载电脑,进行如下操作:

打开hosts文件

sudo gedit /etc/hosts

打开hosts文件后,可以发现文件开头已经有了两行,从第三行开始插入所有电脑的IP和hostname(中间用tab隔开,而不是空格),即

192.168.1.1 ground_pc
192.168.1.11 onboard_pc1
192.168.1.12 onboard_pc2
192.168.1.13 onboard_pc3
192.168.1.14 onboard_pc4
192.168.1.15 onboard_pc5

保存并退出,输入以下命令重启网络

sudo /etc/init.d/networking restart

ROS多机需要指定一台电脑作为主机,而其他电脑作为从机。设置成功之外,必须先在主机上运行roscore,从机方可运行ros节点,即所有的ROS均以来主机的ROS_MASTER。

一般,我们将地面电脑设置为主机,其余电脑设置为从机。

首先,在地面电脑端(主机)

sudo gedit .bashrc

在最后一行加上

export ROS_MASTER_URI=http://192.168.1.1:11311

然后,在机载电脑端(从机)

sudo gedit .bashrc

在最后一行加上

export ROS_HOSTNAME=192.168.1.1x
export ROS_MASTER_URI=http://192.168.1.1:11311

配置到此结束。

实机测试

TIPS:让机载电脑忘记所有wifi连接,只连接当前路由器,这样开机后其会自动连接当前路由器

在地面电脑端:

打开一个终端,启动roscore
打开一个终端,使用SSH连接机载电脑,连接成功后输入
//注意,此launch文件中的端口参数需先配置正确

roslaunch prometheus_experiment control_onboard.launch

打开一个终端,输入

roslaunch prometheus_experiment control_ground.launch

此时,可以通过第三个终端查看无人机状态,并发送控制指令,成功!

你可能感兴趣的:(PX4,嵌入式,Proemtheus)