Shelfcol / gps_imu_fusion

gps_imu_fusion with eskf,ekf,ukf,etc
108 stars 22 forks source link

Forked from https://github.com/zm0612/eskf-gps-imu-fusion

卡尔曼融合IMU与GPS数据

结果如下:

融合IMU数据之后的GPS轨迹效果 融合IMU数据之后的GPS轨迹效果

蓝色轨迹:ground truth(图片看不清)

红色轨迹:fuse IMU and GPS

绿色轨迹:GPS

已经实现的滤波方法:

EKF:基于导航信息的EKF滤波算法实现(附源码)

基于高精度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与多传感器融合,后面有时间补上

欢迎大家交流呀!

1. 依赖库

Eigen

sudo apt-get install libeigen3-dev

Yaml

sudo apt-get install libyaml-cpp-dev

2. 编译

cd eskf-gps-imu-fusion
mkdir build
cd build
cmake ..
make 

3. 运行

本代码现在支持EKF,基于高精度IMU模型的ESKF和Joan Sola大神的Quaternion kinematics for the error-state KF。调试好的数据有两组。

如果想尝试不同的方法和不同的数据,只需要修改config.yaml里面的配置文件即可

cd eskf-gps-imu-fusion/build
./gps_imu_fusion

4.轨迹显示

执行完./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