您的位置:首页 > 其它

无人机飞控平台ArduPilot源码入门教程 — 简介

2016-05-24 16:50 423 查看
本文介绍ArduPilot的基本结构.在动手之前,先搞定用什么工具来看代码.你可以直接用浏览器在github上看,不过最好是能用个IDE工具,结构化地显示代码,方便你找函数,结构,类定义之类的东西.

推荐一些

Eclipse在Windows, Linux或者MacOS上都挺好
Emacs也一样可以用在三个系统上,用etags快速定位各种代码元素
Vim on emacs with ctags (

,上一句勉强翻出来了,这句不知道了,因为没用过,不过楼主会好好学习的以后可能就会翻译了,等好心人通过点评给我指点)

有很多其他的IDE(集成开发环境),大多数都是可以高度定制的,很适合ArduPilot.如果你有喜欢的IDE,并且在ArduPilot上用的很爽,记得在wiki上分享一下你的经验哦.


基本结构



ArduPilot的基本结构分为5个部分:

各模型目录
硬件抽象层
共享库
工具目录
外部支持代码

你需要先去github上下载代码, 下面我们就逐步介绍细节.


各模型目录

各模型目录是最高级别的目录,用于定义每一种模型的固件.当前支持四种模型:固定翼飞机(Plane),旋翼飞机(Copter),车辆(Rover), 追踪雷达(AntennaTracker).
除了.cpp源代码文件之外,各模型目录还包含了一个.inc文件,用来列出引用到的库. 编译脚本读取这个文件来配置编译时的头文件包含和库链接信息.


硬件抽象层

硬件抽象层,是ArduPilot能移植到各种不同平台的关键.其顶层抽象在libraries/AP_HAL目录下,定义了个其他代码所需要遵循的接口,每个板子则各自有一个AP_HAL_XXX这样的子目录, 比如AP_HAL_AVR是给AVR板子的,AP_HAL_PX4是给PX4的,AP_HAL_Linux是给Linux相关板子的(楼主对这里还有点不确定linux相关的板子是什么)


工具目录

工具目录下是各种杂七杂八的支持目录. 比如tools/autotest实际上是autotest.ardupilot.org 的后台基础, tools/Replay则提供log回放功能.


外部支持代码

在有的平台上,我们需要外部支持代码来提供额外特性或者板子支持.当前用到的外部支持包有:

PX4NuttX -用在PX4板子上的NuttX RTOS的内核
PX4Firmware - 用在PX4板子上的基本PX4中间件和驱动
uavcan -用在ArduPilot上的uavcan
CANBUS实现
mavlink -mavlink
协议和代码生成器

注意:这些大多是在编译用于PX4/Pixhawk的ArduPilot时以Git子模块的方式引入的.


编译系统

当前编译可以通过make指令完成, 也可用arduino IDE来编译AVR芯片相关内容.
mk/目录下的makefile文件, 为每种支持的板子定义了编译规则.

为特定的板子编译一种模型固件或者测试固件(sketch我也不会翻)时,用指令 "make TARGET", 这里的TARGET就是板子的类型.下面是一些可用板子类型

make apm1 - APM1板子

make apm2 - APM2板子

make px4-v1 - PX4v1

make px4-v2 - Pixhawk (以及 Arsov AUAV-X2)

make pxf -
Erle brain(BBB(BeagleBoneBack)+PXF(PixHawk Fire Cape))组合

make navio - 树莓派+NavIO组合

make linux - 通用的linux版本

make flymaple -
FlyMaple板子

make vrbain - VRBrain板子
make sitl - 闭环仿真过程中用到的半实物仿真(SITL)软件

更多的接口正在加进来,所以经常用make help看看有什么新东西吧

对于所有这些版本,都可以增加一些额外的编译参数,或者用并行编译来加快速度.比如你可以输入:

make apm2-octa -j8


表示采用8线程并行编译一个APM2板子的版本. 你也可以试试使能ccache特性来加快编译

有些板子支持直接把编译得到的固件加载到板子.比如:

make px4-v2-upload


会编译和加载一个测试固件到Pixhawk

有些辅助指令可以用在特定的板子上,比如:

make clean -清空非px4版本的编译成果
make px4-clean - 完全清空PX4文件的编译成果
make px4-cleandep - 清空PX目标的依赖
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: