社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【泡泡图灵智库】基于深度学习去噪的IMU陀螺仪开环姿态估计

泡泡机器人SLAM • 4 年前 • 1442 次点击  

泡泡图灵智库,带你精读机器人顶级会议文章

标题:Denoising IMU Gyroscopes with Deep Learning

for Open-Loop Attitude Estimation

作者:Martin BROSSARD, Silvère BONNABEL and Axel BARRAU

机构:Centre for Robotics, MINES ParisTech, PSL Research University University of New Caledonia Safran Tech, Groupe Safran, Rue des Jeunes Bois-Chˆ ateaufort

来源:IROS

编译:高云琦

审核:  李永飞

这是泡泡图灵智库推送的第660 篇文章,欢迎个人转发朋友圈;其他机构或自媒体如需转载,后台留言申请授权。

摘要

        大家好,今天为大家带来的文章是Denoising IMU Gyroscopes with Deep Learning for Open-Loop Attitude Estimation。

        本文提出了一种利用地面真实数据ground truth对惯性测量单元(imu)陀螺仪去噪的学习方法,并在航迹推算中实时估计机器人的姿态。所获得的算法在测试序列上优于最先进的算法。性能的提升主要是通过网络模型的设计、适当的定向增量损失函数和高频惯性数据训练时的关键点识别而实现的。该方法建立在dilated convolutions神经网络之上,不需要任何递归神经网络。并使用在姿态估计中最常用的数据集EuRoC和TUM-VI上进行测试取得良好的效果。虽然它不使用视觉传感器,但通过对比试验,可以观察到航迹推算算法在姿态估计方面超过了常见的视觉惯性里程计系统。       

主要工作与贡献

  1. 在数据集中可以迅速训练,每个数据集的训练在5分钟内完成

  2. 对低成本IMU方向学习的增量问题进行了详细建模;

  3. 卷积神经网络回归陀螺校正并仔细选择其特征;

  4. 训练程序包括一个可跟踪的损失函数来估计相对方向增量;

  5. 对无人机和手持设备获取的数据集进行方法评估,其中我们的方法优于[8],并与VIO方法进行比较,虽然本方法不使用视觉;

  6. 基于VIO和IMU的更有效

图1 :方法示意图。卷积神经网络计算陀螺校正(基于过去的IMU测量),从而过滤原始IMU信号中的不良误差。然后,我们对无噪声测量进行开环时间积分,以回归地面真实和估计方向增量之间的低频误差。

算法流程

1.运动学和低成本IMU模型

1.1 基于方向增量的运动学模型

        通过积分IMU的陀螺输出的方向增量,得到刚性平台的三维方向:

1.2 低成本惯性测量单元(IMU)传感器模型

        IMU提供了噪声和偏置测量的角速率以及高频下的特定加速度,在数据集中是200Hz的频率,[2,3]中理想状态下的惯性测量单元的传感器模型,接下来考虑实际情况中的情况,加入噪声项并把校准参数和偏置项由常量变为时变推到如下公式:

其中的噪声假设为零均值的高斯白噪声,得到加速度如下:

式中加速度为不受重力影响,且在全局坐标系中,本征校准矩阵如下:

2.一种IMU去噪的学习方法

2.1 陀螺仪矫正模块

        计算无噪声增量为:

上式中C是固有的误差轴间的对齐误差,并且陀螺仪的偏置误差是被包含在陀螺仪的矫正中。明确考虑到小加速度计对A的影响,不影响结果,因此可以忽略。

        利用深度学习的方法对误差轴间对齐误差和大小为N的滑动窗口进行角速度估计,首先,初始化在原始陀螺仪上修正陀螺,在训练前,误差轴间对齐误差初始化为单位矩阵和滑动窗口角速度初始化为0。这样,使用该方法从第一个训练开始改进估计,进而不会达到过拟合,因为在局部窗口外的测量,即时间戳小于n−N或大于N时,对窗口内的角速度并没有太多的干预,间图2。

