4.8.1 概念及术语
地图匹配
导航(路线匹配)
导航是指规划出一条路径,开始引导后的一种有目标地点的路径匹配模式。导航的数据输入是一条有起始点的非闭环路线。
偏航是指实车驶离当前规划路径的一种行为,对定位来说是信号逐渐远离当前路径,并达到一定的预设条件(防止信号漂移导致的误偏航)才确认是偏航。
重算是指一般偏航条件达到后定位会通知引导(或TBT)模块进行重新规划路线,起点是实车的最新位置,以满足用户的实际定位需求。
巡航(路线匹配)
巡航是主图界面下的一种无目标性的路网匹配模式。巡航的数据输入是路网,也就是数据中的所有道路对于巡航来说都是可见的。
定位模式
GNSS
纯GNSS模式
只有GPS或其他卫星定位信号下的地图匹配模式。
GNSS+脉冲车速模式
相对于纯GNSS模式增加了单独的车速脉冲信息输入,目前定位引擎对于车速脉冲的使用仅限于隧道推算场景。这种模式可以优化纯GNSS模式中隧道推算不准确的问题。
DR
DR是dead reckoning的缩写,意为航位推算。在车载导航中,航位推算是使用先前确定的位置,通过测量移动的距离和方位,计算出经过的时间后的位置。
航位推算受误差累积影响,即随着时间的推移,推算出的位置误差会越来越大,需要使用GNSS位置修正。
地图匹配反馈
地图匹配反馈(Map-Matching Feedback)是指将地图匹配的结果通知给 DR 模块。
影响地图匹配精度的因素
- 路况复杂 真实的道路情况是复杂多变的,要保证车辆在各种复杂路况上都能够实现正确定位是比较困难的。下面是地图中经常出现的路口:
(1)普通路:普通就是没有特殊形状的道路,可为高速路,也可为一般路。此时,选择正确道路较容易实现,但也有错误匹配、超前滞后等现象发生。
(2)平行路:所谓平行路,就是两条或两条以上形状相似、距离相近的道路。
(3)微小角分岔路
(4)密集道路
(5)停车场
(6)高架桥
(7)立交桥
(8)隧道
(9)高架下、高楼附近
(10)小区道路
(11)盘山路
-
底层数据存在误差 进行地图匹配需要利用传感器的测量信息(如GPS、DRS)和地图数据,这些数据都可能存在误差。
(1)地图数据误差 尽管一般认为地图数据的精度较高,但是在作图中仍可能存在较大的误差。地图误差主要有两种:几何误差和拓扑误差。几何误差是指地图数据与实际道路的位置、形状不相符。地图数据中记录的是道路的中心线,但在实际情况中,道路是有宽度的,道路越宽,车辆行驶的轨迹与道路形状可能就越不一致。另外,地图数据是二维平面的,没有高度信息,与实际情况存在一定的偏差,这种情况常见于立交桥、高架桥、盘山路等。除此之外,地图数据库中的道路和实际情况可能不一致(如新修的道路、现实世界中实际存在,但在地图中没有相应的数据)或连接关系与实际情况不相符。这种误差属于拓扑误差。
(2)传感器误差
就车辆定位导航系统比较常用的传感器GPS和DRS来讲,GPS信号在有电磁干扰、都市内有高大建筑物、车速慢(小于30km/h时误差较大)、GPS接收机性能不好等情况下定位精度很差。即使是在GPS状态较好时(DOP值较小、车速较快)也可能会有较大误差甚至出现突跳。GPS状态不好(DOP值较大、车速慢)的情况又往往出现在复杂路况,这时候即使是较小的误差(30m以内)也会造成错误匹配。航迹推算系统会随着时间推移产生积累误差,如果长时间不进行修正,其测量数据将不可用。 -
算法引入误差
(1)错误匹配引入的误差 在地图匹配过程中不可避免的会发生错误匹配,发生错误匹配必然会对以后的地图匹配产生恶劣的影响。
(2)匹配修正引入的误差 可以利用匹配结果(匹配位置、道路方向)修正传感器误差。但是即使在正确选择道路(匹配的道路是车辆真实所在的道路)情况下也会引入误差,尤其在发生超前滞后或地图数据本身存在误差时。 -
车辆行驶中存在特殊情况 地图匹配的基本前提假设是“车辆行驶在道路上”,但实际情况中车辆有时会离开,如路边停车场、加油站等;在车辆行驶过程中,由于超车、变换车道等原因出现S行走现象;司机在驾驶过程中可能会出现违反交通规则的情况,例如在道路中间直接掉头行驶、单行线逆行等,都会影响选择的正确性并引起误差。
定位坐标系
WGS84
World Geodetic System 1984,一种国际上采用的地心坐标系,坐标原点为地球质心。GPS芯片或者北斗芯片获取的经纬度一般为WGS84坐标系。
GCJ02
GCJ02是由中国国家测绘局(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)制订的地理信息系统的坐标系统。它是一种对经纬度数据的加密算法,即加入随机的偏差。国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。 可以将GCJ02理解成是由WGS84坐标系经某些规则加密后的坐标系。
4.8.2 传感器基础知识
导航坐标系
导航坐标系.png定位引擎后端融合使用的坐标系为右前上-XYZ坐标系,如上图所示。
X轴正方向指向车辆右侧,因为绕着X轴转动时车辆是在做俯仰的动作,所以也称为俯仰轴-Pitch。
Y轴正方向指向车辆前方,因为绕着Y轴转动时车辆是在做滚转的动作,所以也称为滚转轴-Roll。
Z轴正方形指向车顶上方,因为绕着Z轴滚转时车辆是在做偏航的动作,所以也称为偏航轴-Yaw。
明确了轴正向方向后就可以确认正负值定义。对陀螺仪来说,需借助右手法则,拇指朝向轴正向,屈指方向为输出正值的方向;对加速度计来说,轴正向的加速度为正值。
陀螺仪
定义
陀螺仪,这边指的是三轴陀螺仪,是用于获取车辆三个轴向的角速度值的器件,如果是单轴陀螺仪的话一般就是只有Z轴,用来测量车辆的左右转向角度值。
数据结构
struct SLocGyro
{
ELocDataType dataType; // 本结构体所表示的数据类型,赋值:LocDataGyro
ELocThreeAxis axis; // 有效数据轴
float valueZ; // 上,单位:度/秒
float valueX; // 右,单位:度/秒
float valueY; // 前,单位:度/秒
float temperature; // 温度。单位:摄氏度。陀螺仪芯片上的温度传感器的读值
int interval; // 前后两个信号的间隔时间,单位:毫秒
unsigned long long tickTime; // 时间戳,推荐输入系统滴答数,某些系统取不到系统滴答数时取1970年01月01日00时00分00秒以来的时间戳。单位:毫秒
};
相关知识
-
陀螺仪零偏
指陀螺仪在无外部输入(车辆静止或匀速直线行驶)状态下,所输出的值不等于0的状态,零偏亦指这种状态下输出的误差值。 -
陀螺仪温漂
指陀螺仪零偏随着传感器本身温度不同而变化的特性。
3.陀螺仪轴向验证
3D加速度计
定义
加速度计,用于获取车辆三个轴向的加速度值。
//TODO:图标
g为重力加速度,也就是9.8m/s2。如果系统方提供的加速度计信号单位是m/s2,那就需要上层先转换为单位g再传给定位引擎(除以9.8)。
加速度计数据结构
struct SLocGyro
struct SLocAcce3d
{
ELocDataType dataType; // 本结构体所表示的数据类型,赋值:LocDataAcce3D
ELocThreeAxis axis; // 有效数据轴
float acceZ; // 上,单位:g(9.8米/秒^2)
float acceX; // 右,单位:g(9.8米/秒^2)
float acceY; // 前,单位:g(9.8米/秒^2)
int interval; // 前后两个信号的间隔时间,单位:毫秒
unsigned long long tickTime; // 时间戳,推荐输入系统滴答数,某些系统取不到系统滴答数时取1970年01月01日00时00分00秒以来的时间戳。单位:毫秒
};
设备安装角
什么是安装角?
- 传感器芯片在车辆上安装后(芯片安装在主板,主板安装在设备,设备安装在车辆上)的坐标系定义,一般跟定位引擎本身的基本车辆坐标系定义是存在角度差,并且三个轴向都有可能有角度差,这些角度差就叫做安装角。
- 安装角会导致传感器输出值计算过程中的误差。
- 传感器芯片按照安装角信息,依次绕三个轴向转动一定角度,形成新的坐标系就是定位引擎定义的右前上-XYZ坐标系。(上图是只考虑两个轴向的安装角示意图)
安装角如何获取?
- 为了消除或减小这个误差的影响,传感器芯片在目标车辆上安装后会形成一个坐标系,集成商、设备商或车厂根据传感器坐标系与定位引擎定义的车辆坐标系(右前上-XYZ坐标系,需要将这个定义提供给外部)的差异,就可以得到从传感器坐标系旋转到车辆坐标系的安装角。安装角的正负值也遵循右手法则。
- 关于安装角的顺序,从传感器坐标系转换到定位引擎所定义的右前上坐标系轴向顺序是:Z轴(Yaw偏航轴)-->X轴(Pitch俯仰轴)-->Y轴(Roll翻滚轴),系统方需要按照该转换顺序提供安装角的欧拉角定义,然后上层通过setMountAngle接口将具体角度数值和信息设置给引擎。
- 而欧拉角,是指用三个旋转角度 ψ,θ,φ 来标示旋转姿态的。如图,图中红色坐标系是起始坐标系,蓝色的坐标系是最后旋转完成的坐标系。
设备安装角数据结构
typedef struct LocInstalledDegree
{
bool isValid;
double roll; // 单位:度 陀螺仪或者ACC 翻滚角 敏感轴y轴的安装角度,绕X轴旋转的角度
double pitch; // 单位:度 陀螺仪或者ACC 俯仰角 敏感轴Z轴的安装角度, 绕Y轴旋转的角度
double yaw; // 单位:度 陀螺仪或者ACC 偏航角 敏感轴x轴的安装角度,绕Z轴旋转的角度
} SLocInstalledDegree;
对接陀螺和加速度
陀螺仪和加速度计的对接需要额外注意。对接之前需要先确认已了解如下信息
- 芯片坐标系
- 导航坐标系,即SDK定义的车身坐标系
- 芯片相对于设备的位置及姿态
- 设备相对于车辆的位置及姿态
- 安装角
- 系统侧输出的值如何与芯片坐标系对应上
4.8.3 参数持久化
存储的信息
当车辆停止时会保存当前车辆最后的位置、航向、传感器标定等信息
存储位置
//TODO:保存文件格式、目录修改
保存在 model.bin 文件
4.8.4 位置回调说明
开始条件
GNSS 模式下,收到GNSS (包括网络定位)信号时,启动位置回调定时器,触发位置回调接口。
回调频率
- 位置回调定时器时间间隔设定为 100ms,即理论上(排除系统、导航应用卡顿等原因)定位引擎一秒钟会回调 10 次。
- 在位置信息未发生变化的情况下,不会重复回调,会改为间隔一分钟回调一次。
首次坐标
-
GNSS 模式下,定位首次回调的位置会在收到的第一个 GNSS (包括网络定位)信号的坐标附近(一般而言,就是信号坐标)。
-
融合模式下,定位首次回调的位置会在收到的第一个前端融合信号的坐标附近(一般而言,就是信号坐标)。
注:客户端对接saveLocStorage()
用以保存定位上下文信息。
车标纠正
- GNSS 或者融合模式下,实际上不使用最后保存的位置。只要收到的 GNSS 或者前端融合信号坐标位置是正确的,车标就会纠正回正确位置。
由于台测时,一般是没有接入车速信号,会导致车标无法纠正回实际位置。
网友评论