对接说明
1. 获取定位服务
1.1 服务初始化配置
void LocationManager_init(const SPosWorkPath & path,
const SLocModeType & locModeType);
定位服务只有在LocationManager_init方法成功调用后才能正常使用,初始化时需要设置几个参数:
- SPosWorkPath path(定位工作目录)
- 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:内容
网友评论