【北航无人驾驶飞行器设计研究所】开源飞控知多少随着科技的进步,无人机走进普通大众生活只是时间问题。然而,一直困扰着无人机发展的关键设备就是自动驾驶仪。随着开源飞控的发展,这个问题得到了突破性的解决,为无人机产品的进一步民用化奠定了基础。李大伟北京航空航天大学无人驾驶飞行器设计研究所副教授杨炯北京航空航天大学无人驾驶飞行器设计研究所工程师在纷繁复杂的无人机产品中,四旋翼飞行器以其结构简单、使用方便、成本低廉等优势,最先进入了大众的视线。但是,这种飞行器对飞行控制能力的要求是最高的,因此它刺激了大批基于MEMS传感器的开源飞控的出现。1如何定义开源开源(OpenSource)的概念最早被应用于开源软件,开放源代码促进会(OpenSourceInitiative)用其描述那些源码可以被公众使用的软件,并且此软件的使用、修改和发行也不受许可证的限制。每一个开源项目均拥有自己的论坛,由团队或个人进行管理,论坛定期发布开源代码,而对此感兴趣的程序员都可以下载这些代码,并对其进行修改,然后上传自己的成果,管理者从众多的修改中选择合适的代码改进程序并再次发布新版本。如此循环,形成“共同开发、共同分享”的良性循环。开源软件的发展逐渐与硬件相结合,产生了开源硬件。开源硬件的原则声明和定义是开源硬件协会(OpenSourceHardWareAssociation,OSHWA)的委员会及其工作组,以及其他更多的人员共同完成的。硬件与软件不同之处是实物资源应该始终致力于创造实物商品。因此,生产在开源硬件(OSHW)许可下的品目(产品)的人和公司有义务明确该产品没有在原设计者核准前被生产,销售和授权,并且没有使用任何原设计者拥有的商标。硬件设计的源代码的特定格式可以被其他人获取,以方便对其进行修改。在实现技术自由的同时,开源硬件提供知识共享并鼓励硬件设计开放交流贸易。开源硬件(OSHW)定义1.0是在软件开源定义基础上定义的。该定义是由BrucePerens和Debian的开发者作为Debian自由软件方针而创建的。开源硬件必须符合以下条件:第一,文档同时发布。硬件必须与包含设计文件的文档同时发布,并且必须允许对于设计文件的修改和分发。文档必须包含设计文件,不允许故意在设计文件中进行模糊描述。不允许使用中间格式,或生产用文件替代设计文件。许可可要求开放格式的全文设计文件。第二,许可范围。硬件文档中,如果硬件设计不是全部在许可条件下发布,必须明确说明设计的哪些部分在范围之内。第三,必要的软件。如果被许可的设计需要软件、固件或者其他硬件设计完成其重要功能所需要的条件时,许可可要求以下任意一条件得到满足:A.设计与其之间的接口需要补充充足的文档。这样可通过文档简单地编写开源的、完成其重要功能所需的软件。B.必要的软件需在OSI推荐的开源许可下进行发布。第四,衍生品。许可应允许修改版本和衍生品,并且允许它们在与原始品同样的许可条款下进行分发。许可应允许制造、销售、分发、使用利用设计文件生产的产品,并允许设计文件本身和其衍生品。第五,自由再分发。许可应不限制任何团体销售或者发放工程文档。许可不得对此种销售收取使用费或者其他费用。许可不得对衍生品的销售收取使用费或者其他费用。第六,归属权。许可可要求在分发设计文件,生产产品或其衍生品时,衍生文档和设备相关的版权声明中提供原许可者归属权。许可可要求正常使用设备的最终用户能够获得该归属权信息,但不可以要求特定的显示格式。许可可以要求衍生品包含一个与原始设计不同的名字或者版本号。第七,禁止对个人和组织的歧视。许可禁止对个人和组织进行差别待遇。第八,禁止对应用领域的歧视。许可禁止限制任何人在特定应用领域使用设计(包括成品)。比如,许可禁止限制在商业或者核研究中使用该硬件。第九,许可的分发。许可赋予的权利必须应用于所有设计及衍生品再分发的对象,并且该过程无需这些团体执行额外的许可。第十,许可不可以限制特定产品。许可赋予的权利不得取决于在特定产品中被许可的设计。如果设计的一部分在许可条件下被使用或者分发,所有再分发的对象应该获得原设计所赋予的相同的权利。第十一,许可不可以限制其他硬件或者软件。许可禁止对于与被许可的设计相组合的其他部件添加限制条件,但是设计的衍生品不在该禁止范畴内。比如许可不得要求与被许可的设计一同销售的其他硬件是开源的,也不可以要求只有开源软件可以在设备外部使用。第十二,许可必须是技术中立的。许可的任何条款不可以基于任何个人技术、特定部分或者部件、材料或者接口、使用风格等。2开源飞控又是何物了解了开源硬件的概念,开源飞控的概念也就比较容易理解了。所谓开源飞控就是建立在开源思想基础上的自动飞行控制器项目(OpenSourceAutoPilot),同时包含开源软件和开源硬件,而软件则包含飞控硬件中的固件和地面站软件两部分。爱好者不但可以参与软件的研发,也可以参与硬件的研发,不但可以购买硬件来开发软件,也可以自制硬件,这样便可让更多人自由享受该项目的开发成果。开源项目的使用具有商业性,所以每个开源飞控项目都会给出官方的法律条款以界定开发者和使用者权利,不同的开源飞控对其法律界定都有所不同。3开源飞控的发展开源飞控的发展可分为三代:第一代开源飞控系统使用Arduino或其他类似的开源电子平台为基础,扩展连接各种MEMS传感器,能够让无人机平稳地飞起来,其主要特点是模块化和可扩展能力。第二代开源飞控系统大多拥有自己的开源硬件、开发环境和社区,采用全集成的硬件架构,将全部10DOF传感器、主控单片机,甚至GPS等设备全部集成在一块电路板上,以提高可靠性。它使用全数字三轴MEMS传感器组成航姿系统(IMU);能够控制飞行器完成自主航线飞行,同时可加装电台与地面站进行通信,初步具备完整自动驾驶仪的功能。此类飞控还能够支持多种无人设备,包含固定翼飞行器、多旋翼飞行器、直升机和车辆等,并具备多种飞行模式,包含手动飞行、半自主飞行和全自主飞行。第二代飞控的主要特点是高集成性、高可靠性,其功能已经接近商业自动驾驶仪标准。第三代开源飞控系统将会在软件和人工智能方面进行革新。它加入了集群飞行、图像识别、自主避障、自动跟踪飞行等高级飞行功能,向机器视觉、集群化、开发过程平台化的方向发展。4你不该错过的开源飞控一览Arduino飞控要谈开源飞控的发展就必须从著名的开源硬件项目Arduino谈起。Arduino是最早的开源飞控,由MassimoBanzi、DavidCuartielles、TomIgoe、GianlucaMartino、DavidMellis和NicholasZambetti于2005年在意大利交互设计学院合作开发而成。Arduino公司首先为电子开发爱好者搭建了一个灵活的开源硬件平台和开发环境,用户可以从Arduino官方网站取得硬件的设计文档,调整电路板及元件,以符合自己实际设计的需要。Arduino可以通过与其配套的ArduinoIDE软件查看源代码并上传自己编写的代码,ArduinoIDE使用的是基于C语言和C++的Arduino语言,十分容易掌握,并且ArduinoIDE可以在Windows、MacintoshOSX和Linux三大主流操作系统上运行。随着该平台逐渐被爱好者所接受,各种功能的电子扩展模块层出不穷,其中最为复杂的便是集成了MEMS传感器的飞行控制器。为了得到更好的飞控设计源代码,Arduino公司决定开放其飞控源代码,他们开启了开源飞控的发展道路。著名的开源飞控WMC和APM都是Arduino飞控的直接衍生产品,至今仍然使用Arduino开发环境进行开发。APM飞控APM(ArduPilotMega)是在2007年由DIY无人机社区(DIYDrones)推出的飞控产品,是当今最为成熟的开源硬件项目。APM基于Arduino的开源平台,对多处硬件做出了改进,包括加速度计、陀螺仪和磁力计组合惯性测量单元(IMU)。由于APM良好的可定制性,APM在全球航模爱好者范围内迅速传播开来。通过开源软件MissionPlanner,开发者可以配置APM的设置,接受并显示传感器的数据,使用googlemap完成自动驾驶等功能,但是MissionPlanner仅支持windows操作系统。目前APM飞控已经成为开源飞控成熟的标杆,可支持多旋翼、固定翼、直升机和无人驾驶车等无人设备。针对多旋翼,APM飞控支持各种四、六、八轴产品,并且连接外置GPS传感器以后能够增稳,并完成自主起降、自主航线飞行、回家、定高、定点等丰富的飞行模式。APM能够连接外置的超声波传感器和光流传感器,在室内实现定高和定点飞行。PX4和PIXHawkPX4是一个软硬件开源项目(遵守BSD协议),目的在于为学术、爱好和工业团体提供一款低成本、高性能的高端自驾仪。这个项目源于苏黎世联邦理工大学的计算机视觉与几何实验室、自主系统实验室和自动控制实验室的PIXHawk项目。PX4FMU自驾仪模块运行高效的实时操作系统(RTOS),Nuttx提供可移植操作系统接口(POSIX)类型的环境。例如:printf()、pthreads、/dev/ttyS1、open()、write()、poll()、ioctl()等。软件可以使用USBbootloader更新。PX4通过MAVLink同地面站通讯,兼容的地面站有QGroundControl和MissionPlanner,软件全部开源且遵守BSD协议。由3DR联合APM小组与PX4小组于2014年推出的PIXHawk飞控是PX4飞控的升级版本,拥有PX4和APM两套固件和相应的地面站软件。该飞控是目前全世界飞控产品中硬件规格最高的产品,也是当前爱好者手中最炙手可热的产品。PIXHawk拥有168MHz的运算频率,并突破性地采用了整合硬件浮点运算核心的Cortex-M4的单片机作为主控芯片,内置两套陀螺和加速度计MEMS传感器,互为补充矫正,内置三轴磁场传感器并可以外接一个三轴磁场传感器,同时可外接一主一备两个GPS传感器,在故障时自动切换。基于其高速运算的核心和浮点算法,PIXHawk使用最先进的定高算法,可以仅凭气压高度计便将飞行器高度固定在1米以内。它支持目前几乎所有的多旋翼类型,甚至包括三旋翼和H4这样结构不规则的产品。它使飞行器拥有多种飞行模式,支持全自主航线、关键点围绕、鼠标引导、“FollowMe”、对尾飞行等高级的飞行模式,并能够完成自主调参。PIXHawk飞控的开放性非常好,几百项参数全部开放给玩家调整,靠基础模式简单调试后亦可飞行。PIXHawk集成多种电子地图,爱好者们可以根据当地情况进行选择。OpenPilot与TaulabsOpenPilot是由OpenPilot社区于2009年推出的自动驾驶仪项目,旨在为社会提供低成本但功能强大的稳定型自动驾驶仪。这个项目由两部分组成,包括OpenPilot自驾仪与其相配套的软件。其中,自驾仪的固件部分由C语言编写,而地面站则用C++编写,并可在Windows、MacintoshOSX和Linux三大主流操作系统上运行。OpenPilot的最大特点是硬件架构非常简单,从它目前拥有的众多硬件设计就可以看出其与众不同之处。官方发布的飞控硬件包括CC、CC3D、ATOM、Revolution、Revolutionnano等,衍生硬件包括Sparky、Quanton、REVOMINI等,甚至包含直接使用STM32开发板扩展而成的FlyingF3、FlyingF4、DescoveryF4等,其中CC3D已经是300mm以下轴距穿越机和超小室内航模的首选飞控,而DiscoveryF4被大量用于爱好者研究飞控,Quanton更是成为了Taulabs的首选硬件。下面我们来说说Openpilot旗下最流行的硬件CC3D。此飞控板只采用一颗72MHz的32位STM32单片机和一颗MPU6000就能够完成四旋翼、固定翼、直升机的姿态控制飞行(注意,该硬件可进行的是三自由度姿态控制,而不是增稳),电路板大小只有35mm×35mm。与所有开源飞控不同,它不需要GPS融