学习 ArduPilot - 简介

本页介绍 ArduPilot 的基本结构。在开始之前,您应该先确定要使用哪种代码探索系统。您可以使用网页浏览器查看 https://github.com/ArduPilot/ardupilot/ 但是,如果你有 克隆了所有的 git 仓库 并使用好的程序员集成开发环境,如推荐的那些 这里.

基本结构

../_images/ArduPilot_HighLevelArchecture.png

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.