5.9.1 基本功能介绍
云台管理在M300上为OSDK端口功能,主要用于机载计算机控制云台转动等控制功能,区别于5.8中PSDK端口gimbal emu(开发集成的第三方云台负载)。云台控制功能相对较简单,在OSDK端口通过API的方式提供了云台转动的接口。
OSDK功能可以控制挂载在M300上的DJI官方相机云台,比如H20/T,也可以控制由PSDK开发集成的第三方负载云台,DJI标准云台X-PORT也可以通过OSDK的gimbal manager控制。主要是控制云台roll,pitch,yaw方向上的旋转,包括回中。
云台的三种模式:
-
自由模式,当无人机的姿态改变时,云台将不会转动。
-
FPV模式,当无人机的姿态发生改变时,云台会转动航向轴与横滚轴,确保负载设备当前的视场角不会发生改变。
-
YAW跟随模式,在该模式下,云台的航向轴会跟随无人机的航向轴转动。
控制模式:
-
相对角模式,基于云台当前角度,旋转指定的角度。
-
绝对角模式,基于NEU坐标系,将云台角度旋转到指定的角度
-
速度模式,基于指定的速度旋转云台0.5s。
5.9.2 主要代码文件
./gimbal_manager/
├── test_gimbal_manager.c
└── test_gimbal_manager.h
PSDK lib头文件
dji_gimbal_manager.h
功能函数入口
DjiTest_GimbalManagerRunSample
初始化
/**
* @brief Initialize the gimbal manager module.
* @note The interface initialization needs to be after DjiCore_Init.
* @return Execution result.
*/
T_DjiReturnCode DjiGimbalManager_Init(void);
API简介:
-
功能模块初始化,使用gimbal manager前必须调用此函数。
设置云台模式
/**
* @brief Set the work mode of the gimbal.
* @param mountPosition: gimbal mount position, input limit see enum E_DjiMountPosition
* @param mode: gimbal work mode, input limit see enum E_DjiGimbalMode
* @return Execution result.
*/
T_DjiReturnCode DjiGimbalManager_SetMode(E_DjiMountPosition mountPosition, E_DjiGimbalMode mode);
API简介
-
设置云台的工作模式
参数说明
-
mountPosition,云台的挂载位置
-
mode,需要设置的模式。FPV,自由,YAW跟随
控制云台旋转
sample中分别按照绝对角、相对角模式下、ROLL、PITCH、YAW分别设置30度旋转。
/**
* @brief Rotate the angle of the gimbal.
* @param mountPosition: gimbal mount position, input limit see enum E_DjiMountPosition
* @param rotation: the rotation parameters to be executed on the target gimbal, including the rotation mode, target
* angle value and executed time, ref to T_DjiGimbalManagerRotation
* @return Execution result.
*/
T_DjiReturnCode DjiGimbalManager_Rotate(E_DjiMountPosition mountPosition, T_DjiGimbalManagerRotation rotation);
API简介
-
控制指定位置的云台,按照指定的旋转参数旋转。
参数说明
-
mountPosition,云台挂载位置
-
rotation,云台控制参数设置
参数定义
typedef enum {
DJI_GIMBAL_ROTATION_MODE_RELATIVE_ANGLE = 0, /*!< Relative angle rotation mode, represents rotating gimbal specified angles based on current angles. */
DJI_GIMBAL_ROTATION_MODE_ABSOLUTE_ANGLE = 1, /*!< Absolute angle rotation mode, represents rotating gimbal to specified angles in the ground coordinate. */
DJI_GIMBAL_ROTATION_MODE_SPEED = 2, /*!< Speed rotation mode, specifies rotation speed of gimbal in the ground coordinate. */
} E_DjiGimbalRotationMode;
/**
* @brief Gimbal manager rotation command property.
*/
typedef struct {
E_DjiGimbalRotationMode rotationMode; /*!< Rotation gimbal mode. */
dji_f32_t pitch; /*!< Pitch angle in degree, unit: deg */
dji_f32_t roll; /*!< Roll angle in degree, unit: deg */
dji_f32_t yaw; /*!< Yaw angle in degree, unit: deg */
dji_f64_t time; /*!< Expect execution time of gimbal rotation, unit: second. */
} T_DjiGimbalManagerRotation;说明:
-
rotationMode,指定是相对角模式还是绝对角模式,相对角设置的角度参数为旋转的角度,绝对角设置的是最终旋转到的位置。
-
pitch,roll,yaw指定旋转的角度,最小可以设置为0.1度,最大不能超过云台限位角。(绝对角和相对角设置的最大值可能存在差异)
-
time,执行旋转动作的时间,时间设置太小,若设置的角度还未完成,云台将无法旋转到指定的位置上。
-
云台复位
/**
* @brief Reset the pitch and yaw of the gimbal.
* @param mountPosition: gimbal mount position, input limit see enum E_DjiMountPosition
* @return Execution result.
*/
T_DjiReturnCode DjiGimbalManager_Reset(E_DjiMountPosition mountPosition);
API简介:
-
将指定位置的云台ROLL,PITCH,YAW角度复位。YAW与机头保持一致,PITCH,ROLL为0。
参数:
-
mountPosition,指定需要复位的云台位置。
5.9.4 开发注意事项
-
M300上gimbal manager是通过USB通信,使用时,需要确保双A USB连接且通信正常。
-
旋转需指定云台挂载位置,云台挂载位置与实际物理挂载位置不匹配将无法控制。
-
评论
0 条评论
请登录写评论。