赞
踩
2021.2 IEEE Robotics and Automation Letters Wei Xu 港大火星实验室
• 雷达输入到预处理模块,经过一段时间的累积后进行特征提取,提取出面点和角点
• IMU 输入进行前向传播 (积分得到粗略位姿估计),反向传播进行运动补偿
• 计算雷达里程计的残差,利用迭代卡尔曼滤波估计位姿变换,直到收敛。最后根据位姿建图,并更新特征地图。
缺陷:为了防止构建地图的k-d树的时间不断增加,该系统只能在较小的环境中工作,虽然使用卡尔曼增益新的计算公式可以进行scan-to-map的匹配,但是随着地图的增大map的维护无法保证实时性
⊞
:
M
×
R
n
→
M
;
⊟
:
M
×
M
→
R
n
M
=
S
O
(
3
)
:
R
⊞
r
=
R
E
x
p
(
r
)
;
R
1
⊟
R
2
=
L
o
g
(
R
2
T
R
1
)
M
=
R
n
:
a
⊞
b
=
a
+
b
;
a
⊟
b
=
a
−
b
关于流型的解释
流形学的观点是认为:我们所能观察到的数据实际上是由一个低维流形映射到高维空间上的,即这些数据所在的空间是“嵌入在高维空间的低维流形”。由于数据内部特征,用高维空间表示低维流型会产生维度上的冗余,只需要较低的维度就可以位移表示该维度下的流行
imu物理模型
G
p
˙
I
=
G
v
I
,
G
v
˙
I
=
G
R
I
(
a
m
−
b
a
−
n
a
)
+
G
g
,
G
g
˙
=
0
G
R
˙
I
=
G
R
I
⌊
ω
m
−
b
ω
−
n
ω
⌋
∧
,
b
˙
ω
=
n
b
ω
,
b
˙
a
=
n
b
a
IMU的状态传播,其中
f
δ
t
f \delta_t
fδt对应着帧内的积分
x
i
+
1
=
x
i
⊞
(
Δ
t
f
(
x
i
,
u
i
,
w
i
)
)
M
=
S
O
(
3
)
×
R
15
,
dim
(
M
)
=
18
x
≐
[
G
R
I
T
G
p
I
T
G
v
I
T
b
ω
T
b
a
T
G
g
T
]
T
∈
M
u
≐
[
ω
m
T
a
m
T
]
T
,
w
≐
[
n
ω
T
n
a
T
n
b
ω
T
n
b
a
T
]
T
f
(
x
i
,
u
i
,
w
i
)
=
[
ω
m
i
−
b
ω
i
−
n
ω
i
G
v
I
i
G
R
I
i
(
a
m
i
−
b
a
i
−
n
a
i
)
+
G
g
i
n
b
ω
i
n
b
a
i
0
3
×
1
]
优化的状态量是18维的,包含了世界坐标系下的重力向量
使用ESKF完成运动方程的线性化,
卡尔曼滤波的时间复杂度 O ( m 2 ) \mathcal {O}(m^2) O(m2),m是测量的维度
x x x表示真值, x ~ \widetilde{\mathbf x} x 表示误差, x ˉ \bar{\mathbf x} xˉ表示最优估计值(后验), x ^ \widehat{ \mathbf x} x 表示先验值
第k-1帧(已经完全优化完了)的误差:误差值 = 真值 “—” 优化完的估计值
x
~
k
−
1
≐
x
k
−
1
⊟
x
ˉ
k
−
1
=
[
δ
θ
T
G
p
~
I
T
G
v
~
I
T
b
~
ω
T
b
~
a
T
G
g
~
T
]
T
通过每两个雷达帧之间的IMU预积分得到一个
x
k
x_k
xk的估计值,并使用估计值进行运动补偿
x
^
i
+
1
=
x
^
i
⊞
(
Δ
t
f
(
x
^
i
,
u
i
,
0
)
)
;
x
^
0
=
x
ˉ
k
−
1
.
线性化的误差的传递:
x
~
i
+
1
≃
F
x
~
x
~
i
+
F
w
w
i
.
推导F矩阵有两种方式,基于误差随时间变化的递推方程,和基于一阶泰勒展开的误差传递方法,最后推导出来的公式
F
x
~
=
[
Exp
(
−
ω
^
i
Δ
t
)
0
0
−
A
(
ω
^
i
Δ
t
)
T
Δ
t
0
0
0
I
I
Δ
t
0
0
0
−
G
R
^
I
i
⌊
a
^
i
⌋
∧
Δ
t
0
I
0
−
G
R
^
I
i
Δ
t
I
Δ
t
0
0
0
I
0
0
0
0
0
0
I
0
0
0
0
0
0
I
]
,
F
w
=
[
−
A
(
ω
^
i
Δ
t
)
T
Δ
t
0
0
0
0
0
0
0
0
−
G
R
^
I
i
Δ
t
0
0
0
0
I
Δ
t
0
0
0
0
I
Δ
t
0
0
0
0
]
协方差的传播
P
^
i
+
1
=
F
x
~
P
^
i
F
x
~
T
+
F
w
Q
F
w
T
;
P
^
0
=
P
ˉ
k
−
1
.
目的是每个IMU时刻的积分相对于此帧点云结束时刻的位姿
先把 L 坐标系的特征点转到 I 坐标系,然后乘上反向传播的补偿矩阵,再转回 L 坐标系。所有的投影点都像这样转好后,就可以开始计算残差了。计算残差的时候把补偿后的特征点投影到世界坐标系
KaTeX parse error: Got group of unknown type: 'internal'
把点畸变矫正投影到这个雷达帧的结束时刻,然后在投影到世界坐标系,待估计位姿
G
p
^
f
j
κ
{}^G \widehat{\mathbf p}_{f_j}^\kappa
Gp
fjκ
L
k
p
f
j
=
I
T
L
−
1
I
k
T
ˇ
I
j
I
T
L
L
j
p
f
j
,
G
p
^
f
j
κ
=
G
T
^
I
k
κ
I
T
L
L
k
p
f
j
;
j
=
1
,
…
,
m
.
(11)
残差计算就是点到线的距离和点到面的距离,(fast-lio2 以及代码中,都省去了特征提取,只计算面点的残差)
IEKF 可以证明和高斯牛顿 GN 法是等价的,IEKF迭代过程不会更新协方差矩阵 P,但是文章中更新了,由于每迭代一次后
x
~
\widetilde{x}
x
就会发生一次变化,理论上其协方差矩阵并不是初始的
P
k
P _k
Pk 了,因此协方差矩阵可通过
P
=
(
J
k
)
−
1
P
^
k
(
J
k
)
−
T
P = (J^k )^{-1}\widehat{P}_k(J^k)^{-T}
P=(Jk)−1P
k(Jk)−T 在迭代过程中更新。
J
κ
=
[
A
(
G
R
^
I
k
κ
⊟
G
R
^
I
k
)
−
T
0
3
×
15
0
15
×
3
I
15
×
15
]
求解MAP问题(一个最小二乘问题)
min
x
~
k
κ
(
∥
x
k
⊟
x
^
k
∥
P
^
k
−
1
2
+
∑
j
=
1
m
∥
z
j
κ
+
H
j
κ
x
~
k
κ
∥
R
j
−
1
2
)
计算卡尔曼增益,H是观测残差关于状态量扰动的偏导,R是观测的协方差,P是ESKF推导出来的运动方程的协方差,
z
k
z_k
zk就是每个点匹配的残差
K
=
P
H
T
(
H
P
H
T
+
R
)
−
1
,
x
^
k
κ
+
1
=
x
^
k
κ
⊞
(
−
K
z
k
κ
−
(
I
−
K
H
)
(
J
κ
)
−
1
(
x
^
k
κ
⊟
x
^
k
)
)
.
论文给出了一种求卡尔曼增益的等效方式,前面K计算过程中矩阵求逆的维度是观测的维度,后面K的计算过程矩阵求逆的维度就是状态量的维度
K
=
(
H
T
R
−
1
H
+
P
−
1
)
−
1
H
T
R
−
1
.
H矩阵:
经过k次迭代后得到最终的结果
x
ˉ
k
=
x
^
k
κ
+
1
,
P
ˉ
k
=
(
I
−
K
H
)
P
地图更新:使用迭代之后的位姿将地图点投影到全局世界坐标系,初始化静止2s,初始化IMU零偏和重力向量
32 米轨迹上的漂移为 0.08 米。漂移小于 0.05%(140 米轨迹上的漂移为 0.07 米),10HZ, 平均处理时间为 25ms,平均有效特征点为 1497 个
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。