VTOL源码分析补充
上一篇大致分析了PX4中对于VTOL的控制策略:

上图摘自开发者Roman Bapst的一篇讲义
其中的VTOL Controller上篇也做了较为详细的图解:

补充:
fill_actuator_outputs():
复合式机型(Standard)
函数的主要作用是在各种机型下,计算各种flight_mode下的actuator输出。
multirotor controls:
// roll
_actuators_out_0->control[actuator_controls_s::INDEX_ROLL] =
_actuators_mc_in->control[actuator_controls_s::INDEX_ROLL] * _mc_roll_weight;
// pitch
_actuators_out_0->control[actuator_controls_s::INDEX_PITCH] =
_actuators_mc_in->control[actuator_controls_s::INDEX_PITCH] * _mc_pitch_weight;
// yaw
_actuators_out_0->control[actuator_controls_s::INDEX_YAW] =
_actuators_mc_in->control[actuator_controls_s::INDEX_YAW] * _mc_yaw_weight;
// throttle
_actuators_out_0->control[actuator_controls_s::INDEX_THROTTLE] =
_actuators_mc_in->control[actuator_controls_s::INDEX_THROTTLE] * _mc_throttle_weight;
_actuators_mc_in是mc_att_control的计算结果,上述函数的作用是根据权重重新计算期望输出值,同理适用固定翼模式。
各个输出量update_transition_state()计算得到的mc权重
_mc_roll_weight = mc_weigh

本文补充分析了PX4中VTOL的源码,聚焦于fill_actuator_outputs()函数在复合式机型、尾座式和倾转式机型中的应用。在复合式机型中,该函数计算不同飞行模式下的actuator输出。在固定翼控制中,若副翼锁定则输出全部为零,反之仅改变滚转和俯仰输出。对于尾座式,旋翼模式下利用副翼进行偏航控制。倾转式则根据权重调整电机输出。同时,vtol_type.cpp中的update_mc_state()和update_fw_state()分别更新多旋翼和固定翼的实际姿态期望值。
最低0.47元/天 解锁文章
1614

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



