控制云台/相机支架¶
本页介绍如何使用 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 命令。支持的模式有
缩回:万向节将移动到缩回位置(见 MNT1_RETRACT_X、Y、Z)或放松
中立:万向节将移动到中立位置(参见 MNT1_NEUTRAL_X、Y、Z)。
MAVLink Targeting:万向节的角度或速率目标通过 mavlink 信息控制(请参阅 MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW)。无需特别切换至此模式,只要发送 MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW,就会自动切换至此模式。
遥控瞄准:飞行员使用遥控输入控制云台角度或速率(见 MNT_RC_IN_PAN/ROLL/TILT 和 MNT_RC_RATE 参数)。
GPS 点:云台指向一个位置(纬度、经度、高度)(请参阅 MAV_CMD_DO_SET_ROI)。无需特别切换到该模式,只要发送 MAV_CMD_DO_SET_ROI,就会自动切换到该模式。
SysId 目标:云台指向另一辆飞行器(请参阅 MAV_CMD_DO_SET_ROI_SYSID)。无需特别切换到该模式,只要发送 MAV_CMD_DO_SET_ROI_SYSID 即可自动切换。
原点位置:万向节指向原点
指令字段 | 类型 | 说明 |
---|---|---|
目标系统 | 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 命令示例 |
说明 |
---|---|
|
缩回云台 |
|
切换到 MAVLink 目标定位(MAVLink 信息控制云台) |
|
切换到遥控瞄准(飞行员通过遥控器控制云台) |
|
将万向节指向另一辆车 参见 MAV_CMD_DO_SET_ROI_SYSID |
|
将万向节置于家中 |
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 命令示例 |
说明 |
---|---|
|
前平移/俯仰 20 度,向右偏航 90 度,车身框架/跟踪 |
|
俯仰角向下 20 度,偏航向东,地球框架/锁定 |
|
俯仰角下降 5 度/秒,偏航保持,车身定格/跟踪 |
|
俯仰保持,以 5deg/sec 的速度顺时针偏航,在机身框架内运行 |
|
俯仰保持,以 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 | 有效选项包括
|
指挥部 | 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 命令示例 |
说明 |
---|---|
|
点,纬度:-35.3632632,纬度:149.1663846,高度:家庭上方 10 米 |
|
点,纬度:-35.3632632,纬度:149.1663846 高度:海拔 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 命令示例 |
说明 |
---|---|
|
停止指向某个位置或另一辆车(云台将返回默认模式) |
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 命令示例 |
说明 |
---|---|
|
指向 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 命令示例 |
说明 |
---|---|
|
请求 GIMBAL_MANAGER_STATUS,频率为 1 赫兹 |
|
自我控制 |
|
释放控制 |
|
设置 sysid:123 / compid:1 in control |
您可以通过监控 GIMBAL_MANAGER_STATUS 消息查看结果
status GIMBAL_MANAGER_STATUS