结果如下:
蓝色轨迹:ground truth(图片看不清)
红色轨迹:fuse IMU and GPS
绿色轨迹:GPS
已经实现的滤波方法:
基于高精度IMU模型的ESKF(fork代码的原作者的实现,这里表示感谢):【附源码+代码注释】误差状态卡尔曼滤波(error-state Kalman Filter),扩展卡尔曼滤波,实现GPS+IMU融合,EKF ESKF GPS+IMU
Joan Sola大神的Quaternion kinematics for the error-state KF:Quaternion kinematics for error state kalman filter实现GPS+IMU融合,(附源码)
TODO:
UKF滤波,准备参考无损卡尔曼滤波UKF与多传感器融合,后面有时间补上
欢迎大家交流呀!
Eigen
sudo apt-get install libeigen3-dev
Yaml
sudo apt-get install libyaml-cpp-dev
cd eskf-gps-imu-fusion
mkdir build
cd build
cmake ..
make
本代码现在支持EKF,基于高精度IMU模型的ESKF和Joan Sola大神的Quaternion kinematics for the error-state KF。调试好的数据有两组。
如果想尝试不同的方法和不同的数据,只需要修改config.yaml里面的配置文件即可
cd eskf-gps-imu-fusion/build
./gps_imu_fusion
执行完./gps_imu_fusion
会生成轨迹文件
cd eskf-gps-imu-fusion/data
evo_traj kitti fused.txt gt.txt measured.txt -p
需要安装evo,可以参考博客中的介绍:https://blog.csdn.net/u011341856/article/details/104594392?spm=1001.2014.3001.5501