SLAM(simultaneous localization and mapping)也叫即时定位与导航,最早由Hugh Durrant-Whyte 和 John J.Leonard提出。SLAM主要用于解决移动机器人在未知环境中运行时定位导航与地图构建的问题。典型的slam系统硬件组成主要由测距传感器,odometry 里程计,处理器,IMU,运动机器人等。最简单的结构为可以移动的机器人平台并且至少包含一个测距单元。其过程包括特征提取,数据关联,状态估计,状态更新以及特征更新等。对于其中每个部分,均存在多种实现方法。
slam 的一般过程:
假设机器人初始化的时候的位置是确定的,从这个确定的位置上机器人观测到一个特征点的位置,这个特征点具有和测距传感器相关的不确定性。
当机器人移动的时候,由于里程计的累积误差它的位置的不确定度逐渐增加:
当机器人到达此处,看到两个特征点m1和m2,并估计出他们的位置和由于机器人的位置的不确定度造成的不确定度。此时我们可以看到,地图的不确定度是机器人的位置估计的不确定度造成的。同样的道理,如果机器人的位置估计建立在不准确估计的对特征点之上,机器人位置的估计结果也是和特征点的不确定度相关。
机器人继续移动,它的不确定性由于里程计的累积误差继续增加
为了减小不确定度,机器人必须找到位置已知的特征点。这些特征点可以是机器人曾经见到过的特征点。这就是所谓的回环检测。
如果回环检测成功,机器人的位置的不确定度就会缩小。同时,地图也会更新,地图上的特征点和机器人过去回环中的位置的不确定度都会减小。