翻譯章節: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