什么是误差卡尔曼滤波
卡尔曼滤波:
当有预测值 x1 和观测值 y1 时,会将x1 , y1 同时放入卡尔曼滤波器,获得最有估计的 x ′ x^{'} x′
误差卡尔曼:
同样收到了预测值 x1 和观测值 y1,送入滤波器的观测值不再是 x1 ,而是一个误差值
Δ
x
Δx
Δx,就对当前状态的误差量是多少(这个值一般都是为0),因为真值=预测值+误差值,误差值得计算后获取 ,而观测误差则定义为
Δ
y
=
y
1
−
x
1
Δy=y_{1}-x_{1}
Δy=y1−x1 ,然后把
Δ
x
,
Δ
y
Δx, Δy
Δx,Δy 送入卡尔曼滤波器中,输出结果为
Δ
x
′
Δx^{'}
Δx′.
输入的
Δ
x
=
0
Δx=0
Δx=0,因为预测是自己所能给到的最优的位姿,但是对应的协方差
P
Δ
x
P_{Δx}
PΔx 是一直在增加的,
Δ
y
Δy
Δy 对应的协方差为
P
Δ
y
P_{Δy}
PΔy ,两个协方差也要输入进去。
根据上面的4个量获得最优估计值
Δ
x
′
Δx^{'}
Δx′ ,这个是经过卡尔曼滤波器估计后的一个比较好的误差,然后把这个误差补偿到位姿去,则获得置信度更高的位姿 ,
Δ
x
Δx
Δx 一直都是0,变化的是它的方差P
为什么需要误差卡尔曼滤波
- 旋转的误差量一般为很小的值,通常用旋转向量来表示旋转误差,因为四元数是过参数化的表示形式,用一个4自由度的协方差矩阵来描述一个3自由度旋转就存在问题,为了避免这个问题则引入李代数(旋转向量)来进行表述,由于误差量很小, ∈ [ Π , − Π ] ∈[Π,-Π] ∈[Π,−Π] 之间,且在0附近,则可以避免周期性的问题 。
- Δ x Δx Δx 一直是 0 ,误差来源于 Δ y Δy Δy ,由于数据频率都比较接近,所以其误差量也很小
- 该误差量很小,则其二阶导可以忽略,直接计算一阶雅可比会更快速
- 由于误差量变化很慢,则可以不用很高频的运行
- 总的来说就是误差状态可以帮助IMU预积分计算协方差时避免过参数化。是为了描述旋转才引入的误差量,但是在进行位姿补偿的时候还是使用回四元数,使用扰动的形式进行补偿。