图2 :提出了一种神经网络结构,从N个过去的IMU测量数据中计算陀螺校正。卷积神经网络(CNNs)如表所示,并在两个卷积层之间定义批数层[25]和平滑GELU激活函数[26](洋红色箭头)。采用的结构定义窗口大小N = max (kernel dim. × expansion gap) = 7 × 64 = 448,对应过去信息的2.24 s,在数据集[22,23]上测试。

2.2  Dilated convolutions神经网络结构

        定义了神经网络结构,推导出陀螺校正为:

其中,f(.)表示神经网络函数。该网络应该在时间多尺度上提取信息,并计算平滑校正。注意,网络的输入包括IMU数据,即陀螺仪,也包括加速度计的信号。实际上,从(3)开始,如果速度在连续增量之间变化缓慢,可以得到:

        在速度缓慢的情况下根据公式(7)可以推导出角速度的信息。进而说明了加速度计的使用,虽然神经网络不假定小的速度变化,但是在存在大加速度的情况下也能取得较好的成果。

        先利用dilated convolutions来推断基于N = 448个先前测量值的本地窗口的校正,这代表了我们实验中时间戳N之前的2.24秒信息用于训练。使用该方法训练有如下优点:

    a)支持感受野的指数扩张,即N,但不丧失分辨率或覆盖范围;

    b)计算效率高,内存消耗少;

    c)维护数据的时间顺序。

        因此希望网络检测并纠正各种特性,如在公式2中未建模的转子振动,显示在图3中需要学习77 052参数,这是极低的,与最近的(视觉)惯性学习方法,例如[9]IMU处理需要超过2600000参数。

2.3 基于积分陀螺增量的损耗函数

        根据误差直接以估计的角速度和测量的角速度做差,定义一个损失函数,在实践中IMU频率为200Hz时是不可行的,因此将频率调整在20- 120hz之间。现在,根据以下综合增量来定义损失:

例如当IMU由因子j导致频率下降时。将通过(9)式计算j引起的损失:

在实验中设置Huber损失参数为0.005,定义损失函数:

图3 :通过方向积分(8)为矩阵乘法树来计算损耗(9)的时间效率。长度j的计算需要log2(j)的“批处理”操作,如左边的蓝色垂直箭头所示。在上面的图表中,看到j = 8需要3批并行操作。同理,对于j = 32,只需要5次操作。

2.4 计算效率分析

        首先,由于并行化的应用可以在在exp(·)等运算上,一个或并行的做许多的角速度估计,在一个GPU上做相似的执行时间(通过实验发现,使用显卡GTX1060,一个操作需要5 ms,而1000万个操作并行操作时需要70 ms,每个操作的时间降到7 ns,如果使用更高的显卡可能会产生更好的结果)。把并行应用于多个实例的操作称为一个批处理操作。也就是说,(8)的一个明显缺点是需要进行j次矩阵乘法,即j次运算。可以通过计算一次地面真值存储它,然后我们只需要多次计算即可。

        其次,将(8)视为矩阵乘法树,如图3所示,我们仅仅将计算减少到log2(j)个GPU批处理操作。最后应用下采样,每j个时间戳取一个i,以避免计数多次相同的增量。训练速度因此增加了一个因数32/log2(32)≈6。

2.5 使用数据增强进行训练

        数据增强是一种显著增加训练数据多样性的方法,无需实际收集新数据,以避免过拟合。对于第二节的IMU模型,可以通过添加高斯噪声,添加静态偏置,不校准IMU,并在加速度计测量中改变IMU的方向来实现这一点。前两点可以参考[8],虽然每一点都可能增加数据的多样性,但发现它们并不一定会改善结果。我们选择仅添加一个高斯噪声,在每个训练epoch,其标准差是数据集提供的标准偏差的一半(0.01 deg/s)。

实验结果

