MAVLink 航线规划流程与文档
本文原文链接: https://bbs.huaweicloud.com/blogs/440374
持续更新中...
1. MAVLink 官方文档翻译
待补充
2. 航线任务相关 Message
或 Command
2.1. MISSION_COUNT
- Type: Message
- MessageID: 44
- SeeAlso: https://mavlink.io/zh/messages/common.html#MISSION_COUNT
该消息由 MAV 发出,并作为MISSION_REQUEST_LIST
的消息相应,这将发起一个写(任务计划)事务。GCS可以通过航路点总数量信息来请求单个任务项目。
字段名称 | 类型 | 取值 | 说明 |
---|---|---|---|
target_system |
uint8_t |
目标系统ID | |
target_component |
uint8_t |
目标 组件 ID | |
count |
uint16_t |
(航路点)序列中的任务项目数量 | |
mission_type MAVLink2扩展字段 |
MAV_MISSION_TYPE |
任务类型 | |
opaque_id MAVLink2扩展字段 1 |
无效:0 |
飞行器内航线任务、地理围栏或集结点编号(仅用于从飞行器下载任务) |
- 该字段用于从飞行器下载一个计划到 GCS
当从GCS 上传航线到飞行器时该字段的值为0
如果计划编号不受支持则该字段的值为0
当前的飞行器内计划编号将在MISSION_CURRENT 上流式传输,这允许GCS来判断任务中的某个部分是否发生了变化并决定是否需要重新上传任务
当飞行器内计划中的某个部分发生变化是,该编号将重新计算(当新的计划上传到飞行器,飞行器将通过MISSION_ACK
消息给GCS相应新的编号)
2.2. MAV_CMD_DO_CHANGE_SPEED
- Type: Command
- CommandID: 178
- SeeAlso: https://mavlink.io/zh/messages/common.html#MAV_CMD_DO_CHANGE_SPEED
- 这通常使用
MISSION_ITEM_INT(73)
包装并传输
该命令用于在特定的位置修改速度和/或调整油门。该值将持续存在,直到它被重写或模式发生改变。
参数 (标签) | 说明 | 取值 | 单位 |
---|---|---|---|
1 (Speed Type: 速度类型) |
设置参数2的速度类型(例如:空速、对地速度等等) | SPEED_TYPE |
|
2 (Speed: 速度) |
速度值(-1 表示不修改,-2 表示回到飞行器默认速度) |
最小: -2 |
m/s |
3 (油门) |
油门值(-1 表示不修改,-2 表示回到飞行器默认油门) |
最小: -2 |
% |
4 |
|||
5 |
|||
6 |
|||
7 |
2.3. MAV_CMD_NAV_TAKEOFF
- Type: Command
- CommandID: 22
- SeeAlso: https://mavlink.io/zh/messages/common.html#MAV_CMD_NAV_TAKEOFF
这通常使用MISSION_ITEM_INT(73)
包装并传输
从地面或手上进行起飞。支持多种起飞模式的飞机(如:VTOL垂起飞行器)应使用当前配置的模式起飞。
参数 (标签) | 说明 | 取值 | 单位 |
---|---|---|---|
1 (Pitch: 俯仰) |
如果有空速传感器,则表示最小俯仰角,如果没有传感器,则为期望俯仰角 | deg | |
2 |
|||
3 |
|||
4 (Yaw: 偏航) |
偏航角(如果有磁力计),如果没有磁力计则会忽略。 NaN 表示使用当前的系统偏航模式(如:偏航到下一个航路点或偏航回家等等) | deg | |
5 (Latitude: 纬度) |
纬度 | ||
6 (Longitude: 经度) |
经度 | ||
7 (Altitude: 高度) |
高度 | m |
2.4. MAV_CMD_NAV_WAYPOINT
- Type: Command
- CommandID: 16
- SeeAlso: https://mavlink.io/zh/messages/common.html#MAV_CMD_NAV_WAYPOINT
这通常使用MISSION_ITEM_INT(73)
包装并传输
导航到航路点。该命令应当用于任务中(任务外的制导命令请使用 MAV_CMD_DO_REPOSITION
)
参数 (标签) | 说明 | 取值 | 单位 |
---|---|---|---|
1 (Hold: 驻留) |
驻留时间(固定翼飞行器将忽略该值的设定,对于旋翼飞行器而言,这将设定飞行器在航路点的驻留时间) | 最小:0 |
s |
2 (Accept Radius: 接受半径) |
接受半径(当飞行器飞抵以航路点为中心,该值为半径的球体时,将视为已到达该航路点) | 最小:0 |
m |
3 (Pass Radius: 通过半径) |
0 表示通过航路点;大于0则表示允许半径通过航路点。正值表示顺时针,负值表示逆时针。允许控制轨迹 | m |
|
4 (Yaw: 偏航) |
期望的偏航角(旋翼飞行器)。 NaN 表示使用当前的系统偏航模式(如:偏航到下一个航路点或偏航回家等等) | deg | |
5 (Latitude: 纬度) |
纬度 | ||
6 (Longitude: 经度) |
经度 | ||
7 (Altitude: 高度) |
高度 | m |
2.5. MISSION_ITEM_INT
- Type: Message
- MessageID: 73
- SeeAlso: https://mavlink.io/zh/messages/common.html#MISSION_ITEM_INT
该消息是用于编码任务项目。发送该消息用于通知在指定设备上设置该任务项目。任务项目可以是局部定位模式的x, y, z (单位: m
) 或者是全球定位模式的x: 纬度, z: 经度, y: 高度。局部坐标系是:Z下右手模式(NED1),全球定位模式是:Z上右手模式(ENU2)。float/integer参数的NaN值和INT32_MAX值将代表可选或默认的值(如:使用组件当前的纬度,偏航角而不是为其指定一个值)。参阅:https://mavlink.io/en/services/mission.html
字段名称 | 类型 | 取值 | 说明 |
---|---|---|---|
target_system |
uint8_t |
目标系统 ID | |
target_component |
uint8_t |
目标组件 ID | |
seq |
uint16_t |
航路点ID(序列数值)。从0开始。每个航路点单调递增。序列之间没有空位(0, 1, 2, 3, 4) | |
frame |
uint8_t |
MAV_FRAME |
航路点的坐标系 |
command |
uint16_t |
MAV_CMD |
航路点的计划操作 |
current |
uint8_t |
false: 0, true: 1 | |
autocontinue |
uint8_t |
自动继续到下一个航路点。0: false, 1: true。将该值设置为 false 表示在该项目完成后将暂停任务 | |
param1 |
float |
参数#1。参阅 MAV_CMD |
|
param2 |
float |
参数#2。参阅 MAV_CMD |
|
param3 |
float |
参数#3。参阅 MAV_CMD |
|
param4 |
float |
参数#4。参阅 MAV_CMD |
|
x |
int32_t |
参数#5,或者:x位置/纬度。本地坐标系:x 位置单位为m 1e4;全球坐标系:纬度,单位为deg 1e7 | |
y |
int32_t |
参数#6,或者:y位置/经度。本地坐标系:y 位置单位为m 1e4;全球坐标系:经度,单位为deg 1e7 | |
z |
float |
参数#7,或者:z位置/高度。本地坐标系:y 位置;全球坐标系:高度,单位为m (相对高度或绝对高度取决于坐标系) | |
mission_type MAVLink2扩展消息 |
uint8_t |
MAV_MISSION_TYPE |
任务类型 |
2.6. MAV_MISSION_TYPE
- Type: Enum
- SeeAlso: https://mavlink.io/en/messages/common.html#MAV_MISSION_TYPE
该任务协议中请求/发送的任务项目类型。
值 | 名称 | 说明 |
---|---|---|
0 |
MAV_MISSION_TYPE_MISSION |
表示任务项目是主要任务的命令(飞行任务) |
1 |
MAV_MISSION_TYPE_FENCE |
指定地理围栏区域。表示任务项目是 MAV_CMD_NAV_FENCE 地理围栏项目 |
2 |
MAV_MISSION_TYPE_RALLY |
指定飞行器的集结点。集结点是替代 RTL(Return to launch: 返回启动) 点。表示任务项目是 [MAV_CMD_NAV_RALLY_POINT ] |
255 |
MAV_MISSION_TYPE_ALL |
仅用在MISSION_CLEAR_ALL 中,用于清除所有任务类型 |
2.7. MISSION_ACK
- Type: Message
- MessageID: 47
- SeeAlso: https://mavlink.io/en/messages/common.html#MISSION_ACK
航路点处理期间的确认消息。type
字段声明了是否处理成功的状态。如果type
= 0 则表明处理成功,非0的值表示发生错误。
字段名称 | 类型 | 取值 | 说明 |
---|---|---|---|
target_system |
uint8_t |
目标系统编号 | |
target_component |
uint8_t |
目标组件编号 | |
type |
uint8_t |
MAV_MISSION_RESULT |
任务结果 |
mission_type MAVLink2扩展消息 |
uint8_t |
MAV_MISSION_TYPE |
任务类型 |
opaque_id MAVLink2扩展消息 |
uint32_t |
无效: 0 | 新的飞行器中的任务,地理围栏或者集结点计划的ID(当上传任务到飞行器时)。当有新任务从 GCS 上传到飞行器中时,飞行器将会计算并返回该ID。对此ID的唯一的要求是:当飞行器的任务计划类型发生任何改变时,它必须发生更改。(不要求它全局唯一)。当从飞行器下载任务时为0(下载时,请在MISSION_COUNT 设置ID)。如果计划编号不受支持则为0。飞行器中当前的飞行任务编号将在MISSION_CURRENT 中流式传输,这允许GCS判断任务是否发生任何项目的更改,以决定是否需要重新上传任务。 |
2.8. SPEED_TYPE
- Type: Enum
- SeeAlso: https://mavlink.io/en/messages/common.html#SPEED_TYPE
MAV_CMD_DO_CHANGE_SPEED
命令中使用的速度设置点类型。
值 | 名称 | 说明 |
---|---|---|
0 |
SPEED_TYPE_AIRSPEED |
空速 |
1 |
SPEED_TYPE_GROUNDSPEED |
对地速度 |
2 |
SPEED_TYPE_CLIMB_SPEED |
爬升速度 |
3 |
SPEED_TYPE_DESCENT_SPEED |
下降速度 |
2.9. MAV_FRAME
- Type: Enum
- SeeAlso: https://mavlink.io/en/messages/common.html#MAV_FRAME
MAVLink 使用的坐标系。并非所有的命令,消息和飞行器都支持所有的坐标系。
全局坐标系使用如下的命名约定:
GLOBAL
: 默认情况下,全局坐标系为WGS 84
经纬度,高度为平均海平面(MeanSeaLevel: MSL)上方的高度(海拔)。 后续的修饰可以与GLOBAL
一起使用:RELATIVE_ALT
: 高度设定为相对于 Home 点的高度,而不是 MSL。TERRAIN_ALT
: 高度设定为相对于地面的高度,而不是 MSL 。INT
:纬度/经度(单位:度)通过乘以1e7
进行缩放。
局部坐标系采用如下的命名约定:
LOCAL
: 局部坐标系的原点相对于地球是固定的。除非另有说明,否则该原点应当是飞行器位置估计器(EKG)的原点。BODY
: 局部坐标系的原点跟随飞行器。注意:BODY
并不意味着机架轴线与飞行器姿态对其。OFFSET
: 过时的BODY
的同义词(局部坐标系原点跟随飞行器)。请勿使用该命名。
一些已经过时的坐标系命名并不遵循该命名规范。(如:MAV_FRAME_BODY_NED
或 MAV_FRAME_BODY_OFFSET_NED
)
值 | 名称 | 说明 |
---|---|---|
0 |
MAV_FRAME_GLOBAL |
全球(WGS 84 )坐标系,高度相对于平均海平面(MSL) |
1 |
MAV_FRAME_LOCAL_NED |
NED 局部切线坐标系(x: 北, y: 东,z: 下),原点相对于地球固定。 |
2 |
MAV_FRAME_MISSION |
这不是一个坐标系,它用于表示任务命令。 |
3 |
MAV_FRAME_GLOBAL_RELATIVE_ALT |
全球坐标系(WGS 84 ),高度相对于 Home 点 |
4 |
MAV_FRAME_LOCAL_ENU |
ENU 局部切线坐标系(x: 东, y: 北, z:上),原点相对于地球固定。 |
5 |
MAV_FRAME_GLOBAL_INT |
过时的 缩放过的全球坐标系(WGS 84),高度相对于平均海平面(MSL)。过时的: 被MAV_FRAME_GLOBAL 替代(2024-03)。在 COMMAND_INT (以及其他地方)使用 MAAV_FRAME_GLOBAL 做同义替换。 |
6 |
MAV_FRAME_GLOBAL_RELATIVE_ALT_INT |
过时的 缩放过的全球坐标系(WGS 84),高度相对于 Home 点。过时的: 被MAV_FRAME_GLOBAL_RELATIVE_ALT 替代(2024-03)。在 COMMAND_INT (以及其他地方)使用MAV_FRAME_GLOBAL_RELATIVE_ALT 同义替代。 |
7 |
MAV_FRAME_LOCAL_OFFSET_NED |
NED 局部切线坐标系(x: 北, y: 东, z: 下),原点跟随飞行器。 |
8 |
MAV_FRAME_BODY_NED |
过时的 当用来表示位置的时候,与MAV_FRAME_LOCAL_NED 一致;当用来表示速度与加速度的时候,与MAV_FRAME_GLOBAL_RELATIVE_ALT 一致。过时的: 被MAV_FRAME_BODY_FRD 替代(2019-08) |
9 |
MAV_FRAME_BODY_OFFSET_NED |
过时的 这与 MAV_FRAME_BODY_FRD 一致。过时的: 被 MAV_FRAME_BODY_FRD 替代(2019-08) |
10 |
MAV_FRAME_GLOBAL_TERRAIN_ALT |
全球坐标系(WGS 84),使用 AGL 高度(AGL: altitude at ground level,高度相对于地面) |
11 |
MAV_FRAME_GLOBAL_TERRAIN_ALT_INT |
过时的 全球坐标系(WGS 84),使用 AGL 高度(AGL: altitude at ground level,高度相对于地面)。过时的: 被 MAV_FRAME_GLOBAL_TERRAIN_ALT 替代(2024-03)。在 COMMAND_INT (和其他地方)中使用 MAV_FRAME_GLOBAL_TERRAIN_ALT 做同义替代。 |
12 |
MAV_FRAME_BODY_FRD |
FRD 局部坐标系,高度与飞行器姿态对齐(x: 前, y: 右, z: 下),原点跟随飞行器 |
13 |
MAV_FRAME_RESERVED_13 |
MAV_FRAME_BODY_FLU - 过时的 机架固定参考坐标系,Z上(x: 前, y: 左, z:上) 过时的: (2019-04) |
14 |
MAV_FRAME_RESERVED_14 |
MAV_FRAME_MOCAP_NED - 过时的 由运动捕获系统给定的里程数据决定的局部坐标系,Z下(x: 被, y: 东, z:下) 过时的: 被MAV_FRAME_LOCAL_FRD 代替(2019-04) |
15 |
MAV_FRAME_RESERVED_15 |
MAV_FRAME_MOCAP_ENU - 过时的 由运动捕获系统给定的里程数据决定的局部坐标系,Z上(x: 东, y: 北, z:上) 过时的: 被MAV_FRAME_LOCAL_FLU 代替(2019-04) |
16 |
MAV_FRAME_RESERVED_16 |
MAV_FRAME_VISION_NED - 过时的 由视觉系统给定的里程数据决定的局部坐标系,Z下(x: 北, y: 东, z:下) 过时的: 被MAV_FRAME_LOCAL_FRD 代替(2019-04) |
17 |
MAV_FRAME_RESERVED_17 |
MAV_FRAME_VISION_ENU - 过时的 由视觉系统给定的里程数据决定的局部坐标系,Z上(x: 东, y: 北, z:上) 过时的: 被MAV_FRAME_LOCAL_FLU 代替(2019-04) |
18 |
MAV_FRAME_RESERVED_18 |
MAV_FRAME_ESTIM_NED - 过时的 由在飞行器上运行的估计器提供的里程数据决定的局部坐标系,Z下(x: 北, y: 东, z:下) 过时的: 被MAV_FRAME_LOCAL_FRD 代替(2019-04) |
19 |
MAV_FRAME_RESERVED_19 |
MAV_FRAME_ESTIM_ENU - 过时的 由在飞行器上运行的估计器提供的里程数据决定的局部坐标系,Z上(x: 东, y: 北, z:上) 过时的: 被MAV_FRAME_LOCAL_FLU 代替(2019-04) |
20 |
MAV_FRAME_LOCAL_FRD |
FRD 局部切线坐标系(x: 前, y: 右, z: 下),原点相对于地球固定。前向轴线在水平面中与飞行器前部对齐 |
21 |
MAV_FRAME_LOCAL_FLU |
FLU 局部切线坐标系(x: 前, y: 左, z: 上),原点相对于地球固定。前向轴线在水平面中与飞行器前部对齐 |