http://mp.weixin.qq.com/s?__biz=MzA5NTIzMTUxMw==&mid=2650045213&idx=1&sn=fff37af7058932d061f1fb782422a91d&scene=1&srcid=0830nwsPHXrIVXp6mmnwWbM5&from=singlemessage&isappinstalled=0#wechat_redirect"
SLAM更像一个概念而不是一个算法
基于卡尔曼滤波的SLAM
SLAM通常包括以下几个部分: 特征提取 数据关联 状态估计 状态更新以及特征更新
机器人平台
机器人平台首先要能够移动,并且要包括一个测距单元,一般而言,机器人的定位精度不应该超过2%,转向精度不应该超过5%,一般而言,机器人可以在直角坐标系中根据自己的运动估计其自身的位置和转向
常见的测距单元包括:激光测距 图像测距 超声波测距
激光测距精确,但是价格昂贵,不能用于水下,不能很好的解决穿过玻璃的问题
超声波测距,价格便宜,测量经度低,激光测距单位的发射角仅0.25°,基本上可以看做一条直线,而超声波的发射角达到了30°,测量经度差,但是超声波的穿透能力强,可以用在水下
视觉测距: 一般而言视觉测距用双目或者三目视觉方法进行测量,另外通过视觉可以获得相对于激光和超声波更多的信息,但是视觉容易受到光照的影响
SLAM的一般过程
SLAM的通常包括几个过程,这些过程的最终目的是为了更新机器人的位置估计信息,由于通过机器人的运动估计得到的位置信息通常存在较大的误差,因此不能通过单纯的用运动估计机器人的位置信息,在使用机器人运动方程得到机器人的位置信息后,我们可以使用测距单元得到的周围的环境信息更正机器人的位置.上述的过程一般就是通过特征提起,然后在机器人运动后重新观测特征的位置实现的
当机器人运动时,其位置将会发生变化。此时,根据机器人位置传感器的观测,提取得到观测信息中的特征点,然后机器人通过EKF将目前观测到特征点的位置、机器人运动距离、机器人运动前观测到特征点的位置相互结合,对机器人当前位置和当前环境信息进行估计。
机器人自身运动模型
SLAM的另外一个很重要的数据来源是机器人通过自身运动估计得到的自身位置信息。机器人自身位置数据通过对机器人轮胎运行圈数的估计可以得到机器人自身位置的一个估计,其可以被看作EKF的初始估计数据。
另外一个需要注意的是需要保证机器人自身位置数据与测距单元数据的同步性。为了保证其同步性,一般采用插值的方法对数据进行前处理。由于机器人的运动规律是连续的,因而,一般对机器人自身位置数据进行插值。相对而言,由于测距单元数据的不连续性,因而其插值基本上是不可以实现的
地标特征
可以看出,通常而言,对于不同的环境,一般我们选择不同的地标。