赞
踩
版权声明:本文为博主原创博文,未经允许不得转载,若要转载,请说明出处并给出博文链接
最近开始学习下Ardupilot里固定翼Arduplane的相关知识,一些关键基础的拿出来学习分享,以便回顾知新!
首先来一张arduplane的代码框架图,以便梳理代码流程,直观容易理解(连代码库以及cpp文件都标记的如此清楚,开源 的真是越来越666了)。
框架中几个主要的步骤:
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个较为底层的控制器。
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的学习博客链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。