精准定位
精准定位相关功能的头文件为dji_positioning.h
,本文档描述了dji_positioning.h
文件中结构体和函数原型的关键信息和使用方法。
目录
结构体
T_DjiPositioningEventInfo
T_DjiPositioningPosition
T_DjiPositioningPositionStandardDeviation
T_DjiPositioningPositionInfo函数原型
DjiPositioning_Init
DjiPositioning_SetTaskIndex
DjiPositioning_GetPositionInformationSync
结构体
typedef struct T_DjiPositioningEventInfo
描述一个定位事件
typedef struct {
uint16_t eventSetIndex; 负载设备触发定位事件的索引,该索将被写入.mark 文件,
若无需为定位事件设置索引,可填入0
uint8_t targetPointIndex; 负载设备获取定位点的索引,该索将被写入.mark 文件,若
无需为定位事件设置索引,可填入0
T_DjiTimeSyncAircraftTime eventTime; 定位事件发生时的时间戳,用户需要通过时间同步
模块中的PsdkTimeSync_TransferToAircraftTime()接口,该接口将该时间(负载设备上的本地时间)转换为无人机上的时间
} T_DjiPositioningEventInfo;
typedef struct T_DjiPositioningPosition
用于描述一个定位点的结构体
typedef struct {
dji_f64_t longitude; 定位点的经度,单位:度
dji_f64_t latitude; 定位点的维度,单位:度
dji_f64_t height; 定位点海平面以上的高度,单位:米
} T_DjiPositioningPosition;
typedef struct T_DjiPositioningPositionStandardDeviation
定位点标准差值
typedef struct {
dji_f32_t longitude; 定位点经度的标准差值,单位:度
dji_f32_t latitude; 定位点纬度的标准差值,单位:度
dji_f32_t height; 定位点海平面以上高度的标准差值,单位:m.
} T_DjiPositioningPositionStandardDeviation;
typedef struct T_DjiPositioningPositionInfo
获取目标点的细节信息
typedef struct {
E_DjiDataSubscriptionPositionSolutionProperty positionSolutionProperty; 位置解属性
T_DjiAttitude3d uavAttitude; 获取目标点时无人机的姿态角,单位:度
T_DjiVector3d offsetBetweenMainAntennaAndTargetPoint; 在NED大地坐标系下,指定无人机主天线到目标点的偏移,单位:mm
T_DjiPositioningPosition targetPointPosition; 目标点在大地坐标系中的位置
T_DjiPositioningPositionStandardDeviation targetPointPositionStandardDeviation; 指定目标点的标准差
} T_DjiPositioningPositionInfo;
函数原型
function DjiPositioning_Init
功能:初始化精准定位模块 | product:all |
在使用精准定位功能前,请在阻塞的模式下调用本接口初始化精准定位模块。
说明
- 该接口初始化的时间可能会超出 500ms;
- 请勿在主函数中调用该接口。
T_DjiReturnCode DjiPositioning_Init(void);
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode
function DjiPositioning_SetTaskIndex
功能:设置任务索引 | product:Matrice 200 RTK V2, Matrice 300 RTK |
一次任务可能包含对一个区域做航测建图,默认任务索引为0。
void DjiPositioning_SetTaskIndex(uint8_t index);
index:任务索引
function DjiPositioning_GetPositionInformationSync
功能:获取精准定位信息 | product:all |
调用该接口获取目标点精准的定位信息以及其他信息,详情请参见:T_DjiPositioningPositionInfo。
说明
- 开发者可同时获取多个定位事件触发的定位信息,如获取无人机上多个相机类负载设备同步变焦时的定位信息;
- 当定位事件发生时候,该接口将以阻塞的模式获取精准的定位信息;
- 在获取精准定位前,开发者必须注册用于获取无人机最新的PPS 时间戳的回调函数,详情请参见:DjiPositioning_RegGetNewestPpsTriggerTimeCallback();
- 在获取精准定位时,精准定位的目标点默认为主云台接口的中心;
- 开发者利用主云台接口的中心、主云台口与RTK 主天线的距离、无人机姿态角度、云台结构等数据计算兴趣点精准的定位信息。
- 该接口执行的时间可能会大于600ms;
- 所有请求的时间戳必须介于比最新同步时间戳早2秒与比最新同步时间戳早1秒的时间点之间。
T_DjiReturnCode DjiPositioning_GetPositionInformationSync(uint8_t eventCount, T_DjiPositioningEventInfo *eventInfo,
T_DjiPositioningPositionInfo *positionInfo);
eventCount:同时获取定位信息的事件数量(<5)
eventInfo:指向定位时间的信息
positionInfo:目标点的定位信息
返回值
根据程序执行的情况输出对应的返回值,详情请参见:DjiErrorCode