You are on page 1of 10

2021/3/6 (20条消息) APM飞控学习之路:3 APM系统介绍与开发环境搭建_岳小飞Fly的博客-CSDN博客

首页 博客 程序员学院 下载 论坛 问答 代码 直播 能力认证 高校 无人机 APM飞控 开 会员中心 收藏 动

APM飞控学习之路:3 APM系统介
绍与开发环境搭建
置顶 岳小飞Fly 2016-11-03 11:08:55 57378 版权

收藏 111

分类专栏: 四旋翼无人机 文章标签:


无人机 APM飞控 开发环境 固件

“工欲善其事,必先利其器”。在进行无人机飞控开发时,选择
一个合适的软硬件平台以及IDE是十分重要的。目前,APM飞控成
熟度高,开发工具齐全,社区建设完善,开发者文档丰富,适合
开源选手入门和二次开发。因此,本系列博客以APM飞控作为切
入点,在Windows环境下介绍其代码结构和开发应用。

APM系统介绍

APM全称ArduPilotMega,Ardu源自Arduino,Pilot意指飞
行,Mega代表主芯片为ATMEGA2560(Atmel公司的8位AVR单
片机)。是的,没有看错,一个简单8位单片机竟完成了如此复杂
的飞控任务! 51单片机表示哭晕在厕所,同为8位出身,命运截
然不同。笔者大概是2011年接触的单片机,当时也同大多数初学
者一样,从经典的51单片机入门,一个个模块、寄存器的学习,
曲线虽说不上陡峭,但至少不那么友好。反观Arduino,近3年在
国内迅速崛起,除了Geek文化和开源文化的普及,一个很关键的
原因在于Arduino让不懂硬件电路的普通人(甚至小学生)也能轻
松上手硬件了。没有了烦人的寄存器,没有了纷繁的头文件,一
个setup()和一个loop(),再加一个自带教程的简洁IDE,Arduino名
副其实——源自意大利的男姓用名,意为“强壮的朋友”。世界如此
美好,我想和Arduino做朋友。

APM内置六轴MEMS传感器MPU6000,气压计MS-5611,三
轴磁力计HMC5883,一般还会配置GPS模块,以便更精确的惯性
导航。其中,MPU6000整合了三轴陀螺仪和三轴加速度计,积分
可得速度和位姿。MS-5611通过测量气压得到高度,辅助GPS定
位。HMC5883通过测量地磁场得到方位,辅助无人机定向。飞控
采集并融合多种传感器的数据,计算并校正无人机的位姿。给
APM一张正面裸板特写!

APM与PIXHAWK的关系
点赞76 评论85 分享 收藏111 打赏 举报 关注 一键三连

https://blog.csdn.net/u010682510/article/details/53019637 1/10
2021/3/6 (20条消息) APM飞控学习之路:3 APM系统介绍与开发环境搭建_岳小飞Fly的博客-CSDN博客
说到APM,就不得不提它的进化版:PX4和PIXHAWK,来自
苏黎世联邦理工大学。“PX4是一个软硬件开源项目(遵守BSD协
议),目的在于为学术、爱好和工业团体提供一款低成本、高性
能的高端自驾仪。PX4FMU自驾仪模块运行高效的实时操作系统
(RTOS),Nuttx提供可移植操作系统接口(POSIX)类型的环
境。由3DR联合APM小组与PX4小组于2014年推出的PIXHAWK飞
控是PX4飞控的升级版本,拥有PX4和APM(ArduPilot)两套固
件和相应的地面站软件,也是目前全世界飞控产品中硬件规格最
高的产品。”

好了说人话,目前主流就2种:APM和PIXHAWK。有时指硬
件,有时指软件(固件),为了明确,在此做个区分。硬件分2
种:APM和PIXHAWK。APM的版本有2.5,2.6和2.8,PIXHAWK
的版本有v1和v2。软件也分2种:APM和PX4。软件版本就多了去
了,详见github。APM硬件由于存储空间有限,最高支持到3.2.1
的APM软件。PIXHAWK硬件是STM32F4,存储空间大,对APM
软件(3.2.1之后的版本也支持)和PX4都支持。

