误差状态卡尔曼滤波器(ESKF)融合IMU与GPS数据
只使用IMU进行积分的结果 | 使用ESKF融合IMU和GPS |
---|---|
实现方法请参考我的博客《【附源码+代码注释】误差状态卡尔曼滤波(error-state Kalman Filter)实现GPS+IMU融合,EKF ErrorStateKalmanFilter GPS+IMU》
1. 依赖库
Eigen
sudo apt-get install libeigen3-dev
Yaml
sudo apt-get install libyaml-cpp-dev
Glog
sudo apt-get install libgoogle-glog-dev
2. 编译
cd eskf-gps-imu-fusion
mkdir build
cd build
cmake ..
make
3. 运行
cd eskf-gps-imu-fusion
./build/gps_imu_fusion ./config/config.yaml ./data
4. 轨迹显示
执行完./gps_imu_fusion
会生成轨迹文件
cd eskf-gps-imu-fusion/data
python display_path.py
5. 误差分析
推荐使用工具: evo
cd eskf-gps-imu-fusion/data
evo_traj tum fused.txt gt.txt gps_measurement.txt -p
6. 接入其他数据
如果需要接入其他数据,您需要将您的数据格式进行整理,以符合本算法的需求,参考data/raw_data
文件夹中的数据格式,并且至少要在accel-0.csv
、gps-0.csv
、gps_time.csv
、gyro-0.csv
、time.csv
文件中填入你的IMU和GPS数据。
提示:
- IMU的加速度和角速度需要使用前右下坐标系;
- GPS的数据按照:纬度、经度、高度填入,并且单位分别为度和米;
- 采集和生成自己的数据时,请尽量从静止和近水平面状态开始运动。
7. 待办事项
- 增加初始化时重力对齐
- 增加初始化时bias估计
- ……