Differentiable SLAM-net 论文笔记

Differentiable SLAM-net: Learning Particle SLAM for Visual Navigation

可微的SLAM-net:可以学习的粒子SLAM视觉导航

Abstract 摘要

引入differentable的SLAM-net和一个导航体系结构,使得平面机器人在未知的室内环境中进行导航。SLAM-net在可微计算图中编码基于粒子滤波的SLAM算法,并通过SLAM算法反向传播学习面向任务的神经网络组件。在RGB和RGB-D数据集中进行了实验,在有噪声的环境中显著优于ORB-SLAM。

Introduction 引言

SLAM-net的核心思想是在可微的计算图中编码SLAM算法,并通过算法反向传播梯度端到端学习SLAM算法的神经网络模型组件。具体来说,SLAM-net对基于粒子滤波的FastSLAM算法[46]进行编码,学习映射、过渡和观测模型。SLAMnet填补了文献中关于可微机器人算法的空白。
在这里插入图片描述

可微的SLAM-net。全局地图由一组学习过的局部网格地图来维护。轨迹由粒子滤波器跟踪。粒子代表轨迹,它们由学习过的神经网络组件更新:映射、过渡和观察模型。

Related work 相关工作

  • Learning based SLAM

    相比其他基于学习的SLAM工作,将端到端学习的方法运用于所有组件而不只是视觉里程计。

  • Classic SLAM

    选择基于滤波的算法由于可微粒子滤波性的实用性以及对downstream机器人导航的可用性

  • Differentable algorithms

    基于Dense slam meets automatic differentiation,在其基础上进行深度学习

  • Visual navigation

    我们提出了一个与Neural SLAM[10]类似的导航体系结构,但使用了我们的可微SLAM-net模块来代替学习的视觉里程计。

Differentiable SLAM-net 可微性 SLAM-net

输入是RGB(D)观测,输出是位姿估计和全局地图。SLAM-net假设机器人的运动(大部分)是平面的。位姿为2D坐标,1D方向;全局地图是一个二维网格。

在内部,SLAM-net将全局地图表示为一组局部地图的集合,每个地图都与局部到全局的转换相关联。该算法在未知机器人轨迹上保持一个分布,并使用粒子滤波[17]进行闭环。

我们的算法基于FastSLAM[46;47],我们的可微实现建立在PF-nets[35]上。

算法工作如下:

粒子滤波器保持粒子权重为K,每个粒子代表一个轨迹,t=0时,所有粒子的轨迹都设定为原点,粒子权重为常数,局部地图集合为空集。每一个时间步长中,一个地图模型用输入观测ot和被添加到集合中的mt预测一个局部地图mt。粒子轨迹用一个概率转移模型的样本进行扩展,该模型估计给定Ot和Ot-1的相对运动。然后使用观测模型更新粒子权值,该模型测量mt和过去局部地图m1:t−1的兼容性,假设粒子轨迹sk0:t是正确的。姿态输出是通过取粒子轨迹的加权和得到的。可选地,通过简单的二维图像变换,将沿着平均轨迹的局部地图组合在一起,就可以获得全局占用网格地图(类似二维的八叉树地图)。

slam-net的关键特性是端到端可微分。也就是说,地图模型(mapping model)、过渡模型(transition model)和观测模型(observation model)都是神经网络,它们可以一起训练,以达到提高定位精度(和/或改善全局地图质量)的最终目标。为了使算法具有可微性,我们使用重参数化技巧[38]对转换模型中的样本进行区分;我们用空间变换[30]来表示可微映射变换。该算法的其余操作,正如所述,已经是可微的。虽然在我们的实验中没有使用,但可微粒子重采样可以结合之前的工作[35;68;15]。

接下来分别介绍三个部件。

Transition model 转换模型

过渡模型是一个CNN,它接受连接的当前和上一个的观测值ot和ot−1,并输出相对二维位姿和一维方向的高斯混合模型参数,分别使用独立的学习均值和方差。过渡模型被预先训练,以最大化沿着训练轨迹的真实相对姿态的对数似然性。然后,它将与针对最终目标进行优化的其他SLAM-net组件一起进行微调。