APM和PIXHAWK都开源,不过二者遵守的开源协议不同。
APM多用于DIY和小型产品,某宝上大量的无人机就采用APM,
成本低。公司商用一般采用PIXHAWK。目前很多PIXHAWK里跑
的还是APM固件,个人认为有几大原因:1. APM固件出来的更
早,使用人群习惯的延续;2. APM固件成熟度更高、资料更全。
3. APM固件走开源路线更彻底,遵守GPL V3协议,PX4更倾向商
业和实验用途,遵守BSD协议。目前APM小组已和PX4小组分道
扬镳,详见新闻:ArduPilot脱离Dronecode真相。

APM固件下载

刚提到APM硬件的最高版本为2.8,现在说说APM固件(源
码)的版本。既然是开源项目,那么在github上肯定有仓库。曾经
的APM源码存于code.google.com,后来github席卷全球,成为广
泛接受的代码仓库,于是谷歌把自己的仓库关了(反正国内也上
不去:-()。github上的源头在此:
https://github.com/ArduPilot/ardupilot。其中的ArduCopter支持多
旋翼、直升机等,四旋翼源码即在其中,但是别急着下载,先点
击release看看源码版本。可以看到带Copter的最新版本是
“Copter-3.4.0”,带ArduCopter的最新版本是“ArduCopter-3.2.1-
apm-px4”,很多朋友直接参照网上的《通过Arduino给APM编译下
载最新固件》用git克隆代码到本地,发现无法使用,问题就在于
git获取的是最新版,而APM支持的最高版本是“ArduCopter-3.2.1-
apm-px4”,从命名也可以发现,该版本固件同时支持APM和
PX4。

获取ArduCopter-3.2.1版本的源码有2种方式:I. 在github页
面点击release,往下翻几页,找到“ArduCopter-3.2.1-apm-px4”下
载即可。II. 喜欢git的朋友在克隆最新代码后,也可以回退到3.2.1
的版本,与第一种方法获得的源码无异。

git clone https://github.com/ArduPilot/ardupilot.git


点赞76 评论85 分享 收藏111 打赏 举报 关注 一键三连
cd ardupilot/

https://blog.csdn.net/u010682510/article/details/53019637 2/10
2021/3/6 (20条消息) APM飞控学习之路:3 APM系统介绍与开发环境搭建_岳小飞Fly的博客-CSDN博客
git branch -a
git checkout -b arducopter-3.2.1 origin/ArduCopter-3.2.1

使用方法解压之后就可以看到源码啦,结构如下。其中,
APMrover2支持地面车辆,ArduPlane支持固定翼,ArduCopter支
持多旋翼和直升机。对于四旋翼的开发,就对应ArduCopter文件
夹。值得一提的是,打开ArduCopter文件夹后,可以看到一大
波.pde文件,.pde为Arduino文件的旧版后缀,新版的为.ino
(Arduino的后3个字母),可以简单类比成.cpp文件。熟悉C++的
朋友可能会想去找main文件,这回改头换面了,主文件叫
ArduCopter.pde。

APM开发环境

巧妇难为无米之炊”,现在米有了,用什么工具做饭呢。先把
火备好,即编译的 工具链和驱动:
MHV_AVR_Tools_20121007.exe(AVR单片机编译和下载程序
用)和MissionPlanner-latest.msi(飞控地面站,含APM的USB接
口驱动)。接下来就是用什么灶台做饭了,以Windows平台为
例,灶台根据方便程度有2种:I. 土灶: ArduPilot-Arduino-1.0.3-
gcc-4.7.2-windows(为ArdupPilot定制的Arduino IDE)。II. 电磁
炉:Visual Studio配合Visual Micro插件(Arduino for Visual
Studio插件)。二者本质没有区别,可以看到都是调用gcc工具
链,Visual Studio只是通过Visual Micro在上层封装了操作接口,
便于程序员查看和编写代码。 强烈建议使用Visual Studio!!!

环境I(轻量). Arduino IDE

先介绍Arduino派的IDE:ArduPilot-Arduino-1.0.3-gcc-4.7.2-
windows,此IDE不同于普通的Arduino IDE,而是为ArdupPilot
定制的。解压之后,打开“arduino.exe”,一张白板扑面而来。唯一
和飞控有关的就在菜单栏上,相比通用ArduinoIDE多了“ArduPilot”
一项。工具栏的“√”是编译,“→”是下载。

点赞76 评论85 分享 收藏111 打赏 举报 关注 一键三连

https://blog.csdn.net/u010682510/article/details/53019637 3/10
2021/3/6 (20条消息) APM飞控学习之路:3 APM系统介绍与开发环境搭建_岳小飞Fly的博客-CSDN博客

点击“文件->参数设置”,可设置程序库的位置,即APM源码
位置,注意不要勾选“启动时检查更新”,因为本IDE专为ArduPilot
定制。其他选项可根据个人喜好设置。

设置完成后退出再重开,以保证程序库位置生效。点击“文件-
>程序库->ArduCopter”,源代码一览无余。之后配置APM固件,
主芯片:“工具->板卡->Arduino Mega 2560 or Mega ADK”,串
口:“工具->串口->相应USB串口”(确保驱动已安装),编程器:
“工具->编程器->AVRISP mkll”(默认),APM硬件型号:
“ArduPilot->HALBoard->ArduPilot Mega 2.x”。

至此,Arduino IDE的完毕,可以点击编译了。等待3分钟左
右,编译完毕,生成一个hex文件用于下载到APM板。

点赞76 评论85 分享 收藏111 打赏 举报 关注 一键三连

https://blog.csdn.net/u010682510/article/details/53019637 4/10
2021/3/6 (20条消息) APM飞控学习之路:3 APM系统介绍与开发环境搭建_岳小飞Fly的博客-CSDN博客
切记:不要下载!不要下载!不要下载!下载会变
砖!

环境II(推荐). Visual Studio&Visual


Micro

Arduino IDE编译APM的代码还可以,但要是用来浏览和编写
代码,那就是千丝万缕扭不清了,所以ArduinoIDE的设置里也机
智地留下一条后路:“□使用外部编辑器”。
Visual Studio(以下简称VS)作为宇宙最强IDE,怎么能不
支持下Arduino,感谢微软救民于水火。以VS2012为例,点击“工
具->扩展和更新->联机”,搜索“Visual Micro”,下载安装即可。顺
便推荐下Visual Assist,VS下最好的代码补全工具,以前写1行代
码的功夫,现在可以写3行~

安装好之后,VS的菜单栏多了一些振奋人心的东西。
“VMICRO”中可设置Arduino的选项,点击“VMICOR->Visual Micro
Explorer”,如下图所示。对比Arduino IDE可发现,编译、下载、
COM口应有尽有,还可适配不同的Arduino 版本。

点击“Configure”进行配置,选择Arduino版本:1.0,配置
Arduino目录,笔者的是:D:\Fly\ArduPilot-Arduino-1.0.3-
windows,即ArduPilot-Arduino-1.0.3-gcc-4.7.2-windows解压后的
文件夹。 注意此插件的名字是“Arduino IDE for Visual
Studio”,并不是专为Ardupilot/APM定制,因此还需适配apm硬
件信息(点击蓝字链接下载,解压后为一名为apm的文件夹,内
仅含boards.txt)。将该apm文件夹放入D:\Fly\ArduPilot-
Arduino-1.0.3-windows\hardware中。配置完成之后,可在
“Installed”选项卡中查看支持的硬件类型,如所需的“Arduino
Mega 2560 HAL (Apm 2)”,插上APM后在COM口选择对应的串口
号。此外,在“Examles”选项卡中可查看Arduino和ArduCopter的
例程。

重启VS,点击“文件->打开->Arduino Project”,选择
ArduCopter文件夹中的ArduCopter.pde打开, 即可在“解决方案资
点赞76 评论85 分享 收藏111
源管理器”中看到APM的源码结构。解释一下,ArduCopter.pde相 打赏 举报 关注 一键三连

https://blog.csdn.net/u010682510/article/details/53019637 5/10
2021/3/6 (20条消息) APM飞控学习之路:3 APM系统介绍与开发环境搭建_岳小飞Fly的博客-CSDN博客
当于平时常见的Main.cpp,在ArduCopter.pde的最后一行是真正
的main函数。

AP_HAL_MAIN();

除此之外,有一点需要注意, 在“VMICRO”中,
“Debugger”取消勾选“Automatic Debug
(Release/Debug)”,否则会编译失败。因为APM2.8不支持在
线Debug,同时对于“多线程”程序,Debug本身意义不大,一般采
用串口print进行调试以便观察程序流程。对于普通Arduino板(如
nano)可以勾选,下载后会自动进入调试状态。

至此,Visual Studio&Visual Micro的配置完毕,又可以愉快


地编译了。同样等待大概3分钟左右,可以看到编译完成,生成一
个hex文件用于下载到APM板。对于编译,第1次会较慢,修改代
码再次编译就很快了。

切记: 不要下载!不要下载!不要下载!下载会变
砖!
在此给出笔者用VS2012编译的工程: APM3.2.1固件-
VS2012工程 ,打开ArduCopter文件夹中的ArduCopter.sln即可使
用。如果你好奇心太重点了下载,也没关系,笔者会在下一篇博
客让板砖起死回生:)

