Ardupilot源码框架

Ardupilot源码地址:https://github.com/ArduPilot/ardupilot,官网地址:http://ardupilot.org/

文章目录

  • 1、Ardupilot介绍
  • 2.库文件介绍
  • 3.主目录文件介绍
  • 4.姿态控制(Copter)
  • 5.Motors Library
  • 6.、用代码调度器(scheduler)运行你的代码

1、Ardupilot介绍

  目前开源飞控有两个:Pixhawk和APM。Pixhawk是硬件平台,PX4是pixhawk的原生固件,
APM(Ardupilot Mega)也是硬件,Ardupilot是APM的固件。后来开发者就把Ardupilot代码转移到了Pixhawk平台上,兼容了Pixhawh硬件平台,所以就导致现在Pixhawk上有两套飞控代码的原因,所以在Pixhawk硬件平台上可以运行PX4固件(原生固件),也可以运行APM固件。

  由于Ardupilot兼容Pixhawk,因此Ardupilot的HAL层也可以使用pixhawk硬件。Ardupilot是基于Pixhawk原生代码开发的上层应用,如下面的源码框架图所示,Ardupilot把底层的PX4Firmware和NuttX等都抽象为HAL,developer只需要关心上层应用即可,基于Pixhawk原生设计上层控制逻辑。Ardupilot其实是开源的、玩具级飞控,它为了兼容各种乱七八糟的板子、机型,有很多冗余的代码,这些冗余的代码让我们理解飞控本身增加了难度和学习成本。如果我们需要一款专业的飞控,完全可以去掉这些冗余的代码,只保留我们需要的精简过的功能,这样也就能大大降低它代码的复杂程度。

  Ardupilot目前主要是支持的5种设备的目录包括ArduPlane(固定翼)、ArduCopter(直升机/多旋翼)、APMrover2、AntennaTracker、ArduSub。其中ArduCopter是针对四旋翼飞行器的。为了方便更多不懂底层硬件的人来开发上层应用,所以这个项目将底层的一些东西进行了封装,抽象成了一堆的库,让软件开发人员根据这个库,就能实现上层应用的开发。Ardupilot的源码系统框架图如下:

Ardupilot源码框架_第1张图片
相对上图更详细的框架
Ardupilot源码框架_第2张图片
Barometer:气压计

2.库文件介绍

库文件介绍(位于\libraries目录下),libraries包含了所有需要的库函数头文件等。

核心库:

    AP_AHRS              -姿态估计的库,使用DCM(方向余弦矩阵)或者EKF(卡尔曼滤波)
    AP_Common        -核心库会被其他库所依赖
    AP_Math              -各种各样的数学操作的函数,特别是对向量操作比较有用
    AC_PID                 -PID控制库
    AP_InertialNav     - 惯性导航库,已经将GPS及气压器的数据和加速度计进行了融合
    AC_AttitudeControl   -姿态控制库
    AP_WPNav             -导航库
    AP_Motors            -多旋翼和传统直升机混合的电机库,主要是跟电机输出有关的
    RC_Channel           -将从APM_RC接收到的pwm信号转换成内部单元,例如角度
    AP_HAL, AP_HAL_AVR, AP_HAL_PX4   - 硬件抽象层,主要将底层硬件进行抽象。使上层应用拥有统一的接口,使其更容易移植到不同的硬件上

你可能感兴趣的:(Ardupilot)