本文对apm的飞行模式管理和切换等机制进行介绍,最后通过实例,分别修改apm飞控端代码以及missionplanner代码,将apm的飞行模式由6个扩展到了9个。因为作者最近一直在修改apm的固定翼程序,所以讲更多的以ArduPlane为例子进行介绍,不过ArduCopter与之思路是相同的,很容易触类旁通。
一.飞行模式的本质
Apm开发团队建议开发者通过扩展飞行模式的方式对apm功能进行扩展,植入自己所需要的飞行逻辑,由此可见飞行模式之重要性。实际上,FlightMode在apm中就是一个枚举类型,不同的状态即对应与不同的飞行模式。可见defines.h。
enum FlightMode {
MANUAL = 0,
CIRCLE = 1