1.Datasets

        EuRoc:数据集[12]包含来自微型飞行器的 200Hz 的图像和惯性数据,分为 11 个飞行轨迹,在两个环境中飞行 2-3 分钟。ADIS16448 IMU是未经校准的,尽管动态运动会降低测量精度,但我们从激光跟踪器和运动捕捉系统中注意到ground truth与IMU具有精确的同步时间。由于数据集制作过程中的缜密,网络对小的偏差变化有较少的适应程度。

        定义训练集为MH{01,03,05}, V1{02}, V2{01,03}六个序列的前50 s,验证集为这些序列的剩余部分,测试集由剩余的五个序列组成,仅使用8分钟的精确数据进行训练——每条轨迹的起点和终点是最精确的测量——就足以获得相关结果。

       TUM-VI: 最新数据集[13]由手持设备在不同场景中的视觉惯性序列组成。廉价的BMI160 IMU以200 Hz的频率记录数据,并进行了适当的校准。Ground truth与IMU精确时间同步,尽管每个序列都包含持续时间为0.2 s的周期瞬间,由于采集平台对运动捕捉系统隐藏,Ground truth不可用,见图4。选取6个房间序列,它们都是地面真值最长的序列(每个2-3分钟)。

图4 :room 1的水平地面真实轨迹。由于手持设备与运动捕捉系统的遮挡,地面Ground truth 会周期性地消失,如图右侧的色线所示。

        定义训练集为room 1、room 3和room 5序列的前50秒,验证集为这些序列的剩余部分,测试集为其他3个房间序列。这相当于45000个训练数据点(EuRoC为90000个),其顺序与优化参数的数量相同,即77052个,并且需要正则化技术,如训练过程中的权重衰减。

2.评价指标

        绝对定向误差(AOE):计算给定序列的地面真值和估计值之间的均方误差,其中M是序列的长度,log(.)是 时SO(3) 的对数映射,并且在n = 0的第一瞬间,估计的轨迹已经与地面真相对齐。

        相对定向误差(ROE),计算方法为:对于每一对表示IMU位移7、14、21、28或35米的时间戳(n, g(n))。使用公式(12)计算误差,其中包括计算中位数和百分位数等信息统计数据。用ROE来比较里程法估计方法优于AOE的方法,因为AOE对估计误差发生的时间高度敏感。最后,在考虑偏航误差时,使用(11)-(12)的轻微变化,在视觉里程计中使用偏移轨迹的距离作为尺度因子,而惯性方法的误差考虑以时间为尺度,参考[15]中使用误差W.R.T距离,以便于进行比较,并且相同的结论适用于计算不同时间的ROE

3.结果

        表1和图5分别给出了AOE和ROE的结果。图6显示了每个数据集测试序列的滚动、俯仰和偏航估计,图7显示了方向误差。

表1 :测试序列上的三维方向/偏航的绝对方向误差(AOE)。该方法可以与VIO(尽管完全基于IMU信号)竞争,并且优于其他惯性方法。OriNet的结果在tum - vi数据集上不可用。

图5 :相对方位误差(ROE)是指测试序列上的三维方位误差和偏航误差。虽然该方法仅基于IMU信号,但其性能优于校准IMU,并与VIO方法相竞争。

图6 :对[22]MH 04 difficult(左)和room 4[23](右)的测试序列进行定向估计。我消除了校准IMU的误差,并与VIO算法比较

图7 :room 4的定位错误。该方法消除了校准IMU的误差,并与VIO算法比较

图8 :room 4序列的角速度校准校准结果至少减少2 w.r.t,使其保持在1°的偏差内

如果你对本文感兴趣,想要下载完整文章进行阅读,可以关注【泡泡机器人SLAM】公众号

点击阅读原文, 即可获取本文下载链接。

欢迎来到泡泡论坛,这里有大牛为你解答关于SLAM的任何疑惑。

有想问的问题,或者想刷帖回答问题,泡泡论坛欢迎你!

泡泡网站:www.paopaorobot.org

泡泡论坛:http://paopaorobot.org/bbs/


泡泡机器人SLAM的原创内容均由泡泡机器人的成员花费大量心血制作而成,希望大家珍惜我们的劳动成果,转载请务必注明出自【泡泡机器人SLAM】微信公众号,否则侵权必究!同时,我们也欢迎各位转载到自己的朋友圈,让更多的人能进入到SLAM这个领域中,让我们共同为推进中国的SLAM事业而努力!

商业合作及转载请联系paopaorobot@163.com

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/118706
 
1442 次点击