开源飞行控制器

作者:nieyong

现在市面上的飞行控制器(下面简称飞控)分为两种。一种是由商业公司设计生产的,例如DJI的Naze系列飞控,一般都是闭源的,并且经过正规系统的测试,稳定性方面有保障。另外一种就是由爱好者或者公司发起的开源飞控,如APM飞控。这类飞控的硬件设计和软件代码一般都是开放的,如果有更多的人参与,能够快速迭代改进。

APM & 3D Robotics

3D Robotics公司旗下的飞控有3款,分别是ArduPilot(简称APM),PX4和Pihawk。

APM是比较古老的版本,处理核心使用的是Arduino,16位mega系列单片机,开发环境为arduino-IDE,基于Arduino这点和MWC飞控是一样的。功能上依然很强大,地面站使用apm-planner和mission-planner。最新版本为APM 2.6,开源。

PX4是apm的升级版,使用了很流行的stm32f407单片机,处理速度上了一个大台阶,摆脱了arduino的瓶颈,走向了发烧级的道路。不过PX4实际上是由两部分组成的,PX4FMU和PX4IO板。

后来又推出了Pixhawk飞控,其实就是把PX4FMU和PX4IO板结合在了一起,更高的集成度。

其背后的商业公司是3D Robotics。3D Robotics创始人是克里斯·安德森(Chris Anderson),前《连线》主编,著有《长尾理论》,《创客:新工业革命》等畅销书。创客运动的积极倡导者和领袖级人物。有关克里斯·安德森和他的无人机,可以参看《开源杂志》上的报道《变革推动者.克里斯安德森的无人机梦想腾飞》.

围绕着3DR公司的产品,形成了一个活跃的无人机爱好者社区,无人机飞控功能很强大,能飞固定翼、旋翼、直升机等。旗下网站也有好几个ardupilot.com、diydrones.com、3drobotics.com,很是混杂,很多资料和文档看的眼花缭乱。

据业内人士透露,diydrones是现在最活跃的四轴飞行器,无人机论坛,日活跃用户有2万多(2014-6,这个数据是否真实没有验证过)。所以把这个放在第一位介绍给大家。

  • 3DR官网: http://3drobotics.com/。这个网站简单来说就是3dr卖飞控的官方旗舰店,我还以为开发者的一些东西也在上面,,好浪费感情。
  • apm飞控的官网:http://copter.ardupilot.com 。见名知意,基于arduino的飞控,肯定是apm的官网了,一些开发者资料在http://dev.ardupilot.com
  • pixhawk飞控的官网:https://pixhawk.org 。 PIX4和Pixhawk的资料都在上面,此外上述代码都托管在GitHub上。
  • diydones论坛:http://diydrones.com 。这个是3dr旗下的交流论坛,你可以在这里找到很多国外的飞控爱好者。

本节内容部分来自Wellmakers博客3D Robotics相关介绍

MikroKopter

下面介绍的几个多旋翼飞控的鼻祖,出现的时间大概在2008-2010年间。现在市面上该类飞控已经比较少用。包括Mikrokopter/KK飞控/Paparazzi/MWC。

在2006年10月24号,Holger Buss和Ingo Busker创造了MK,一个伟大的Mikrokopter四轴社区。 在2007年中,Mikrokopter便像一个“ 空中的钉子”,像一只鸟一样,稳步的停留在空中。这对于开源四轴飞行器是一个很大的里程碑。

MikroKopter来自德国。毫无疑问,MikroKopter这个名字来源于德语,对应的英文应该是MicroCopter。其英文官网地址是http://www.mikrokopter.de/en/home

作者在SVN上共享了代码。

KK飞控

最经典的多轴飞控,价格十分便宜,很多人就是用它学会飞四轴的。主要问题是没有自稳,更不用说什么定高、GPS之类的高级功能了。因为没有自稳,新手练习起来就比较困难,不过对于从直升机转过来的玩家来说就是小case了。支持3轴、四轴、6轴、V22的飞行模式;

