精准定位

2022-07-25

PSDK 负载协同相关功能的头文件为psdk_positioning.h,本文档描述了psdk_positioning.h 文件中结构体和函数原型的关键信息和使用方法。

目录

结构体

typedef struct T_PsdkPositioningEventInfo

描述一个定位事件

typedef struct {
uint16_t eventSetIndex; 负载设备触发定位事件的索引,该索将被写入.mark 文件,
若无需为定位事件设置索引,可填入0
uint8_t targetPointIndex; 负载设备获取定位点的索引,该索将被写入.mark 文件,若
无需为定位事件设置索引,可填入0
T_PsdkTimeSyncAircraftTime eventTime; 定位事件发生时的时间戳,用户需要通过时间同步
模块中的PsdkTimeSync_TransferToAircraftTime()接口,该接口将该时间(负载设备上的本地时间)转换为无人机上的时间
} T_PsdkPositioningEventInfo;

typedef struct T_PsdkPositioningPosition

用于描述一个定位点的结构体

typedef struct {
psdk_f64_t longitude; 定位点的经度,单位:度
psdk_f64_t latitude; 定位点的维度,单位:度
psdk_f64_t height; 定位点海平面以上的高度,单位:米
} T_PsdkPositioningPosition;

typedef struct T_PsdkPositioningPositionStandardDeviation

定位点标准差值

typedef struct {
psdk_f32_t longitude; 定位点经度的标准差值,单位:度
psdk_f32_t latitude; 定位点纬度的标准差值,单位:度
psdk_f32_t height; 定位点海平面以上高度的标准差值,单位:m.
} T_PsdkPositioningPositionStandardDeviation;

typedef struct T_PsdkPositioningPositionInfo

获取目标点的细节信息

typedef struct {
E_PsdkDataSubscriptionPositionSolutionProperty positionSolutionProperty; 位置解属性
T_PsdkAttitude3d uavAttitude; 获取目标点时无人机的姿态角,单位:度
T_PsdkVector3d offsetBetweenMainAntennaAndTargetPoint; 在NED大地坐标系下,指定无人机主天线到目标点的偏移,单位:mm
T_PsdkPositioningPosition targetPointPosition; 目标点在大地坐标系中的位置
T_PsdkPositioningPositionStandardDeviation targetPointPositionStandardDeviation; 指定目标点的标准差
} T_PsdkPositioningPositionInfo;

函数原型

function PsdkPositioning_Init

功能:初始化精准定位模块 product:all

在使用精准定位功能前,请在阻塞的模式下调用本接口初始化精准定位模块。

说明

  • 该接口初始化的时间可能会超出 500ms;
  • 请勿在主函数中调用该接口。
T_PsdkReturnCode PsdkPositioning_Init(void);

返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkPositioning_SetTaskIndex

功能:设置任务索引 product:Matrice 200 RTK V2, Matrice 300 RTK

一次任务可能包含对一个区域做航测建图,默认任务索引为0。

void PsdkPositioning_SetTaskIndex(uint8_t index);

参数
index:任务索引

function PsdkPositioning_GetPositionInformationSync

功能:获取精准定位信息 product:all

调用该接口获取目标点精准的定位信息以及其他信息,详情请参见:T_PsdkPositioningPositionInfo。

说明

  • 开发者可同时获取多个定位事件触发的定位信息,如获取无人机上多个相机类负载设备同步变焦时的定位信息;
  • 当定位事件发生时候,该接口将以阻塞的模式获取精准的定位信息;
  • 在获取精准定位前,开发者必须注册用于获取无人机最新的PPS 时间戳的回调函数,详情请参见:PsdkPositioning_RegGetNewestPpsTriggerTimeCallback();
  • 在获取精准定位时,精准定位的目标点默认为主云台接口的中心;
  • 开发者利用主云台接口的中心、主云台口与RTK 主天线的距离、无人机姿态角度、云台结构等数据计算兴趣点精准的定位信息。
  • 该接口执行的时间可能会大于600ms;
  • 所有请求的时间戳必须介于比最新同步时间戳早2秒与比最新同步时间戳早1秒的时间点之间。
T_PsdkReturnCode PsdkPositioning_GetPositionInformationSync(uint8_t eventCount, T_PsdkPositioningEventInfo *eventInfo,
T_PsdkPositioningPositionInfo *positionInfo);

参数
eventCount:同时获取定位信息的事件数量(<5)
eventInfo:指向定位时间的信息
positionInfo:目标点的定位信息
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode