文章目录
- 滤波框架中融合相对观测【欢迎讨论】
- 解决观测维度过大计算K耗时增加
滤波框架中融合相对观测【欢迎讨论】
以在无人车定位系统中融合GNSS,IMU,轮速,camera/lidar frame to map pose为例,想要在这个绝对定位系统中继续融合LO、VIO的relative pose该怎么做呢?(这里只考虑松耦合)
- 首先维护一个sliding window,类似MSCKF做状态增广
- 使用lidar 3d points ( P f i P_{f_i} Pfi)约束imu pose( T b i T_{b_i} Tbi), lidar坐标系 L L L, imu坐标系 b b b
- 回顾MSCKF算法中里面使用三维feature点约束cam pose的经验。具体做法是将残差函数线性化之后,求出feature points对cam pose的导数H,求其left null space matrix,然后两边都乘这个left null space matrix,可以把这个不想优化的feature points量从残差函数中消灭掉
- 观测方程 z = D ( L m P f i , L n P f i , L n P f j , L n P f k ) + n i z= D({}^{L_m}P_{f_i}, {}^{L_n}P_{f_i}, {}^{L_n}P_{f_j},{}^{L_n}P_{f_k}) + n_i z=D(LmPfi,LnPfi,LnPfj,LnPfk)+ni,这个表示 L m L_m Lm frame的一个点和 L n L_n Ln frame中的三个点构成点到面的距离,观测值真值是0,其中
L m P f i = T b l − 1 T w b − 1 w P f i + n i {}^{L_m}P_{f_i} = T_{bl}^{-1}T_{wb}^{-1} {}^{w}P_{f_i} + n_i LmPfi=Tbl−1Twb−1wPfi+ni
线性化残差函数
r = z ˇ − z = H x δ X + H L m P f i , L n P f i , L n P f j , L n P f k δ [ L m P f i , L n P f i , L n P f j , L n P f k ] r = \check{z} - z = H_{x}\delta_X + H_{{L_m}P_{f_i}, {}^{L_n}P_{f_i}, {}^{L_n}P_{f_j},{}^{L_n}P_{f_k}} \delta{\left[ {{L_m}P_{f_i}, {}^{L_n}P_{f_i}, {}^{L_n}P_{f_j},{}^{L_n}P_{f_k}} \right]} r=zˇ−z=HxδX+HLmPfi,LnPfi,LnPfj,LnPfkδ[LmPfi,LnPfi,LnPfj,LnPfk]
这里 δ X \delta_X δX 表示系统状态如imu pose,lidar imu外参。然后按照上述MSCKF中对于feature的处理即可将LO紧耦合融合到定位系统中(重点是做好特征点的数据关联)。这个里面的第二项我认为也可以直接当做0,也就是认为lidar points没有测量误差。因为Lidar features points相比VO 三角化测量得到的feature points是准确的,这里我们认为lidar points没有测量误差的话是可以直接忽略掉而不用进行nullspace变换的。
解决观测维度过大计算K耗时增加
- 当观测量维度很大的时候,求解 ( H P H T + R ) − 1 (HPH^T + R)^{-1} (HPHT+R)−1计算量大,可以使用QR分解来重写残差函数降低计算耗时,重写之后计算量正比于系统的状态维度,详细可见文章