http://www.kkmulticopter.com/

Paparazzi

这是国外一个开源的固定翼,多轴飞行器项目。一个做固定翼的朋友购买了它的组件。github上的资料,wiki等都挺全面的。项目不仅仅只包括飞控板的软硬件,包括从稳压电源和GPS到卡尔曼滤波代码, 而是一个强大和不断扩大的地面空中软硬件群,包括数传电台,天线和一个高度进化的用户友好的地面控制软件界面。

http://wiki.paparazziuav.org/wiki/Main_Page

https://github.com/paparazzi/

MWC & MultiWii

MWC是MultiWii Copter的缩写,是最为经典的开源的多轴飞行器固件。此固件的原创作者是法国的Alex,他为了打造自己的Y3飞行器(一个三轴飞行器),在开源硬件平台Arduino的基础上开发了最初的MWC固件。几年来经过许多高手的参与及共同努力,开发进度越来越快,已经基本成熟,支持三轴,四轴,六轴等多种飞行器。其最大的特点是,其硬件是基于Arduino平台。这为很多熟悉开源硬件平台Arduino的玩家入门提供方便。

下图为Alex最早使用MWC的Y3飞行器。

根据使用Arduino开发板的不同,MWC飞控有两种版本。

  • Atmega328P 版本,32K的Flash,Atmel公司8位AVR单片机内核
  • Atmega2560 版本,256K的Flash,Atmel公司8位AVR单片机内核

AVR单片机内核就是AVR内核,和51内核是不一样的,它的汇编指令与51单片机汇编指令是完全不一样的。AVR内核是美国ATMEL公司研发的。ATMEL公司有三大系列MCU,一种是老式的以8051内核的单片机,第二种是目前大量使用的以AVR内核的AVR单片机。第三种是目前高端的以ARM内核的微处理器。

所以我们可以使用Arduino Pro Mini/Arduino Mega等开发板配合传感器开发板来搭建自己的四轴飞行器。当然,需要有数字电路和编程的底子,不过如果悟性好,看看文档也能搞起来。主要难点在于调试,很难把它调得很稳,需要很大的耐心。

正是由于MWC使用的是8位单片机做的主控芯片,在后来的发展中受到了性能的限制。很多玩家就把MWC飞控代码移植到32位处理器上(例如STM32),形成了BaseFlight飞控代码,后来从BaseFlight项目又分出来(fork)了CleanFlight飞控项目。

CC3D & OpenPilot

下面介绍的是2014年之后穿越机上使用的飞控。包括CC3D/Naze32/F3飞控,同时会介绍飞控固件Cleanflight。

从2015年开始,用于穿越机的飞控发展非常迅速,每半年就有一个新设计的飞控脱颖而出,引领整个穿越机的发展。已经经历了CC3D,Naze32,F3飞控这3个时期。这类飞控也是现在市面上流行的飞控,他们的固件基本上都是使用Cleanflight。

OpenPilot社区主要提供下面两个版本的飞控硬件平台:

  • OpenPilot CopterControl Platform(又叫CC3D平台)。使用STM32F1作为主控,没有气压计,价格便宜,功能稳定,已经被大量使用和接受。
  • OpenPilot Revolution Platform(还在开发中,未发布,2015-5-2)。使用STM32F4作为主控。

配合上面两个飞控硬件平台,OpenPilot还提供一个功能强大,支持跨平台(Windows,Mac OS,Linux)的地面站(包含上位机功能)。

CC3D是现在OpenPilot现在提供的唯一大量使用的飞控。由于其飞控固件稳定,配置简单,价格便宜,而且有强大的地面站上位机支持,所以非常受欢迎。穿越机QAV250就是使用的CC3D作为默认飞控,crazepony团队会花很多精力来研究这个飞控,以便给大家提供更好的技术支持。