APM资料说明

有关APM的资料,首推ArduPilot官网:
http://ardupilot.org/ardupilot/。如果是开发四旋翼,左侧的
“Copter”和“Developers”是你经常要去逛的。里面详细介绍了APM
的方方面面,值得反复咀嚼。网上的APM资料,很多就是翻译自
ArduPilot官网,但是良莠不齐。不要惧怕英文而选择逃避,蔡康
永有一段很有名的话,“15岁觉得游泳难,放弃游泳,到18岁遇到
一个你喜欢的人约你去游泳,你只好说"我不会耶”。18岁觉得英文
难,放弃英文,28岁出现一个很棒但要会英文的工作,你只好说
“我不会耶”。人生前期越嫌麻烦,越懒得学,后来就越可能错过让
你动心的人和事,错过新风景。”万事开头难,但也不要放大开头
点赞76
的困难,跨过去就好了。 评论85 分享 收藏111 打赏 举报 关注 一键三连

https://blog.csdn.net/u010682510/article/details/53019637 6/10
2021/3/6 (20条消息) APM飞控学习之路:3 APM系统介绍与开发环境搭建_岳小飞Fly的博客-CSDN博客

国内的资料,主要推荐“模友之吧”里“泡泡老师”的视频教程,
教你一步步上手APM2.8: [泡泡老师教程] 新手课堂:APM2.8的
使用方法。
个人收集的2个资料:新编APM-2.8.0中文入门手册和
APM2.8接口介绍。

