ArduPilot/APM源码学习笔记(一)

最近开始学习ArduPilot/APM飞控的源码, 源码托管在github上。

源码链接:https://github.com/diydrones/ardupilot。

飞控主页:http://ardupilot.com/;

飞控的开发者官网网址为:http://dev.ardupilot.com/。

学习源码主要在开发者(developer)网页,官方提供了较为详细的代码编译和源码学习的教程,非常详细。

我这里主要是为了记录一下学习的东西,以便以后参考。

源码基本结构分为了5个部分:

  • vehicle directories
  • AP_HAL
  • libraries
  • tools directories
  • external support code
vehicle directories主要是目前支持的4中设备的目录包括plane、helicopter/multicopter、rover和AntennaTracker。

AP_HAL是硬件抽象层,不同硬件平台通过该层提供统一的接口。

libraries提供了一系列的库文件,内容比较多,类型也比较广。

tools directories提供了一些其他库支持,包括bootloader,demo等等。

external support code主要是一些平台需要的额外代码,包括嵌入式系统和特有的驱动等。


在libraries目录下的各个设备中,有些会提供一个example目录,里边提供了一些针对该设备的测试文件,可以编译后单独测试该设备。同时也可以通过例程学习该设备相关函数和接口的使用方法。

在apm飞控上,系统不支持多线程,在px4和Linux平台设备上可以支持多线程,具体过程有待学习,涉及到了操作系统的知识。

在工程设计中,开发者采用5个uart分别实现不同的作用。A-E分别为终端、第一个GPS,第一个数传,第二个数传,第二个GPS。

RCin和RCout

  • PPMSum – on PX4, Pixhawk, Linux and APM2
  • SBUS – on PX4, Pixhawk and Linux
  • Spektrum/DSM – on PX4, Pixhawk and Linux
  • PWM – on APM1 and APM2
  • RC Override (MAVLink) – all boards
RCout默认为50Hz,也可通过编程提高频率。

提供了几种存储管理

  • the AP_HAL::Storage object, accessed as hal.storage
  • the StorageManager library to give a higher level abstraction layer on hal.storage
  • DataFlash for storing to an on-board logging area
  • Posix IO functions to traditional filesystems (for example VFAT on a microSD card), on boards that support it
现在只是大概看了源码的整体介绍,许多概念知其然不知其所以然,以后会不断深入介绍。




你可能感兴趣的:(四旋翼)