OpenPilot本身提供的飞控固件已经非常稳定。但是很多穿越机的玩家会把CleanFlight飞控固件烧入到CC3D飞控平台上,以获得更好的飞行体验。更多内容,请看CleanFlight飞控固件部分。

CC3D飞控是穿越机飞控的鼻祖,2015年上半年最火。现在使用的人在减少,上面的官网已经经常打不开了。2016-8-2

Cleanflight

Cleanflight并不是一个飞控硬件平台,而是一个飞控固件。也就是飞控的软件代码,它可以移植都不同的飞控硬件平台上,如CC3D/Naze32/F3等。

正如在MWC介绍中提到的,由于MWC使用的是8位单片机做的主控芯片,在后来的发展中受到了性能的限制。很多玩家就把MWC飞控代码移植到32位处理器上(例如STM32),形成了BaseFlight飞控代码,后来从BaseFlight项目又分出来(fork)了CleanFlight飞控项目。Cleanflight其实只是一个基于MWC的飞控代码,它现在已经支持了下面这些飞控硬件平台:

  • AlienWii32
  • Naze32
  • CC3D
  • CJMCU
  • CheBuzzF3
  • Olimexino
  • Sparky
  • F3飞控

这些飞控都有一个特点,都是基于STM32主控MCU,内核为32位ARM Contex-M。那么crazepony的wiki中为什么要详细介绍这个飞控呢,有下面几点:

  • crazepony也是使用的STM32作为主控MCU,而且硬件选型和Naze32完全一样,很有借鉴意义
  • CC3D和Naze32飞控都可以刷Cleanflight的飞控,用于研究穿越机
  • Naze32作为后起之秀,有超越CC3D的趋势,在国外穿越机玩家中非常流行。这已经成为事实,2015年下半年是Naze32最火的时候。到现在2016年上半年,已经被F3飞控取代。

Cleanflight飞控几个大的特点:

  • 飞控代码基于MWC,稳定简洁;
  • 为现在的32位处理器而开发,删除了原来为了支持8位处理器而存在的冗余代码。
  • 加入了很多好玩的功能。例如支持LED灯带,支持OLED,支持超声波传感器
  • 使用了先进的代码开发管理,代码结构清晰,冗余性强,测试充分
  • 支持多个硬件平台,例如CC3D,Naze32,F3等

Cleanflight调参上位机使用了Chrome浏览器APP模式,名字叫做Cleanflight GUI。下面是其主界面图。

下面是Cleanflight的官网和代码库。

Naze32

即CC3D之后,Naze32飞控在2015年下半年在模友圈迅速流行。他们都有一个特点,基本上都是基于STM32F101主控MCU,内核为32位ARM Contex-M。

Naze32的正面图,和CC3D最大的区别是它有加入气压计MS5611:

据笔者现在了解的知识,Naze32飞控最早应该是由日本团队开发出来,并且公开在网上供模友参考学习测试。现在市面上有很多基于Naze32飞控的改版或者变种。

F3飞控

F3飞控是即Naze32飞控之后,在2016年上半年迅速走红。最大的特点是,主控MCU由原来的STM32F101升级到STM32F303,所以命名为F3飞控。

该飞控最早由Seriously Pro公司开发出来,命名为SPRacing F3飞控。

F3飞控官方网址:http://seriouslypro.com

open drone(国内)

下面介绍的是一些其它飞控。

http://www.open-drone.org/

https://github.com/opendrone

open drone是由北京的LUG和创客组建的一个项目。但是没有看到其产品。很可能还是一个比较松散的组织,没有以公司盈利的团队形式存在。

erlerobot

这是一个使用Linux系统的开源四轴飞行器项目。他们的口号是:Building the next generation of educational drones。

http://erlerobot.com/

https://github.com/erlerobot

有比较齐全的wiki,并且使用gitbook形式提供四轴飞行器开发的电子书。

https://github.com/erlerobot/wiki/wiki

http://erlerobot.github.io/erle_gitbook/en/