开源飞控的现状

article/2025/9/6 2:17:49

无人机能被快速普及,很大程度上是得益于开源飞控的发展,因为困扰着无人机发展的关键设备是自动驾驶仪。那么,开源飞控是什么?又是如何发展过来的?

在纷繁复杂的无人机产品中,四旋翼飞行器以其结构简单、使用方便、成本低廉等优势,最先进入了大众的视线。但是,这种飞行器对飞行控制能力的要求是最高的,因此它刺激了大批基于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飞控已经成为开源飞控成熟的标杆,可支持多旋翼、固定翼、直升机和无人驾驶车等无人设备。针对多旋翼,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”、对尾飞行等高级的飞行模式,并能够完成自主调参。

项目地址:https://github.com/pixhawk

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的首选硬件。

CC3D

CC3D是Openpilot旗下最流行的硬件,此飞控板只采用一颗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电调波形更新速度为每秒钟四百次,而数字接口的更新速度可达到百万次。尤其是对于动力变化非常敏感的多旋翼飞行器来说,这种高速通信是非常必要的。该电调还支持转速闭环,并且能够针对电机进行详细调参,这些功能都是传统航模电调不能比拟的。项目地址:http://autoquad.org/wiki/wiki/aq-esc32/

当然,Autoquad也在进步,它发布了全新的飞控产品Autoquad M4,对主控单片机和传感器进行了全面升级,采用常见的STM32F4单片机和数字传感器。

但是面对PIXHawk、APM等已经成熟多年的先进飞控产品,它已经从前辈沦落为后起之秀。

所以说,开源飞控很大程度上促进了四旋翼飞行器这类的产品飞入寻常百姓家,无人机技术的发展,甚至还能帮你完成飞行的梦想。


http://chatgpt.dhexx.cn/article/c0Cn0Cwl.shtml

相关文章

飞控和飞控固件的讲解

本人目前是一名大二学生,调了不少时间的多旋翼,飞控是很重要的一环。下面我将讲解一些我对飞控和固件的浅显理解。 1.飞控固件 目前来说,主流开源的飞控有两类:PX4和APM。从我自己的使用经验来看:对于你要使用多旋翼…

无人机飞控三大算法汇总

无人机飞控三大算法:捷联式惯性导航系统、卡尔曼滤波算法、飞行控制PID算法。 一、捷联式惯性导航系统 说到导航,不得不说GPS,他是接受卫星发送的信号计算出自身位置的,但是当GPS设备上方被遮挡后,GPS设备无法定位了。…

python脚本王者荣耀自动刷金币

基于ADB(Android Debug Bridge) 1、下载ADB下载地址 下载之后解压文件随便放置到那个文件夹都可以 需要将adb.exe所在的文件路径添加到环境变量中在CMD中输入adb显示如下,说明adb没有问题了 2、手机进入开发者模式 这个进入开发者模式比…

Python实现王者农药自动刷金币

想写一个游戏的辅助脚本(或者外挂? )很久了。这几天工作、考试都完成的差不多了,闲下来写一个王者荣耀的刷金币脚本,供大家参考。 原理 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不…

Python轻松制作王者荣耀自动刷金币脚本

由于每次通过冒险模式都会有金币,而这个动作十分重复,连图像识别都不需要,可以考虑使用程序代替人工。 简单的说是重复以下的步骤: 界面打开至挑战关卡:陨落的废都 - 魔女回忆 【点击下一步】 点击开始闯关 进入挑…

王者荣耀刷金币C/C++语言脚本

一.开发环境: (1)本脚本适用于安卓游戏区,需要真实安卓手机。 本人用的是viov x9(1920*1080),如果代码运行有差错,是因为屏幕大小问题,请手动调试tap x y参数。 (2)手机需开启USB调试模式和模…

Python 实现王者荣耀自动刷金币

开发者(KaiFaX) 面向全栈工程师的开发者 专注于前端、Java/Python/Go/PHP的技术社区 作者 | 大瑞大 来源 | blog.csdn.net/qq_42882717/article/details/112345924 正文 想写一个游戏的辅助脚本(或者外挂? )很久了。这几天工作、…

用Python实现自动刷王者荣耀金币,这简直不要太爽了

相信有很多小伙伴都喜欢玩王者荣耀吧,王者里边有很多英雄购买都是需要金币的,并且金币还可以抽奖。今天,你就可以实现王者的金币自由了,我把王者刷金币的教程分享给大家,记得学起来。 一、原理 我想,游戏的…

