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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

悟空飞控为当时国内外多旋翼消费市场上难得一见的高端飞控, 包含了一个独立的工业级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传感器,但拥有优秀的稳定性和良好的操作手感,由于用料简单因此售价也非常便宜,被大量用于穿越机上。所谓“穿越机”便是体积很小的四旋翼飞行器,上面通常会安装一个摄像头,玩家可以通过第一视角手动操控飞行器穿越各种林间小道,以体验飞行的乐趣。

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

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

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

概述篇:一.多旋翼飞控发展史相关推荐

  1. 部署到gcp_GCP 网络系统Andromeda --- 概述篇

    这个系列总共有三篇,分别在: 肖宏辉:GCP 网络系统Andromeda --- 概述篇 肖宏辉:GCP 网络系统Andromeda --- 控制面 肖宏辉:GCP 网络系统Andromeda --- ...

  2. 零基础快速开发全栈后台管理系统(Vue3+ElementPlus+Koa2)—项目概述篇(一)

    零基础快速开发全栈后台管理系统(Vue3+ElementPlus+Koa2)-项目概述篇(一) 一.项目开发总体框架 二.项目开发流程 三.项目技术选型

  3. App开发智能车载应用之概述篇

    App开发智能车载应用之概述篇 Apple CarPlay Vs Android Auto 苹果和谷歌都先后公布了自己的智能车载解决方案Apple CarPlay和Android Auto. 两家采用 ...

  4. 【区块链 | Compound】1.剖析DeFi借贷产品之Compound:概述篇

    前言 我前段时间一直在研究 Compound,走过一点弯路,也趟过一些坑,最终把它啃了下来.最近有些小伙伴也在咨询我相关的一些问题,那我本着乐善好施的优良传统,决定将我所学的知识整理成文字分享出来.我 ...

  5. 北京大学肖臻老师《区块链技术与应用》公开课笔记15——ETH概述篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊概述篇,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Personal P ...

  6. iVX低代码平台系列详解 -- 概述篇(二)

    写在前面 ivx动手尝试电梯:ivx在线编辑器 iVX系列教程持续更新中 上篇文章可看:iVX低代码平台系列详解 – 概述篇(一) ivx目录 写在前面 一.iVX优势 1.快速学习 2.快速开发 3 ...

  7. Linux内核学习(七):linux kernel内核启动(一):概述篇

    Linux内核学习(七):linux kernel内核启动(一):概述篇 这一篇让我们来大致的了解一下Linux内核的启动过程 这篇文章不涉及源码,重在让你知道这个linux内核的启动过程,源码详细的 ...

  8. B2C电子商务系统研发——概述篇

    # 前言 计划接下来一段日子写若干篇关于整个B2C电子商务系统研发流程博文, 包括前台.后台各个主要功能模块的需求分析.概要设计.详细设计和一些 伪编码编写.计划2~3天写一篇,对于一些复杂的模块会通 ...

  9. 规则引擎Ilog Jrules开发基础教程【连载1】-- 概述篇

    概述篇 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来.规则引擎使用特定的语法编写业务规则,规则引擎可以接受数据输入.解释业务规则.并根据业务规则做出相应的决策. 通 ...

最新文章

  1. 利用 socket 获取 tcp 包并解析的问题。
  2. 【camera】自动泊车-基于深度学习的视觉车位检测项目(课程设计--训练代码、测试代码、部署demo)(2)
  3. android 图片缓存
  4. aliyun 日志服务(Log Service,Log)是针对日志场景的一站式服务
  5. 吴恩达专访 Yann LeCun:是的我们曾经历黑暗时刻,但我始终抱有信念
  6. 英语与计算机的整合,浅谈计算机应用与英语教学的整合
  7. 浅谈工作流引擎的几个关键因素
  8. 关于Mathematica 的cdf 文件的嵌入应用
  9. 数位板驱动压力测试_【又来甩锅了】数位板/数位屏延迟怎么办?
  10. redis数据结构小结
  11. Robocopy命令实现文件服务器每日镜像备份/增量备份操作
  12. Ubuntu18.04安装HP laser 1020打印机
  13. 动态IP和静态IP地址
  14. inurl home.php,phpweb /version.php Vul
  15. AR和VR,有哪些知名的开源平台
  16. MySQL基础之索引
  17. win7 计算机桌面图标不见了,win7系统桌面计算机快捷图标不见了的解决方法
  18. MySQL派生表联表查询记录
  19. Xshell 常用配置
  20. php显示word,php 浏览word

热门文章

  1. 浏览器无法打开windchill工作流模板或者生命周期模板
  2. Node.js v13 window7
  3. 自定义求矩函数和opencv自带hu矩函数处理图像对比效果
  4. Go实战--golang中使用echo框架中的HTTP/2、Server Push(labstack/echo、golang.org/x/net/http2)
  5. 社区团购是什么?打破传统消费模式的新选择
  6. 无尽对决一直显示正在连接服务器,无尽对决总是显示无法连接网络
  7. 2020-10-19 - 程序员如何把控自己的职业
  8. thread_join.c:(.text+0x6f): undefined reference to `pthread_create' 问题的解决
  9. Oracle---.oracle函数
  10. Windows Vista上怎样安装linux