学习 ArduPilot - 简介¶
本页介绍 ArduPilot 的基本结构。在开始之前,您应该先确定要使用哪种代码探索系统。您可以使用网页浏览器查看 https://github.com/ArduPilot/ardupilot/ 但是,如果你有 克隆了所有的 git 仓库 并使用好的程序员集成开发环境,如推荐的那些 这里.
基本结构¶
ArduPilot 的基本结构分为 5 个主要部分:
载具法
共享库
硬件抽象层(AP_HAL)
工具目录
外部支持代码(如 mavlink、dronekit)
载具法¶
载具目录是定义每种载具固件的顶级目录。目前有 6 种飞行器类型:飞机、旋翼飞行器、UGV无人车、潜水艇、飞艇和天线跟踪器。虽然不同类型的飞行器之间有很多共同元素,但它们又各不相同。目前,我们只有 Copter 代码结构的详细说明.
除了 *.cpp 文件外,每个载具目录还包含一个 wscript 文件,其中列出了库依赖关系。
图书馆¶
"这款" 图书馆 是所有载具类型共享的。这些库包括传感器驱动器、姿态和位置估计(又名 EKF)和控制代码(即 PID 控制器)。参见 图书馆简介, 图书馆草图示例 和 传感器驱动程序 页面了解更多详情。
AP_HAL¶
AP_HAL 层(硬件抽象层)是我们将 ArduPilot 移植到不同平台的方法。在 libraries/AP_HAL 中有一个顶层 AP_HAL,定义了其余代码与特定电路板功能的接口,然后每个电路板类型都有一个 AP_HAL_XXX 子目录,例如,AP_HAL_AVR 用于基于 AVR 的电路板,AP_HAL_PX4 用于 Pixhawk 电路板,AP_HAL_Linux 用于基于 Linux 的电路板。
工具目录¶
工具目录是各种支持目录。例如,tools/autotest 提供了自动测试基础架构。 autotest.ardupilot.org 网站和工具/重放提供了我们的日志重放实用程序。
外部支持代码¶
在某些平台上,我们需要外部支持代码来提供附加功能或板卡支持。目前,外部树包括
PX4NuttX - Pixhawk 板上使用的核心 NuttX 实时操作系统
PX4 固件 - Pixhawk 电路板上使用的基本 PX4 中间件和驱动程序
uavcan - 用于 ArduPilot 的 uavcan CANBUS 实现
多点连接 - MAVLINK 协议和代码生成器
备注
其中大部分作为 Git 子模块 当你 构建 ArduPilot.