在SLAM的傻瓜书中,当机器人使用从激光扫描仪获取的比里程表更准确的数据时,为什么我们甚至还需要里程表?为什么不仅仅依靠激光扫描仪而远离里程表呢?里程数测量仪对激光扫描仪没有任何帮助吗?另外,所有SLAM算法都是基于功能的吗?

评论

请一次提出一个问题。但是我都试图回答。现在,请不要编辑问题以询问更多信息。而是在单独的问题中提问。谢谢!

#1 楼

您读得太窄了。


您不需要“里程表”。 SLAM只是一种将任何传感器估算值融合到对机器人状态的一致估算值中的一种方法。
传感器融合的第一个原理:两个估计比一个更好!

示例

我还没有读过“傻瓜书”,但是如果他们不做下面的数字示例,那我就把这本书放火烧了更好的一个。如果他们有这个示例,那么我想知道为什么您没有提到它!

(您可以在此处进行数学运算) $ x = 0 $,并向右移动(增加$ x $)。在这个完美的世界中,动力学和传感器模式是线性的。 (否则,请使用EKF,PF或其他变体)。激光扫描仪获取具有传感器偏差$ \ sigma_l ^ 2 = .1 $
的距离机器人可以使用传感器偏差$ \ sigma_o ^ 2 = 0.5显然,激光比odos更精确。

这是机器人在这种简单环境中处理SLAM的方式。 (请注意,这实际上是本地化,因为我们没有更新墙的位置。)


机器人尝试向右移动一个单元。 = .9 $
激光扫描仪说您是$ 8.8 $的单位。 (表示您的年龄为1.2)

问题:您在哪里?


您选择最佳的传感器吗?在这种情况下,激光是最好的吗?因此,显然我的价格是$ x = 1.2 $。
您是否选择了最接近您期望的一个?好吧,在这种情况下,我认为我们应该使用测距法,因为$ .9 $接近我的预期(移动一个单位)。好吧,这样比较好,但是容易受到异常值的影响。
闪亮的传感器融合原理告诉您如何回答以下问题:

您对机器人位置的最小均方估计为:

$$ x_ { mmse} = \ frac {\ sigma_l ^ 2} {\ sigma_o ^ 2 + \ sigma_l ^ 2}(。9)+ \ frac {\ sigma_o ^ 2} {\ sigma_o ^ 2 + \ sigma_l ^ 2}(1.2)$ $
$$ x_ {mmse} = \ frac {.1} {。6}(。9)+ \ frac {.5} {。6}(1.2)$$
$$ x_ { mmse} = 1.15 $$

...除非我将代数搞砸了。人们使用数学方法对飞机进行本地化并不比这复杂得多。

#2 楼

如果您了解传感器融合的原理,那么以正确的方式组合数据总会得到更好的估计。例如,如果要在具有3个不同温度传感器的房间中测量温度,则仅使用最佳传感器并不是理想的选择。理想的情况是创建每个传感器的加权组合,其中传感器的权重与该传感器的方差成正比。更不用说,里程表数据非常好。这是嘈杂的地标提取,很可能会有更高的方差。

如果从高级角度考虑,还需要基于测距法进行运动更新。如果仅使用地标,那么情况将不明确。以仅标识一个地标的情况为例。您的机器人到地标的距离为z,但这将映射到地标周围的无限个点。如果您发现零个地标,那么您将无能为力!通过包含里程表,我们不再有歧义。假设我们要在2D平面(x,y)中进行本地化,那么您必须保证至少有3个地标的读数才能在没有测距的情况下对位置进行三角测量,并且您不能在正常环境中做出保证。

最后,编码器可以50Hz左右的频率采样,而LIDAR只能以6-7Hz左右的频率采样(在这些频率上不要引用我)。这意味着通过测距法可以比从传感器读数更频繁地更新当前位置。这甚至都没有考虑到您需要花费多长时间来处理传感器读数以识别界标!

#3 楼

只是加起来,使用测距法估计机器人的位置要比使用激光扫描仪的数据快得多。在大多数情况下,来自范围扫描仪的数据将作为2D PointCloud处理。这意味着,为了估计位置A,B之间的相对姿态,您需要对齐其对应的PointClouds并找到该对齐操作的最可能姿态。为此,您可以使用ICP或类似的算法,由于其迭代性质,因此计算量很大。

另一方面,使用里程信息(例如来自车轮编码器的信息),您只需将当前的姿势估计值加起来即可,而这只是两个概率密度函数之和(当前估计值+增量里程表读数)

#4 楼

EKF原则已在其他答复中得到了很好的解释。

我想补充一点,您可以在不使用Odometry的情况下(例如仅使用LIDAR)进行SLAM。

“还有,所有SLAM算法都是基于功能的吗?”