测距设备 如今比较常用的测距设备是激光扫描仪。它们的优点是精度高,高效,输出数据的处理不需要耗费大量时间,但缺点是他们很贵,一个SICK扫描仪需要花费5000美金。激光扫描仪的问题在于在观察如玻璃这种特定表面时输出数据会很糟糕。由于水对光的的干扰作用,它们也不能用于水下,并且在水中观测的有效范围也会大幅下降。 第二种选择是声呐。声呐在几年前被广泛的使用,与激光扫描仪相比他们十分便宜,但相比之下测量效果很差,输出的数据很糟糕。激光扫描仪会从扫描发射器处发射出一条笔直的扫描线,扫描线的角度很小,只有0.25度。而声呐可以达到30度的宽度。 在水下,声呐是最好的选择,并且声呐的原理与海豚的导航方式很接近。宝丽来声呐是一种常用的声呐,它的开发初衷是用于宝丽来相机的拍摄。在文献[7]给出了一个声呐应用的成功案例。 第三个选择是使用视觉传感器。习惯上而言,使用视觉的方式是计算密集型的并且由于光照变化会导致误差的产生。如果房间内没有光,视觉系统将几乎无法工作。在最近几年,这个问题的相关领域产生了一些有趣的进步。使用立体视觉系统或triclops测量距离。使用与人类观察世界相似的视觉传感器相比激光与声呐而言可能会有更加直观的吸引力。并且一幅图片的信息量比激光与声呐的扫描图相比更加丰富。这也曾是一个瓶颈问题,因为所有的数据都需要被处理,计算量大,但随着算法与计算机计算能力的提升,这也已经不是什么大问题了。文献[8]给出了一个基于视觉的距离测量方法的成功案例。 我们决定选择使用SICK的激光雷达,它应用广泛,不会对眼睛造成伤害并且在SLAM的应用中表现出良好的特性。测量误差在+-50mm,虽然看起来似乎很大,但在实际应用中这个误差是十分微小的。SICK的最新版激光雷达的误差已经下降到+-5mm了。 5.SLAM的过程 SLAM的过程包括以下几步,这个过程的目标是使用环境信息来更新机器人的目标信息。由于机器人里程计(提供机器人的位置信息)的信息经常是错误的,我们不能直接依赖于里程计的数据。我们可以通过使用激光扫描环境来修正机器人的位置信息。这是通过提取环境特征并且在机器人运动时重新观测实现的。扩展卡尔曼滤波算法(EKF)是SLAM的核心过程,它负责通过基于特征的方法来更新机器人的位置信息。这些特征被称作地标(landmarks),下一章将会对EKF和地标进行讲解。EKF持续追踪机器人位置的不确定性估计以及机器人观测到环境中地标的不确定性。 当机器人运动造成里程计变化时,与机器人新的位置相关的不确定性在EKF中使用Odometry update的过程进行更新。在机器人到达新的位置后,再次从环境中提取地标信息。机器人将尝试将当前的地标信息与之前观测到的地标信息关联起来。重新观测到的地标信息将用于在EKF中更新机器人的位置坐标。地标信息中新出现的地标信息将被加入到EKF中作为新的待观测对象,以便于和后续观测中的地标信息进行关联。这个过程叫做Re-observation。下一章将通过讲述在ER1机器人上如何实现上述这些步骤的实际方式,对上述过程的所有步骤进行讲解。在这些步骤中的任意点处EKF会对机器人的当前位置进行估计。 SLAM过程的一个概览 三角形:机器人 五角星:地标 闪电形状:传感器测量过程 机器人运动后,机器人根据里程计给出的运动距离估计新的位置 机器人测量地标的位置后发现这些地标的位置不符合里程计信息测算出来的位置处的地标观测值。所以机器人并不在估计的位置。 机器人更加相信传感器的信息,而不是里程计,所以它使用地标确认当前的位置。虚线:机器人根据里程计信息估计的位置 点线:根据传感器获取的地标信息估计的位置 虚线:机器人根据里程计信息估计的位置 实线:机器人真实位置