Code Pseudorange Measurement
c
o
d
e
p
s
e
u
d
o
r
a
n
g
e
m
e
a
s
u
r
e
m
e
n
t
=
c
×
t
code pseudorange measurement = c \times t
codepseudorangemeasurement=c×t
c
o
d
e
p
s
e
r
d
o
r
a
n
g
e
m
e
a
s
u
r
e
m
e
n
t
=
d
i
s
t
s
a
t
e
l
i
t
e
r
e
c
e
i
v
e
r
+
e
r
r
o
r
s
i
g
n
a
l
g
e
n
e
r
a
t
i
o
n
+
e
r
r
o
r
p
r
o
p
a
g
a
t
i
o
n
+
e
r
r
o
r
p
r
o
c
e
s
s
i
n
g
code pserdorange measurement = dist_{satelite}^{receiver} + error_{signalgeneration} + error_{propagation} + error_{processing}
codepserdorangemeasurement=distsatelitereceiver+errorsignalgeneration+errorpropagation+errorprocessing
卫星误差源:卫星轨道和时钟误差。
卫星轨道误差–不精确的星历;
时钟误差–卫星上的原子钟和标准时间的误差;
信号传输误差:电离层和大气层影响速度,低仰角卫星会存在多路径影响。
接受机时钟不精确;
Doppler Measurement
接收机-卫星沿着传播路径的相对运动
SPP algorithm
Single Point Positioning algorithm
不同的卫星系统使用不同的时间参考,所以不同的卫星系统存在时钟偏差。为了消除内在的系统时钟偏差额外的观测是必需的。所以最少需要(N+3)颗卫星。
T
r
s
T_r^s
Trs使用Sastamoinen model模型计算;
I
r
s
I_r^s
Irs使用Klobuchar 模型和星历参数计算;
通过不利用低仰角的卫星可以忽略多路径噪声
M
r
s
M_r^s
Mrs影响;
SPP算法精度受卫星分布影响,均匀分布的卫星解算精度更高。
系统综述
gnss 数据处理逻辑:
- 过滤掉低仰角和很有可能带有错误的卫星。为了过滤掉不稳定的卫星信号,只有那些被锁定的并且有回响的卫星才会被加入到系统中。
- 系统需要先进行初始化。
初始化处理逻辑:
- 基于视觉信息的sfm。
- 使用imu轨迹与sfm结果对齐,用以恢复尺度,速度,重力和imu bias。
- coarse-2-fine GNSS initialization.
首先,不精确的锚点定位通过SPP算法得到;然后,局部和全局坐标系通过VI初始化的速度和GNSS Doppler测量进行yaw角对齐;最后,通过精确的局部路径和加入的时钟约束来优化锚点的全局位姿完成初始化。
GNSS 退化处理
所有观测量综合在一起使用滑动窗口进行非线性优化。如果GNSS数据不可靠,无法完成初始化对齐,那么系统将会退化为VIO。为了保证算法的实时性和解决VI退化运动,使用了两阶段的边缘化策略,会移除不满足视差条件的数据帧,优化完成也会进行边缘化操作。
概率方程
基于概率框架构进行状态估计。整个问题被构造成一个因子图,约束整个系统状态。VI因子在vins_mono论文中有详细讲述。
MAP Estimation(最大后验估计)
假设条件:所有的观测都是相互独立的;每个观测的噪声都是0均值高斯噪声。