ArduPlane——ArduPilot—— 框架概述

版权声明:本文为博主原创博文,未经允许不得转载,若要转载,请说明出处并给出博文链接      

 

      最近开始学习下Ardupilot里固定翼Arduplane的相关知识,一些关键基础的拿出来学习分享,以便回顾知新!

      首先来一张arduplane的代码框架图,以便梳理代码流程,直观容易理解(连代码库以及cpp文件都标记的如此清楚,开源 的真是越来越666了)。

           ArduPlane——ArduPilot—— 框架概述_第1张图片

框架中几个主要的步骤:

ahrs_update:调用EKF获取最新的传感器数据并对姿态和位置进行估计。

read_radio : 读取自动驾驶仪的输入并计算出适当的姿态或位置目标。

navigate:调用L1控制器和TECS(全局能量控制系统)控制器(见下文)来提供位置目标给roll、pitch、throttle控制器。

update_flight_mode : 将L1控制器的roll和pitch目标复制给nav_roll_cd和nav_pitch_cd这两个全局变量。

stabilize :执行较低级别的roll,pitch和throttle控制器。

set_servos : 将来自roll,pitch和throttle控制器的输出发送到相应的伺服,作为伺服的输入。

 

ArduPlane  控制器

如下图所示,Plane有2个较为上层的控制器和4个较为底层的控制器。

                       ArduPlane——ArduPilot—— 框架概述_第2张图片

1.    L1控制器将起点和目的地(每一个都用纬度和经度来表示)转换成横向加速度,以使飞机沿着从起点到目的地的路径水平飞行。想要继续了解L1导航算法,可以看L1 control——ArduPilot——更新航点update_waypoint(一)&&L1 control——ArduPilot——更新航点update_waypoint(二)&& L1 control——ArduPilot——更新圆圈update_Loiter这三篇博客。

2.    TECS(全局能量控制系统)控制飞机的动能(即速度)与其势能(即高度)之间的交换。它的输入是一个目标速度和高度,它试图通过计算目标throttle和pitch值,然后传递到下面的pitch和throttle控制器来达到这些目标。想要了解更多的TECS可以去看TECS—ArduPilot—代码框架理解

 

本文只是提供一个固定翼的代码框架,便于梳理代码流程,进一步学习

 

相关ArduPilot的学习博客链接:

飞控博客列表

你可能感兴趣的:(ArduPilot,ArduPilot)