本文主要介绍关于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,并使用函数AP_Motors library中的函数 set_roll, set_pitch, set_yaw and set_thro

本文深入探讨了ArduPilot项目中四旋翼无人机的姿态控制,从飞行模式到控制算法,包括angle_ef_roll_pitch_rate_ef_yaw、angle_ef_roll_pitch_yaw和rate_bf_roll_pitch_yaw等函数的应用,以及AC_AttitudeControl和AC_PosControl库的作用,详细阐述了如何将用户输入转换为实际飞行控制指令,涉及飞行器的3D位置控制和电机混合代码。
&spm=1001.2101.3001.5002&articleId=52551552&d=1&t=3&u=f1f0e4785dfa47c1af665e2d136dabf5)
1万+

被折叠的 条评论
为什么被折叠?



