文章目录
前言
6.2.1 概述
6.2.2 导航命令
6.2.3 条件命令
6.2.4 DO命令
前言
本文介绍了 Copter、Plane 和 Rover 切换到自动模式时支持的任务指令。
!Warning
这是一项正在进行中的工作,尚未经过全面审核。有关 Copter 的更佳列表,请点击此处(Copter can be found here)。
6.2.1 概述
MAVLink 协议定义了大量 MAV_CMD 航点命令类型(在MAVLink_mission_item_message中发送)。ArduPilot 对这些命令的子集和命令参数进行了处理,这些子集和参数对每辆飞行器来说都是最相关和最有意义的。发送到特定自动驾驶仪的不支持命令将被直接丢弃。
本文列出并描述了每种车辆类型所支持的命令和命令参数。任何"灰色"的参数都是自动驾驶仪不支持的,将被忽略。本文仍对这些参数进行了记录,以明确说明飞行器不执行 MAV_CMD(MAV_CMD protocol)协议支持的哪些属性。
有些命令和命令参数没有执行,是因为它们与特定的飞行器类型无关(例如,"MAV_CMD_NAV_TAKEOFF"命令适用于固定翼和旋翼飞机,但不适用于无人车,而俯仰参数只适用于固定翼)。还有一些可能有用的命令参数没有被处理,因为信息大小有限制,而且已经决定优先处理某些参数,而不是其他参数。
!Note
有关 Copter 支持命令的其他信息(从 Mission Planner 的角度),请参阅 Copter 任务命令列表(Copter Mission Command List)。
命令类型
任务中可以使用几种不同类型的命令:
- 导航指令用于控制飞行器的移动,包括起飞、前往和绕行航点、改变高度和着陆;
- DO命令用于辅助功能,不影响飞行器位置(例如,设置摄像机触发距离或设置伺服值);
- 条件指令用于延迟 DO 指令,直到满足某些条件,例如无人机达到一定高度或距离航点一定距离。
在一次任务中,最多只能同时运行一条"Navigation(导航)"命令和一条"Do(执行)"或"Condition(条件)"命令。一个典型的任务可能会设置一个航点(NAV 命令),添加一个在距离目的地一定距离后才完成的 CONDITION 命令(MAV_CMD_CONDITION_DISTANCE),然后添加一些 DO 命令,这些命令会在条件完成后按顺序执行(例如 MAV_CMD_DO_SET_CAM_TRIGG_DIST,用于定时拍照)。
!Note
CONDITION 和 DO 命令与前面的 NAV 命令相关联:如果无人飞行器在执行这些命令之前到达下一个航点,则将加载下一条 NAV 命令,并跳过这些命令。
参考框架
许多命令(尤其是 NAV_ commands)都包含位置/定位信息。这些信息是相对于特定"参照系"提供的,该参照系在信息的"参照系"(Frames of reference)字段中指定。旋翼飞机和无人车飞行任务使用 MAV_CMD_DO_SET_HOME 命令在全球坐标框架(MAV_FRAME_GLOBAL)、WGS84 坐标系(WGS84 coordinate system)中设置"原点位置",其中海拔高度相对于平均海平面。所有其他命令都使用 MAV_FRAME_GLOBAL_RELATIVE_ALT 框架,该框架使用相同的经纬度,但将高度设置为相对于原点位置(原点高度 = 0)。
固定翼命令还可以使用 MAV_FRAME_GLOBAL_TERRAIN_ALT 参照基准。这同样具有 WGS84 的纬度/经度参考框架,但指定了相对于地面高度的高度(如地形数据库中的定义)。
!Note
任务命令不支持 MAVLink 协议中定义的其他帧类型(请参阅 MAV_FRAME)。
信息的准确性如何?
如果一条命令或参数被标记为支持,那么它很可能(但不保证)会按照指示执行。如果命令或参数未列出(或标记为不支持),则极有可能 ArduPilot 不支持该命令或参数。
原因是,这些信息主要是通过检查命令处理程序的信息推断出来的:
- 对 AP_Mission::mavlink_to_mission_cmd 中的开关语句进行检查,以确定所有飞行器平台都会处理哪些命令,并存储信息中的哪些参数;
- 每种飞行器类型(Plane, Copter, Rover)的命令处理程序开关会告诉我们每种飞行器可能支持哪些命令,以及哪些参数会传递给处理程序。
通过上述检查,可以非常准确地了解哪些命令和参数不受支持。它们还能比较准确地说明哪些命令/参数可能会被支持。不过,这种显示并不保证准确,因为命令处理程序可能会丢弃所有信息(我们也没有完全检查所有这些信息)。
除上述检查外,我们还合并了旋翼飞机任务指令列表中的信息(Copter Mission Command List)。
如何解释命令参数
表中列出了每条命令的参数。"灰色显示"的参数不受支持。命令字段列(参数名)使用 "粗体"文本表示协议中定义的参数("空"参数使用普通文本)。
这样,用户/开发人员就能看到 ArduPilot 支持哪些协议字段,以及不支持哪些协议字段。
在GCS上使用此信息
Mission Planner (MP) 公开了 ArduPilot 支持的全部命令和参数子集,经过过滤后仅显示与当前连接的飞行器相关的命令和参数。将 MP 命令映射到本文档非常简单,因为它只需使用完整命令名称的缩减版来命名命令(例如DO_SET_SERVO,而不是完整命令名称:MAV_CMD_DO_SET_SERVO)。此外,本文档还方便地列出了 Mission Planner 在每个参数旁边使用的列标。
其他 GCS(APM Planner 2、Tower 等)可能支持其他一些命令/参数子集,并使用其他名称/标签。在大多数情况下,映射应该是显而易见的。
6.2.2 导航命令
篇幅过多,另起一篇介绍:
6.2.3 条件命令
篇幅过多,另起一篇介绍:
6.2.4 DO命令
篇幅过多,另起一篇介绍: