论文名称:AI-IMU Dead-Reckoning
开源项目地址:https://github.com/mbrossar/ai-imu-dr
期刊:IEEE Transactions on Intelligent Vehicles
时间:2020
这篇论文提出了一种仅使用IMU(惯性测量单元)进行高精度航位推算(Dead-Reckoning)的方法,通过CNN动态学习卡尔曼滤波器的噪声参数,适用于轮式车辆(如汽车),能够在不依赖GPS、LiDAR或视觉传感器的情况下,在KITTI数据集上实现了与LiDAR/视觉SLAM相当的精度,实现实时且准确的位置、速度、姿态估计,且无需任何外部传感器。
所用数据集
KITTI Odometry Dataset www.cvlibs.net/datasets/ki…
开源数据集,非作者团队采集
- 包含LiDAR、摄像头、IMU(OXTS RT3003,100Hz采样);
- 提供厘米级精度的地面真值(ground truth) ;
- 本论文仅使用IMU数据,不融合GNSS或其他传感器,即使在GPS中断的情况下也能工作。
研究方向
- 任务类型:长期轨迹估计(最长4.2km,9分钟连续运行)。
- 低成本IMU存在漂移大、误差累积快的问题,传统方法难以长期稳定运行。
- 仅使用IMU实现与传统LiDAR或视觉SLAM相媲美的精度。
深度学习模型:CNN-based 噪声自适应模块
AI-based Measurement Noise Parameter Adapter(基于CNN的测量噪声自适应模块)
输入:IMU原始数据窗口(角速度ωIMU、加速度aIMU,长度为15个时间步)
输出:动态调整卡尔曼滤波器中伪测量(pseudo-measurement)的协方差矩阵 N_{n} (即对“车辆横向和垂直速度为零”这一假设的不确定性估计)
结构:
- 1D卷积神经网络(CNN)+ 全连接层;
- 2层CNN,每层kernel size=5,dilation分别为1和3;
- 激活函数:ReLU;
- 输出通过tanh压缩到[0, 10^β]范围,用于动态调整协方差;
- 参数量:6210(CNN)+ 12(卡尔曼滤波器初始参数),共6222个可训练参数。
动态调整协方差矩阵 N_{n}
伪测量(Pseudo-Measurement)
在卡尔曼滤波器中,伪测量是一种虚拟的观测数据,用于将某些先验知识或假设引入滤波器。在本论文中,作者假设车辆在正常行驶时,横向速度(v_{lat})和垂直速度(v_{up})接近于零。这是因为车辆通常在水平路面上行驶,横向和垂直方向的运动相对较小。
具体来说,伪测量的数学表达式为:
y_n= \begin{bmatrix} v_{lat,n} \ v_{up,n} \end{bmatrix}\approx \begin{bmatrix} 0 \ 0 \end{bmatrix}
这里的 v_{lat,n} 和 v_{up,n} 是从IMU数据中计算出的车辆的横向和垂直速度。通过将它们作为伪测量,卡尔曼滤波器可以利用这些假设来修正状态估计。
协方差矩阵 N_{n}
协方差矩阵 N_{n} 用于表示伪测量的不确定性。在卡尔曼滤波器中,协方差矩阵反映了滤波器对观测数据的信任程度。如果 N_{n} 的值较小,滤波器会更信任伪测量;如果 N_{n} 的值较大,滤波器会对伪测量持怀疑态度。
在本论文中,作者使用深度学习模型动态调整N_{n},以适应不同的行驶条件(如转弯、直线行驶等)。具体来说,当车辆转弯时,横向速度可能会增加,此时伪测量的可信度降低,因此需要增大 N_{n} ;而在直线行驶时,横向速度接近零,伪测量的可信度较高,因此可以减小 N_{n} 。
动态调整的意义
通过动态调整 N_{n} ,滤波器可以更灵活地处理不同情况下的伪测量,从而提高定位精度。例如:
- 在直线行驶时,滤波器可以更信任“横向速度为零”的假设,从而更准确地修正状态;
- 在转弯时,滤波器会减少对这一假设的依赖,避免因假设不准确而导致的误差。
神经网络结构
1D卷积神经网络(CNN)
论文中提到的神经网络结构是一个1D卷积神经网络(CNN)+ 全连接层。具体来说:
- 1D卷积层:用于处理时间序列数据(如IMU的加速度和角速度);
- 全连接层:用于将卷积层的输出映射到最终的协方差矩阵 N_{n} 。
网络结构
- 输入:长度为15的时间窗口内的IMU数据(包括角速度 ω_{IMU} 和加速度 a_{IMU} )。
- 输出:协方差矩阵 N_{n} 的两个对角元素(对应横向速度和垂直速度的不确定性)。
两层CNN
-
第一层CNN
- Kernel size = 5:表示每次卷积操作覆盖5个时间步的数据;
- Dilation = 1:表示卷积核的扩张因子为1,即卷积核覆盖的范围是连续的5个时间步;
- 输出维度 = 32:表示这一层的输出特征图有32个通道。
-
第二层CNN
- Kernel size = 5:同样覆盖5个时间步的数据;
- Dilation = 3:表示卷积核的扩张因子为3,即卷积核覆盖的范围是每隔2个时间步取一个点,总共覆盖15个时间步;
- 输出维度 = 32:这一层的输出特征图也有32个通道。
全连接层
- 输入:第二层CNN的输出特征图;
- 输出:两个标量 z_{lat} 和 z_{up},用于计算协方差矩阵 N_{n} 。
输入和输出尺寸
-
输入尺寸:
长度为15的时间窗口,每个时间步包含3个角速度和3个加速度,总共6个通道。因此,输入尺寸为 15×6。
-
第一层CNN输出尺寸:
输入长度为15,Kernel size = 5,Dilation = 1,输出长度为 15−5+1=11。输出特征图有32个通道,因此输出尺寸为 11×32。
-
第二层CNN输出尺寸:
输入长度为11,Kernel size = 5,Dilation = 3,输出长度为 11−5×3+1=3。输出特征图有32个通道,因此输出尺寸为 3×32。
-
全连接层输出尺寸:
全连接层将 3×32 的特征图映射到两个标量 z_{lat} 和 z_{up},最终输出尺寸为 2。
协方差矩阵的计算
最终的协方差矩阵 N_{n} 通过以下公式计算:
N_n=\operatorname{diag}\left(\sigma_{lat}^2\cdot10^{\beta\cdot\tanh(z_{lat})},\sigma_{up}^2\cdot10^{\beta\cdot\tanh(z_{up})}\right)
其中:
- σ_{lat} 和 σ_{up} 是初始的噪声参数;
- β 是一个超参数,用于控制协方差的调整范围;
- z_{lat} 和 z_{up} 是全连接层的输出。
小结
- 动态调整协方差矩阵 N_{n}:通过深度学习模型动态调整伪测量的不确定性,使卡尔曼滤波器能够更灵活地处理不同行驶条件下的假设。
- 神经网络结构:1D卷积神经网络(CNN)+ 全连接层,用于从IMU数据中提取特征并计算协方差矩阵。
- 网络层次:两层CNN,每层的kernel size为5,dilation分别为1和3,输出维度为32。全连接层将CNN的输出映射到两个标量,用于计算协方差矩阵。
说白了,就是通过向神经网络输入3个角速度和3个加速度,让神经网络学习其中的规律来自行计算协方差矩阵。
同类方法比较
| 方法 | 传感器 | 平均平移误差(trel) | 备注 |
|---|---|---|---|
| IMLS | LiDAR | 0.98% | 排名第3的LiDAR方法 |
| ORB-SLAM2 | 双目视觉 | 1.17% | 经典视觉SLAM |
| IMU-only(传统积分) | IMU | 171% | 严重漂移 |
| 本文方法(AI-IMU) | IMU | 1.10% | 仅使用IMU,接近LiDAR精度 |
本文方法仅使用IMU,即可达到与LiDAR和视觉SLAM相当的精度,显著优于传统IMU积分方法。
用CNN学习卡尔曼滤波器中伪测量的噪声参数(即何时信任“车辆无横向/垂直速度”这一假设)。