PS:无人机系列的第3篇至此结束,主要介绍了APM的固件
和开发环境搭建,至于为何“不要下载!”,且看下回分解。

【教程】F4 V3飞控刷ardupilot固… weixin_42429385的博客 2万+


首先说明一下我不是第一个给OmnibusF4刷ardupilot固件(也就所谓的pi…

使用VSCode打造APM飞控的编译+烧录+调试一… 王伟韵 8162


日期:2019.05.08 前言 APM(Arducopter)和PX4是当今世界上最为流…

优质评论可以帮助作者获得更高权重 评论

哈撒keyi: 爹,我终于找到你了 2 年前 回复 3

万里晴空雪: 不要下载指的是? 2 年前 回复

香菇馍馍酱: 楼主优秀 2 年前 回复

weixin_42183191: 66 3 年前 回复

qq_42019891: 这是Windows系统还是Linux啊? 3 年前
回复

qq_35092819: 所有的头文件都提示找不到,怎么办? 4 年前
回复

yj666666666: 博主,我最近也是在自己做飞控,就是不太想自
己写完一整套程序,感觉这样自己没得那么多时间了,所以就按
照你的这个配置方法开始搞APM的代码,按照你的配置一步步做
的,连编译都没法进行,VS2012直接给我弹出来一个“CC1plus.ex
e已经停止运行”,我下头直接没办法进行了。。。 4 年前
回复

embrace_future 回复 : 我遇到的情况完全一致,请问你
解决了吗 3 年前 回复

翘首镜像: 会了 4 年前 回复

翘首镜像: Please install Arduino board in the Micro Explorer -


> Board Manager or set a valid location for an Arduino comp
atible IDE这个怎么解决? 4 年前 回复

hehuanzong1747: 请问大量的找不到Include文件是什么原因
啊 4 年前 回复

ma1096539894 回复 : 我也是 啊,估计是VS的路径问


点赞76 评论85 分享 收藏111 打赏 举报 关注 一键三连
题。但是我试的也不太好 4 年前 回复

https://blog.csdn.net/u010682510/article/details/53019637 7/10
2021/3/6 (20条消息) APM飞控学习之路:3 APM系统介绍与开发环境搭建_岳小飞Fly的博客-CSDN博客

< 1 2 3 4 5 6 >

相关推荐

APM飞控学习之路:1 无人机的分类与发展_lixia755324的… 2-24


APM飞控学习之路:3 APM系统介绍与开发环境搭建 置顶2016年11月03…

APM开发环境_Jonelly的博客 1-25
使用VSCode打造APM飞控的编译+烧录+调试一体的终极开发环境https://…

APM飞控学习之路:4 源码裁剪与下载 岳小飞Fly的博客 1万+


“月盈则亏,水满则溢”。当博主编译完成,以为离成功更近一步准备下载…

APM飞控学习之路:5 串口概述与收发调试 岳小飞Fly的博客 1万+


“云中谁寄锦书来,雁字回时,月满西楼”。当无人机在空中飞翔时,从AP…

使用VSCode打造APM飞控的编译+烧录+调试一体的终极… 2-5
一键三连 点赞Mark关注该博主, 随时了解TA的最新博文 APM飞控中文参…

APM飞控二次开发(入门) 参考网站 qq_41846923的博客 2808


Apm飞控:型号APM2.8 源代码版本:ArduCopter V3.0.1 编译环境:Ard…

开源飞控APM与PIXHAWK 点滴记录 3万+


一 APM 官网地址:http://ardupilot.org/ APM(ArduPilotMega) 是在200…

APM飞控学习之路:2 四旋翼的工作原理… 岳小飞Fly的博客 1万+


“一叶障目,不见泰山”。在研究四旋翼飞行器之前,有必要从整体介绍其…

apm飞控_3个经常被忽视的APM关键功能 cunhu4317的博客 36
apm飞控 APM核心功能已不再足够。 市场领先的应用程序超越了其他应…

APM v2.8.0接口定义说明 workspace 4257

2018年4月最新版虚拟机(包含APM… AMOVLAB(阿木实验室) 3257


以下为2018年4月最新版代码编译的虚拟机(包含APM开发环境和PX4…

apm飞控较为详细的入门教程 12-04
apm飞控较为详细的入门教程介绍APM配置和地面站的配置,讲解细致…

APM/PIX4飞控3G/4G数传实现附源码AMOVLAB(阿木实验室) 1万+
阿木社区整理,转载请注明出处。阿木社区玩也要玩的专业! http://www…

APM飞控软件在环SITL仿真 icebrick333的博客 8714


APM飞控本身已经做的很完善了,但是如果要做某些个性化的应用,我…

APM飞控源码 04-09
APM飞控源码,来自github的资源,分享以供学习。。。。。。

最流行的开源飞控项目ArduPil… 西涛offbye-移动全栈技术博客 4936


ArduPilotMega (APM) 是市面上最强大的基于惯性导航的开源自驾仪 特…

apm源码开发环境搭建 General_s 2153


首先,在github上下载apm源码 github-ardupilot: https://github.com/Ard…

关于PC,APP,H5等客户端访问后台时如… 南北雪树的专栏 3238


最近也是在自己的公司中,也确实碰到了这样的一个问题。我们系统一开…

APM和PIX飞控日志分析入门贴 闲来无事搞搞机 2万+


我们在飞行中,经常会碰到各种各样的问题,经常有模友很纳闷,为什么…

APM飞控代码结构 junzixing的博客 596


APM飞控代码结构讲解,原文链接:http://www.nufeichuiyun.com/?p=261

多轴APM飞控调参 weixin_34192816的博客 814


调参步骤: 遥控器,电动机和电调对应的APM飞控连线——遥控器校准…

©2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页



400- 工作时
关于 招贤 广告 开发 线
660- 间 8:30-
kefu@csdn.net
我们 纳士 服务 助手 客
0108 22:00

公安备案号11010502030143 京ICP备19004658号 京网文〔2020〕1039-165号
经营性网站备案信息 北京互联网违法和不良信息举报中心 网络110报警服务
点赞76 评论85
中国互联网举报中心 家长监护 Chrome商店下载 ©1999-2021北京创新乐知网络技术有限公司
分享 收藏111 打赏 举报 关注 一键三连

https://blog.csdn.net/u010682510/article/details/53019637 8/10
2021/3/6 (20条消息) APM飞控学习之路:3 APM系统介绍与开发环境搭建_岳小飞Fly的博客-CSDN博客
版权与免责声明 版权申诉

5 25万+ 10万+ 12万+


原创 周排名 总排名 访问 等级

848 521 188 137 210


积分 粉丝 获赞 评论 收藏

私信 关注

搜博主文章

热门文章

APM飞控学习之路:3 APM系统介绍与开
发环境搭建 57376

APM飞控学习之路:4 源码裁剪与下载
19937

APM飞控学习之路:5 串口概述与收发调试
17913

APM飞控学习之路:2 四旋翼的工作原理与
系统组成 15421

APM飞控学习之路:1 无人机的分类与发展
11033

分类专栏

四旋翼无人机 5篇

机器人

最新评论

APM飞控学习之路:5 串口概述与收发调试
m0_49649407: 请问你解决了吗,我也想请
教相关问题 ...
APM飞控学习之路:4 源码裁剪与下载
aitingc: 博主太强了 ...
APM飞控学习之路:1 无人机的分类与发展
skyfish__: 19年11月入坑的盟新! ...
APM飞控学习之路:5 串口概述与收发调试
Br₂: 谢谢博主 ...
APM飞控学习之路:5 串口概述与收发调试
lightyoung: 感谢博主 ...

最新文章

APM飞控学习之路:5 串口概述与收发调试

APM飞控学习之路:4 源码裁剪与下载

APM飞控学习之路:2 四旋翼的工作原理与
系统组成

2016年 5篇

目录

APM系统介绍

APM与PIXHAWK的关系

点赞76 APM固件下载
评论85 分享 收藏111 打赏 举报 关注 一键三连

https://blog.csdn.net/u010682510/article/details/53019637 9/10
2021/3/6 (20条消息) APM飞控学习之路:3 APM系统介绍与开发环境搭建_岳小飞Fly的博客-CSDN博客
APM开发环境

环境I(轻量). Arduino IDE

环境II(推荐). Visual Studio&Visua…

APM资料说明

点赞76 评论85 分享 收藏111 打赏 举报 关注 一键三连

https://blog.csdn.net/u010682510/article/details/53019637 10/10

You might also like