IMU与GPS传感器ESKF融合定位

本文详细介绍了IMU与GPS传感器通过Extended State Kalman Filter(ESKF)进行融合定位的实现过程。首先,概述了代码的整体框架,包括主要的数据订阅和发布。接着,重点讲解了LocalizationWrapper构造函数的作用以及滤波算法如何进行预测。此外,还阐述了如何利用GPS位置数据更新系统状态。最后,对结果进行了评价,并引用了相关研究文献。
摘要由CSDN通过智能技术生成

IMU与GPS传感器ESKF融合定位


在这里插入图片描述
分别在两个终端下运行命令:

rosbag play utbm_robocar_dataset_20180502_noimage1.bag
roslaunch imu_gps_localization imu_gps_localization.launch

1、代码整体框架说明

代码具体结构框架如下图所示:
在这里插入图片描述

cpp文件 文件具体实现作用 备注
localization_node.cpp 主函数文件,实现初始化ros,初始化LocalizationWrapper类
localization_wrapper.h LocalizationWrapper类定义,主要声明构造函数、析构函数以及imu回调函数、gps回调函数、打印状态、打印gps数据,把状态格式数据转换成ros话题机制
localization_wrapper.cpp 构造函数中主要是加载参数,保存数据到文件夹下,订阅imu和gps的话题然后发布融合后的轨迹;析构函数主要是释放空间;imu回调函数主要是读取imu数据,然后对数据进行处理,转变状态发布成ros话题,打印状态;gps回调函数主要是实现读取数据,然后进行处理,最后打印。
imu_gps_localizer.cpp ProcessImuData()函数初始化imu数据,对imu数据进行预测,从ENU坐标系转换到GPS坐标系,发布融合后的状态;ProcessGpsPositionData()函数主要实现初始化数据以及位置的更新。
imu_gps_localizer.h ImuGpsLocalizer类构造函数,声明ProcessImuData()函数,声明ProcessGpsPositionData()函数
initializer.h 初始化类,主要是构造函数,添加imu数据,添加gps数据,计算imu数据到gps数据的旋转矩阵这里参考的是openvins
imu_processor.cpp 滤波融合的预测部分Predict()函数具体实现
imu_processor.h ImuProcessor类主要是滤波融合的预测部分Predict()函数声明
gps_processor.h GpsProcessor类通过GPS位置更新系统的状态UpdateStateByGpsPosition()以及计算残差以及雅可比矩阵和把得到的误差更新状态
base_type.h 主要是imu数据、GPS数据以及系统状态的数据结构
utils.h 主要包括弧度和角度之间的相互转换、ENU坐标系与LLA坐标系的转换以及得到反对称矩阵

2、主要函数介绍

2.1 L

评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纷繁中淡定

你的鼓励是我装逼的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值