控制云台/相机支架

本页介绍如何使用 MAVLink 控制云台(又称相机支架)。本页特别介绍了如何

  • 使用 MAV_CMD_DO_MOUNT_CONTROL 设置云台模式(又称安装模式)

  • 使用 MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW 移动到所需角度或以所需速度移动

  • 使用 MAV_CMD_DO_SET_ROI_LOCATION 指向一个位置

  • 使用 MAV_CMD_DO_SET_ROI_NONE 将点停在位置或载具上

  • 使用 MAV_CMD_DO_SET_ROI_SYSID 指向另一辆车

  • 使用 MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE 控制万向节(可选)。

万向节的姿态(以体帧四元数形式表示)可通过解码 云台设备姿态状态 留言

备注

ArduPilot 用于控制万向节的 MAVLink 界面在 4.3 中与早期版本相比进行了大幅升级。本页主要讨论 4.3(及更高版本)的接口,旨在符合 MAVLink Gimbalv2 协议

使用 MAV_CMD_DO_MOUNT_CONTROL 设置模式

云台/支架的模式可通过发送一个 命令长 命令和参数 7 字段的设置与为 mav_cmd_doo_mount_control 命令。支持的模式有

  1. 缩回:万向节将移动到缩回位置(见 MNT1_RETRACT_X、Y、Z)或放松

  2. 中立:万向节将移动到中立位置(参见 MNT1_NEUTRAL_X、Y、Z)。

  3. MAVLink Targeting:万向节的角度或速率目标通过 mavlink 信息控制(请参阅 MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW)。无需特别切换至此模式,只要发送 MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW,就会自动切换至此模式。

  4. 遥控瞄准:飞行员使用遥控输入控制云台角度或速率(见 MNT_RC_IN_PAN/ROLL/TILT 和 MNT_RC_RATE 参数)。

  5. GPS 点:云台指向一个位置(纬度、经度、高度)(请参阅 MAV_CMD_DO_SET_ROI)。无需特别切换到该模式,只要发送 MAV_CMD_DO_SET_ROI,就会自动切换到该模式。

  6. SysId 目标:云台指向另一辆飞行器(请参阅 MAV_CMD_DO_SET_ROI_SYSID)。无需特别切换到该模式,只要发送 MAV_CMD_DO_SET_ROI_SYSID 即可自动切换。

  7. 原点位置:万向节指向原点

