P200阿木无人机学习笔记--二维码引导着陆

目录

我手上的阿木实验室的P200无人机配置

现阶段目标:实现二维码引导着陆

项目理解

进度-更新中

踩坑经验

初次设置时没有显示器如何远程连接TX2?

虚拟机和双系统谁更好(ubuntu)

无人机无法解锁,报错"compass sensors inconsistent"

px4_command运行gazebo仿真时,QCC地面站无法自动连接

Gazebo和V-rep比较

安装ubuntu双系统经验

Prometheus项目下载与跑通


我手上的阿木实验室的P200无人机配置

TX2板载计算机(预装好ubuntu16.04系统和ROS、mvros等,amov_ws文件夹下载有px4_command开源项目代码、没有安装PX4编译环境、没有安装nomachine软件)

Pixhawk4飞控(应该是预先刷好了阿木的Firmware V110中的v5版本的固件)

单目USB摄像头一个、激光定高模块一个、wifi数传一个、遥控器。目前没有激光雷达和双目摄像头。

 

现阶段目标:实现二维码引导着陆

主要参考资料:

新手入门:https://amov-wiki.readthedocs.io/zh_CN/latest/docs/新手入门.html

阿木的github:https://github.com/amov-lab

阿木的b站无人机开发课程8课:https://www.bilibili.com/video/BV19K411p7do

阿木的论坛和学院:https://bbs.amovlab.com/forum.php?mod=viewthread&tid=486&extra=page

阿木的Prometheus无人机开源项目(含二维码自主着陆):https://github.com/amov-lab/Prometheus

理论依据论文:Qi, Yuhua & Jiang, Jiaqi & Wu, Jin & Wang, Jianan & Wang, Chunyan & Shan, Jiayuan. (2019). Autonomous Landing Solution of Low-Cost Quadrotor on a Moving Platform. Robotics and Autonomous Systems. 119. 64-76. 10.1016/j.robot.2019.05.004. 

 

项目理解

目前的目标是复现Prometheus无人机开源项目中的二维码引导着陆环节,包括gazebo仿真和真机实验两部分

Github上的Prometheus或者px4_command本质上是写好的ROS包,它的任务是处理传感器的数据,估计飞机姿态、给出飞机的运动指令,并利用mavros将指令发送给pixhawk飞控固件(阿木改过的固件,真机用的是Github的px4_command里的firmware,仿真用的是Github的Firmware v110,都不是pix官网的固件)。

P200阿木无人机学习笔记--二维码引导着陆_第1张图片

现在所说的无人机开发其实指的是任务层的开发,集中在编写ROS程序放到TX2上去跑,而不是对pixhawk飞控的开发。如下

P200阿木无人机学习笔记--二维码引导着陆_第2张图片

本次无人机开发是基于ROS的,ROS将一个个功能模块封装好并提供模块间的通信机制(topic、service等),便于机器人系统各模块之间的协调工作。我需要改写的代码主要是单目相机图像识别节点和自动着陆控制律节点。节点可以用cpp或者python编写,ubuntu系统预装有python2和python3.5

无人机开发流程:  建立数学模型  ->  算法编写(matlab或者ros) ->  仿真(ros-gazebo或者 matlab-ros-gazebo)-> 实机实验

如果用ros直接编写算法代码进行仿真,稍作修改就可以移植到真机的板载计算机上。

参考:https://www.bilibili.com/video/BV1hE411h7sy

 

进度-更新中

已完成

ubuntu系统安装学习 (虚拟机)

P200基础使用学习   

自己电脑安装PX4编译环境、ROS环境等

跑通px4_command开源代码中的gazebo仿真程序

安装ubuntu双系统

下载并跑通 阿木的Prometheus无人机开源项目

未完成

阿木无人机仿真课程学习(ros和gazebo实现PX4无人机仿真)

阅读并理解Prometheus中的二维码着陆代码

修改代码实现二维码着陆Gazebo仿真

二维码着陆真机实验

……

 

踩坑经验

 

初次设置时没有显示器如何远程连接TX2?

