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

本文介绍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目标的依赖
本设计分享的是ArduPilotMega(APM) 无人机飞控板APM-V2.5全部资料,APM飞控系统是国外的一个开源飞控系统,是市面上最强大的基于惯性导航的开源自驾仪。附件内容提供飞控板 APM-V2.5全部设计资料,包括硬件、固件源码和中文硬件与软件的快速入门指南。ArduPilotMega APM-2.5实物截图: 飞控板 APM-V2.5电路 PCB截图: ArduPilotMegaAPM特性包括: 免费开源固件,支持飞机("ArduPlane"),多旋翼 (四旋翼, 六旋翼, 八旋翼等), 直升机("ArduCopter")和地面车辆("ArduRover")! 通过点击式的工具简单设置和上传固件。无须编程!(但是你想搞搞代码的话,可以使用简单的嵌入式编程工具: Arduino) 通过点击式的桌面程序完全的规划任务脚本 可以支持上百个三维航点 使用强大的 MAVLink 协议,支持双向遥测和飞行中控制命令T 多种免费地面站,包括 HK GCS, 支持任务规划,空中参数调整,视频显示,语音合成和完整的带回放的数据记录 跨平台。支持Windows, Mac 和 Linux。在 Windows 下使用图形任务规划设置工具 (Mac 下可用模拟器) 或在任何操作系统下使用命令行界面。三种操作系统上都有可用的地面站程序。基于 Arduino 编程环境,也是完全跨系统的。 自动起飞,降落和特殊的动作命令,例如视频和照相控制 完整支持 Xplane 和 Flight Gear 半硬件仿真 包括继电器,可以触发任何设备,可以根据任务脚本控制
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值