指令字段 类型 说明
目标系统 uint8_t 飞行控制器的系统 ID 或仅为 0
目标组件 uint8_t 飞行控制器的组件 ID 或仅为 0
指挥部 uint16_t mav_cmd_doo_mount_control=205
证实 uint8_t 0
参数1 浮动 螺距,单位为度(或零)
参数2 浮动 以度(或零)为单位滚动
参数3 浮动 偏航/航向,单位为度(或零)
参数4 浮动 海拔高度,单位米(或零)
参数5 浮动 经度(度)*1E7(或零
参数6 浮动 纬度(度)* 1E7(或零
参数7 浮动 模式(0=收回,1=中立,2=Mavlink 目标定位,3=RC 目标定位,4=GPS 点,5=SysId 目标定位,6=原点位置)

示例

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

  • 模块加载消息

MAVProxy/SITL 命令示例

说明

信息 命令长 0 0 205 0 0 0 0 0 0 0 0

缩回云台

信息 命令长 0 0 205 0 0 0 0 0 0 0 2

切换到 MAVLink 目标定位(MAVLink 信息控制云台)

信息 命令长 0 0 205 0 0 0 0 0 0 0 3

切换到遥控瞄准(飞行员通过遥控器控制云台)

信息 命令长 0 0 205 0 0 0 0 0 0 0 5

将万向节指向另一辆车 参见 MAV_CMD_DO_SET_ROI_SYSID

信息 命令长 0 0 205 0 0 0 0 0 0 0 6

将万向节置于家中

MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW 移动到所需角度或以所需速度移动

万向节的姿态可以改变为所需的俯仰角和偏航角,或通过发送一个 命令长 命令和参数 1 至参数 7 字段的设置与为 mav_cmd_doo_gimbal_manager_pitchyaw 指挥。

还可以控制万向节在载具旋转时的偏航行为。这两种行为是

  • 车身框架/跟随意味着万向节的偏航将随载具旋转

  • 大地框架/锁定意味着万向节的偏航将保持固定,不会随载具旋转

指令字段 类型 说明
目标系统 uint8_t 飞行控制器的系统 ID 或仅为 0
目标组件 uint8_t 飞行控制器的组件 ID 或仅为 0
指挥部 uint16_t mav_cmd_doo_gimbal_manager_pitchyaw=1000
证实 uint8_t 0
参数1 浮动 俯仰角,单位为度(正值表示向上),未使用时为 NaN
参数2 浮动 偏航角度,单位为度(正值表示顺时针方向),未使用时则为 NaN
参数3 浮动 螺距速率,单位为度/秒(正值表示上升),如果未使用,则为 NaN
参数4 浮动 偏航率,单位为度/秒(正值表示顺时针方向),未使用时为 NaN
参数5 浮动 标志(0=偏航为车身框架/跟随,16=偏航为地面框架/锁定)
参数6 浮动 未使用
参数7 浮动 万向节设备 ID(0 代表主万向节,1 代表第一万向节,2 代表第二万向节)

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

  • 模块加载消息

MAVProxy/SITL 命令示例

说明

信息 命令长 0 0 1000 0 -20 90 float("NaN") float("NaN") 0 0 0

前平移/俯仰 20 度,向右偏航 90 度,车身框架/跟踪

信息 命令长 0 0 1000 0 -20 90 float("NaN") float("NaN") 16 0 0

俯仰角向下 20 度,偏航向东,地球框架/锁定

信息 命令长 0 0 1000 0 float("NaN") float("NaN") 5 0 0 0 0

俯仰角下降 5 度/秒,偏航保持,车身定格/跟踪

信息 命令长 0 0 1000 0 float("NaN") float("NaN") 0 5 0 0 0

俯仰保持,以 5deg/sec 的速度顺时针偏航,在机身框架内运行

信息 命令长 0 0 1000 0 float("NaN") float("NaN") 0 5 16 0 0

俯仰保持,以 5deg/sec 的速度顺时针偏航,以耳机帧为单位

MAV_CMD_DO_SET_ROI_LOCATION 以指向一个位置

云台可通过发送 COMMAND_INT 命令和参数 1 至参数 6 字段的设置与为 mav_cmd_doo_set_roi_location 指挥。

指令字段 类型 说明
目标系统 uint8_t 飞行控制器的系统 ID 或仅为 0
目标组件 uint8_t 飞行控制器的组件 ID 或仅为 0
画框 uint8_t

有效选项包括

  • 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):高度为距离地形的米数。

指挥部 uint16_t MAV_CMD_DO_SET_ROI_LOCATION=195
当前 uint8_t 0(未使用)
自动继续 uint8_t 0(未使用)
参数1 浮动 云台设备 ID(未使用)
参数2 浮动 未使用
参数3 浮动 未使用
参数4 浮动 未使用
参数5 int32_t 纬度(度)* 10^7
参数6 int32_t 经度(度)* 10^7
参数7 浮动 海拔高度(米

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

  • 模块加载消息

MAVProxy/SITL 命令示例

说明

信息 COMMAND_INT 0 0 6 195 0 0 0 0 0 0 -353632632 1491663846 10

点,纬度:-35.3632632,纬度:149.1663846,高度:家庭上方 10 米

信息 COMMAND_INT 0 0 0 195 0 0 0 0 0 0 -353632632 1491663846 10

点,纬度:-35.3632632,纬度:149.1663846 高度:海拔 10 米

信息 COMMAND_INT 0 0 11 195 0 0 0 0 0 0 -353632632 1491663846 10

该点位于纬度:-35.3632632 里昂:149.1663846 高度:距地形 10 米处

MAV_CMD_DO_SET_ROI_NONE 停止指向某个位置

可以通过发出 COMMAND_INT 指定的命令和参数 1 mav_cmd_doo_set_roi_none 指挥。

指令字段 类型 说明
目标系统 uint8_t 飞行控制器的系统 ID 或仅为 0
目标组件 uint8_t 飞行控制器的组件 ID 或仅为 0
画框 uint8_t 0(未使用)
指挥部 uint16_t MAV_CMD_DO_SET_ROI_NONE=197
当前 uint8_t 0(未使用)
自动继续 uint8_t 0(未使用)
参数1 浮动 云台设备 ID(未使用)
参数2 浮动 未使用
参数3 浮动 未使用
参数4 浮动 未使用
参数5 int32_t 未使用
参数6 int32_t 未使用
参数7 浮动 未使用

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

  • 模块加载消息

MAVProxy/SITL 命令示例

说明

信息 COMMAND_INT 0 0 0 197 0 0 0 0 0 0 0 0 0

停止指向某个位置或另一辆车(云台将返回默认模式)

MAV_CMD_DO_SET_ROI_SYSID 指向另一辆车

云台可通过发送 命令长 命令和 param1 字段的设置与为 mav_cmd_doo_set_roi_sysid 指挥。

这一功能依赖于主载具通过 global_position_int 留言

指令字段 类型 说明
目标系统 uint8_t 飞行控制器的系统 ID 或仅为 0
目标组件 uint8_t 飞行控制器的组件 ID 或仅为 0
指挥部 uint16_t MAV_CMD_DO_SET_ROI_SYSID=198
证实 uint8_t 0
参数1 浮动 其他载具的系统 ID
参数2 浮动 云台设备 ID(未使用)
参数3 浮动 闲置
参数4 浮动 闲置
参数5 浮动 闲置
参数6 浮动 闲置
参数7 浮动 闲置

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

  • 模块加载消息

MAVProxy/SITL 命令示例

说明

信息 命令长 0 0 198 0 2 0 0 0 0 0 0

指向 SysId=2 的载具

MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE 用于控制万向节(可选)。

"这款" MAVLink Gimbalv2 协议 包括支持使用 DO_GIMBAL_MANAGER_CONFIGURE 命令对从多个启用 MAVLink 的地面站同时接收到的命令进行解耦。ArduPilot 会使用这些命令,并通过 GIMBAL_MANAGER_STATUS 消息报告谁在控制,但由于考虑到向后兼容性和由此产生的支持呼叫数量,ArduPilot 实际上并不强制使用这些命令。

地面站(或其他支持 MAVLink 的设备)可通过发送一个 命令长 命令和 param1 字段的设置与为 mav_cmd_doo_gimbal_manager_configure 指挥。

指令字段 类型 说明
目标系统 uint8_t 飞行控制器的系统 ID 或仅为 0
目标组件 uint8_t 飞行控制器的组件 ID 或仅为 0
指挥部 uint16_t mav_cmd_doo_gimbal_manager_configure=1001
证实 uint8_t 0
参数1 浮动 主控制的系统 ID(0:无人控制,-1:保持不变,-2:自我控制,-3:解除控制)
参数2 浮动 主控制组件 ID
参数3 浮动 用于二级控制的系统 ID(未使用)
参数4 浮动 用于二级控制的组件 ID(未使用)
参数5 浮动 闲置
参数6 浮动 闲置
参数7 浮动 万向节设备 ID(0 代表主万向节,1 代表第一万向节,2 代表第二万向节)

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

  • 模块加载消息

MAVProxy/SITL 命令示例

说明

信息 命令长 0 0 511 0 281 1000000 0 0 0 0 0

请求 GIMBAL_MANAGER_STATUS,频率为 1 赫兹

信息 命令长 0 0 1001 0 -2 0 0 0 0 0 0

自我控制

信息 命令长 0 0 1001 0 -3 0 0 0 0 0 0

释放控制

信息 命令长 0 0 1001 0 123 1 0 0 0 0 0

设置 sysid:123 / compid:1 in control

您可以通过监控 GIMBAL_MANAGER_STATUS 消息查看结果

  • status GIMBAL_MANAGER_STATUS