概述篇:一.多旋翼飞控发展史

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

[深入浅出多旋翼飞控开发]概述篇][一][多旋翼飞控发展史]

开源飞控交流:562983648
Github
因论坛关闭,迁移该文章至博客。

近年来,多旋翼飞行器犹如一颗闪亮的新星般异军突起,迅速占领了民用无人机和玩具飞行器市场。其背后,需要归功于多旋翼飞控技术的发展与普及。飞控,即飞行控制系统,是飞行器的大脑与灵魂。它负责接收外部信息并进行计算处理,然后控制各部位的运转,以保持飞行器的正常飞行状态。

下图是著名的开源飞控Pixhawk的连线示意图,中间最明显的则是飞控。飞控采集板载以及外接的各种传感器信息, 然后通过微处理器进行实时处理和计算得到飞行器的姿态和位置, 结合无线传输接收到的控制指令,再将反馈控制量输出到电机,从而达到控制飞行器飞行状态的目的。

Pixhawk连线示意图

要说起飞控,我们不得不谈起MEMS(微电子机械系统)陀螺仪传感器。陀螺仪最早应用于航海导航,经过了一百年的发展,已经成为现代航空航天航海工业中最重要的元件之一。早期的机械陀螺仪一般是一个又大又重的大疙瘩,其重量和体积使其难以应用到小型飞行器中。20世纪90年代以后,MEMS技术开始成熟,只有芯片大小的MEMS传感器被制造出来了,能够实现自主导航的小型飞行器变得可能实现。

在民用飞行器领域,MEMS陀螺仪传感器最早被应用于小型航模直升机。早期的航模直升机一般没有装备飞控,完全靠飞手手动控制,因此非常难以驾驭,只有经过大量训练的玩家才能够比较好地操控。因为操控直升机,不仅要通过遥控器手动控制姿态上的三个自由度使其平衡飞行,还要同时控制油门及桨距来保持其高度稳定。新手很容易一下子就手忙脚乱导致直升机坠机炸毁。

尽管操控难度较大,纯手动操控的航模直升机因其强大的灵活性仍被许多玩家所喜好

后来有人在直升机上加入了一个单轴陀螺仪,可以感知偏航轴的角速度变化,以控制尾桨的转速来保持直升机的航向不变,从而从一定程度上降低了直升机的操控难度(当你分不清飞行器头尾的时候是最容易导致操作失误的),所以也被称之为锁尾陀螺仪。

直升机的结构允许了手动控制是可能的,因为只需要控制一个螺旋桨就可以维持基本的飞行,当然一般还有一个尾桨负责控制航向。后来,机械上更加简单轻便的四旋翼结构逐渐流行开来(省去了直升机上最复杂的旋翼头),只依靠调整4个螺旋桨的转速来控制飞行器的姿态。手动控制变得近乎不可能,因为人的反应速度不足以同时手动控制4个螺旋桨,保持稳定所需要的调整速度和精度也是人无法做到的。

F450机架
电机旋转方向示意图

早期的MEMS陀螺仪通常是单轴的,即只能感知一个平面内的角度变化。有人想到了用三个陀螺仪互成90度夹角的组合方式来测量飞行器在三维空间内运动的三个轴的角速度,然后让微处理器以非常高的频率去控制四个螺旋桨的转速。飞手只要控制三个轴的角速度就能保持四旋翼飞行器的稳定,大大降低了操控难度。

来自法国的一个开源项目KK飞控便是此类型的一个代表作,KK飞控软硬件全开源,采用atmega8单片机和三个单轴的陀螺仪,硬件简单且成本非常低廉,因此早期受到了很多玩家的欢迎。程序采用汇编编写,移植性和可读性都较差。

KK飞控

不过此类飞控的缺点也是显而易见的,因为只有陀螺仪,飞控只能测量出飞行器的角速度,而无法计算飞行器相对于水平面的角度,因此不能自动保持平衡。需要飞手实时观察飞行器姿态,通过眼睛的实时反馈,来控制每个轴的运动角速度,使飞行器达到一个平衡的状态。所以说,尽管KK飞控使四旋翼变得可以操控了,但并不代表人人都能飞得很好,能驾驭KK飞控的飞手,通常是那些经过千锤百炼的玩家,或者是练过直升机的。早期的时候很多人会向新手推荐KK飞控,而目前尽管仍能从淘宝上购买到该飞控,但非常建议不选择这款“古董级”飞控,除非你想特意为自己的入门学习之路增加难度。