Mapping model 地图模型

地图模型是一个带有预输入视点(perspective)转换层的CNN。输入为观测Ot 输出为局部地图mt。局部地图有两个作用:

  • 一是提供给观测模型
  • 二是通过回环辅助姿态估计;并构建一个全局导航地图

在一种配置中,本地地图编码占用率,即为了导航的目的该区域被占用的概率。该模型是用实际占用率的(每个单元 per cell)分类损失进行训练的

另一种配置中,局部地图编码学习到的潜在特征,这些特征没有关联的意义。该模型通过对观测模型进行反向传播来训练以达到最终目标。

在这两种情况下,我们都发现添加一个额外的通道来编码所捕获区域的可见性是很有用的。

对于深度输入(RGB-D),这是通过投影计算的;对于RGB输入,它由网络预测,使用投影深度进行监督(监督学习)。

Observation model 观测模型

观测模型是最重要的一部分,若粒子轨迹sk0:t是正确的 它根据当前局部地图mt和上一个局部地图m1:t−1的“兼容性”来更新粒子权重K。我们需要直观地衡量局部地图是否以一致的方式捕获相同的区域。形式上,我们的目标是估计一个与对数概率成正比的相容性值
在这里插入图片描述

我们提出了一个有区别的观察模型,将成对的局部地图与学习过的CNN进行比较。CNN将一个当前的局部地图mτ和一个过去的局部地图mτ串联起来,并输出一个兼容性值。重点是根据粒子轨迹中的相对位姿,将过去局部地图转换为当前局部地图的视点。使用空间转换器[Spatial transformer networks. InAdvances in neural information processing systems]

整体相容性的值是沿粒子轨迹两两相容性值的和。估计了所有粒子的相容性值。然后,通过与指数相容值相乘更新粒子权重,并在粒子之间对它们进行标准化。CNN的权重被共享。

由于计算的原因,我们只比较最相关的地图对,而不是比较所有的局部地图对。在训练过程中,我们选择最后4-8个步长/(step);在推理(inference)过程中,我们根据最大的重叠视图区域(使用简单的几何图形进行估计)动态选择8个步长。

Training and inference

我们的训练数据包括图像-姿势对轨迹(深度或RGB图像,2D姿势和1D方向);以及可选的ground-truth全局占用图,用于地图模型的预训练数据。端到端的训练目标为二维位姿误差和一维方向误差的Huber损失之和。

我们在多个阶段进行训练。我们首先对转换模型进行预训练。我们分别对观测模型和地图模型进行预训练,但设置为低噪声。也就是说,我们使用带小加性高斯噪声的相对运动真值来代替过渡模型。最后,我们将所有的模型结合在一起,为最终目标进行微调。在微调过程中,我们冻结了转换模型的卷积层和混合头。当映射模型被配置为预测占用率时,它将被单独训练,并在微调期间冻结。

训练SLAM-net的一个重要挑战是通过大型计算图进行反向传播的计算和空间复杂性。为了克服这个问题,在训练过程中,我们只使用了短轨迹(4-8步),并且k = 32个粒子而不重新采样。在推理过程中,我们使用全长轨迹,默认情况下tk = 128个粒子在每一步中重新采样。

Implementation details 实现细节

基于PF-net[35]的开源代码,我们在Tensorflow中实现了SLAM-net。我们采用的训练策略是,如果验证误差在4个epoch内没有改善,学习率会下降。我们执行4个这样的衰减步骤,训练结束后,存储验证误差最小的模型。对于端到端训练,批处理的大小是16,对于地图和转换模型的预训练是64。我们使用Nvidia GeForce GTX 1080 gpu进行训练和推理。

Visual Navigation with SLAM-net 使用SLAM-net进行可视化导航

在这里插入图片描述

提出了一种视觉导航流程,将SLAM-net与路径规划和运动控制模块相结合。

