经典文献阅读之--GraphGNSSLib(因子图GNSS优化)
之前我们看了许多VIO或者LIO的工作,而我们也需要关注在整个流程中GNSS的作用,我们知道GNSS自主系统提供全球参考定位的非常流行的手段之一。然而,信号反射与建筑物遮挡导致GNSS定位性能在城市峡谷中受到很大挑战。鉴于GNSS测量高度依赖环境且与时间有关,传统的基于滤波的GNSS定位方法无法同时探索历史测量之间的时间相关性。因此,基于滤波的估计器对突的异常测量值很敏感。本文《》提出了一种基于因
好的,以下是修正后的内容,避免使用非法字符,确保所有符号都用 LaTeX 格式表示:
0. 简介
之前我们看了许多 VIO 或者 LIO 的工作,而我们也需要关注在整个流程中 GNSS 的作用。我们知道 GNSS 自主系统提供全球参考定位的非常流行的手段之一。然而,信号反射与建筑物遮挡导致 GNSS 定位性能在城市峡谷中受到很大挑战。鉴于 GNSS 测量高度依赖环境且与时间有关,传统的基于滤波的 GNSS 定位方法无法同时探索历史测量之间的时间相关性。因此,基于滤波的估计器对突的异常测量值很敏感。本文《Towards Robust GNSS Positioning and Real-time Kinematic Using Factor Graph Optimization》提出了一种基于因子图的 GNSS 定位与实时差分定位(RTK)公式。公式化的因子图框架有效地探索了伪距、载波相位和多普勒测量的时间相关性,并导致 GNSS 接收机的非最小化状态估计。相关代码也在 GitHub 上完成了开源。
1. 文章贡献
EKF 这套方法在空旷场地高效且成熟,因为其估计是依据 GNSS 和 RTK 的主导,但是在高楼林立的城市则效果不好(多路径效应、NLOS 建筑物反射及遮挡)。针对上述问题的前人提出 3D 地图辅助定位、3D 激光雷达辅助定位、视觉辅助定位等解决办法,但这些方法依赖于 3D 地图信息或者需要额外添加传感器。因子图优化方法近年来成了主流,且效果优于 EKF,对于[22]文章提出的 FGO 优化方法,仅考虑了伪距,随着[23-25]优化方法的提出,消除了 NLOS(建筑物反射及遮挡)的影响。
针对上述 EKF 对于高楼林立的城市问题和前人优化方法的研究。对于 GNSS 定位,利用 FGO 将伪距和多普勒测量值进行融合的同时,还利用历史测量值来完成状态更新。对于 GNSS-RTK 定位,DD 伪距因子和 DD 载波相位因子会使用 FGO 进行集成,其中使用多普勒测量估计速度连接状态。本文提出的创新方法:
-
提出了一种基于 FGO 的 GNSS 和 RTK 定位公式。同时,其他传感器测量,如激光雷达里程计,可以很容易地集成到框架中。
-
使用在香港城市峡谷中收集的具有挑战性的数据集评估了该框架的性能。结果表明,基于 FGO 的 GNSS 定位优于基于 EKF 的方法。
-
拟议框架的源代码可在线获得。同时,还给算法开发和评测提供了数据集。这是第一个使用 FGO 的 GNSS 定位和 GNSS-RTK 的开源实现。
2. 文中符号
为了使所提出的代码 pipeline 逻辑清晰,本文的其余部分定义了以下主要符号。需要注意的是,GNSS 接收机的状态和卫星的位置均表示在地球中心,地球固定 (ECEF) 框架内。
a) 从卫星 s s s 在给定纪元 t t t 接收到的伪距测量值表示为 ρ r , t s \rho_{r,t}^s ρr,ts。下标 r r r 表示 GNSS 接收器,上标 s s s 表示卫星的索引。
b) 从 s s s 卫星接收到的给定纪元 t t t 的多普勒测量表示为 d r , t s d_{r,t}^s dr,ts。
c) 从卫星 s s s 在给定纪元 t t t 接收到的载波相位测量表示为 ψ r , t s \psi_{r,t}^s ψr,ts。
d) 卫星的位置 s s s 在给定时期 t t t 表示为 p t s = ( p t , x s , p t , y s , p t , z s ) T p_t^s=(p_{t,x}^s,p_{t,y}^s,p_{t,z}^s)^T pts=(pt,xs,pt,ys,pt,zs)T。
e) 卫星的速度 s s s 在给定时期 t t t 表示为 v t s = ( v t , x s , v t , y s , v t , z s ) T v_t^s=(v_{t,x}^s,v_{t,y}^s,v_{t,z}^s)^T vts=(vt,xs,vt,ys,vt,zs)T。
f) GNSS 接收机的位置在一个给定时期 t t t 表示为 p r , t = ( p r , t , x , p r , t , y , p r , t , z ) T p_{r,t}=(p_{r,t,x},p_{r,t,y},p_{r,t,z})^T pr,t=(pr,t,x,pr,t,y,pr,t,z)T。
g) GNSS 接收机的速度在给定时期 t t t 表示为 v r , t = ( v r , t , x , v r , t , y , v r , t , z ) T v_{r,t}=(v_{r,t,x},v_{r,t,y},v_{r,t,z})^T vr,t=(vr,t,x,vr,t,y,vr,t,z)T。
h) GNSS 接收机在给定历元 t t t 时的钟差表示为 δ r , t \delta_{r,t} δr,t,单位为米。 δ r , t s \delta_{r,t}^s δr,ts 为卫星钟差 (米)。基地 (引用) 站的位置表示为 p b = ( p b , x , p b , y , p b , z ) T p_b=(p_{b,x},p_{b,y},p_{b,z})^T pb=(pb,x,pb,y,pb,z)T。变量 ρ b , t s \rho_{b,t}^s ρb,ts 和 ϕ b , t s \phi_{b,t}^s ϕb,ts 表示参考站在时间 t t t 从卫星 s s s 接收到的载波相位的伪距和距离测量。
3. 详细内容
下图为整个系统的流程图,我们可以看到:
-
输入信号:GNSS 接收器测量值(伪距、多普勒、载波相位)和基站观测信号;
-
GNSS 定位:优化模型—多普勒速度因子和伪距因子;
-
RTK 定位:优化模型—DD 伪距因子、DD 载波相位因子、多普勒速度因子;
2.1 伪距公式
下面我们来看一下整体的逻辑结构,对于 GNSS 接收机的测量,每个伪距测量 ρ r , t s \rho_{r,t}^s ρr,ts 表示为[29]。
其中 r r , t s r_{r,t}^s rr,ts 为卫星与 GNSS 接收机之间的几何距离。 I r , t s I_{r,t}^s Ir,ts 表示电离层延迟距离; T r , t s T_{r,t}^s Tr,ts 表示对流层延迟距离。 x r , t s x_{r,t}^s xr,ts 表示由多径效应、NLOS 接收、接收机噪声、天线相位相关噪声引起的误差。本文使用的卫星系统包括全球定位系统 (GPS) 和北斗。此外,我们遵循 RTKLIB 中使用的方法来模拟大气效应 ( I r , t s I_{r,t}^s Ir,ts 和 T r , t s T_{r,t}^s Tr,ts)。
2.2 多普勒频移公式
给定每个卫星在一个时间 t t t 的多普勒测量 ( d r , t 1 , d r , t 2 , … d_{r,t}^1,d_{r,t}^2,… dr,t1,dr,t2,…),GNSS 接收机的速度 ( v r , t v_{r,t} vr,t) 可以使用 LS 方法计算。假设速度的状态 x t d x_t^d xtd 如下所示:
其中 v r , t v_{r,t} vr,t 表示 GNSS 接收机的速度。变量 δ ˙ r , t \dot{\delta}_{r,t} δ˙r,t 表示接收机时钟漂移。以 t t t 为一个时间戳的距离速率测量向量 ( y r , t d y_{r,t}^d yr,td) 表示如下:
其中 λ \lambda λ 表示卫星信号的载波波长, d r , t s d_{r,t}^s dr,ts 表示多普勒测量。连接状态和多普勒测量值的观测函数 h d ( ⋅ ) h^d(\cdot) hd(⋅) 表示如下:
其中上标 m m m 表示卫星总数,变量 ω r , t d \omega_{r,t}^d ωr,td 表示与 y r , t d y_{r,t}^d yr,td 相关的噪声。变量 r r r , t L O S rr_{r,t}^{LOS} rrr,tLOS 表示预期范围率。变量 δ ˙ r , t \dot{\delta}_{r,t} δ˙r,t 和 δ ˙ t L O \dot{\delta}_{t}^{LO} δ˙tLO 表示接收机和卫星时钟偏差漂移。观察函数 h d ( ⋅ ) h^d(\cdot) hd(⋅) 的雅可比矩阵 H t d H_t^d Htd 表示为:
其中,范数 ∣ ∣ ⋅ ∣ ∣ ||\cdot|| ∣∣⋅∣∣ 被用来计算给定卫星与 GNSS 接收机之间的距离。卫星 s s s 的期望距离率 r r r , t s rr_{r,t}^s rrr,ts 也可以计算如下:
其中,变量 ω e a r t h \omega_{earth} ωearth 表示地球自转的角速度。变量 c L c_L cL 表示光速。变量 e r , t s , L O S e_{r,t}^{s,LOS} er,ts,LOS 表示连接 GNSS 接收机和卫星的视距矢量。因此,可以根据式 (4)、(5) 通过 LS 估计 GNSS 接收机的速度 ( v r , t ) (v_{r,t}) (vr,t)。
提出的求解 GNSS 定位的因子图的图结构如图 2 所示。下标 n n n 表示在 FGO 中考虑的测量的总纪元。因子图中的每个状态都使用多普勒速度因子连接起来。GNSS 接收机状态表示如下:
其中,变量 χ \chi χ 表示 GNSS 接收机从第一个历元到当前 n n n 的状态集合。 x r , t x_{r,t} xr,t 表示 GNSS 接收机在历元 t t t 的状态,包括位置 ( p r , t ) (p_{r,t}) (pr,t),速度 ( v r , t ) (v_{r,t}) (vr,t) 和接收机时钟偏差 ( δ r , t ) (\delta_{r,t}) (δr,t)。
2.3 伪距因子
GNSS 伪距观测模型从一个给定的卫星 s s s 测量如下:
其中变量 ω r , t s \omega_{r,t}^s ωr,ts 表示与 ρ r , t s \rho_{r,t}^s ρr,ts 相关的噪声。因此,对于给定的卫星测量 ρ r , t s \rho_{r,t}^s ρr,ts,我们可以得到如下的误差函数 ( e r , t s ) (e_{r,t}^s) (er,ts):
其中 Σ r , t s \Sigma_{r,t}^s Σr,ts 为协方差矩阵。我们在 [31] 的基础上,根据卫星仰角和信噪比 (SNR) 计算 Σ r , t s \Sigma_{r,t}^s Σr,ts。速度 ( d r , t d_{r,t} dr,t) 的观测模型如下:
2.4 多普勒速度因子
…详情请参照 古月居
以上是基于因子图优化的 GNSS 定位的介绍,剩下的篇幅将对 RTK 的 FGO 方法进行介绍,包括载波相位公式、差分伪距公式、多普勒频移公式、差分载波相位公式等。
3. 参考链接
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)