(1)-开源飞控序
本文是个人在学习开源飞控的过程中的学习记录、笔记和总结以及后期会有的个人设计,例如开发出一套飞控软硬件等。在本文中,将平时每次遇到新的内容就补充一部分,包括但不限于每款开源飞控,飞控详细配置,支持固件,接口,原理图pcb图,历史,现状和前景,使用场合,开发环境,地面站等内容都补充的尽量详细。然后研究总结主流飞控算法构成和具体实现。
我按照个人理解将无人机分为如下三个类型:
--固定翼
--旋翼(非穿越机类、具有智能模式)机
--穿越机(全手动模式)。
并将飞控软件和飞控硬件也分为这三个方面。
通常情况下固定翼飞机如果不进行超视距飞行一般不加飞控,进行超视距飞行时可以加上飞控和数传图传设备,它使用穿越机飞控和非穿越旋翼机飞控都可以(主流的飞控固件一般都支持多种飞机结构,如固定翼、直升机、多旋翼等)。由于本人研究方向不集中在此,故本文不重点介绍固定翼飞机。
旋翼机(非穿越型),比如直升机、二旋翼、四旋翼、六旋翼、八旋翼、十六旋翼等等,这类飞机并不追求穿越机的机动性,而更加追求稳定和智能,能够完成超视距飞行、航迹规划飞行,并具有多种智能辅助驾驶模式,例如大疆无人机。该类飞机通常具有多种传感器来支持它的智能功能,例如加速度计、陀螺仪、GPS、激光、声纳、光流等。该类飞机的开源飞控软件主要有Ardupilot和Pixhawk两个,主流飞控硬件主要是符合Pixhawk硬件设计标准的飞控。商业的也比较多例如大疆、极飞,但商业的是闭源的,且应用方向比较专一,不适合用来学习和研究。该类无人机软硬件是我的主要研究方向,我研究生阶段的主要工作就是将视觉以及激光技术和无人机进行结合,来实现无人机的视觉导航,使其具备在没有任何外部信号的环境下的自动飞行能力。
穿越机则是一种追求轻量化、高机动性、高速度的无人机,一般情况下都是四旋翼。这类飞机为了提高机动性能,通常只有全手动操控模式,最多再有一个气压定高模式等,没有智能辅助模式,对于飞手的驾驶技能要求极高。这类飞机也有它对应的开源飞控软硬件,飞控软件包括Betaflight和baseflight以及cleanflight等等后边带flight字眼的,开源飞控硬件从CC3D到F3、F4、F7飞控等,发展到现在主要是F4和F7飞控。这类飞控通常很小,结构简单,没有各种外围传感器接口。我一开始也很喜欢这类穿越飞机,毕竟能够给人带来极大的刺激感,如同开F1赛车一般,但是经过一年多来的飞行,我发现我对驾驶穿越机并没有天赋,预期不断坠机,我还是老老实实的研究具有智能模式的非穿越旋翼机吧。
(2)-开源飞控软件
目前主要的开源飞控软件项目有:
Ardupilot
PX4
Openpilot/Taulabs
MultiWiiCopter(MWC)
KKMultiCopter
Paparazzi(PPZ)
Autoquad
Betaflight/baseflight/cleanflight
其中无人机(非穿越机类型)飞控固件主要是前两个,智能化程度较高,有多种自动驾驶模式。中间的五个也是发展较好的开源飞控,但我没用过,相比前两个算是小众飞控。而最后一行的Betaflight和baseflight以及cleanflight等则是使用较多的穿越机飞控,本人没有驾驶穿越机的天赋,因此只是保持关注穿越机飞控软硬件的发展而已,我平时的研究工作也主要集中在Ardupilot飞控和Pixhawk飞控上以及他们的硬件Pixhawk标准的飞控板,进行一些仿真和二次开发工作。
Ardupilot的前身Arduino开源飞控是在2005年由Massimo Banzi、David Cuartielles等人在意大利交互设计学院合作开发而成,之后他们公开了其硬件设计文档,开放了飞控源代码,从此拉开了开源飞控的序幕。PX4是由苏黎世理工的计算机视觉与几何实验室的一个软硬件项目PIXHAWK演变而来。在APM硬件不能满足使用需求后,3DR和PX4团队进行了合作,在2013年11月共同发布了Pixhawk,而原来的ardupilot也被移植到pixhawk上进行运行,也叫apm for pixhawk,而PX4团队为pixhawk设计的飞控软件叫PX4,从此之后,ardupilot和px4在硬件以及底层系统上基本实现了统一。2014年10月由3DR牵头成立了Dronecode基金会,其同时对Ardupilot和PX4两大开源飞控进行支持和运行。然而2016年8月,Dronecode的董事会成员,ArduPilot的团队领袖之一Philip Rowse向Dronecode会员公司发送了一封内部邮件,公布了Ardupilot即将离开Dronecode的决定。至于为何要离开,应该是跟Dronecode的会员制度有关,另外一个也跟两大开源飞控不同的开源协议有关,PX4的是BSD协议,而Ardupilot的是GPL协议,两者最大的区别在于BSD协议可以将开源软件二次开发后用作商业用途,而GPL协议不允许修改后和衍生的代码做为闭源的商业软件发布和销售,所以如果是公司要使用开源飞控作为产品开发的话应该选取PX4更为合理。自此,PX4作为Dronecode基金会唯一支持的开源飞控项目,也得到了更好的发展,但作为PX4和Ardupilot两款开源飞控的使用者和开发者来说,Ardupilot的功能更为全面,稳定性也要更好一些,软件中存在的逻辑问题也要少一些,而PX4中存在更多的问题,比如对于着陆的判断条件、航线航段的切换中都存在一些问题,需要后续优化,但是在软件的架构上PX4要明显优于Ardupilot,模块更加独立,架构更加清晰,模块之间数据的传递也更加明确。
(3)-开源飞控硬件
开源飞控硬件分为手动飞行的穿越机飞控以及智能化的无人机飞控,穿越机飞控如CC3D、QQ、F3、F4、F7飞控等,目前(2020年)发展到现在,主流的是F4和F7飞控,详见https://www.moz8.com/thread-90752-1-1.html介绍和https://www.bilibili.com/video/BV1Mp4y1S7So?t=808中的介绍。
穿越机采用手动操控,追求机动性能,不需要额外的传感器,通常这类飞控核心部件只有主控芯片和陀螺仪加速度计等,以及部分集成了OSD和电流计和气压计和电调,没有GPS、光流、激光等传感器。
除了穿越机之外的无人机,这里多指旋翼机,通常主要工作在智能辅助模式下,例如定高、定点、预设轨迹航行、自动起飞降落等,这类智能化的飞控能够解放操控人员的大部分工作,完成自动驾驶,智能化程度极高。商业无人机均采用此类飞控,但商业飞控通常是闭源的成本也比较高,在广大无人机爱好者群体中广泛使用的还是开源飞控,开源的主要就两个一个是APM飞控(现已淘汰),一个就是Pixhawk标准的飞控,目前主要是Pixhawk标准的飞控。
穿越机飞控软硬件的发展就不做多叙了,参考上边的两个链接因该能够有一个大体的认识,我并不集中于此。事实上,非穿越机飞控更加智能,有多种操作模式,其中一个就是手动模式,在这个模式下,无人机的六个*度也是完全由操作人员手动控制,与穿越机飞控的无异。
1)、Arduino、APM和Pixhawk
发展到今天,Arduino和APM飞控由于处理器性能落后已经退出历史舞台,目前(2020年)广为使用的是pixhawk硬件标准的飞控。pixhawk是开源飞控硬件标准,截至2019年11月已经发行了5代,分别是FMUV1一直到FMUV5。世界上很多公司做出了各种各样的基于各个版本pixhawk的飞控板,他们都遵循pixhawk标准,例如硬件系统架构,引脚连接方式等,只是外观不同。我所在的实验室也开发了多款符合Pixhawk标准的无人机飞控板子,重量最轻的仅有2g。
开源飞控发展历程:APM-->PX4FMU/IO-->Pixhawk(特指基于FMUV2的第一款pixhawk产品,名字叫做pixhawk):
a、Arduino简介
Arduino就是主要以以AVR单片机为核心控制器的单片机应用开发板,Arduino开发人员开发了简单的函数,还有许多应用库,这样就不用直接去操作寄存器了,使得没有很好的单片机基础的人员也可以使用Arduino做出自己想要的东西。Arduino的开发人员还开发了一个简洁的IDE(集成开发环境)也就是写代码,编译,调试,下载的上位机软件。Arduino只是一个开源的开发平台,它可以支持多种MCU,包括atmel公司的AtmelTiny系列、avr8、ARM Cortex M0、ARM Cortex M3、ST公司的ARM Cortex M3,TI公司的energia平台也采用了Arduino的平台结构,可以用于开发MSP430、C2000等。
b、APM简介
APM(ArduPilotMega) 是在2007年由DIY无人机社区(DIY Drones)推出的飞控产品,APM基于Arduino的开源平台,对多处硬件做出了改进,包括加速度计、陀螺仪和磁力计组合惯性测量单元(IMU)。由于APM良好的可定制性,通过开源软件Mission Planner,开发者可以配置APM的设置,接受并显示传感器的数据。APM以Atmega2560微处理器为主要架构,硬件包括:三轴陀螺仪、三轴加速度计、测量高度的空气压力传感器、10Hz GPS 模块、监视电池状态的电压传感器、4Mb板上数据记录存储器(任务数据自动记录,并可以导出为 KML 格式)、内建硬件失效处理器(在失控时可以返回出发点)、(可选) 三轴磁力计、(可选) 空速传感器、(可选) 电流传感器。建立在Arduino平台上的APM飞控板,等同于一个Arduino单片机,可以直接在Arduino的开发环境下进行开发。
c、PX4FMU/IO与Pixhawk(官网地址:http://www.pixhawk.com/)
Pixhawk世界上最出名的开源飞控的硬件厂商3DR最新推出了最新一代飞控系统。由于APM的处理器已经接近满负荷(APM使用8位的处理器),没有办法满足更复杂的运算处理,所以Ardupilot软件开始兼容pixhawk硬件。pixhawk系列飞控采用了目前最新标准的32位ARM处理器,第一代产品是PX4FMU/IO,它分为飞控处理器PX4FMU和输入输出接口板PX4IO。PX4系列可以单独使用PX4FMU(但是接线很复杂),也可以配合输入输出接口板PX4IO来使用,但是因为没有统一的外壳,不好固定,再加上使用复杂,所以基本上属于一代实验版本。通过PX4系列的经验,厂商终于简化了结构,把PX4FMU和PX4IO整合到一块板子上,并加上了骨头形状的外壳,优化了硬件和走线,也就是这款第二代产品Pixhawk。
github上有硬件板的PCB图与原理图,网址如下:https://github.com/PX4/Hardware/tree/master/FMUv2。.sch和.brd文件需要使用Altium Designer viewer打开。因为原理图文件和PCB文件只有只读权限。
目前为止,pixhawk标准的飞控已经发展到了(2019年)第五代FMUv5,这系列飞控系统有2套固件系统,一套是ardupilot,另一套则是由ETH Zurich (苏黎世联邦理大学)的计算机视觉与几何实验室的PIXHAWK项目发展而来的PX4固件。经实测两套固件都能实现稳定飞行,前期在地面上需要做好相应的初始化。Ardupilot固件使用mission plan地面站,PX4Firmware采用Qgroundcontrol地面站。
d、APM、PX4FMU/IO、Pixhawk三个系统比较:
APM2.5与2.6、2.8是传统ardupilot飞控的最新(也是最终)版本;PX4FMU与PX4IO 是这个新飞控家族的最初两个版本;Pixhawk是结合 PX4FMU / PX4IO改进而开发出的PX4飞控的单块电路板版本;APM 8位CPU在储存和CPU计算能力上不足;PX4FMU / PX4IO 是由一个Lorenz Meier所在的瑞士小组所开发的学校项目;PX4FMU拥有一个32位处理器,提供更多内存、运用分布处理方式并且包含一个浮点运算协处理器;
与APM相比,PX4FMU / Pixhawk具有其10倍以上的CPU性能和更多其他方面的改进;Pixhawk是由DIYDrones、3DR和最初的瑞士PX4团队联合开发的;开发的重点是Pixkawk,所以PX4系统的开发可能会滞后并且某些问题可能很久都不会得到解决;(APM系统已经走到了它的终点,PX4FMU/IO系统只是开发Pixhawk的过渡。Pixhawk是硬件平台,PX4是pixhawk的原生固件,专门为pixhawk开发的。PX4的GitHub代码:https://github.com/PX4/Firmware。APM(Ardupilot Mega)也是硬件,Ardupilot是APM的固件,所以称ArduPilot固件也叫APM。APM的GitHub代码:https://github.com/ArduPilot/ardupilot。Ardupilot由一群爱好者开发维护的,从最早的APM1,APM2开始,后来软件代码不断状大,原来的APM2的硬件不能胜任最新代码,再后来开发者就把Ardupilot代码转移到了Pixhawk平台上,兼容了Pixhawh硬件平台,所以就导致现在Pixhawk上有两套飞控代码。APM固件程序比较混乱,零散。维护者多,代码风格不太统一,而且是单片机这种调用程序,不好入门。但是成熟稳定,支持硬件多。 PX4固件,在nuttx嵌入式实时操作系统上运行。采用多任务,模块化设计。相对来说方便入门,代码风格比较统一。但是支持硬件少,相比APM固件不太稳定。
2)、pixhawk各代产品
APM这里就不做过多讨论了,已经逐渐被时代抛弃。截至2019年11月已经发行了5代,分别是FMUV1-FMUV5。
FMUV3-V5都有其对应的产品,下边网址的Autopilot Hardware中有对各个飞控的介绍。第6节开头插入的英文也有介绍。
https://docs.px4.io/v1.9.0/en/flight_controller/mro_x2.1.html
我们实验室开发的飞控,最初是基于FMUV2来进行二次开发,后续已经发展出了多个版本迭代产品,但均符合Pixhawk标准。
3)、openpilot/Taulabs系飞控
4)、Multi Wii Copter(MWC)
5)、KKMultiCopter飞控
6)、Paparazzi(PPZ)系飞控硬件
7)、Autoquad飞控
上边的3)-7)这几个飞控相对小众,相对Ardupilot、PX4固件和pixhawk固件也没有特别的优势。不细讲。
(4)-飞控算法
无人机飞控三大算法:捷联式惯性导航系统、卡尔曼滤波算法、飞行控制PID算法。
https://www.cnblogs.com/kinson/p/9651434.html
(5)-自行设计(第(5)节涉密,将在项目过脱密期后开源)
1)、硬件
2)、固件
3)、地面站
4)、系统集成
(6)-Ardupilot、PX4、Pixhawk主要的历史事件
2007年5月 – 克里斯·安德森用乐高 mindstorm搭建无人机时,建立了 DIYDrones.com .
2009年 – 克里斯·安德森和Jordi Munoz 成立了3D Robotics(3DR)
2009年5月 – Jordi/3DRobotics 发布了第一款Ardupilot板子
2009年12月 – Doug 推出了改善了的 Ardupilot v2.4,第一次支持基于IMU的飞行器任务飞行
2010年 – 3d Robotics 推出了APM1
2010年初 – Doug and Jason 发布了Ardupilot 2.6 ,改善了油门控制, 支持ArduIMU
2011年 – 3D Robotics发布了APM2
2012年 – 3D Robotics发布了APM2.5/2.6
2012年7月 – 苏黎世联邦理工学院(Lorenz Meier,MikeS) / 3D Robotics发布了PX4
2012年11月 – 第一款APM2.5的山寨版出现了
2013年1月 – ardupilot的代码从googel code搬到了github
2013年11月 – ETH (Lorenz Meier,MikeS) / 3D Robotics发布了Pixhawk
2014年8月 – 首次实现了ArduPlane基于Linux控制板的飞行 (PixhawkFire)
2014年10月-DroneCode基金会成立
2016年9月-Ardupilot与3DR,克里斯·安德森(Chris Anderson)和PX4团队的关系破裂,因为DroneCode白金级董事会成员胜过白银级董事会成员,从而从DroneCode中删除了包括ArduPilot在内的GPLv3项目。
(7)-参考文献
杨炯:开源飞控知多少 http://mini.eastday.com/mobile/180309231105081.html
杨炯:开源飞控的昨天,今天和明天 http://baijiahao.baidu.com/s?id=1646826969192658037&wfr=spider&for=pc
开源飞控的前世今生https://zhuanlan.zhihu.com/p/73405858