引导模式下的UGV无人车指令

本页介绍地面站或配套计算机如何使用 MAVLink 控制漫游车或艇在以下情况下的运动 引导模式.

移动指令

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

移动指令详情

本节详细介绍了 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

提供位置或速度时,必须同时提供 X 轴和 Y 轴。必须提供位置、速度、偏航或偏航率中的至少一项。如果提供位置,则忽略速度、偏航和偏航率。不支持加速度。

  • 使用位置:0b110111111100 / 0x0DFC / 3580(十进制)

  • 使用速度:0b110111100111 / 0x0DE7 / 3559(十进制)

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

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

  • 使用 Vel+Yaw : 0b100111100111 / 0x09E7 / 2535(十进制)

  • 使用 Vel+Yaw 速率:0b010111100111 / 0x05E7 / 1511(十进制)

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)中的示例命令,用于测试该命令。在运行这些命令之前,请输入

  • 模块加载消息

  • 指导

  • 臂式节流阀

MAVProxy/SITL 命令示例

说明

信息 设置目标位置 0 0 0 1 3580 100 0 0 0 0 0 0 0 0 0 0

移至 EKF 原点以北 100 米处

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

从当前位置向北移动 10 米

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

从当前位置向前移动 10 米

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

以 1 米/秒的速度向北移动

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

以 1 米/秒的速度前进

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

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

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

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

信息 设置目标位置 0 0 0 1 1511 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

提供位置或速度时,必须同时提供 X 轴和 Y 轴。必须提供位置、速度、偏航或偏航率中的至少一项。如果提供位置,则忽略速度、偏航和偏航率。不支持加速度。

  • 使用位置:0b110111111100 / 0x0DFC / 3580(十进制)

  • 使用速度:0b110111100111 / 0x0DE7 / 3559(十进制)

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

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

  • 使用 Vel+Yaw : 0b100111100111 / 0x09E7 / 2535(十进制)

  • 使用 Vel+Yaw 速率:0b010111100111 / 0x05E7 / 1511(十进制)

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)中的示例命令,用于测试该命令。在运行这些命令之前,请输入

  • 模块加载消息

  • 指导

  • 臂式节流阀

MAVProxy/SITL 命令示例

说明

信息 set_position_target_global_int 0 0 0 3 3580 -353621474 1491651746 0 0 0 0 0 0 0 0 0

移至 -35.36,149.16 的纬度和经度

信息 set_position_target_global_int 0 0 0 3 3559 0 0 0 1 0 0 0 0 0 0 0

以 1 米/秒的速度向北移动

信息 set_position_target_global_int 0 0 0 3 2535 0 0 0 0 0 0 0 0 0 0.7854 0

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

信息 set_position_target_global_int 0 0 0 3 1511 0 0 0 0 0 0 0 0 0 0 0.174

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

设置目标姿态

设置载具的目标航向和速度。信息定义如下 这里

命令参数

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

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

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

  • 使用偏航率 + 节流器:0b10100011 / 0xA3 / 163(十进制)

  • 使用姿态 + 节流器:0b00100111 / 0x27 / 39(十进制)

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

0=节流 0%,+1=以 WP_SPEED 前进,-1=以 WP_SPEED 后退

实例

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

  • 指导

  • 臂式节流阀

MAVProxy/SITL 命令示例

说明

态度 1 0 0 0 1

面向北方,在 WP_SPEED 上前进

态度 1 0 0 0 -1

面向北,以 WP_SPEED 速度反向移动

态度 0.9238795 0 0 0.3826834 0.5

面向东北方向,以 1/2 WP_SPEED 的速度前进