流程中,slam-net 周期性地预测机器人的姿态和全局占用网格图。地图和位姿将被提供给2D路径规划器,从而规划出通往目标的路径。然后由一个局部控制器跟踪路径,输出机器人的动作

Task specification

一个机器人使用嘈杂的RGB(D)输入导航到之前未见过的公寓的目标。目标由相对于初始姿态的坐标定义,但此后机器人的位置未知,离散的机器人动作会产生噪声运动。如果机器人在距离目标0.36米的范围内采取一个专门的停止动作,则导航成功。注意,这个成功的标准高度重视姿态估计的准确性。(Habitat 2020 PointNav Challenge)

Path planner

在视觉导航的背景下,路径规划的挑战是地图和机器人姿态的不完全局部知识。为了解决这个问题,我们采用了D*算法[40]的一个加权变体,其cost是将靠近障碍物的移动视为惩罚。在地图和姿态被SLAM-net更新的每一步中,路径都会被重新规划。我们将占用网格地图转换为一个8连接的网格,其中单元格们被分配了一个cost。我们为地图占用设定阈值(p >0.5是一个障碍,p <= 0.5是自由空间),并根据到最近的障碍的距离定义单元格cost。

此外,我们使用碰撞恢复机制。在检测到碰撞后,障碍物以当前估计的姿态注册到地图上。然后命令机器人转身(6个转身动作)并后退一步(1个向前动作)。碰撞不能直接观测到。我们触发碰撞恢复,如果估计姿态变化不超过3厘米后,向前行动。Chaplot et al.[10]提出了类似的机理。

Local controler

规划的路径由一个简单的控制器跟踪,控制器选择转弯或向前移动,瞄准路径上最远的直线可通过点。控制器的输出是离散动作。

Experiment 实验

SLAM results

Learned vs. handcrafted SLAM components

有趣的是,SLAM-net的表现优于FastSLAM。算法是完全一样的,不同的是FastSLAM有简单的手工制作的模型组件,而SLAM-net有端到端学习的神经网络组件。

首先,我们的神经网络可能编码了比手工模型更强大的功能,其次,我们的学习是端到端的模型,因此,它们在算法和数据集的相关内容中针对任务进行了优化。

Why does ORB-SLAM fail?

ORB-SLAM依赖于帧间的时间一致性来跟踪特征,由于传感器噪声、稀疏视觉特征、快速转弯(约90◦/s)、低帧率(3帧/秒)、窄视野(HFOV=70◦)的综合效应,这在我们的领域也是一个挑战。我们发现即使使用RGB-D输入,ORB-SLAM也常常无法跟踪特征。如果只使用rgb输入,几乎所有步骤都会失败,因此我们无法报告有意义的结果。与ORB-SLAM相比,SLAM-net并不明确依赖于特征跟踪,它学习面向任务的模型,例如,学习该领域更有力的特征提取器

在表4中,我们在traj_expert数据的理想设置下评估ORB-SLAM。每一行消除了不同类型的挑战:无传感器噪声,无驱动噪声,高帧率,和理想的条件。高帧率设置减少了Habitat中的动作步长,以实现相当于3 ~ 30fps的帧率增长。理想的条件设置同时消除了上述所有挑战。我们的结果表明,ORB-SLAM只在理想条件下工作得很好,在最困难的条件下,其性能可与SLAM-net相媲美。如果我们只移除一种类型的挑战,那么表现仍然会非常糟糕。RGB-D结果表明,低帧率的影响最大。对于RGB,趋势相似,但观测噪声的存在使特征跟踪完全失败。

Conclusion 结论

我们相信,我们在可微分SLAM上的工作可能会为一种新的方法奠定基础,这种方法可以为SLAM学习鲁棒性好的、面向任务的特征。未来的研究可选择可微SLAM算法,如:一种基于优化的方法,而不是粒子滤波。虽然我们的初步结果很有希望,但未来的工作还需要将slam-net应用到现实世界的机器人导航中。一个特别有趣的应用程序将是学习在环境中发生重大变化的情况下重新定位,这一设置已知对现有SLAM算法具有挑战性。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值