本文主要介绍关于ardupliot project中关于四旋翼的姿态控制的
首先给出姿态控制的结构图
顶层文件flight-mode.的飞行模式,然后调用合适的 <flight mode>_run()
函数(i.e. stabilize_run for stabilize mode, rtl_run for RTL mode, etc). <flight mode>_run()
函数可以在文件control_<flight mode>.cpp
(i.e. control_stabilize.cpp, control_rtl.cpp, etc)中找到。该函数负责转换当前用户的输入(如rc_1.control_in, g.rc_2.control_in)为一个针对飞行模式的倾斜角,旋转速度,攀升速度。如在定高模式下,yaw输入转换为旋转速度。油门输入转化为攀升速度。该函数的最后要做的就是将这些的道德角度速度传递给姿态控制和位置控制器。
姿态控制库提供了5中飞行器的控制方式。最常用的3种是
- angle_ef_roll_pitch_rate_ef_yaw() : 该函数支持一个地球坐标系下的滚转和俯仰角度、yaw速度。
- angle_ef_roll_pitch_yaw() : 该函数支持一个地球坐标系下的滚转、俯仰、偏航角度。
- rate_bf_roll_pitch_yaw() : 该函数支持集体坐标系下的滚转、俯仰、偏航角度。
调用上述angle_ef_roll_pitch_rate_ef_yaw等函数之后,在执行中调用了 AC_AttitudeControl::rate_controller_run()。该函数转换上述方法计算的输出为roll pitch yaw,