制导模式下的旋翼飞行器指令

本文列出了影响飞行器移动的 MAVLink 命令。这些命令通常由地面站或 配套计算机 频跑 无人机套件.

备注

可以找到处理这些命令的 Copter 代码 在 GCS_Mavlink.cpp 中的此处

移动指令

这些指令可用于控制飞行器的位置、速度或姿态,同时在 引导模式

MAV_CMDs

如果将这些 MAV_CMD 打包到一个 命令长 留言

如果将这些 MAV_CMD 打包到一个 COMMAND_INT 信息

移动指令详情

本节详细介绍了 MAVLink 移动飞行器的命令

设置目标位置

设置载具的目标位置(与 EKF 原点的 NED 偏移量)、速度、加速度、航向或转弯率。信息定义如下 这里

指令字段 说明
启动时间 发件人的系统时间(以毫秒为单位,从启动开始计时
目标系统 载具的系统 ID
目标组件 飞行控制器的组件 ID 或仅为 0
坐标框架 有效选项如下
类型掩码

位掩码,用于指示哪些字段应 被忽视 (请参阅 POSITION_TARGET_TYPEMASK 枚举)。

bit1:PosX, bit2:PosY, bit3:PosZ, bit4:VelX, bit5:VelY, bit6:VelZ, bit7:AccX, bit8:AccY, bit9:AccZ, bit11:yaw, bit12:yaw rate

提供位置、速度和/或加速度时,必须提供所有 3 个轴。必须提供 Pos、Vel 和 Accel 中的至少一个(例如,不支持仅提供 Yaw 或 YawRate)。

  • 使用位置:0b110111111000 / 0x0DF8 / 3576(十进制)

  • 使用速度:0b110111000111 / 0x0DC7 / 3527(十进制)

  • 使用加速度:0b110000111111 / 0x0C3F / 3135(十进制)

  • 使用 Pos+Vel : 0b110111000000 / 0x0DC0 / 3520(十进制)

  • 使用 Pos+Vel+Accel : 0b110000000000 / 0x0C00 / 3072(十进制)

  • 使用偏航:0b100111111111 / 0x09FF / 2559(十进制)

  • 使用偏航率:0b010111111111 / 0x05FF / 1535(十进制)

x 以米为单位的 X 位置(正向表示正前方或正北方)
y 以米为单位的 Y 位置(正数表示右侧或东侧)
z 以米为单位的 Z 位置(正值表示向下)
vx X 速度,单位 m/s(正值表示向前或向北)
vy Y 向速度,单位 m/s(正值表示向右或向东)
vz Z 速度(米/秒)(正值表示向下
afx X 加速度,单位 m/s/s(正值表示向前或向北)
安提 Y 加速度,单位 m/s/s(正值表示右侧或东侧)
afz Z 加速度,单位 m/s/s(正值表示向下)
打呵欠 偏航或航向,单位为弧度(0 表示向前或向北)。
偏航率 偏航率(单位:拉德/秒

"这款" 坐标框架 字段的值如下

框架

说明

mav_frame_local_ned (1)

位置相对于 NED 框架中载具的 EKF 原点

即 x=1,y=2,z=3 分别是原点向北 1 米、向东 2 米和向下 3 米的位置

"这款" EKF 起源 是载具首次获得良好位置估计值时的位置

速度和加速度采用 NED 框架

mav_frame_local_offset_ned (7)

位置是相对于载具当前位置而言的

例如,x=1,y=2,z=3 表示当前位置向北 1 米、向东 2 米、向下 3 米。

速度和加速度采用 NED 框架

mav_frame_body_ned (8)

位置相对于 NED 框架中的 EKF 原点

即 x=1,y=2,z=3 分别是原点向北 1 米、向东 2 米和向下 3 米的位置

速度和加速度是相对于当前载具航向而言的。使用该值可指定前进、向右和向下的速度(如果使用负值,则相反)。

mav_frame_body_offset_ned (9)

位置是相对于载具当前位置和航向而言的

例如,x=1,y=2,z=3 表示从当前位置向前移动 1 米,向右移动 2 米,向下移动 3 米。

速度和加速度是相对于当前载具航向而言的。使用该值可指定前进、向右和向下的速度(如果使用负值,则相反)。

指定偏航率为零,以阻止载具偏航发生变化

提示

在镜框中、 _OFFSET_ 是指 "相对于载具位置",而 本地 是 "相对于原点位置"(这些对 速度 方向)。 _BODY_ 意味着速度分量是相对于飞行器的航向而不是 NED 框架的。

备注

如果发送速度或加速度命令,应每秒重新发送一次(如果没有收到命令,载具将在 3 秒后停止)。

实例

下面是一些可以复制粘贴到 MAVProxy(又名 SITL)中的示例命令,用于测试该命令。在运行这些命令之前,请输入

  • 模块加载消息

  • 指导

  • 臂式节流阀

  • 起飞10

MAVProxy/SITL 命令示例

说明

信息 设置目标位置 0 0 0 1 3576 100 0 -10 0 0 0 0 0 0 0 0

飞往北纬100米和10米 以上 的原点

信息 设置目标位置 0 0 0 7 3576 10 0 0 0 0 0 0 0 0 0 0

从当前位置向北飞 10 米

信息 设置目标位置 0 0 0 9 3576 10 0 0 0 0 0 0 0 0 0 0

从当前位置向前飞行 10 米

信息 设置目标位置 0 0 0 1 3527 0 0 0 1 0 0 0 0 0 0 0

以 1 米/秒的速度向北飞

信息 设置目标位置 0 0 0 9 3527 0 0 0 1 0 0 0 0 0 0 0

以 1 米/秒的速度向前飞行

信息 设置目标位置 0 0 0 9 1479 0 0 0 0 1 0 0 0 0 0 0

以 1 米/秒的速度右飞,偏航率为零

信息 设置目标位置 0 0 0 1 3135 0 0 0 0 0 0 1 0 0 0 0

以 1 米/秒的速度向北加速

信息 设置目标位置 0 0 0 9 3135 0 0 0 0 0 0 1 0 0 0 0

以 1 米/秒的速度向前加速

信息 设置目标位置 0 0 0 9 1087 0 0 0 0 0 0 0 1 0 0 0

以 1 米/秒的速度向右加速,偏航率为零

信息 设置目标位置 0 0 0 1 2503 0 0 0 0 0 0 0 0 0 0.7854 0

转向东北(偏航目标 + 速度为零)。

信息 设置目标位置 0 0 0 9 2503 0 0 0 0 0 0 0 0 0 0.7854 0

向右转 45 度(偏航目标 + 速度为零)。

信息 设置目标位置 0 0 0 1 1479 0 0 0 0 0 0 0 0 0 0 0.174

以 10deg/sec 的速度顺时针旋转(速度为零)。

set_position_target_global_int

设置飞行器的目标位置(WGS84 坐标)、速度、航向或转弯率。这与 SET_POSITION_TARGET_LOCAL_NED 报文(见上文)类似,只是位置以经纬度值提供,高度可以是海平面以上、相对于原点或相对于地形。

信息定义如下 这里

命令参数

指令字段 说明
启动时间 发件人的系统时间(以毫秒为单位,从启动开始计时
目标系统 载具的系统 ID
目标组件 飞行控制器的组件 ID 或仅为 0
坐标框架

有效选项包括

  • MAV_FRAME_GLOBAL (0):海拔高度,单位为米

  • MAV_FRAME_GLOBAL_INT (5):海拔高度,单位为米

  • MAV_FRAME_GLOBAL_RELATIVE_ALT (3):高度单位为距离原点的高度。

  • MAV_FRAME_GLOBAL_RELATIVE_ALT_INT (6):高度单位为距离原点的高度。

  • MAV_FRAME_GLOBAL_TERRAIN_ALT (10):高度,单位为高出地形的米数。

  • MAV_FRAME_GLOBAL_TERRAIN_ALT_INT (11):地形高度,单位为米

类型掩码

位掩码,用于指示哪些字段应 被忽视 (请参阅 POSITION_TARGET_TYPEMASK 枚举)。

bit1:PosX, bit2:PosY, bit3:PosZ, bit4:VelX, bit5:VelY, bit6:VelZ, bit7:AccX, bit8:AccY, bit9:AccZ, bit11:yaw, bit12:yaw rate

提供位置、速度和/或加速度时,必须提供所有 3 个轴。必须提供 Pos、Vel 和 Accel 中的至少一个(例如,不支持仅提供 Yaw 或 YawRate)。

  • 使用位置:0b110111111000 / 0x0DF8 / 3576(十进制)

  • 使用速度:0b110111000111 / 0x0DC7 / 3527(十进制)

  • 使用加速度:0b110000111000 / 0x0C38 / 3128(十进制)

  • 使用 Pos+Vel : 0b110111000000 / 0x0DC0 / 3520(十进制)

  • 使用 Pos+Vel+Accel : 0b110000000000 / 0x0C00 / 3072(十进制)

  • 使用偏航:0b100111111111 / 0x09FF / 2559(十进制)

  • 使用偏航率:0b010111111111 / 0x05FF / 1535(十进制)

lat_int 纬度 * 1e7
lon_int 经度 * 1e7
选一 海拔高度,单位为米、原点或地形(见坐标框字段)
vx X 速度,单位 m/s(正值为北)
vy Y 向速度,单位 m/s(正值代表东方)
vz Z 速度(米/秒)(正值表示向下
afx X 加速度,单位 m/s/s(正向为北)
安提 Y 加速度,单位 m/s/s(正值为东)
afz Z 加速度,单位 m/s/s(正值表示向下)
打呵欠 偏航或航向,单位为弧度(0 表示向前)
偏航率 偏航率(单位:拉德/秒

备注

如果发送速度或加速度命令,应每秒重新发送一次(如果没有收到命令,载具将在 3 秒后停止)。

实例

下面是一些可以复制粘贴到 MAVProxy(又名 SITL)中的示例命令,用于测试该命令。在运行这些命令之前,请输入

  • 模块加载消息

  • 指导

  • 臂式节流阀

  • 起飞10

MAVProxy/SITL 命令示例

说明

信息 set_position_target_global_int 0 0 0 6 3576 -353621474 1491651746 10 0 0 0 0 0 0 0 0

飞至 -35.36,149.16 的纬度和离地面 10 米的高度

信息 set_position_target_global_int 0 0 0 5 3576 -353621474 1491651746 600 0 0 0 0 0 0 0 0

飞往 -35.36,149.16 的纬度和海拔 600 米处

信息 set_position_target_global_int 0 0 0 11 3576 -353621474 1491651746 10 0 0 0 0 0 0 0 0

飞至 -35.36,149.16 的纬度和离地 10 米的高度

信息 set_position_target_global_int 0 0 0 6 3527 0 0 0 1 0 0 0 0 0 0 0

以 1 米/秒的速度向北飞

信息 set_position_target_global_int 0 0 0 6 3135 0 0 0 0 0 0 1 0 0 0 0

以 1 米/秒的速度向北加速

信息 set_position_target_global_int 0 0 0 6 2503 0 0 0 0 0 0 0 0 0 0.7854 0

转向东北(偏航目标 + 速度为零)。

信息 set_position_target_global_int 0 0 0 6 1479 0 0 0 0 0 0 0 0 0 0 0.174

以 10deg/sec 的速度顺时针旋转(速度为零)。

设置目标姿态

设置飞行器的目标姿态和爬升率或推力。在以下情况下接受此信息 指导 或 Guided_NoGPS(这是 Guided_NoGPS 唯一接受的报文)。信息定义如下 这里

命令参数

指令字段 类型 说明
启动时间 uint32_t 发件人的系统时间(以毫秒为单位,从启动开始计时
目标系统 uint8_t 载具的系统 ID
目标组件 int8_t 飞行控制器的组件 ID 或仅为 0
类型掩码 int8_t

位掩码,用于指示哪些字段应 被忽视 由载具

bit1:车身滚动率,bit2:车身俯仰率,bit3:车身偏航率,bit7:节流阀/电门,bit8:姿态

应始终为 0b00000111 / 0x07 / 7(十进制)

q 浮点[4] 姿态四元数(w、x、y、z 次序,零旋转为 {1, 0, 0, 0})
注意,零旋转会导致载具向北旋转。
身体滚动速度 浮动 不支持车身滚动率
身高 浮动 不支持车身俯仰率
偏航率 浮动 不支持机身偏航率
主要内容 浮动

如果 GUID_OPTIONS = 0:爬升率,其中 0.5=不爬升,0=以 WPNAV_SPEED_DN 的速度下降,1=以 WPNAV_SPEED_UP 的速度爬升 如果 GUID_OPTIONS = 8:推力从 0 到 1

实例

下面是一些可以复制粘贴到 MAVProxy(又名 SITL)中的示例命令,用于测试该命令。在运行这些命令之前,请输入

  • 指导

  • 臂式节流阀

  • 起飞10

MAVProxy/SITL 命令示例

说明

态度 1 0 0 0 0.5

保持水平姿态,爬升率为零(如果 GUID_OPTIONS=0)或保持水平姿态和 50%节流阀/电门(如果 GUID_OPTIONS=8)。

态度 1 0 0 0 1.0

以 WPNAV_SPEED_UP 爬升(如果 GUID_OPTIONS=0)或以 100% 油门爬升(如果 GUID_OPTIONS=8)。

态度 1 0 0 0 0.0

以 WPNAV_SPEED_DN 的速度下降(如果 GUID_OPTIONS=0)或以 0% 的油门下降(如果 GUID_OPTIONS=8)。

态度 0.9961947 0.0871557 0 0 0.5

以 10 度和零爬升率翻滚(如果 GUID_OPTIONS=0)或以 10 度和 50% 油门翻滚(如果 GUID_OPTIONS=8)。