Ardupilot -- APM源码笔记一(重制)~ APM源码基本结构

本篇将简单介绍源码的基本结构。
首先,你要有一套APM源码,可以在下面的github下载最新源码~
https://github.com/ArduPilot/ardupilot/
已经有源码的读者可以继续往下看,或者想下载以前版本的源码请参考另一篇博文的源码下载讲解
http://blog.csdn.net/qq_36955622/article/details/72919314
阅读源码最好有个好用的IDE,如Source Insight项目代码阅读神器,对于像查找函数的定义调用声明之类的一目了然,或者你有其他不错的IDE也可以在讨论区分享一下。


  • 结构框图
    Ardupilot -- APM源码笔记一(重制)~ APM源码基本结构_第1张图片
    源码结构可分解为5个部分
    • 模型代码(多旋翼、固定翼、小车等)
    • 共享库
    • 硬件抽象层(AP_HAL)
    • 工具目录
    • 外部支持代码

模型代码
每个模型文件夹都在其顶层目录定义了固件,即固件生成目录。当前支持4种类型的模型:固定翼、多旋翼(直升机)、小车和AntennaTracker(这个暂时没弄懂是什么)。虽然这些目录中有一些通用的地方,但它们的作用并不一样。现在我们只对多旋翼目录做解释说明。各类型目录下除了.cpp文件外,还有一个make.inc文件列出了在编译时所链接的库及其路径


共享库支持四种模型:多旋翼、固定翼、小车和AntennaTracker。这些库文件包括了传感器驱动文件、姿态和位置估算(EKF)和控制代码(PID等),可以查看库文件的描述和传感器的驱动模块去了解更多。

AP_HAL
硬件抽象层,为了方便我们在不同平台上的移植。在顶层目录libraries/AP_HAL中AP_HAL定义了通用接口,其他的AP_HAL_XXX则针对不同的硬件做定义。如AP_HAL_PX4针对PX4平台,AP_HAL_AVR针对AVR平台、AP_HAL_Linux针对Linux平台。

工具目录
提供多样的支持。如tools/autotest 提供APM的自动测试套件, tools/Replay 提供日志的回放等。

外部支持代码
我们会需要一些外部的代码支持来兼容平台。当前的外部支持目录~

  • PX4NuttX - PX4板载实时操作系统

  • PX4Firmware - 基于PX4板的中间件及驱动

  • uavcan - Ardupilot应用程序中的CAN总线协议。

  • mavlink - MAVlink协议及编码器

注意
大部分的外部支持代码都是在编译源码中作为git子模块加载进来的

你可能感兴趣的:(无人机二次开发)