到手TX2是没有显示器的,要么用HDMI线接上显示器,要么在一个wifi网络下使用nomachine远程桌面。我没有显示器也没有HDMI线,只能远程桌面连接。问题是想要远程连接就必须让TX2和我的电脑连接上同一个WiFi并下载好nomachine,可是没有显示器我怎么让TX2连上我家的WiFi并且下载nomachine???

真是一个死循环,百度无果后我还是想到了解决办法:那就是用有线网络连接

找一台路由器,一根网线。网线一头插TX2一头插路由器输出网口,自己电脑也连上这个路由器的WiFi,这样自己的电脑就和TX2在一个局域网下啦。

接下来需要知道TX2的IP地址,显然这时不可能在TX2里输入ifconfig查看IP,可以在自己电脑上登入路由器的设置网页(tendawifi.com,melogin.cn,192.168.0.1之类的,路由器上有),默认账号密码一般都是admin,里面可以查看到连到这台路由器的所有设备的IP。如果忘记了路由器的密码,可以按路由器上的按钮恢复出厂设置。

也可以用360安全卫士里的“路由器卫士”查看连接到wifi的设备的IP。

我的电脑是win10系统,假设TX2的IP是127.111.0.1。打开cmd,输入ssh [email protected]就可以登陆到TX2啦!(TX2预装了ubuntu系统,系统账号和密码都是ubuntu)。其实也可用xshell登陆TX2,或者用winscp。

但这时只有命令行界面,没有图形界面。下面需要在TX2安装nomachine,可以用命令行从网上下载安装,也可以用自己电脑下载好安装包,然后用winscp把安装包上传到TX2的ubuntu系统,命令行输入指令安装nomachine。参考nomachine官网。

这时打开自己电脑上的nomachine,重启TX2,理论上就能连接上了。但是我的nomachine老是提示"Waiting for the desktop user to authorize your connection",这说明TX2的ubuntu系统需要确认连接,但是我都没有ubuntu的图形界面怎么点确认……

解决方法在:https://www.nomachine.com/TR10L04623

然后应该就能远程桌面连接上TX2的ubuntu系统了。

这时有了图形界面就好办事了,让TX2连接上WiFi(建议是实验室的wifi或者是无人机自带的wifi),然后就不需要这根网线了。以后无人机开机就能自动连接wifi并且启动nomachine,自己电脑连接上和TX2一样的wifi就能使用nomachine远程桌面了

当然也有VNC远程连接ubuntu的教程,我试了一下没成功,其实nomachine挺好的,还可以自动搜索同一局域网下的待连接电脑。

 

虚拟机和双系统谁更好(ubuntu)

VMware15虚拟机的优点:安装简单,占空间小(10G);内存、cpu、硬盘资源可以随使调整分配量;可以和win10同时使用,便于用ubuntu遇到问题时用win10查资料,而且可以把win10下载的资料直接拖入ubuntu系统。对新手学习ubuntu很友好

VMware15虚拟机的缺点:运行gazebo卡,不能用上显卡

双系统安装有风险,而且不能同时使用win10和ubuntu,但是可能不是很卡吧。

其实两者并不矛盾,都可以安装,用虚拟机做一些验证和练习,用双系统跑仿真。

 

无人机无法解锁,报错"compass sensors inconsistent"

双罗盘不一致导致,重新校准传感器也没用,可以直接禁用pixhawk上的内置罗盘。如下:

“地面站错误提示原因是磁罗盘受到干扰,尤其是内置磁罗盘,导致内外磁罗盘数据不一致,解决办法有两种:1.在参数列表里面修改内置磁罗盘参数CAL_MAG0_EN,将Enabled修改为Disabled。2.飞控内置磁罗盘容易受到激光雷达内的电机磁场干扰,需要将激光雷达高度适当调高。”

P200阿木无人机学习笔记--二维码引导着陆_第3张图片

P200阿木无人机学习笔记--二维码引导着陆_第4张图片

 

px4_command运行gazebo仿真时,QCC地面站无法自动连接

参考新手入门https://amov-wiki.readthedocs.io/zh_CN/latest/docs/Gazebo仿真.html

这部分参考Gazebo仿真教程部分都做好后,运行一个仿真,打开QGC地面站却没法自动连接gazebo

首先,QGC地面站的版本肯定越新越好,但是ubuntu16.04系统不支持最新的QGC,我用的是QGC3.5.2版本的,是ok的