随着半导体工艺的发展,能够测量三轴角速度的MEMS传感器诞生了,而除了MEMS陀螺仪传感器,还有MEMS加速度传感器。越来越多的消费级电子产品使用了这些MEMS传感器。加速度传感器不仅能测量出物体的运动加速度,还能测量出地球上无时无刻不存在的重力加速度。简单的理解:对测量得到的重力加速度进行一定计算,便能得出此时飞行器相对于水平面的倾角。利用特定的算法结合陀螺仪和加速度测量到的数据,就可以计算出飞行器此时相对于水平面的姿态,从而实现自稳控制,即自动保持与水平面平行的飞行姿态。

其次,还有MEMS磁力计与MEMS气压计。众所周知,地球上存在着恒定的磁场,磁力计测量得到三个轴的磁感强度,经过计算后使飞行器能够感知自身的飞行朝向,这是实现自主导航的基础。气压计则可以测量大气压强,因为大气层内大气压强随着高度增加而逐渐递减,根据这个关系便可以将测量到的大气压强转换为高度,目前精度最高的消费级MEMS气压计传感器分辨率可以达到10厘米。

为了能实现自主悬停飞行及导航,飞控必须还得解决最后一个问题,即得到飞行器自身的位置。在室外,GPS定位系统是唯一一个比较实用的获取自身位置的手段。不过普通民用GPS接收机的定位精度通常在米级, 所以通常飞控需要利用GPS结合其它传感器来融合计算出较高精度的位置数据。

2006年,对于全世界来说四旋翼飞行器领域也有了一些年头的技术积累,终于德国人跨出了重要了一步。德国的Microdrones公司推出了md-200四旋翼飞行器,兼备极佳的稳定性和有效载荷能力,逐渐向全世界的民用工业领域推广开来。同年,德国还诞生了一款影响重大的开源飞控——Mikrokopter(MK),被无数后来者模仿和学习。

MK飞控

然而像在2006-2008年这个时期,这些MEMS传感器的零售渠道是非常少的,意味着普通玩家极难通过普通渠道购买到这些传感器。而法国的一个航模爱好者Alex想到了一个办法,他从任天堂游戏机手柄中拆卸出了陀螺仪和加速度计模块,然后装到自己制作的飞控板上,来控制自己的三轴飞行器。Alex把自己的这个项目开源了,叫MultiWii,也就是后来著名的MWC飞控。经过全世界各大高手的不断完善与发展,变成了一个具有优秀性能的飞控程序,更可以轻易适配各种DIY的飞控硬件,至今仍有强大的生命力。

MWC飞控配置软件

同个时期,大西洋的彼岸,美国《连线》杂志前主编克里斯•安德森在家用乐高DIY一个固定翼飞行器的时候建立了diydrones社区,在社区上认识了许多来自各国的同好,其中有一个19岁的墨西哥极客小伙Jordi,高中毕业在家,自己鼓捣了很多有趣的东西。安德森发现Jordi是一个很有想法也具有相当实力的人,于是2009年的时候安德森赞助了一笔钱,两个人一起创建了3D Robotics(3DR)公司,公司就建立在墨西哥,初期主要由Jordi来运营。2010年,3DR公司发布了采用更强大的mega2560单片机的APM飞控, 其软硬件全部开源,这款飞控得到了diydrones社区上众多高手的不断完善和改进,最终成为了目前最流行,功能最强大的开源飞控。

2011年,3DR发布了APM第二代飞控。

APM2

同年,来自中国深圳的大疆创新公司(DJI)发布了公司旗下首款多旋翼商业飞控WooKong-M,中文名悟空。大疆公司为香港科技大学研究生毕业的汪滔在2006年创立, 在推出悟空之前,DJI已经于小型直升机飞控领域深耕数年,并取得了一定成就, 受到2010年法国的Parrot公司推出的第一代Ar.Drone而掀起一阵四旋翼飞行器的风潮的影响,DJI也决定进军多旋翼市场,很快便将其在直升机飞控上积累的技术移植到了悟空多旋翼飞控上。

WooKong-M飞控

悟空飞控为当时国内外多旋翼消费市场上难得一见的高端飞控, 包含了一个独立的工业级IMU传感器模块与一个集成电子罗盘的GPS模块, 具有极佳的稳定性和自主飞行能力,推出后被迅速应用于许多用于航拍的多旋翼飞行器。不过高达八千元一套的售价使得普通玩家只能望物兴叹。

