目录
我手上的阿木实验室的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官网的固件)。
现在所说的无人机开发其实指的是任务层的开发,集中在编写ROS程序放到TX2上去跑,而不是对pixhawk飞控的开发。如下
本次无人机开发是基于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仿真程序
未完成
阿木无人机仿真课程学习(ros和gazebo实现PX4无人机仿真)
下载并跑通 阿木的Prometheus无人机开源项目
阅读并理解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。如果忘记了路由器的密码,可以按路由器上的按钮恢复出厂设置。
我的电脑是win10系统,假设TX2的IP是127.111.0.1。打开cmd,输入ssh ubuntu@127.111.0.1就可以登陆到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.飞控内置磁罗盘容易受到激光雷达内的电机磁场干扰,需要将激光雷达高度适当调高。”
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文件名有所不同,如下
但是新手入门里添加环境变量却是按照px4 v1.9.2版本以后的来添加的,如下图。要是进入这个路径下面会发现没有"px4_sitl_default"这个文件夹,而是"posix_sitl_default"
因此这里添加环境变量,红色圈里面应该改成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系统。
待续~~
其实还有很多问题,百度能解决的这里就没写了
来源:oschina
链接:https://my.oschina.net/u/4265074/blog/4501685