zm0612 / eskf-gps-imu-fusion

误差状态卡尔曼ESKF滤波器融合GPS和IMU,实现更高精度的定位
624 stars 149 forks source link

关于惯性纯积分存在的一些疑问 #34

Open zaixialipu opened 5 months ago

zaixialipu commented 5 months ago

首先在eskf.cpp中updateOdomEstimate中,是由于Eigen库中的数据的截断误差,导致 在eskf.cpp中的R_nm_nm_1不完全正交,在这里我做了较多的尝试,使用svd分解等方法都不能得到一个较好的结果,因此我直接使用了inverse(),虽然运算速度上有损失,但是毕竟效果会更好一点。 第二个部分是eskf.cpp中关于角速度更新的部分,在ComputerNavigationFrameAngularVelocity中,对于纬度和高度直接使用了卫星的真值,这里当然是可以的,但是对于纯积分来说,没有GPS,因此最好加一个if的判断,没有GPS,直接使用上一时刻的imu的数据。(目前正在修改中) 第三个部分是在eskf.cpp中ComputePosition中,关于惯性比力方程,完整的公式需要扣除地球自转引起的加速度与对地向心加速度,但是在unbias_accel_0与unbias_accel_1求解的过程中,均采用了简化模型,这里可能有精度损失。我的公式和您的一样,就是您的博客“https://blog.csdn.net/u011341856/article/details/132948044#comments_31875260”中“2.速度更新a. 精确速度微分建模”下的模型。

zm0612 commented 5 months ago

hello,

zaixialipu commented 5 months ago

hello, 关于第一个问题,在长航时(1小时)的积分中,旋转矩阵的非正交确实会导致比较大的误差,详细结果等目前的程序修改完毕会上传到csdn中。 第二个问题,我也和其他组的同学讨论了,就是说由于IMU与卫星的选用场景不同,对应的策略不同,我这里的是卫星会受到干扰的场景,因此需要针对的修改。 第三个问题,消费级IMU确实没有没有必要,我这里使用的是高精度imu,所以需要修改一下。 相关的程序等我修改后,如果您这里方便的化,想麻烦您这里再一起审核一下。感谢!

zm0612 commented 5 months ago

ok,回头可以把你们修改的版本推给我学习学习^.^

lyfadvance commented 2 months ago

请问一下,你们的IMU是什么型号,价格是多少啊。纯IMU惯性导航有这么准吗。@zaixialipu