在http://blog.csdn.net/andymfc/article/details/65442851中,给出了如何通过机器人在室内不断移动实现对室内栅格地图的栅格信息进行更新和丰富,但是通常机器人的移动并不是在每个栅格中心,这就是的如何确定栅格和根据机器人位置及障碍物位置对栅格进行定位成为了该算法实现的关键,本期blog将进一步分析如何根据位置信息确定栅格位置,以及如何获取当前可知的所有的栅格位置信息。
首先,是根据位置信息获取其所处的栅格,这里我们采用模糊估计方法来定位栅格,就是看该位子距离最近的栅格位置作为其所处栅格位置,具体算法实现如下图1所示,首先对当前位置的x坐标取余,看x坐标位置是否大于栅格边长的一半,如果大于则将在当期位置减去其取余结果然后加上栅格边长的栅格位置,如果小于则栅格的x坐标就是当前位置坐标取整的结果,采用同样的原理可以确定当前栅格的y坐标,其实质就是求取距离当前位置最近的栅格坐标。
图1 根据当前坐标定位所处栅格的坐标
然后就是要确定当前家庭环保卫士可以发现的所有的可知的栅格状态,这里进一步分析不难看出,当前家庭环保卫士其可以确定的栅格的状态,包括其当前所处位置的栅格状态、障碍物的位置所处的栅格状态,其中障碍物所处位置栅格状态是不可通行的,而机器人所处的栅格状态是可以通行的,同时,进一步分析我们还可以确定更多的栅格张贴信息,也就是我们当前位置和障碍物位置所处的线段上的栅格状态信息,因为这个上面是没有任何障碍物的,是可以通行的,但是所有的栅格中心点不一定在该直线上,这里我们就需要采用一定的算法来进行判断选取最佳的栅格确定其状态。
图2 定位家庭智能环保卫士和障碍物之间的栅格状态示意图
这里我们可以采用一个估计方法,即认为在两点之间构成的矩形区域内距离直线距离小于四分之一倍栅格对角线距离的栅格为可以通行的,即通过查找算法根据这一条件查找出直线上所有可以认为可通行的栅格状态,然后将这些状态安装更新流程更新到栅格地图数据库中。
以上就是整个室内利用家庭智能环保卫士在室内移动过程中不断绘制和更新过程中定位栅格地图上的栅格状态信息的实现整个流程和思想,后期blog将在此基础上,进一步采用python编程实现该算法。