(2)学习ArduPilot — 绪论

发布于:2022-11-14 ⋅ 阅读:(1092) ⋅ 点赞:(1)

前言

本页介绍了 ArduPilot 的基本结构。在你开始之前,你应该弄清楚你将使用什么代码探索系统。你可以只使用 web 浏览器查看 https://github.com/ArduPilot/ardupilot/,但是如果你已经克隆了所有的 git 仓库(cloned all of the git repositories),并且使用了一个优秀程序员的 IDE,如这里(here)推荐的那些,你可能会得到更多的收获。


1 基本结构

ArduPilot 的基本结构被分成 5 个主要部分:

  • 飞行器代码;
  • 共享库;
  • 硬件抽象层(AP_HAL);
  • 工具目录;
  • 外部支持代码(即 mavlinkdronekit)。

2 飞行器代码

飞行器目录是定义每种类型飞行器固件的顶级目录。目前有 6 种飞行器类型:PlaneCopterRoverSubBlimpAntennaTracker(固定翼、旋翼、无人车、潜艇、飞艇和天线追踪器)。尽管不同类型的飞行器之间有很多共同的元素,但它们各自都是不同的。目前我们只对 Copter 的代码结构进行了详细描述(detailed description of the code structure for the Copter code)。

* .cpp 文件一起,每个飞行器目录都包含一个 wscript 文件,其中列出了库的依赖性。

3 共享库

这些库(libraries)在所有飞行器类型中都是共享的。这些库包括传感器驱动程序,姿态和位置估计(aka EKF)和控制代码(即 PID 控制器)。有关更多详细信息,请参见库说明(Library Description),库示例概述(Library Example Sketches)和传感器驱动程序(Sensor Drivers)页面。

4 AP_HAL

AP_HAL 层(硬件抽象层)是我们如何使 ArduPilot 可移植到许多不同的平台的方法。在 libraries/AP_HAL 中有一个顶层的 AP_HAL,用于定义其余代码与具体板子功能的接口,然后每个板类型都有一个 AP_HAL_XXX 子目录,例如用于 AVR 基础主板的 AP_HAL_AVR,用于 Pixhawk 板子的 AP_HAL_PX4 和用于 Linux 基础主板的 AP_HAL_Linux

5 工具目录

工具目录是各种支持目录。例如,tools/autotest 提供 autotest.ardupilot.org 网站后面的自动测试基础设施,tools/Replay 提供我们的日志回放工具。

6 外部支持代码

在一些平台上,我们需要外部支持代码来提供额外的功能或主板支持。目前外部树是:

  • PX4NuttX - Pixhawk 主板上使用的核心 NuttX RTOS
  • PX4Firmware - Pixhawk 主板上使用的基础 PX4 中间件和驱动程序;
  • uavcan - ArduPilot 中使用的 uavcan CANBUS 实现;
  • mavlink - mavlink 协议和代码生成器。

Note

当你构建 ArduPilot 时(build ArduPilot),大多数都是作为 Git 子模块Git Submodules)导入的。

本文含有隐藏内容,请 开通VIP 后查看