飞行控制与仿真 2023-04-11 14:11 发表于广东
点击上方蓝字关注我们微信公众号!
无人机能被快速普及,很大程度上是得益于开源飞控的发展,因为困扰着无人机发展的关键设备是自动驾驶仪。那么,开源飞控是什么?又是如何发展过来的?
在纷繁复杂的无人机产品中,四旋翼飞行器以其结构简单、使用方便、成本低廉等优势,最先进入了大众的视线。但是,这种飞行器对飞行控制能力的要求是最高的,因此它刺激了大批基于MEMS传感器的开源飞控的出现。
如何定义开源
开源(Open Source)的概念最早被应用于开源软件,开放源代码促进会(Open Source Initiative)用其描述那些源码可以被公众使用的软件,并且此软件的使用、修改和发行也不受许可证的限制。每一个开源项目均拥有自己的论坛,由团队或个人进行管理,论坛定期发布开源代码,而对此感兴趣的程序员都可以下载这些代码,并对其进行修改,然后上传自己的成果,管理者从众多的修改中选择合适的代码改进程序并再次发布新版本。如此循环,形成“共同开发、共同分享”的良性循环。
开源软件的发展逐渐与硬件相结合,产生了开源硬件。硬件与软件不同之处是实物资源应该始终致力于创造实物商品。因此,生产在开源硬件(OSHW)许可下的品目(产品)的人和公司有义务明确该产品没有在原设计者核准前被生产,销售和授权,并且没有使用任何原设计者拥有的商标。硬件设计的源代码的特定格式可以被其他人获取,以便对其进行修改。在实现技术自由的同时,开源硬件提供知识共享并鼓励硬件设计开放交流贸易。
开源硬件(OSHW)定义1.0是在软件开源定义基础上定义的。该定义是由Bruce Perens和Debian的开发者作为Debian自由软件方针而创建的。
开源飞控是何物?
了解了开源硬件的概念,开源飞控的概念也就比较容易理解了。所谓开源飞控就是建立在开源思想基础上的自动飞行控制器项目(Open Source Auto Pilot),同时包含开源软件和开源硬件,而软件则包含飞控硬件中的固件和地面站软件两部分。爱好者不但可以参与软件的研发,也可以参与硬件的研发,不但可以购买硬件来开发软件,也可以自制硬件,这样便可让更多人自由享受该项目的开发成果。开源项目的使用具有商业性,所以每个开源飞控项目都会给出官方的法律条款以界定开发者和使用者权利,不同的开源飞控对其法律界定都有所不同。
开源飞控的发展
开源飞控的发展可分为三代:
第一代开源飞控系统使用Arduino或其他类似的开源电子平台为基础,扩展连接各种MEMS传感器,能够让无人机平稳地飞起来,其主要特点是模块化和可扩展能力。
第二代开源飞控系统大多拥有自己的开源硬件、开发环境和社区,采用全集成的硬件架构,将全部10DOF传感器、主控单片机,甚至GPS等设备全部集成在一块电路板上,以提高可靠性。它使用全数字三轴MEMS传感器组成航姿系统(IMU);能够控制飞行器完成自主航线飞行,同时可加装电台与地面站进行通信,初步具备完整自动驾驶仪的功能。此类飞控还能够支持多种无人设备,包含固定翼飞行器、多旋翼飞行器、直升机和车辆等,并具备多种飞行模式,包含手动飞行、半自主飞行和全自主飞行。第二代飞控的主要特点是高集成性、高可靠性,其功能已经接近商业自动驾驶仪标准。第三代开源飞控系统将会在软件和人工智能方面进行革新。它加入了集群飞行、图像识别、自主避障、自动跟踪飞行等高级飞行功能,向机器视觉、集群化、开发过程平台化的方向发展。
你不该错过的开源飞控传奇
Arduino飞控
要谈开源飞控的发展就必须从著名的开源硬件项目Arduino谈起。Arduino 是最早的开源飞控,由Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis 和 Nicholas Zambetti于2005年在意大利交互设计学院合作开发而成。Arduino公司首先为电子开发爱好者搭建了一个灵活的开源硬件平台和开发环境,用户可以从Arduino官方网站取得硬件的设计文档,调整电路板及元件,以符合自己实际设计的需要。Arduino可以通过与其配套的Arduino IDE软件查看源代码并上传自己编写的代码,Arduino IDE使用的是基于C语言和C++的Arduino语言,十分容易掌握,并且Arduino IDE可以在Windows、Macintosh OSX和Linux三大主流操作系统上运行。随着该平台逐渐被爱好者所接受,各种功能的电子扩展模块层出不穷,其中最为复杂的便是集成了MEMS传感器的飞行控制器。为了得到更好的飞控设计源代码,Arduino公司决定开放其飞控源代码,他们开启了开源飞控的发展道路。著名的开源飞控WMC和APM都是Arduino飞控的直接衍生产品,至今仍然使用Arduino开发环境进行开发。
APM飞控
APM(ArduPilotMega)是在2007年由DIY无人机社区(DIY Drones)推出的飞控产品,是当今最为成熟的开源硬件项目。APM基于Arduino的开源平台,对多处硬件做出了改进,包括加速度计、陀螺仪和磁力计组合惯性测量单元(IMU)。由于APM良好的可定制性,APM在全球航模爱好者范围内迅速传播开来。通过开源软件Mission Planner,开发者可以配置APM的设置,接受并显示传感器的数据,使用google map 完成自动驾驶等功能,但是Mission Planner仅支持windows操作系统。目前APM飞控已经成为开源飞控成熟的标杆,可支持多旋翼、固定翼、直升机和无人驾驶车等无人设备。针对多旋翼,APM飞控支持各种四、六、八轴产品,并且连接外置GPS传感器以后能够增稳,并完成自主起降、自主航线飞行、回家、定高、定点等丰富的飞行模式。APM能够连接外置的超声波传感器和光流传感器,在室内实现定高和定点飞行。
PX4和PIXHawk
PX4是一个软硬件开源项目(遵守BSD协议),目的在于为学术、爱好和工业团体提供一款低成本、高性能的高端自驾仪。这个项目源于苏黎世联邦理工大学的计算机视觉与几何实验室、自主系统实验室和自动控制实验室的PIXHawk项目。PX4FMU自驾仪模块运行高效的实时操作系统(RTOS),Nuttx提供可移植操作系统接口(POSIX)类型的环境。例如:printf()、pthreads、/dev/ttyS1、open()、write、poll()、ioctl()等。软件可以使用USB bootloader更新。PX4通过MAVLink同地面站通讯,兼容的地面站有QGroundControl和Mission Planner,软件全部开源且遵守BSD协议。由3DR联合APM小组与PX4小组于2014年推出的PIXHawk飞控是PX4飞控的升级版本,拥有PX4和APM两套固件和相应的地面站软件。该飞控是目前全世界飞控产品中硬件规格最高的产品,也是当前爱好者手中最炙手可热的产品。PIXHawk拥有168MHz的运算频率,并突破性地采用了整合硬件浮点运算核心的Cortex-M4的单片机作为主控芯片,内置两套陀螺和加速度计MEMS传感器,互为补充矫正,内置三轴磁场传感器并可以外接一个三轴磁场传感器,同时可外接一主一备两个GPS传感器,在故障时自动切换。基于其高速运算的核心和浮点算法,PIXHawk使用最先进的定高算法,可以仅凭气压高度计便将飞行器高度固定在1米以内。它支持目前几乎所有的多旋翼类型,甚至包括三旋翼和H4这样结构不规则的产品。它使飞行器拥有多种飞行模式,支持全自主航线、关键点围绕、鼠标引导、“FollowMe”、对尾飞行等高级的飞行模式,并能够完成自主调参。PIXHawk飞控的开放性非常好,几百项参数全部开放给玩家调整,靠基础模式简单调试后亦可飞行。PIXHawk集成多种电子地图,爱好者们可以根据当地情况进行选择。
OpenPilot与Taulabs
OpenPilot是由OpenPilot社区于2009年推出的自动驾驶仪项目,旨在为社会提供低成本但功能强大的稳定型自动驾驶仪。这个项目由两部分组成,包括OpenPilot自驾仪与其相配套的软件。其中,自驾仪的固件部分由C语言编写,而地面站则用C++编写,并可在Windows、Macintosh OSX和Linux三大主流操作系统上运行。OpenPilot的最大特点是硬件架构非常简单,从它目前拥有的众多硬件设计就可以看出其与众不同之处。官方发布的飞控硬件包括CC、CC3D、ATOM、Revolution、Revolution nano等,衍生硬件包括Sparky、Quanton、REVOMINI等,甚至包含直接使用STM32开发板扩展而成的FlyingF3、FlyingF4、DescoveryF4等,其中CC3D已经是300mm以下轴距穿越机和超小室内航模的首选飞控,而DiscoveryF4被大量用于爱好者研究飞控,Quanton更是成为了Taulabs的首选硬件。
下面我们来说说Openpilot旗下最流行的硬件CC3D。
此飞控板只采用一颗72MHz的32位STM32单片机和一颗MPU6000就能够完成四旋翼、固定翼、直升机的姿态控制飞行(注意,该硬件可进行的是三自由度姿态控制,而不是增稳),电路板大小只有35mm×35mm。
与所有开源飞控不同,它不需要GPS融合或者磁场传感器参与修正,就能保持长时间的姿态控制。以上所有功能全部使用一个固件,通过设置便可更改飞机种类、飞行模式、支持云台增稳等功能。其编译完的固件所需容量只有大约100KB,代码效率令人惊叹,是所有飞控程序员学习的楷模。其地面站软件集成了完整的电子地图,可以通过电台实时监测飞机状态。TauLabs飞控是OpenPilot飞控的衍生产品。当前TauLabs最流行的硬件叫做Quanton,由原OpenPilot飞控小组成员独立完成。它继承了OpenPilot简单高效的特点,并扩展了气压高度计和三轴磁场传感器,将主控单片机升级为带有硬件浮点运算的Cortex-M4核心。该飞控是最早支持自动调参的开源飞控产品,带有模型辨识算法,能够在飞行中进行自整定姿态PID控制参数。TauLabs能够完成许多高级飞行模式,连接外置GPS后可使多旋翼具备定高、定点、回家等功能。飞控集成了电子地图,且界面非常友好,使用向导模式进行初始化,初学者可以简单上手。
Multi Wii Copter (MWC)
Multi Wii Copter(MWC)飞控是一款典型的Arduino衍生产品,是专为多旋翼开发的低成本飞控,它完整地保留了Arduino IDE开发和Arduino设备升级和使用的方法。由于成本低、架构简单、固件比较成熟,因此该飞控在国内外拥有大量爱好者。除了支持常见的四、六、八旋翼以外,该飞控的最大特点是支持很多奇特的飞行器类型,比如三旋翼、阿凡达飞行器(BIcopter avatar style)、Y4型多旋翼(其中两轴为上下对置)等,使得该飞控的开发趣味性较强,容易博得大家的喜爱。
KKMulti Copter
KK飞控是源于韩国的一款开源飞控项目,也是第一种广为大众接受的多旋翼飞控,在开源飞控发展的初期,该飞控的横空出世对整个四旋翼行业是一种震撼。该飞控只使用三个成本低廉的单轴陀螺,配合一台最简单的四通道遥控设备,就能控制常见的三、四、六旋翼飞行器,并且支持“十字”型,X型、H型和上下对置等多种布局。该飞控使用三个可调电阻调整感度作为调参方法,保留了早期航模陀螺仪的特征。作为多旋翼飞控起始的重要见证,这款“古董”级经典飞控,依然拥有众多玩家。
Paparazzi(PPZ)
Paparazzi(PPZ)是一个软硬件全开源的项目,它始于2003年,开发目标是建立一个配置灵活且性能强大的开源飞控项目。PPZ的一大特点是,该开源飞控方案中除了常见的飞控硬件、飞控软件和地面站软件之外,还包含地面站硬件,包括各种调制解调器、天线等设备。从功能上讲,PPZ已经接近一个小型的无人机系统了。该开源项目的另一个特点是采用ubuntu操作系统,它将全部地面站软件和开发环境集成于该系统下,官方称之为Live CD。一张CD加飞控硬件就可完成从开发到使用的全部工作。PPZ目前最流行的硬件版本是Paparazzi(PPZ)Lisa/M v2.0。该硬件拥有大量的扩展接口,并且使用可扩展的单独的IMU传感器板。这也是早期开源飞控比较流行的做法,这样可以像DIY台式计算机那样,随着传感器升级而不断升级IMU硬件。
Autoquad飞控和ESC32电调
Autoquad飞控来自德国,作为早期开源飞控,Autoquad功能非常强大,但是受限于当时的传感器产品,它不得不采用大量模拟MEMS传感器。所谓模拟传感器指的是传感器芯片内部不集成数模转换器(ADC)和运算核心,而直接将微机械传感器的变化通过放大和硬件滤波后以电压的形式输出,需要主控单片机进行AD采集。因为传感器在不同温度环境下,输出值会受到影响,模拟MEMS传感器给参数校准带来了不少麻烦。很多玩家在第一次使用该飞控时,不得不借助电冰箱来进行传感器校准,而一些厂家为了保证批量产品的稳定性,只能在飞行器上对电路板进行加温,使其保持温度恒定。但是,这种校准方法却为一些骨灰级玩家带来了额外的乐趣,很多人反而乐此不疲。对于大多数普通爱好者而言,这实在是一项难度不小的工作。随着带有出厂校准的数字传感器的普及,Autoquad作为历史的积淀,也完成了它的使命。但是,该开源项目的另一个分支ESC32电调却逐渐在玩家中被接受了。该电调是第一个采用数字接口进行控制的电调产品,玩家可以通过串口、I2C接口和CAN接口来控制电机的转速,这比传统的PWM接口信息速度要快很多倍。常见的PWM电调波形更新速度为每秒钟四百次,而数字接口的更新速度可达到百万次。尤其是对于动力变化非常敏感的多旋翼飞行器来说,这种高速通信是非常必要的。该电调还支持转速闭环,并且能够针对电机进行详细调参,这些功能都是传统航模电调不能比拟的。当然,Autoquad也在进步,它发布了全新的飞控产品Autoquad M4,对主控单片机和传感器进行了全面升级,采用常见的STM32F4单片机和数字传感器。但是面对PIXHawk、APM等已经成熟多年的先进飞控产品,它已经从前辈沦落为后起之秀。所以说,开源飞控很大程度上促进了四旋翼飞行器这类的产品飞入寻常百姓家,无人机技术的发展,甚至还能帮你完成飞行的梦想。
本文转自电子工程专辑,由北航无人驾驶飞行器设计研究所的两位教授撰稿首发于《机器人圈》。