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

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


  • 结构框图
    这里写图片描述
    源码结构可分解为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子模块加载进来的

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GenCoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值