對接說明
1. 獲取定位服務(wù)
1.1 服務(wù)初始化配置
void LocationManager_init(const SPosWorkPath & path,
const SLocModeType & locModeType);
定位服務(wù)只有在LocationManager_init方法成功調(diào)用后才能正常使用,初始化時需要設(shè)置幾個參數(shù):
- SPosWorkPath path(定位工作目錄)
- SLocModeType locModeType(定位工作模式配置)
如下是SLocModeType 的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)的正確配置與否,是適配成功的很大關(guān)鍵所在
struct SLocModeType // 定位工作模式結(jié)構(gòu)體
{
ELocType locType; // 定位模式
SLocInstalledDegree gyro; //陀螺儀安裝角
SLocInstalledDegree accel; //加速度計安裝角
SLocSensorOption sensorOption; //傳感器選項(xiàng)
unsigned long long sysInitTime; //引擎啟動時間(僅在回放模式下使用)
...
};
以下展開各字段的配置詳細(xì)說明
1.1 配置定位模式
SLocModeType.locType 定位模式類型,目前包含二種模式,項(xiàng)目根據(jù)情況賦值
enum ELocType
{
ELocTypeUnknown = -1, //未知
ELocTypeGNSS = 0, //GPS定位模式
ELocTypeDr = 1, //DR模式
};
1.2 配置安裝角
LocInstalledDegree SLocModeType::gyro 陀螺儀安裝角,可選,設(shè)置后端融合模式下設(shè)備安裝角信息。(當(dāng)ELocType == ELocTypeDr時為必傳參數(shù),否則默認(rèn)不傳)
LocInstalledDegree SLocModeType::accel 加速度計安裝角,可選,設(shè)置后端融合模式下設(shè)備安裝角信息。(當(dāng)ELocType == ELocTypeDr時為必傳參數(shù),否則默認(rèn)不傳)
typedef struct LocInstalledDegree
{
bool isValid;
double roll; // 單位:度 陀螺儀或者ACC 翻滾角 敏感軸y軸的安裝角度,繞X軸旋轉(zhuǎn)的角度
double pitch; // 單位:度 陀螺儀或者ACC 俯仰角 敏感軸Z軸的安裝角度, 繞Y軸旋轉(zhuǎn)的角度
double yaw; // 單位:度 陀螺儀或者ACC 偏航角 敏感軸x軸的安裝角度,繞Z軸旋轉(zhuǎn)的角度
} SLocInstalledDegree;
1.3 配置傳感器選項(xiàng)
SLocSensorOption LocModeType::sensorOption 傳感器參選項(xiàng),可選,設(shè)置后端融合模式下傳感器相關(guān)參數(shù)(當(dāng)ELocType == ELocTypeDr時為必傳參數(shù),否則默認(rèn)不傳)。
struct SLocSensorOption
{
int hasAcc; // 加速度計軸數(shù) {0|1|3}, 0 表示沒有
int hasGyro; // 陀螺儀軸數(shù) {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. 定位日志開啟
調(diào)用:LocationManager_signalRecordSwitch開啟定位日志
日志開啟接口:
void LocationManager_signalRecordSwitch(bool open, const SLocLogConf& conf);
日志配置參數(shù):
struct SLocLogConf
{
ELocLogLevel logLevel; //日志等級
ELocLogType logType; //日志類型
};
3. 添加觀察者
使用者根據(jù)業(yè)務(wù)需要注冊觀察者,之后可以通過觀察者獲取相應(yīng)的信息。
源始信號觀察者
void LocationManager_addSignInfoObserver(const PosSignInfoObserverBase* pObserver);//添加
void LocationManager_removeSignInfoObserver(const PosSignInfoObserverBase* pObserver);//移除
地圖匹配反饋信息觀察者
void LocationManager_addMapMatchFeedbackObserver(const PosMapMatchFeedbackObserverBase* pObserver);//添加
void LocationManager_removeMapMatchFeedbackObserver(const PosMapMatchFeedbackObserverBase* pObserver);//移除
定位'傳感器標(biāo)定信息回傳'觀察者
void LocationManager_addSensorParaObserver(const PosSensorParaObserverBase* pObserver);//添加
void LocationManager_removeSensorParaObserver(const PosSensorParaObserverBase* pObserver);//移除
DR相關(guān)信息觀察者
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);//移除
軌跡本地匹配抓路結(jié)果觀察者
void LocationManager_addGraspRoadResultObserver(const PosGraspRoadResultObserverBase *observer);//添加
void LocationManager_removeGraspRoadResultObserver(const PosGraspRoadResultObserverBase *observer);//移除
4. 設(shè)置信號
定位引擎所有信號通過vvoid LocationManager_setSignInfo(const SLocSignData* pSLocSignData);接口設(shè)置。不同的工作模式所需的信號也不同
4.2.1 定位實(shí)時車速
場景圖

時序圖
//TODO:時序圖
關(guān)鍵參數(shù)
返回數(shù)據(jù)結(jié)構(gòu)體:
float speed//速度,單位:公里/小時
核心接口
定位觀察者回調(diào):
onLocInfoUpdate(LocInfo pstLocInfo);
調(diào)用示例
public void onLocInfoUpdate(LocInfo locInfo) {
if (locInfo != null ){
float speed = locInfo.speed;// 獲取車速 km/h
}
}
4.2.2 切換平行路
場景圖

時序圖
//TODO:時序圖
關(guān)鍵參數(shù)
//TODO:內(nèi)容
核心接口
定位觀察者回調(diào):
//TODO:內(nèi)容
調(diào)用示例
//TODO:內(nèi)容