其次,按照新手入门所述,我安装的px4编译环境是1.8.2版本的,不是最新的。这个版本的px4编译后生成的build文件名有所不同,如下

P200阿木无人机学习笔记--二维码引导着陆_第5张图片

但是新手入门里添加环境变量却是按照px4 v1.9.2版本以后的来添加的,如下图。要是进入这个路径下面会发现没有"px4_sitl_default"这个文件夹,而是"posix_sitl_default"

P200阿木无人机学习笔记--二维码引导着陆_第6张图片

因此这里添加环境变量,红色圈里面应该改成posix_sitl_default

这也告诉我们,添加环境变量不要照搬教程,而是要检查到底有没有这个路径,有没有这个文件

修改后QGC就能自动连接了,仿真也能正常跑了。

参考 https://bbs.amovlab.com/forum.php?mod=viewthread&tid=486&extra=page

参考 https://bbs.amovlab.com/forum.php?mod=viewthread&tid=987

 

Gazebo和V-rep比较

之前我做无人车用的v-rep仿真

v-rep可以在win10下运行,操作简单易懂十分浅显。而且自带很多机器人模型,改一改就能用。可以选择用Lua这种类似硬件的控制模型,也可以用python、matlab控制,vrep都提供了很简单的接口。v-rep多用于机械臂和一些固定机械的仿真,场景和机器人单一,不能进行px4无人机仿真。

做无人机仿真还是要用gazebo,操作复杂一些,而且要用linux或者macOS运行,新手很难上手。gazebo主要针对需要使用ros的机器人系统,场景和仿真的逼真度都高很多。

总之,新手可以用vrep,但gazebo更强大且适用于ros系统。

 

安装ubuntu双系统经验

我的笔记本电脑品牌是Acer,已经安装了win10系统,现在安装ubuntu18.04双系统。

我的boot是UEFI的(不是legacy),双硬盘(128G固态硬盘+1T机械硬盘)

主要参考如下:

《Windows10安装ubuntu18.04双系统教程》https://www.cnblogs.com/masbay/p/11627727.html

《win10下安装Ubuntu16.04双系统》https://blog.csdn.net/s717597589/article/details/79117112

主要参考的是以上第一篇,注意要在固态硬盘分200M空间安装ubuntu的引导

主要遇到的问题有:

1、制作的ubuntu的U盘启动盘插入电脑后,boot manager没有识别出U盘启动项

2、安装成功ubuntu双系统后,打开电脑没有显示linux的grub选择菜单,而是直接进入了windows系统

3、安装成功进入ubuntu系统后,重启再进windows,windows的系统时间错误

解决方案我写在另一篇文章里:

https://blog.csdn.net/benchuspx/article/details/108267599

 

Prometheus项目下载与跑通

Prometheus是阿木实验室提供的开源无人机开发项目,可以实现避障、激光雷达、自主降落等多种功能的gazebo仿真和配合P200无人机的真机实验。github上有完整的工程和Wiki讲解,链接如下

https://github.com/amov-lab/Prometheus

Prometheus本质是个ROS package,它和上文“新手入门”中提到的px4_command项目是一个类型,但是含有的功能包更多,下载和安装方式也不大一样。

上次下载px4_command项目以及配置px4、ros环境,我是在VMware虚拟机上进行的,全部实现了但是gazebo仿真十分卡,而且没有二维码引导着陆的功能包。这次我是在双系统ubuntu上下载Prometheus并配置px4、ros环境,过程有些许不同。

这次我安装的都是最新版的环境。ubuntu18.04、px4是1.10-stable版本、ROS-Melodic、Gazebo9。当然gazebo9在安装px4或者ros的过程中可能已经安装了。

我遇到的环境配置问题如下:

1、px4、gazebo环境配置顺序

2、gazebo打不开,报错gazebo: symbol lookup error;编译px4不成功

3、运行roslaunch……,报错ResourceNotFound: gazebo_ros

解决办法我写在另一篇博文

https://blog.csdn.net/benchuspx/article/details/108303032

 

待续~~

其实还有很多问题,百度能解决的这里就没写了

 

 

 

你可能感兴趣的:(无人机开发,gazebo,仿真,ubuntu,经验分享)