云台管理
概述
PSDK 的云台管理功能支持同时管理挂载在无人机上不同位置的云台负载设备,其中包括设置云台模式、云台回中和控制云台旋转等。开发者可基于云台管理的接口,设计控制逻辑,从而实现在无人机飞行的过程中控制指定的云台旋转对应角度的功能。
基础概念
云台关节与云台关节角
云台的关节如下图所示,云台关节是云台上带动负载设备转动的结构件:云台电机,云台关节角即云台电机转动的角度。本教程使用机体坐标系描述云台的关节角。
云台姿态与云台姿态角
云台的姿态如下图所示,根据用户的控制指令,云台能够调整姿态;云台姿态角即使用大地坐标系(NED,北东地坐标系)描述云台上负载设备的角度,该角度也称为欧拉角。
云台限位角
注意:
- 当 PSDK 以绝对角度(设置的角度基于大地坐标系,0 度为正北方向)控制云台的 Yaw 轴转动 n 度时,如果 n > 0,云台将转动到正北方向顺时针 n 度的位置,如果 n < 0,云台将转动到正北方向逆时针 n 度的位置。
- 当 PSDK 以相对角度(设置的角度基于当前角度)控制云台的 Yaw 轴转动 n 度时,如果 n > 0,云台将转动到当前角度顺时针 n 度的位置,如果 n < 0,云台将转动到当前角度逆时针 n 度的位置。
机型 | 云台挂载类型 | Pitch | Yaw | Roll |
---|---|---|---|---|
EVO Max 4T | Fusion 4T | -90°~30° | - | - |
EVO Max 4T XE | Fusion 4T XE | -90°~30° | - | - |
EVO Max 4N | Fusion 4N | -90°~30° | - | - |
EVO Max 4NZ V2 | Fusion 4NZ | -90°~30° | - | - |
云台控制
- 控制方式
- 绝对角度控制:使用 PSDK 开发的云台根据用户的指令,在规定的时间内,从当前的位置转动到指定的位置。
- 速度控制:用户可控制使用 PSDK 开发的云台的转动速度。
说明:
- 在角度控制模式下,云台转动的时间受云台最大旋转速度和最大加速度限制,实际的转动角度受云台限位角度的限制。
- 在速度控制模式下,云台根据用户指定的速度转动 0.5s,当云台转动到限位角时,将会停止转动。
- 云台模式:目前 PSDK 的云台控制功能仅支持自由模式,在该模式下,当无人机的姿态改变时,云台将不会转动。
云台状态信息
使用 PSDK 开发的应用程序能够获取指定云台当前的信息。
使用云台管理功能
- 云台管理模块初始化 使用 PSDK 开发的负载设备如需控制云台,需要先调用接口初始化云台管理模块。
if(UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS != UAV_GimbalManager_Init()) {
LOG_ERROR("UAV_GimbalManager_Init failed");
return;
}
- 设置云台模式
在控制云台之前,需要调用
UAV_GimbalManager_SetModeEx()
接口设置指定云台的工作模式。
if(UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS != UAV_GimbalManager_SetModeEx(mountPosition, gimbalMode)) {
LOG_ERROR("UAV_GimbalManager_SetModeEx failed");
return;
}
- 控制云台旋转
通过调用
UAV_GimbalManager_Rotate()
接口来控制云台按照预期的角度和速度进行旋转。
T_UAVGimbalManagerRotation rotation = {UAV_GIMBAL_ROTATION_MODE_RELATIVE_ANGLE, 20, 0, 0, 0.5};
if(UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS != UAV_GimbalManager_Rotate(rotation)) {
LOG_ERROR("UAV_GimbalManager_Rotate failed");
return;
}
- 控制云台回中
使用 PSDK 开发的应用程序支持通过调用
UAV_GimbalManager_ResetEx()
接口将云台的俯仰轴和偏航轴转动至中位。
if(UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS != UAV_GimbalManager_ResetEx(mountPosition,resetMode)) {
LOG_ERROR("UAV_GimbalManager_ResetEx failed");
return;
}
- 获取云台状态
开发者可使用订阅数据项
UAV_SUBSCRIPTION_TOPIC_GIMBAL_ANGLE
和UAV_SUBSCRIPTION_TOPIC_GIMBAL_STATUS
获取到不同位置云台的姿态角和状态。