python脚本 游戏赚金币_Python实现王者荣耀刷金币脚本功能

王者荣耀很多朋友都想买脚本和挂之类的,想更加容易的获得金币等可以在游戏里买英雄等,Python在我们开发中也很重要,今天给大家带来的是用Python语言写一个关于手游王者荣耀刷金币的脚本,有兴趣的朋友参考学习下希望能帮助到大家。…

30行Python代码刷王者荣耀金币

原理 王者荣耀的冒险模式里有个挑战模式,第一次过关可以获得比较多的金币,后面重新挑战还是会获得少量金币,这不算是bug,只有你不嫌烦手动蛮力也可以刷金币。 推荐关卡:陨落的废都 - 魔女回忆 此关卡使用纯输出英雄20…

王者刷金币(周上限)(自用)()

windows10adbpython 首先说原理,利用adb实现简单的点击,用python循环,文末打包下载; 首先配置手机端 设置进入开发者选项,不同手机进入方法自行百度 USB调试和允许通过usb调试修改权限或模拟点击(点开&a…

王者荣耀刷金币(python+adb实现)

想写一个游戏的辅助脚本(或者外挂? )很久了。这几天工作、考试都完成的差不多了,闲下来写一个王者荣耀的刷金币脚本,供大家参考。 脚本编写及使用教程 原理环境配置刷金币步骤测试 原理 我想,游戏的脚本应该都是差不…

【脚本】Python+adb王者荣耀闯关自动刷金币

文章目录 1 工具2 原理3 准备4 完整代码5 声明 1 工具 pythonadb(安卓调试桥)abd基础教程 2 原理 使用adb工具模拟点击手机 adb shell input tap x y获取手机坐标的最简洁方法 打开 开发者模式 → 开启 指针位置 3 准备 作用:简化代码…

Python-王者荣耀自动刷金币+爬取英雄信息+图片

####前提: 本文主要功能是: 1.用python代刷王者荣耀金币 2.爬取英雄信息 3.爬取王者荣耀图片之类的。 (全部免费附加源代码) 思路: 第一个功能是在基于去年自动刷跳一跳python代码上面弄的,思路来源陈想大佬,主…

【Python小脚本】实现王者农药自动刷金币啦~啦啦啦走跟我一起组队~

前言 🚀 作者 :“程序员梨子” 🚀 **文章简介 **:本篇文章主要是写了自动刷金币脚本啦! 🚀 **文章源码获取 **: 为了感谢每一个关注我的小可爱💓每篇文章的项目源码都是无偿分 享滴&…

各种电容的区别

&#xff08;一&#xff09;陶瓷电容&#xff08;瓷片电容、独石电容&#xff09; 瓷片电容耐压大&#xff0c;独石电容容量大 MLCC用于小功率场景&#xff0c;因为耐压低&#xff08;<100v&#xff09; 瓷片电容 独石电容&#xff08;MLCC&#xff09; -----------------…

电容的耐压值选择---陶瓷电容、钽电容、电解电容

电容的耐压值&#xff0c;在弱电领域主要有4V、6.3V、10V、16V、20V、25V、35V、50V这些档位。上百伏的电容主要用在强电上。耐压值的选择非常非常重要&#xff0c;选错了会有生命危险。 如果把25V的电容&#xff0c;用在50V的电源上&#xff0c;会怎么样&#xff1f;陶瓷电容…

电解电容、钽电容、普通电容

1、电解电容&#xff1a;金属箔为正极&#xff08;铝或钽&#xff09;&#xff0c;与正极紧贴金属的氧化膜&#xff08;氧化铝或五氧化二钽&#xff09;是电介质&#xff0c;阴极由导电材料、电解质&#xff08;电解质可以是液体或固体&#xff09;和其他材料共同组成&#xff…

贴片钽电容使用说明

贴片钽电容使用说明 对于贴片钽电容正负极区分&#xff0c;有一粗横线的一端是正极&#xff0c;而另一端当然就是负极了&#xff1b;而引线钽电容则主要看引线长短&#xff0c;长的一端是正极&#xff0c;短的一端是负极。

钽电容、贴片铝电解电容、二极管等正负极判断

&#xff08;1&#xff09;钽电容正负极判断 如图所示&#xff0c;有横杠标识的一端是正极 &#xff08;2&#xff09;贴片铝电解电容正负极判断 &#xff08;3&#xff09;二极管正负极判断 有横杠标识的一端是负极