概述
使用OSDK开发的应用程序能够在无人机飞行的过程中,按照指定的逻辑控制云台的角度。
基础概念
云台角度
云台关节与云台关节角
云台的关节如图1.云台关节 所示,云台关节是云台上带动负载设备转动的结构件:云台电机,云台关节角即云台电机转动的角度。本教程使用机体坐标系描述云台的关节角。
图1.云台关节
云台姿态与云台姿态角
云台的姿态如 图2.云台姿态 所示,根据用户的控制指令,云台能够调整姿态;云台姿态角即使用大地坐标系(NED,北东地坐标系)描述云台上负载设备的角度,该角度也称为欧拉角。
图2.云台姿态
云台控制
控制方式
绝对角度控制:使用OSDK 开发的云台根据用户的指令,在规定的时间内,从当前的位置转动到指定的位置。
速度控制:用户可控制使用OSDK 开发的云台的转动速度。
说明
在角度控制模式下,云台转动的时间受云台最大旋转速度和最大加速度限制,实际的转动角度受云台限位角度的限制。
在速度控制模式下,云台根据用户指定的速度转动0.5s,当云台转动到限位角时,将会停止转动。
云台模式:目前OSDK 的云台控制功能仅支持自由模式,在该模式下,当无人机的姿态改变时,云台将不会转动。
云台状态信息
使用OSDK 开发的应用程序能够获取指定云台当前的信息,详细信息请参见OSDK API 文档。
使用云台管理功能
1. 云台控制功能模块初始化
使用“云台控制”功能前,需要调用云台控制功能的类GimbalManagerSyncSample,创建云台控制功能的对象并初始化指定的云台。
GimbalManagerSyncSample *g = new GimbalManagerSyncSample(vehicle);ret = vehicle->gimbalManager->initGimbalModule(PAYLOAD_INDEX_0, "Sample_gimbal_1");if (ret != ErrorCode::SysCommonErr::Success){ DERROR("Init Camera module Sample_gimbal_1 failed."); ErrorCode::printErrorCodeMsg(ret);}ret = vehicle->gimbalManager->initGimbalModule(PAYLOAD_INDEX_1, "Sample_gimbal_2");
2. 获取云台的状态信息
创建云台控制功能的对象并初始化指定的云台后,即可获取用户指定的云台的信息。
DSTATUS("Current gimbal %d angle (p,r,y) = (%0.2f°, %0.2f°, %0.2f°)", PAYLOAD_INDEX_0, g->getGimbalData(PAYLOAD_INDEX_0).pitch, g->getGimbalData(PAYLOAD_INDEX_0).roll, g->getGimbalData(PAYLOAD_INDEX_0).yaw);
3. 控制云台转动
通过GimbalManagerSyncSample中指定的接口控制云台的姿态。
GimbalModule::Rotation rotation; rotation.roll = 0.0f; rotation.pitch = 25.0f; rotation.yaw = 90.0f; rotation.rotationMode = 0; rotation.time = 0.5; g->rotateSyncSample(PAYLOAD_INDEX_0, rotation);
4. 云台回中
使用OSDK 开发的应用程序支持将云台的俯仰轴和偏航轴转动至中位。
g->resetSyncSample(PAYLOAD_INDEX_0);