OKVIS 中的 propagation 公式版

来源:互联网 发布:华康少女字体mac 编辑:程序博客网 时间:2024/06/13 05:23

初值赋值

propagation 初值赋值:
位姿 translation 部分:r0=t{TWS}
位姿转换成四元数:qWS0=q{TWS}
位姿旋转部分:CWS0=C{TWS}

积分初值:
四元数积分:Δq=(1,0,0,0)
旋转矩阵积分:C=0(3,3)
旋转矩阵双重积分:C=0(3,3)
加速度积分:a=(0,0,0)
加速度双重积分:a=(0,0,0)

定义:

// cross matrix accumulatrionEigen::Matrix3d cross = Eigen::Matrix3d::Zero();

Mcross=0(3,3)

子雅各比矩阵初始化
角速度对角速度偏置偏导:dαdbg=0(3,3)
速度对角速度偏置偏导:dvdbg=0(3,3)
位移对角速度偏置偏导:dpdbg=0(3,3)

// the Jacobian of the increment (w/o biases)Eigen::Matrix<double,15,15> P_delta = Eigen::Matrix<double,15,15>::Zero();

增量变量 δχ 偏导矩阵初始化: Pδ=I(15,15)

从最开始到当前次积分的时间间隔:Δt=0

for

it 个角速度测量:Sω0
it 个加速度测量:Sa0
it+1 个IMU 测量:Sω1
it+1 个加速度测量:Sa1

t0 到 it1 时间间隔:dt
从配置文件中读取的 gyro noise density [rad/s/sqrt(Hz)]:σgc
从配置文件中读取的 accelerometer noise density [m/s^2/sqrt(Hz)]:σac

四元数积分:dq
角速度设为时间 t0 和 t1 平均值: Sω=0.5(Sω0+Sω1)bg

dqv=sin(||12Sω dt||)(12Sω dt)
dqw=cos(||12Sω dt||)
dq=(dqv,dqw)
当前次四元数积分:Δq1=Δqdq

四元数转化成旋转矩阵:C=M{Δq}
四元数转化成旋转矩阵:C1=M{Δq1}
加速度设为时间 t0 和 t1 平均值:Sa=0.5(Sa0+Sa1)ba
C=C+0.5(C+C1)dt
a=a+0.5(C+C1)Sadt
C=C+Cdt+0.25(C+C1)dtdt
a=a+adt+0.25(C+C1)Sadtdt

dαdbg=dαdbg+C1dt
Mcross1=C{dq1}Mcross+Jr{Sωdt}dt
dvdbg=dvdbg+0.5dt(C[Sa]×Mcross+C1[Sa]×Mcross1)
dpdbg=dpdbg+dtdvdbg+0.25dtdt(C[Sa]×Mcross+C1[Sa]×Mcross1)

covariance propagation

Fδ=I(15,15)
Fδ(0:2,3:5)=[adt+0.25(C+C1)Sadtdt]×
Fδ(0:2,6:8)=I(3,3)dt
Fδ(0:2,9:11)=dtdvdbg+0.25dtdt(C[Sa]×Mcross+C1[Sa]×Mcross1)
Fδ(3:5,9:11)=dtC1
Fδ(6:8,3:5)=[0.5(C+C1)Sadt]×
Fδ(6:8,9:11)=0.5dt(C[aS]×Mcross+C1[aS]×Mcross1)
Fδ(6:8,12:15)=0.5(C+C1)dt

Fδ=00000[adt+0.25(C+C1)Sadtdt]×0[0.5(C+C1)Sadt]×00I(3,3)dt0000dtdvdbg+0.25dtdt(C[Sa]×Mcross+C1[Sa]×Mcross1)dtC10.5dt(C[aS]×Mcross+C1[aS]×Mcross1)00000.5(C+C1)dt00

Pδ=FδPδFTδ

gyro noise density:σgc
accelerometer noise density:σac
gyro drift noise density:σgwc
accelerometer drift noise density:σawc

σ2dα=dtσgcσgc
σ2v=dtσacσac
σ2p=0.5dtdtσ2v
σ2bg=dtσgwcσgwc
σ2ba=dtσawcσawc

Pδ=Pδ+σ2pI(3,3)00000σ2dαI(3,3)00000σ2vI(3,3)00000σ2bgI(3,3)00000σ2baI(3,3)

end covariance propagation

Δq=Δq1
C=C
a=a
Mcross=Mcorss1
dvdbg=dvdbg

end for

输出系统状态量更新

输入重力加速度参数:g
gW=g(0,0,1)T
t{TWS}=r0+vΔt+CWS0a0.5gWΔtΔt
q{TWS}=qWS0Δq
v=v+CWS0agWΔt

输出的雅各比矩阵

J=I(15,15)
J(0:2,3:5)=[CWS0a]×
J(0:2,6:8)=I(3,3)Δt
J(0:2,9:11)=CWS0dpdbg
J(0:2,12:14)=CWS0C
J(3:5,9:11)=CWS0dαdbg
J(6:8,3:5)=[CWS0a]×
J(6:8,9:11)=CWS0dvdbg
J(6:8,12:14)=CWS0C

J=00000[CWS0a]×0[CWS0a]×00I(3,3)Δt0000CWS0dpdbgCWS0dαdbgCWS0dvdbg00CWS0C0CWS0C00

输出方差矩阵

方差 P 是从通过参数传进来,这里并没有清掉,说明是不断传播的
T=I_{(15,15)} T=I(15,15)

T=CWS000000CWS000000CWS0000000000000

P=TPδTT

版权声明:本文为博主原创文章,未经博主允许不得转载。

1 0