(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)导入的。

相关文章
|
9月前
|
数据可视化 搜索推荐 项目管理
一分钟解决Excel多人协作的版本混乱问题
多人协同编辑Excel彻底解决了传统多人编辑时的版本混乱问题。通过云端实时同步,团队成员可以同时更新同一表格,避免了邮件传递和手动合并的繁琐。实时协作不仅提升了效率,还防止了版本冲突。Excel的“更改历史记录”功能支持查看和回滚操作,确保错误可追溯。
|
10月前
|
物联网 5G 智能硬件
介绍频段、带宽、频率、调制、解调等基础术语,以及Wi-Fi、蓝牙、ZigBee、UWB、LTE、5G等常见无线通信技术
在无线通信领域,专业术语是理解技术的关键。本文详细介绍了频段、带宽、频率、调制、解调等基础术语,以及Wi-Fi、蓝牙、ZigBee、UWB、LTE、5G等常见无线通信技术,还涵盖了信号传播、信道容量、信噪比等深入概念。通过本文,你将掌握无线技术的核心知识,成为半个无线专家。
1376 4
|
11月前
|
Java
【编程基础知识】switch case可以用string(千万注意要加上break)
本文详细探讨了Java中`switch`语句使用字符串时的注意事项,重点讲解了`break`语句的重要性。通过代码示例和流程图,帮助读者正确理解和使用`switch`语句,避免常见的编程错误。
595 4
|
存储 编解码 监控
射频(RF)中的频谱分析方法详解
射频(RF)中的频谱分析方法详解
506 4
|
机器学习/深度学习 算法 PyTorch
算法金 | 这次终于能把张量(Tensor)搞清楚了!
本文是关于PyTorch中张量(Tensor)的入门教程,由全网同名\[算法金\]作者撰写。文章介绍了张量的基础概念,强调其在深度学习中的核心地位,并阐述了张量与向量、矩阵的关系。接着,详细讲解了如何在PyTorch中创建和操作张量,包括张量的数学运算、广播机制、索引切片以及变形与重塑。此外,还涉及张量的高级功能,如自动求导系统和高级数学函数。最后,文章提到了张量在深度学习中的应用、性能优化技巧和调试方法,鼓励读者通过实践提升技能。
1578 1
算法金 | 这次终于能把张量(Tensor)搞清楚了!
|
传感器 Linux 开发工具
(1)学习ArduPilot代码库
(1)学习ArduPilot代码库
393 0
|
物联网 云计算 传感器
物联网与云计算:天作之合的技术搭档
【6月更文挑战第2天】物联网与云计算协同创造智能世界:物联网如网,连接万物,收集海量数据;云计算似云,提供强大计算力,分析数据,挖掘价值。两者结合,应用于智能家居、工业制造、医疗健康、智能交通等领域,推动数字化转型。代码示例展示物联网数据上传云端过程。未来,随着技术进步,二者的融合将深化,引领更多创新应用,促进社会福祉和进步。
226 5
|
编译器 开发工具 C语言
vscode安装+配置+使用+调试【保姆级教程】
vscode安装+配置+使用+调试【保姆级教程】
54460 8
|
Linux 图形学
深入理解Qt定时器:QTimer的魅力与挑战(一)
深入理解Qt定时器:QTimer的魅力与挑战
7307 0
|
传感器
Ardupilot — AP_RangeFinder代码梳理
Ardupilot — AP_RangeFinder代码梳理
225 0