分享

APM,开源飞控的领军者

 火龙ocnunr7cj9 2017-05-20
提到开源飞控,最不能忽略的便是APM。
诚然,所有APM的信息都能在官方网站找到,但从个人探索的角度,还是很想写下下面这些作为备忘。
APM/ArduPilot是一个开源的自动驾驶系统,它支持的平台包括多旋翼、直升机、固定翼和地面机动平台。该项目由众多的爱好者共同维护与开发。APM飞控功能强大,由于具备可靠的自稳功能与完整的路径点规划工具,该飞控更多的用在无需人工操作介入的飞行计划中。
X


ArduPilot这个名字的前缀“Ardu”显然是来自于开源硬件平台“Arduino”。第一代APM1飞控板便是使用了基于Arduino的开发环境。如今团队早已不限于使用Arduino开发环境,并基本不再使用源生的Arduino库,但仍旧支持使用定制版本的Arduino开发环境来开发基于AVR单片机的APM1与APM2飞控。ArduiPilot这个名字也渐渐不再是最早的含义了,因为当前该项目已经支持更多的平台,不仅仅限于Arduino。项目的发展历史可以参考Ardupilot发展历史。

在这里,我们将从APM2.*开始介绍该项目。意料之中的是,多旋翼的固件从3.3版本开始不再支持APM飞控板(APM飞控特指基于八位单片机的系列飞控,区分于PixHawk),最根本的原因是八位单片机太慢了,纵然本项目具备跨平台的特性(代码中建立了硬件抽象层),但毕竟开发者专门为一种慢速的CPU做出妥协和抉择是很累人的事情。类似的,曾经牛逼一时的海盗飞控的作者也说“There is no future in 8bitworld.”,随后转战32位处理器的飞控。但金子仍旧在发光,APM2.5发展至今已接近三年时间,其中包含的众多开发者心血的成果仍旧吸引着众多的航模玩家、无人机爱好者甚至是无人机厂商。其硬件也在一些追随者的手中缓慢而持续的升级着,例如当前非官方的APM2.8版本和APM-mini,都是用户在开源精神的驱使下进行的创新。Anyway,APM飞控还是很有价值,很具有可玩性的。
典型的APM飞控的主控单片机是ATmega2560,就像常用的Arduino-Mega2560,一般板上还会有一颗ATmega32辅助单片机:前者负责主要飞控算法,后者负责预处理接收机信号、提供USB接口的功能。板上的资源包括一个SPI接口的外部存储芯片,一个SPI接口的陀螺仪兼加速度计(MPU6000),一个SPI接口的气压计,一个可选的I2C接口的电子罗盘(罗盘有时外置)。大部分的APM飞控使用外置的GPS模块(有一类APM直接把GPS板盖在飞控上面),使用串口与飞控通讯,往往这类外接GPS模块会带有一个电子罗盘,通过单独的I2C接口连接线和飞控相连,也就是外置罗盘(如果板上也有罗盘,那么要通过跳线或其他手段选择其一)。
飞控的主要功能由ATmega2560完成,例如读取传感器的读数进行姿态解算和反馈控制,接收GPS信号获取当前坐标来进行航点导航,处理地面站发来的数据请求,从其他传感器获取飞行器的电源电压耗电以及空速等,最后还要输出驱动调速器的PWM信号。
而先前提到的辅助单片机,其辅助的功能也被叫做PPMEncoder。原版的Arduino-Mega2560上面用的是一颗ATmega16,仅仅用来提供USB接口功能,而在APM上,这颗辅助单片机需要对外提供多种不同接收机的兼容功能,例如在没有PPM输入信号的时候,把分立的PWM输入信号整合为一路PPM信号提供给主控ATmega2560,另外,还要在失去信号的时候,提供“FailSafe”功能,也就是在接收机失去连接的时候,维持预设的信号输出。当然,这个辅助单片机也有自己的一套固件,可以参考这里和这里。
下面整理出了一些有用的资源链接(不定期更新):
3DR产品总览(其实有了这个链接就够了,什么都有)
//———————-开源硬件与开源软件———————-
APM2.52原理图 网盘下载
APM2.8原理图(2.8应该是国人改进的一个版本)
APM2.*的编译与烧写 (有些人不烧写一遍就像不是自己的东西)
APM各版本的固件下载
MAVLink协议介绍
//———————-周边模块———————-
数传模块使用说明 数传模块原理图 数传模块配置工具 固件
PPMEncoder使用说明 PPMEncoder原理图
(未完待续。。。)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多