【论文导读】AI-IMU Dead-Reckoning

617 阅读7分钟

论文名称: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)备注
IMLSLiDAR0.98%排名第3的LiDAR方法
ORB-SLAM2双目视觉1.17%经典视觉SLAM
IMU-only(传统积分)IMU171%严重漂移
本文方法(AI-IMU)IMU1.10%仅使用IMU,接近LiDAR精度

本文方法仅使用IMU,即可达到与LiDAR和视觉SLAM相当的精度,显著优于传统IMU积分方法。

用CNN学习卡尔曼滤波器中伪测量的噪声参数(即何时信任“车辆无横向/垂直速度”这一假设)。