美文网首页
4.2 定位适配对接指南

4.2 定位适配对接指南

作者: Geniune | 来源:发表于2023-01-05 10:02 被阅读0次

对接说明

1. 获取定位服务

1.1 服务初始化配置
void LocationManager_init(const SPosWorkPath & path, 
                          const SLocModeType & locModeType);

定位服务只有在LocationManager_init方法成功调用后才能正常使用,初始化时需要设置几个参数:

  1. SPosWorkPath path(定位工作目录)
  2. SLocModeType locModeType(定位工作模式配置)

如下是SLocModeType 的数据结构,该数据结构的正确配置与否,是适配成功的很大关键所在

struct SLocModeType  // 定位工作模式结构体 
{
    ELocType locType;              // 定位模式        
    SLocInstalledDegree gyro;      //陀螺仪安装角
    SLocInstalledDegree accel;     //加速度计安装角
    SLocSensorOption sensorOption; //传感器选项
    unsigned long long sysInitTime;     //引擎启动时间(仅在回放模式下使用)   
    ...
};

以下展开各字段的配置详细说明

1.1 配置定位模式

SLocModeType.locType 定位模式类型,目前包含二种模式,项目根据情况赋值

enum ELocType
{
    ELocTypeUnknown = -1, //未知
    ELocTypeGNSS = 0,     //GPS定位模式
    ELocTypeDr = 1,       //DR模式
};
1.2 配置安装角

LocInstalledDegree SLocModeType::gyro 陀螺仪安装角,可选,设置后端融合模式下设备安装角信息。(当ELocType == ELocTypeDr时为必传参数,否则默认不传)
LocInstalledDegree SLocModeType::accel 加速度计安装角,可选,设置后端融合模式下设备安装角信息。(当ELocType == ELocTypeDr时为必传参数,否则默认不传)

typedef struct LocInstalledDegree
{
    bool            isValid;
    double          roll;  // 单位:度 陀螺仪或者ACC 翻滚角 敏感轴y轴的安装角度,绕X轴旋转的角度
    double          pitch; // 单位:度 陀螺仪或者ACC 俯仰角 敏感轴Z轴的安装角度, 绕Y轴旋转的角度
    double          yaw;   // 单位:度 陀螺仪或者ACC 偏航角 敏感轴x轴的安装角度,绕Z轴旋转的角度
} SLocInstalledDegree;
1.3 配置传感器选项

SLocSensorOption LocModeType::sensorOption 传感器参选项,可选,设置后端融合模式下传感器相关参数(当ELocType == ELocTypeDr时为必传参数,否则默认不传)。

struct SLocSensorOption
{
    int hasAcc;   // 加速度计轴数 {0|1|3}, 0 表示没有    
    int hasGyro;   // 陀螺仪轴数 {0|1|3} , 0 表示没有   
    int hasTemp;    // 有无陀螺温度传感器 0无 1有  
    int hasGsv;     // 有无GSV信息(星历信息), 0无 1有  
    int pulseFreq;  // 脉冲信息输入频率,单位 Hz  
    int gyroFreq;    // 陀螺仪信息输入频率,单位 Hz 
    int gpsFreq;     // GNSS信息输入频率,单位 Hz 
    int accFreq;    // 加速度计信息输入频率,单位 Hz  
};

2. 定位日志开启

调用:LocationManager_signalRecordSwitch开启定位日志
日志开启接口:

void LocationManager_signalRecordSwitch(bool open, const SLocLogConf& conf);

日志配置参数:

struct SLocLogConf
{   
    ELocLogLevel logLevel; //日志等级
    ELocLogType logType;   //日志类型
};

3. 添加观察者

使用者根据业务需要注册观察者,之后可以通过观察者获取相应的信息。

源始信号观察者

void LocationManager_addSignInfoObserver(const PosSignInfoObserverBase* pObserver);//添加
void LocationManager_removeSignInfoObserver(const PosSignInfoObserverBase* pObserver);//移除

地图匹配反馈信息观察者

void LocationManager_addMapMatchFeedbackObserver(const PosMapMatchFeedbackObserverBase* pObserver);//添加
void LocationManager_removeMapMatchFeedbackObserver(const PosMapMatchFeedbackObserverBase* pObserver);//移除

定位'传感器标定信息回传'观察者

void LocationManager_addSensorParaObserver(const PosSensorParaObserverBase* pObserver);//添加
void LocationManager_removeSensorParaObserver(const PosSensorParaObserverBase* pObserver);//移除

DR相关信息观察者

void LocationManager_addPosDrInfoObserver(const PosDrInfoObserverBase* pObserver);//添加
void LocationManager_removePosDrInfoObserver(const PosDrInfoObserverBase* pObserver);//移除

AttitudeAngle信息观察者

void LocationManager_addAttitudeAngleObserver(const PosAttitudeAngleObserverBase *pObserver);//添加
void LocationManager_removeAttitudeAngleObserver(const PosAttitudeAngleObserverBase *pObserver);//移除

轨迹本地匹配抓路结果观察者

void LocationManager_addGraspRoadResultObserver(const PosGraspRoadResultObserverBase *observer);//添加
void LocationManager_removeGraspRoadResultObserver(const PosGraspRoadResultObserverBase *observer);//移除

4. 设置信号

定位引擎所有信号通过vvoid LocationManager_setSignInfo(const SLocSignData* pSLocSignData);接口设置。不同的工作模式所需的信号也不同

4.2.1 定位实时车速

场景图

实时车速场景图.png

时序图

//TODO:时序图

关键参数

返回数据结构体:

 float speed//速度,单位:公里/小时

核心接口

定位观察者回调:

onLocInfoUpdate(LocInfo pstLocInfo);

调用示例

public void onLocInfoUpdate(LocInfo locInfo) {
    if (locInfo != null  ){
        float speed = locInfo.speed;// 获取车速 km/h
    }
}

4.2.2 切换平行路

场景图

切换平行路场景图.png

时序图

//TODO:时序图

关键参数

//TODO:内容

核心接口

定位观察者回调:

//TODO:内容

调用示例

//TODO:内容

相关文章

网友评论

      本文标题:4.2 定位适配对接指南

      本文链接:https://www.haomeiwen.com/subject/bixcqdtx.html