学习用主动神经slam进行探索

LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM(学习用主动神经slam进行探索)

参考

[1] Chaplot D S, Gandhi D, Gupta S, et al. Learning to explore using active neural slam[J]. arXiv preprint arXiv:2004.05155, 2020.

摘要:一种模块化、分层化设计的主动神经slam方法,包含传统方法模块和基于学习的模块(使用具有学习SLAM模块的分析路径规划器以及全局和局部规划策略)。基于学习的slam模块的使用提供了输入模式的灵活性,全局策略利用了世界的结构规律,局部规划策略对状态估计中的错误具有鲁棒性,分层分解及模块化训练降低训练难度和样本效率,提升方法的解释性。

设计动机

  1. 基于学习的方法可以:
  • 适应多模态输入
  • 提升对显式状态估计的鲁棒性
  • 高效学习场景中的结构规律,提升到新场景中的泛化性
  1. 仅从数据中以端到端的方式学习建图、状态估计和路径规划可能会非常样本昂贵,使用IL等方式的训练效果一般。
  2. 希望保留基于学习的方式的优点,同时避免全面端到端带来的缺点。

key insight: 由于利用学习来利用室内环境的结构规律、对状态估计误差的鲁棒性和对输入模式的灵活性,都发生在不同的时间尺度上,因此可以被分层解决,而无需整个流程全面端到端来学习。这促使人们在所谓的“经典导航管道”中以模块化和层次化的方式使用学习。

ideal results:这使得导航策略可以处理RGB图像等原始感官输入,对状态估计误差具有鲁棒性,并利用现实世界布局的规律性。这导致了与基于几何的方法和最近基于学习的方法相比极具竞争力的性能;同时需要样本数量的一小部分。

任务定义

目标:学习一个策略,输入观测值,输出动作指令,使得机器人在固定的时间长度内最大化覆盖的可通行区域面积。
场景:habitat simulator + Gibson and MP3D datasets
由于运动和传感器噪声模型尚不清楚,之前的工作都简化了智能体的运动模型。为了提升运动的真实性,以更好训练一个逼真的slam系统(为了实际的pose estiamtion),收集了现实世界中的运动和传感器数据,并在模拟器中实现更真实的机器人运动和传感器噪声模型。具体做法如下:

姿态:(x,y,o) #xy坐标和yaw角
动作: u f o r w a r d = ( 0.25 , 0. , 0. ) , u l e f t = ( 0 , 0 , 10 π / 180 ) , u r i g h t = ( 0 , 0 , − 10 π / 180 ) u_{forward}=(0.25, 0. ,0.), u_{left}=(0, 0, 10 \pi / 180), u_{right}=(0 , 0, -10\pi/180) uforward=(0.25,0.,0.),uleft=(0,0,10π/180),uright=(0,0,10π/180)
噪声模型:

  • 动作噪声模型: ϵ a c t = p r e a l − p i n t e n d = p r e a l − ( p 0 + u ) = ( x ∗ − x a , y ∗ − y a , o ∗ − o a ) \epsilon_{act}= p_{real} - p_{intend} = p_{real} - (p_0 + u) = (x^* - x_a, y^* - y_a, o^* - o_a) ϵact=prealpintend=preal(p0+u)=(xxa,yya,ooa)
  • 传感器噪声模型: ϵ s e n = p s e n − p r e a l = ( x ′ − x ∗ , y ′ − y ∗ , o ′ − o ∗ ) \epsilon_{sen}=p_{sen} - p_{real} = (x'-x^*,y'-y^*,o'-o^*) ϵsen=psenpreal=(xx,yy,oo)

由于机器人向前运动也会有附带的左右旋转,而旋转时也会产生平移,因此对于每一个动作指令都有2个模型,总共6个模型,都分别使用GMM(高斯混合模型,3维参数)拟合,每个模型都使用LoCoBot机器人采集600个数据点。使用交叉验证来选择每个高斯混合模型中的分量数量。建立后,在habitat仿真器中加入噪声,提升运动和感知的真实性。

方法论

提出的探索架构包括一个学习的神经SLAM模块、一个全局策略和一个局部策略,它们通过地图和一个分析路径规划器连接。学习的神经SLAM模块生成自由地图,并根据输入的RGB图像和运动传感器估计姿态。全局策略使用带有姿势的地图,并利用学习来利用现实世界环境布局中的结构规律来制定长期目标。这些长期目标用于为局部策略生成短期目标(使用几何路径规划器生成)。此局部策略使用学习将原始RGB图像和短期目标直接映射到应执行的操作。在SLAM模块中使用学习提供了输入模态的灵活性,学习的全局策略可以利用现实世界环境布局中的规律,而学习的局部策略可以使用视觉反馈来展示更稳健的行为。同时,分层和模块化设计以及分析规划的使用,大大减少了训练过程中的搜索空间,从而提高了性能和样本效率。具体结构如下:

在这里插入图片描述
具体每一个模块:

  • 神经SLAM模块:基于当前的观测和之前的预测结果来进行地图和姿态的预测。
    • 地图的表示:
      在这里插入图片描述
    • 模块学习:该模块结构如下图所示, 总体框架的数学描述如下:

    m t , x ^ t = f s l a m ( s t , x ′ t − 1 : t , x ^ t − 1 , m t − 1 ∣ θ S , b t − 1 ) m_{t}, \hat{x}_{t}=f_{slam}(s_t, {x'}_{t-1:t}, \hat{x}_{t-1},m_{t-1}|\theta_{S},b_{t-1}) mt,x^t=fslam(st,xt1:t,x^t1,mt1θS,bt1)
    其中 s t ∈ R 3 × H × W s_t \in \R^{3 \times H \times W} stR3×H×W是RGB图像, x t − 1 : t ′ x'_{t-1:t} xt1:t是当前和上一帧的位姿传感器读数, θ S \theta_{S} θS为i模型参数, b t − 1 b_{t-1} bt1是网络的内部中间表示。最终输出当前估计位姿和地图。

在这里插入图片描述
整个模块分为两部分, f M a p 和 f P E f_{Map}和f_{PE} fMapfPE。Mapper输出自我中心的俯视2D空间地图 p t e g o ∈ [ 0 , 1 ] 2 × V × V p_{t}^{ego} \in [0, 1]^{2 \times V \times V} ptego[0,1]2×V×V(V是视觉感知范围),即 p t e g o = f M a p ( s t ∣ θ M ) p_t^{ego}=f_{Map}(s_t|\theta_{M}) ptego=fMap(stθM),该地图基于当前观测预测障碍物和探索区域。
该Mapper模块由 Resnet18卷积层来处理输入观测,转化为embeddings,然后由两层全连接层和3个反卷积层来输出预测的第一人称视角下的2D俯视地图。
然后需要将该地图融入全局的地图中,但是为了将自中心地图转换为全局下,我们需要机器人在全局中的姿态。而传感器读数 x t ′ x'_t xt通常有噪声。因此,我们有一个姿态估计器来校正传感器读数,并给出姿态估计。于是引入了 f P E f_{PE} fPE
为了纠正传感器的姿态估计,首先利用前后两帧的传感器姿态( x t ′ , x t − 1 ′ x'_t,x'_{t-1} xt,xt1)计算 d x dx dx。然后利用Spatial Transformation(ST) layer将上一帧的自我中心地图 p t − 1 e g o p_{t-1}^{ego} pt1ego转化到当前自我中心系下,即 p t − 1 ′ = f S T ( p t − 1 e g o ∣ d x ) p'_{t-1}=f_{ST}(p_{t-1}^{ego}|dx) pt1=fST(pt1egodx)。注意到此时该ST无任何学习的参数,只是基于dx来进行一个空间变换。然后变换后的上一帧 p t − 1 ′ p_{t-1}' pt1和当前的 p t e g o p_t^{ego} ptego有很大重叠(如果基于传感器计算的dx很准的话)。那么此时 f P E f_{PE} fPE就可以基于此来修正(通过查看最后两帧的自我中心地图预测,姿态估计器可以学习预测较小的平移和/或旋转,从而更好地对齐它们)。则修正的 d x ^ t = f P E ( p t − 1 ′ , p t e g o ∣ θ P ) d\hat{x}_t=f_{PE}(p'_{t-1},p_{t}^{ego}|\theta_{P}) dx^t=fPE(pt1,ptegoθP),最后修正后的姿态估计为 x ^ t = x ^ t − 1 + d x ^ t \hat{x}_{t}=\hat{x}_{t-1}+d\hat{x}_t x^t=x^t1+dx^t f P E f_{PE} fPE由3层卷积层和3层全连接层构成。
最后再将当前帧下所估计的 p t e g o p_{t}^{ego} ptego转化到世界系下(基于刚刚估计的 x ^ t \hat{x}_{t} x^t,再使用一次ST),然后使用通道池操作与之前的空间地图 m t − 1 m_{t-1} mt1聚合: m t = m t − 1 + f S T ( p t e g o ∣ x ^ t ) m_t=m_{t-1}+f_{ST}(p_t^{ego}|\hat{x}_t) mt=mt1+fST(ptegox^t)
最后总的来说,神经网络的slam模块数学描述如下:
在这里插入图片描述

  • 全局策略模块:利用预测的地图和机器人姿态产生一个长期目标点。
    输入为 h t ∈ [ 0 , 1 ] 4 × M × M h_t \in [0,1]^{4 \times M \times M} ht[0,1]4×M×M。其中前俩个通道的值为预测的地图,后两个通道的值分别代表当前的机器人位置和是否访问过的区域。具体如下:
    在这里插入图片描述

    上述的 h t h_t ht并非直接输入全局规划器,而是经过两层变换,第一种是降采样为 4 × G × G 4\times G \times G 4×G×G,第二种是max pooling为 4 × G × G 4 \times G \times G 4×G×G,然后两者stack为8通道的输入全局规划器,即 g t l = π G ( h t ∣ θ G ) g_t^l=\pi_{G}(h_t|\theta_{G}) gtl=πG(htθG),其中 g t l ∈ g_t^l \in gtl G × G G \times G G×G 空间。

  • 分析路径规划器:将长期目标点转化为短期目标点。
    基于FMM算法: g t s = f P l a n ( g t l , m t , x ^ t ) g_t^s=f_{Plan}(g_t^l, m_t, \hat{x}_t) gts=fPlan(gtl,mt,x^t),未探索的区域视为空闲区域。并且约束最远的短期目标点在当前规划的路径上与当前距离不超过 d s = 0.25 m d_s=0.25m ds=0.25m

  • 局部策略模块:基于短期目标点和当前传感器观测生成动作指令以抵达短期目标点。
    首先将短期目标点转化到当前系下,表示为距离和角度。使用的策略网络为预训练的ResNet18来处理输入的RGB图像,再加RNN,实现 a t = π L ( s t , g t s ∣ θ L ) a_t=\pi_L(s_t, g_t^s|\theta_L) at=πL(st,gtsθL)

实验与结果

使用Gibson进行训练,使用MP3D进行泛化实验验证。

  • RGB:3 X 128 X 128
  • SENSOR: 3 X 1 (x, y , orientation)
  • ACTION: move_foraward, turn_left, turn_right
    (SENSOR和ACTION都是含有噪声,由上述噪声模型注入)
    目标:给定时间步长(训练时1000steps)内最大化覆盖面积。
    指标:Cov:绝对覆盖面积( m 2 m^2 m2); %Cov:相对覆盖面积。
    使用《Habitat: A platform for embodied ai research》中的训练集、验证集和测试集划分(请注意,每次分割中使用的场景集是不相交的,这意味着代理在训练过程中从未见过的新场景上进行测试)。

训练细节

  • Mapper和Pose EStimator都采用监督学习,真值的自我中心地图由真值的深度图反投影得到。
  • Global policy采用RL训练(PPO),奖励函数正比于覆盖率的增加。
  • Local policy由模仿学习训练(behave cloning)。
  • 所有模块都是同时训练的。它们的参数是独立的,但数据分布是相互依存的。基于local policy采取的行动,神经SLAM模块的未来输入会发生变化,这反过来又会改变global policy的地图和姿态输入。

结果:
由于分层架构的设计,减少了长期目标探索问题的视野长度(horizon),因为全局策略只采取了很少的长期目标动作,而不是采取很多低级的导航动作。(个人理解:全局策略的长期目标点是低频稀疏的,而转为更多的局部短期目标点,这样覆盖大部分过程都发生在去往长期目标点(期间短期目标点不断更新),也就是长期目标点不会老跳动)。
在这里插入图片描述
消融实验结果:

  • 使用确定性的planner,性能略差,因为local policy融合RGB信息,可以应对一定的建图误差;
  • 基于Frontier的探索策略在小场景上的性能相当,但在大场景上比全局策略低约10%。这表明了与大型场景中的经典探索方法相比,学习的重要性。从定性上讲,观察到基于Frontier的探索花费了大量时间探索家具后面的角落或小区域。相比之下,global policy忽略了小空间,选择了遥远的长期目标,从而提高了覆盖率。
  • ANS和基线之间的区别在于,ANS使用额外的监督来训练姿态估计器。从ANS中删除姿态估计器,只使用输入传感器读数作为我们的姿态估计。表明即使没有姿态估计器,ANS仍然优于基线。我们还观察到,在小场景中,没有姿态估计器的性能仅下降了约1%,但在大场景中下降了约10%。这是意料之中的,因为更大的场景需要更长的时间来探索,并且随着时间的推移,姿势误差会逐渐累积,从而导致漂移。将地面真实姿态作为输入传递给基线方法而不是传感器读数并没有提高它们的性能。
    在这里插入图片描述

优点和缺点(展望)

  • 未来,所提出的模型可以通过使用语义神经SLAM模块扩展到复杂的语义任务,如语义目标导航和具身提问问答导航,该模块创建了一个多通道地图,捕捉环境中对象的语义属性。
  • 该模型还可以与之前的定位工作相结合,在之前创建的地图中重新定位,以便在后续剧集中进行高效导航。
  • 通过显示的地图来保持对场景理解的记忆。这样可以进行显式的路径规划,从而更好地探索以及采样效率高。
  • 地图中不含语义信息,只是最大化覆盖率,停留在几何导航上;以及也没学到一些语义先验(深层次的场景理解,比如盘子大概率在厨房)。

TODO NEXT:解读其续作:Object Goal Navigation using Goal-Oriented Semantic Exploration

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值