翻译章节:Learning ArduPilot — Introduction
原文地址:https://ardupilot.org/dev/docs/learning-ardupilot-introduction.html
学习 ArduPilot --- 简介
本页介绍ArduPilot的基本结构,开始之前,您需要先确定利用哪种方式浏览代码,你可以只利用网页浏览器查看代码,此种方式不需要将代码克隆到本地,网址为:https://github.com/ArduPilot/ardupilot/ 如果你将代码克隆到本地,通过推荐的 IDE 将会更有利于代码阅读。
ArduPilot 可以分为5个基本组成部分:
- 对象设备代码
- 共享库
- 硬件抽象层 (AP_HAL)
- 工具目录
- 外部支持代码(i.e. mavlink, droneki)
1,对象设备代码
对象设备目录是定义每一种设备的顶级目录,目前,APM 支持5中对象设备:固定翼无人机、直升机、无人车、Sub 与天线跟踪器。尽管这些无人机对象设备有许多共同点,但是它们直接仍然有差异,目前,我们仅对 Copter 目录代码的代码结构进行详细说明。
除了 .cpp 文件外, 每个对象设备目录中,都包含一个 make.inc 文件,此文件列出了相关的库文件,编译过程中, Makefile读取此内容创建-I和-L标志。
2,共享库文件
包括(Copter,、Plane、Rover 、AntennaTracker)在内的各种类型的无人设备共享库文件,这些库包括传感器驱动器,姿态和位置估计(akaEKF)和控制代码(即PID控制器),查询有关更多详细信息,请参见``库描述'',``库示例草图''和``传感器驱动器''页面。
3,硬件抽象层 (AP_HAL)
硬件抽象层 (Hardware Abstraction Layer) 使得 ArduPilot 可以一直待各种不同的硬件平台之上。代码库中,libraries/AP_HAL中包含一个 AP_HAL,AP_HAL属于顶层文件,定义了其余代码需要设配特定的硬件。因此,每种板类型都有一个AP_HAL_XXX子目录,例如,基于AVR的主板的AP_HAL_AVR,基于Pixhawk主板的AP_HAL_PX4,基于Linux的主板的AP_HAL_Linux 。
4,工具目录
工具目录是其他杂项支持目录,例如,tools/autotest 提供 autotest.ardupilot.org 网站背后的自动测试基础架构, tools/Replay提供日志回复功能。
5,外部支持代码
在某些平台上,我们需要外部支持代码来提供其他功能或主板支持。当前支持的外部功能为:
- PX4NuttX - the core NuttX RTOS used on Pixhawk boards
- PX4Firmware - the base PX4 middleware and drivers used on Pixhawk boards
- uavcan - the uavcan CANBUS implementation used in ArduPilot
- mavlink - the mavlink protocol and code generator