随着MEMS技术的进一步发展,各大半导体公司推出了集成度更高的单芯片传感器,比较有代表性有invenSense公司推出的六轴传感器MPU6050/MPU6000,在一个4x4mm大小的芯片里整合了三轴陀螺仪和三轴加速度计。目前大部分知名的开源飞控采用的均为MPU6050/MPU6000,而在淘宝上能买到的那些玩具四旋翼飞行器,百分之九十采用的是MPU6050或者其精简版MPU6050C。

不过,技术上来讲,只有更高而没有最高,invenSense公司紧接着推出了九轴传感器MPU9150,在同样4x4mm大小的芯片里整合了三轴陀螺仪和三轴加速度计以及三轴磁力计。

早期各类开源飞控绝大部分均选择AVR单片机作为主控,后来随着飞控程序的发展与完善,8位单片机的速度和资源逐渐显得捉襟见肘,如APM飞控,对mega2560单片机的利用简直是达到了极致,后期版本的代码基本上榨干了这个单片机的所有资源,因此更换新一代处理器已经显得迫在眉睫了。

好在,半导体技术发展得非常及时,许多基于ARM-Cortex-M内核的32位单片机逐渐浮出消费级市场,其中普及率最高的为意法半导体公司的STM32系列单片机,更高的主频,更强大的性能,以及更丰富的资源,对应的却是非常低廉的价格,于是各大开源飞控纷纷升级为STM32单片机。连DJI推出的廉价版多旋翼商业飞控NAZA-M(中文名哪吒),亦是使用STM32。

OpenPilot是由OpenPilot社区于2009年推出的飞控项目,旨在为社会提供低成本但功能强大的稳定型自动驾驶仪。这个项目由两部分组成,包括OpenPilot飞控与其相配套的软件。其中,飞控的固件部分由C语言编写,而地面站则用C++编写。OpenPilot拥有众多的硬件设计,其中CC3D是最流行的飞控,此飞控板只有一块STM32F103单片机和MPU6000传感器,但拥有优秀的稳定性和良好的操作手感,由于用料简单因此售价也非常便宜,被大量用于穿越机上。所谓“穿越机”便是体积很小的四旋翼飞行器,上面通常会安装一个摄像头,玩家可以通过第一视角手动操控飞行器穿越各种林间小道,以体验飞行的乐趣。

CC3D飞控

2012年,MultiWii论坛上一位成员“timecop”发布了一个将MWC代码移植到STM32F103单片机上的项目,命名为baseflight,成为了MWC在32位单片机平台上的一个分支,其飞控板称之为Naze32。其硬件设计源自于中国的一款“MMC10飞控”(前身为FF飞控),后被一位日本人对其进行优化改良,便有了Naze32飞控。

Naze32飞控

后来又有人在baseflight的算法基础上对程序架构进行了改善,形成了baseflight的一个分支:cleanflight,支持包括Naze32、CC3D在内的数款飞控板。

2013年,3DR联合苏黎世联邦工业学院(ETH)发布了新一代的开源飞控:Pixhawk。Pixhawk采用了STM32F4单片机,高达168MHz的主频带来了更好的运算性能, 传感器方面采用了双冗余度方案, 即双份陀螺仪,双份加速度计。Pixhawk有着自己的一套新的算法和基于NuttX实时操作系统的运行体系,但同时也兼容前一代APM飞控的代码。

Pixhawk飞控


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

相关文章

飞控FirmamentAutopilot介绍

Firmament特色 使用 RT-Thread 嵌入式操作系统,Fatfs 文件系统,完整的系统功能支持 (如跨进程通信,文件管理,参数系统等) 基于 Pixhawk 硬件平台开发,完美支持 Pixhawk 硬件 ADRC 控制和 PID (串级) 控制 支持 Mavl…

大疆A3飞控使用|飞控配置

大疆A3飞控使用|飞控配置 大疆A3飞控介绍总体特性飞行特性外围设备保护功能SDK拓展拓展功能 A3 飞控使用配置连接飞机基本设置机架安装遥控器电调动力配置感度电池 控制参数调试基础感度动力带宽高级感度灵敏度控制器性能参数 大疆A3飞控介绍 全新A3系列飞控系统结合安全可靠和…

开源飞控的现状

无人机能被快速普及,很大程度上是得益于开源飞控的发展,因为困扰着无人机发展的关键设备是自动驾驶仪。那么,开源飞控是什么?又是如何发展过来的? 在纷繁复杂的无人机产品中,四旋翼飞行器以其结构简单、使…

飞控和飞控固件的讲解

本人目前是一名大二学生,调了不少时间的多旋翼,飞控是很重要的一环。下面我将讲解一些我对飞控和固件的浅显理解。 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;陶瓷电容…