(2)学习ArduPilot — 绪论

简介: (2)学习ArduPilot — 绪论

前言

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


1 基本结构

c7c2b625d3de4d5baeddea637c17a24f.png


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

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

2 飞行器代码

飞行器目录是定义每种类型飞行器固件的顶级目录。目前有 6 种飞行器类型:Plane,Copter,Rover,Sub,Blimp 和 AntennaTracker(固定翼、旋翼、无人车、潜艇、飞艇和天线追踪器)。尽管不同类型的飞行器之间有很多共同的元素,但它们各自都是不同的。目前我们只对 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)导入的。

相关文章
|
5月前
|
传感器 监控 机器人
技术经验解读:【雕爷学编程】Arduino动手做(83)
技术经验解读:【雕爷学编程】Arduino动手做(83)
29 0
|
存储 编解码 API
游戏编程之四 diectxdarw基础篇
游戏编程之四 diectxdarw基础篇
59 0
|
传感器 编解码 算法
爆肝9万字,我已从小白晋升ARM嵌入式工程师!带你从零熟悉常用的M4嵌入式功能,建议收藏(含码源)(6)
通讯协议又称通信规程,是指通信双方对数据传送控制的一种约定。约定中包括对数据格式,同步方式,传送速度,传送步骤,检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。
爆肝9万字,我已从小白晋升ARM嵌入式工程师!带你从零熟悉常用的M4嵌入式功能,建议收藏(含码源)(6)
|
存储 图形学 芯片
爆肝9万字,我已从小白晋升ARM嵌入式工程师!带你从零熟悉常用的M4嵌入式功能,建议收藏(含码源)(1)
嵌入式系统的定义有很多的说法,但是没有一个定义是全面的,下面给到的两种方法我觉得应该算是比较合理的。
爆肝9万字,我已从小白晋升ARM嵌入式工程师!带你从零熟悉常用的M4嵌入式功能,建议收藏(含码源)(1)
|
Ubuntu Linux C语言
韦东山Linux驱动入门实验班(1)hello驱动
韦东山Linux驱动入门实验班(1)hello驱动
198 0
|
芯片 数据格式
爆肝9万字,我已从小白晋升ARM嵌入式工程师!带你从零熟悉常用的M4嵌入式功能,建议收藏(含码源)(2)
什么是中断?中断就是CPU在正常运行程序的时候,由于内部或者外部事件引起的暂时中止现行的程序,转去执行请求CPU为其服务的那个外设或者事件的服务程序,等待这个服务程序执行完毕又要返回到被中止的地方的程序,这么的一个过程。
爆肝9万字,我已从小白晋升ARM嵌入式工程师!带你从零熟悉常用的M4嵌入式功能,建议收藏(含码源)(2)
爆肝9万字,我已从小白晋升ARM嵌入式工程师!带你从零熟悉常用的M4嵌入式功能,建议收藏(含码源)(5)
此器件具有两个嵌入式看门狗外设,具有安全性高、定时准确及使用灵活的优点。两个看门 狗外设(独立和窗口)均可用于检测并解决由软件错误导致的故障'
爆肝9万字,我已从小白晋升ARM嵌入式工程师!带你从零熟悉常用的M4嵌入式功能,建议收藏(含码源)(5)
爆肝9万字,我已从小白晋升ARM嵌入式工程师!带你从零熟悉常用的M4嵌入式功能,建议收藏(含码源)(4)
什么是实时时钟?实时时钟RTC是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可以供应时钟日历的功能。
爆肝9万字,我已从小白晋升ARM嵌入式工程师!带你从零熟悉常用的M4嵌入式功能,建议收藏(含码源)(4)
|
存储 运维 安全
【共读】Linux网络安全精要之基础知
【共读】Linux网络安全精要之基础知
254 0
【共读】Linux网络安全精要之基础知

相关实验场景

更多