栅格地图构建中的地图平移控制方法说明书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(19)中华人民共和国国家知识产权局
(12)发明专利
(10)授权公告号 (45)授权公告日 (21)申请号 201710234044.4
(22)申请日 2017.04.11
(65)同一申请的已公布的文献号
申请公布号 CN 106873601 A
(43)申请公布日 2017.06.20
(73)专利权人 珠海市一微半导体有限公司
地址 519000 广东省珠海市香洲区横琴新
区宝华路6号105室—514
(72)发明人 李明 肖刚军 
(74)专利代理机构 广东朗乾律师事务所 44291
代理人 闫有幸
(51)Int.Cl.
G05D 1/02(2006.01)(56)对比文件CN 101266659 A ,2008.09.17,US 5798947 A ,1998.08.25,CN 102842103 A ,2012.12.26,CN 105806344 A ,2016.07.27,CN 101957987 A ,2011.01.26,GB 2336673 B ,2002.04.03,黎雪芬.基于u-Blox GPS的工矿料场无人化车辆监控研究.《装备制造技术》.2016,(第7期),李明.一种带宽受限环境下的海战场栅格服务自适应描述方法.《舰船电子工程》.2015,(第12期),审查员 吴垠
(54)发明名称栅格地图构建中的地图平移控制方法(57)摘要一种栅格地图构建中的地图平移控制方法,每次控制机器人运动并构建地图时,执行如下流程:a、检测是否需要平移整个栅格地图,具体为:当栅格地图的x轴或y轴的一个方向上实际使用的栅格已经达到整个栅格地图的边界,而其反方向还存在剩余栅格未使用的情况下,进入步骤b,否则跳出该子流程;b、根据上次的x轴、y轴的偏移栅格数,与本次的x轴、y轴的偏移栅格数的差值,确定本次实际要平移的栅格数;c、根据本次实际要平移的栅格数平移整个栅格地图。

本发明能够根据实际使用地图越界情况,实时平移整个栅格地图,使得实际使用的地图永远位于整个栅格地图的中心位置,直到实际使用的地图长或宽
正真达到了整个栅格地图的极限。

权利要求书3页 说明书6页 附图8页CN 106873601 B 2020.01.21
C N 106873601
B
1.一种栅格地图构建中的地图平移控制方法,其特征在于,每次控制机器人运动并构建地图时,执行如下流程:
a、检测是否需要平移整个栅格地图,具体为:当栅格地图的x轴或y轴的一个方向上实际使用的栅格已经达到整个栅格地图的边界,而其反方向还存在剩余栅格未使用的情况下,进入步骤b,否则跳出该子流程;
b、根据上次的x轴、y轴的偏移栅格数,与本次的x轴、y轴的偏移栅格数的差值,确定本次实际要平移的栅格数;
c、根据本次实际要平移的栅格数平移整个栅格地图。

2.根据权利要求1所述的栅格地图构建中的地图平移控制方法,其特征在于,所述地图平移子流程中步骤a的具体方法包括:
a1、分别更新地图x轴、y轴、已使用栅格的最大最小值x-min、x-max、y-min、y-max;
a2、判断是否(x-max+x-offset)接近边界,但(x-min+x-offset)没有接近边界,是则x-offset减一并进入步骤a4,否则进入步骤a3;
a3、判断是否(x-min+x-offset)接近边界,但(x-max+x-offset)没有接近边界,是则x-offset加一并进入步骤a4,否则直接进入步骤a4;
a4、判断是否(y-max+y-offset)接近边界,但(y-min+y-offset)没有接近边界,是则y-offset减一并进入步骤a6,否则进入步骤a5;
a5、判断是否(y-min+y-offset)接近边界,但(y-max+y-offset)没有接近边界,是则y-offset加一并进入步骤a6,否则直接进入步骤a6;
a6、判断x-offset或y-offset是否发生了变化是则启动平移整个栅格地图,否则跳出所述子流程;
其中x-min,x-max为x轴方向上已使用栅格的最小与最大值;y-min,y-max为y轴方向上已使用栅格的最小与最大值;x-offset,y-offset记录当前栅格地图x轴,y轴方向上实际栅格偏移。

3.根据权利要求2所述的栅格地图构建中的地图平移控制方法,其特征在于,所述地图平移子流程中步骤b的具体方法包括:
b1、设定actul-x-offset=x-offset-old-x-offset,actul-y-offset=y-offset-old-y-offset;
b2、判断是否actul-x-offset<0,是则确定整个栅格地图往x轴负方向移动abs(actul-x-offset)个栅格并进入步骤b4,否则进入步骤b3;
b3、判断是否actul-x-offset>0,是则确定整个栅格地图往x轴正方向移动abs(actul-x-offset)个栅格并进入步骤b4,否则直接进入步骤b4;
b4、判断是否actul-y-offset<0;是则确定整个栅格地图往y轴负方向移动abs(actul-y-offset)个栅格并进入步骤b6,否则进入步骤b5;
b5、判断是否actul-y-offset>0;整个栅格地图,往y轴正方向移动abs(actul-y-offset)个栅格并进入步骤b6,否则直接进入步骤b6;
b6、用当前栅格地图x轴、y轴方向上实际栅格偏移x-offset、y-offset更新上次栅格地图平移时x轴、y轴方向上的栅格偏移old-x-offset、old-y-offset录;
其中x-offset、y-offset记录当前栅格地图x轴、y轴方向上实际栅格偏移;old-x-
offset、old-y-offset记录上次栅格地图平移时x轴、y轴方向上栅格偏移;abs表示取这个数的绝对值;actul-x-offset、actul-y-offset为本次实际要平移的栅格数。

4.根据权利要求3所述的栅格地图构建中的地图平移控制方法,其特征在于,所述地图平移子流程中步骤c中,当actul-x-offset小于零时,x轴往负方向平移的具体方法包括:c1、开始时x=0、y=0、start-x=0;
c2、判断是否x<Height,是则进入步骤c3,否则结束;
c3、设定count=0进入步骤c4;
c4、判断是否y<Width,是则进入步骤c5,否则x++并返回步骤c2;
c5、判断是否start-x!=0,是则进入步骤c51,否则进入步骤c6;
c51、判断是否global-map[x][y]!=0;是则设定global-map[x+actul-x-offset][y]=global-map[x][y],global-map[x][y]=0并进入步骤步骤c8,否则count++并进入步骤步骤c8;
c6、判断是否global-map[x][y]!=0,是则进入步骤c7,否则进入步骤c8;
c7、设定start-x=x,global-map[x+actul-x-offset][y]=global-map[x][y],global-map[x][y]=0,进入步骤c8;
c8、判断是否count==Width,是则结束,否则y++并返回步骤c4;
其中global-map为栅格地图数组;Height、Width代表global-map栅格数组的高度和宽度;start-x代表第一行有数据不为零的行号,也就是从这一行开始后的数据需要进行平移;count记录一行数据有多少个栅格为零;
当actul-x-offset大于零时,在上面的流程图中,把x的初始值设为Height-1,每次循环后,执行x--,直到x<0结束;y轴的平移原理与x轴相同。

5.根据权利要求4所述的栅格地图构建中的地图平移控制方法,其特征在于,当启动平移功能时,开辟一小段内存作为缓冲,存储已经越界的栅格地图数据,当整个栅格地图平移后,再将缓冲的栅格数据写入栅格地图。

6.根据权利要求5所述的栅格地图构建中的地图平移控制方法,其特征在于,缓冲过程中读取数据的流程如下:
S1、设定x-index=x+x-offset,y-index=y+y-offset;
S2、判断是否(x-index,y-index)在栅格地图内且地图平移功能并没有启动,是则进入步骤S3,否则进入步骤S2a;
S2a、从缓冲中读取并进入步骤S2b;
S2b、判断是否读取成功,是则进入步骤S4,否则进入步骤S2c;
S2c、判断是否(x-index,y-index)在栅格地图内,是则进入步骤S2d,否则返回零并结束;
S2d、直接读取对应的栅格地图数据并进入步骤S4;
S3、直接读取对应的栅格地图数据并进入步骤S4;
S4、返回读取的值并结束;
所述缓冲过程中写入数据的流程如下:
T1、读取(x,y)值并进入步骤T2;
T2、判断写入值与读取值是否相等,是则结束,否则设定x-index=x+x-offset,y-
index=y+y-offset并进入步骤T3;
T3、判断是否(x-index,y-index)在栅格地图内且地图平移功能并没有启动,是则直接将数据写入对应的栅格地图数据并结束,否则将数据写入缓冲中并结束;
其中,x、y为机器人当前所处栅格坐标;x-index,y-index为对应栅格地图的实际坐标。

栅格地图构建中的地图平移控制方法
〖技术领域〗
[0001]本发明涉及电子信息及智能控制技术领域,具体涉及一种栅格地图构建中的地图平移控制方法。

〖背景技术〗
[0002]智能机器人作为世界经济与产业增长方式转变过程中的关键因素,正在进入新的发展阶段。

智能机器人是具有感知、决策、执行的制造装备、设备工具、服务消费品,用于生产过程与环境中的制造装备智能机器称为工业机器人,用于个人或家政服务的消费品智能机器称为家用服务机器人,用于特殊环境下作业与维护的设备工具智能机器称为特种服务机器人。

[0003]以家用的扫地机器人为例,其又称自动打扫机、智能吸尘、机器人吸尘器等,是智能家用电器的一种,能凭借一定的人工智能,自动在房间内完成地板清理工作。

[0004]扫地机器人需要按照一定的路径规划来覆盖整个房间区域,完成遍历的目的。

路径规划,有随机遍历和规划遍历两种。

[0005]随机遍历,是指机器人根据一定的移动算法,如三角形、五边形轨迹尝试性的覆盖作业区,如果遇到障碍,则执行对应的转向函数。

这种方法是一种以时间换空间的低成本策略,如不计时间可以达到100%覆盖率。

随机覆盖法不用定位、也没有环境地图,也无法对路径进行规划。

当前iRobot的大多数扫地机器人采用的就是这种方法。

[0006]规划遍历,是指机器人行走过程中建立起环境地图,实时分析地图并完成新的路径规划,将房间全部进行清扫。

这种方法效率高,在保证覆盖率的前提下,能够以最快的速度完成清扫。

[0007]其中规划清扫需要解决三个问题:
[0008]1、建立地图,并能够定位(确定机器人的位置)。

[0009]2、导航,从启始位置导航到目标位置,且在导航过程中能够实现自动避开障碍物。

[0010]3遍历整个房间的方法。

[0011]关于问题1有多种解决方法,栅格法,人工势场法,模板模型法,人工智能法等。

[0012]人工势场法,将机器人在周围环境中的运动设计成在一种势场中的运动,势能源有两种:斥力极和引力极。

不希望进入的区域和障碍物属于斥力极,建议通过的区域为引力极。

引力和斥力的合力作为机器人的加速力,来控制机器人的运动方向和计算机器人的位置。

但此方法通常存在局部极小点和计算量过大的问题。

[0013]模板模型法,是基于先验知识和先前的环境地图遍历机器人让得到的环境信息来匹配事先定义的模板。

它要求事先定义环境模型和模板的记忆,因此对于变化着的环境就不好处理了,比如在遍历机器人的工作过程中突然出现一个障碍等。

[0014]人工智能法,包括模糊控制算法,神经网络路径规划,遗传算法等。

这些算法计算量大,且大都还在实验室研究阶段,实际运用的较少。

[0015]栅格法,使用大小相同的栅格划分机器人的工作空间,并用栅格数组来表示环境,
每个栅格是两种状态之一,或者在自由空间中,或者在障碍物空间中。

这种方法的特点是简单,易于实现,从而为路径规划的实现带来了很多方便,具有表示不规则障碍物的能力;其缺点是表示效率不高,存在着时空开销与精度之间的矛盾。

栅格划分大了,环境信息存储量就小了,规划时间短,分辨率下降,在密集环境下发现路径的能力减弱;栅格划分小了,环境分辨率高,在密集环境下发现路径的能力强,但环境的存储量大。

所以栅格的大小直接影响着控制算法的性能。

[0016]更重要的是,机器人以遍历的方式创建栅格地图是,机器人的启动点一般位于栅格地图的中心点,栅格地图大小固定,假如样机一直朝着一个方向清扫,则地图很容易越界。

使得地图的一个方向上出现越界,而这个方向的反方向上的地图却空着没有使用。

〖发明内容〗
[0017]本发明旨在提供一种方法,根据实际使用地图越界情况,实时平移整个栅格地图,使得实际使用的地图永远位于整个栅格地图的中心位置,直到实际使用的地图长或宽正真达到了整个栅格地图的极限。

本发明的目的由以下技术方案实现:
[0018]一种栅格地图构建中的地图平移控制方法,其特征在于,每次控制机器人运动并构建地图时,执行如下流程:
[0019]a、检测是否需要平移整个栅格地图,具体为:当栅格地图的x轴或y轴的一个方向上实际使用的栅格已经达到整个栅格地图的边界,而其反方向还存在剩余栅格未使用的情况下,进入步骤b,否则跳出该子流程;
[0020]b、根据上次的x轴、y轴的偏移栅格数,与本次的x轴、y轴的偏移栅格数的差值,确定本次实际要平移的栅格数;
[0021]c、根据本次实际要平移的栅格数平移整个栅格地图。

[0022]作为具体的技术方案,当启动平移功能时,开辟一小段内存作为缓冲,存储已经越界的栅格地图数据,当整个栅格地图平移后,再将缓冲的栅格数据写入栅格地图。

[0023]本发明提供的栅格地图构建中的地图平移控制方法,能够根据实际使用地图越界情况,实时平移整个栅格地图,使得实际使用的地图永远位于整个栅格地图的中心位置,直到实际使用的地图长或宽正真达到了整个栅格地图的极限,基于该地图平移控制方法可以有效提升地图创建的效率。

〖附图说明〗
[0024]图1为本发明实施例提供的地图平移控制方法所基于的智能机器人的模块构成图。

[0025]图2为本发明实施例提供的栅格地图创建过程的主流程图。

[0026]图3为本发明实施例提供的栅格地图创建过程中障碍物栅格坐标计算方法的流程图。

[0027]图4为本发明实施例提供的栅格地图创建过程中启动地图平移的流程图。

[0028]图5为本发明实施例提供的栅格地图创建过程中确定地图平移栅格数的流程图。

[0029]图6为本发明实施例提供的栅格地图创建过程中实现地图平移操作的流程图。

[0030]图7为本发明实施例提供的栅格地图创建过程中实现地图平移过程中缓冲操作的
数据读取流程图。

[0031]图8为本发明实施例提供的栅格地图创建过程中实现地图平移过程中缓冲操作的数据写入流程图。

〖具体实施方式〗
[0032]下面结合附图对本发明的具体实施方式作进一步说明:
[0033]如图1所示,本实施例提供的栅格地图构建中的地图平移控制方法,其基于的智能机器人包括行动机体1、主控模块4、传感器集合5、电源模块及区域操作组件。

其中,行动机体1包括机壳、行动轮2、3。

传感器集合5包括碰撞检测传感器、障碍物检测传感器、距离信息传感器、角度信息传感器,均与主控模块电连接。

[0034]具体地,碰撞检测传感器用于智能机器人前面碰到障碍物时,做出当前与障碍物发生了碰撞的判断并通知主控模块4。

防跌路检测传感器用于当智能机器人下方为悬空状态时,做出当前处于危险状态的判断并通知主控模块4。

障碍物检测传感器用于检测机器人周围是否出现障碍物并通知主控模块4,包括防跌落检测传感器及周边检测传感器,周边检测传感器由前,前左,前右,左,右,五个红外测距传感器组成。

距离信息传感器为轮子编码器,角度信息传感器为陀螺仪。

区域操作组件是指对机器人所处区域进行某些功能操作的组件,可以为清洁组件、摄像组件、加湿组件、除湿组件、灭虫组件中的一个或多个,本实施例以清洁组件为例进行说明,即本实施例所述的机器人为扫地机器人。

[0035]通过距离信息传感器所获取的距离信息、角度信息传感器所获得的角度信息、碰撞检测传感器获取的碰撞信息及障碍物检测传感器获取的障碍信息构建栅格地图,并记录正常通过点、障碍物点、沿边点。

智能机器人边行动边更新地图,只要是机器人走过的地方都会把状态更新到栅格地图上。

可以理解的是,栅格越小精度越高,但受内存及运算速度的限制,我们选择栅格的边长为智能机器人直径的三分之一的正方形。

[0036]结合图2所示,本实施例提供的智能机器人的栅格地图创建方法,包括:
[0037](1)控制机器人运动;
[0038](2)检测机器人当前位置的行动是否为沿边行为及当前位置是否检测到障碍物,如果当前位置的行动为沿边行为但未检测到障碍物则进入步骤(3a),如果当前位置的行动为沿边行为且同时检测到障碍物则进入步骤(3b),如果当前位置的行动不为沿边行为但检测到障碍物则进入步骤(3c),如果当前位置的行动不为沿边行为且未检测到障碍物则进入步骤(3d);
[0039](3a)将地图上当前位置的栅格标记为沿边行为点并返回步骤(1);
[0040](3b)将地图上当前位置的栅格标记为沿边行为点,同时计算障碍物所处的栅格坐标并将栅格地图上障碍物对应的栅格标记为障碍物点,然后返回步骤(1);
[0041](3c)将地图上当前位置的栅格标记为正常通过点,同时计算障碍物所处的栅格坐标并将栅格地图上障碍物对应的栅格标记为障碍物点,然后返回步骤(1);
[0042](3d)将地图上当前位置的栅格标记为正常通过点并返回步骤(1)。

[0043]图2的流程图中为了更好表现,只表现了上述方法中的部分内容,且将沿边行为判断和障碍物判断先后表现,实际上,这两个判断是部分先后的。

[0044]建立的栅格地图保存于主控模块4中并由主控模块4进行管理。

栅格地图的表现形
式可以为:黑色栅格表示智能机器人未标记此栅格,绿色栅格代表智能机器人正常通过点,红色栅格代表障碍物检测传感器感测到的障碍物点,蓝色栅格代表碰撞检测传感器检测到的发生碰撞的障碍物点,白色栅格代表此点进行了沿边行为点。

[0045]其中每个栅格用一个8bit的数来表示。

其高四位记录区域信息,表示此栅格位于哪个区域内,因此最多支持16个区域。

其低四位用来表示地图的实际信息:第0位表示智能机器人是否到达过此栅格,为0表示未到达过,为1表示到达过;第1位表示此栅格是否存在障碍物,为0表示不存在,为1表示存在;第2位,表示机器人沿边时,为1表示经过此栅格,为0表示未经过;第3位,预留。

[0046]如图3所示,本实施例提供的智能机器人的栅格地图创建方法中,障碍物所处栅格坐标的计算方法具体包括:
[0047]A、计算障碍物距离机器人中心点的距离;
[0048]B、计算障碍物与机器人中心的实际角度;
[0049]C、调用三角函数,计算障碍物点相对于机器人中心点的坐标;
[0050]D、将计算出的坐标加上机器人中心点坐标,即为障碍物坐标。

[0051]其中,碰撞检测传感器检测到的障碍物点及障碍物检测传感器感测到的障碍物点在地图中是区别对待(区别标注的);如上文所述,红色栅格代表障碍物检测传感器感测到的障碍物点,蓝色栅格代表碰撞检测传感器检测到的发生碰撞的障碍物点,当然也可以统一标注(例如都标注成红色)。

不过,不论哪种传感器感测到的障碍物,都可以按以下公式计算所述距离和角度:
[0052]障碍物离扫地机中心点的距离=传感器探测的距离+机器人的半径;
[0053]障碍物与扫地机中心的角度=扫地机正前方的角度+传感器的位置偏离机器人正前方的角度差。

[0054]作为问题所在,在智能机器人的栅格地图创建过程中,机器人的启动点一般位于栅格地图的中心点。

栅格地图大小固定,假如样机一直朝着一个方向清扫,则地图很容易越界。

使得地图的一个方向上出现越界,而这个方向的反方向上的地图却空着没有使用。

[0055]下面介绍一种方法,根据实际使用地图越界情况,实时平移整个栅格地图,使得实际使用的地图永远位于整个栅格地图的中心位置,直到实际使用的地图长或宽正真达到了整个栅格地图的极限。

[0056]每次控制机器人运动以更新栅格地图时,执行以下流程:
[0057]a、检测是否需要平移整个栅格地图,具体为:当栅格地图的x轴或y轴的一个方向上实际使用的栅格已经达到整个栅格地图的边界,而其反方向还存在剩余栅格未使用的情况下,进入步骤b启动平移整个栅格地图,否则跳出该子流程;
[0058]b、根据上次的x轴、y轴的偏移栅格数,与本次的x轴、y轴的偏移栅格数的差值,确定本次实际要平移的栅格数;
[0059]c、根据本次实际要平移的栅格数平移整个栅格地图。

[0060]如图4所示,其中x-min,x-max为x轴方向上已使用栅格的最小与最大值;y-min,y-max为y轴方向上已使用栅格的最小与最大值;x-offset,y-offset记录当前栅格地图x轴,y 轴方向上实际栅格偏移。

[0061]地图平移子流程中步骤a的具体方法包括:
[0062]a1、分别更新地图x轴、y轴、已使用栅格的最大最小值x-min、x-max、y-min、y-max;[0063]a2、判断是否(x-max+x-offset)接近边界,但(x-min+x-offset)没有接近边界,是则x-offset减一并进入步骤a4,否则进入步骤a3;
[0064]a3、判断是否(x-min+x-offset)接近边界,但(x-max+x-offset)没有接近边界,是则x-offset加一并进入步骤a4,否则直接进入步骤a4;
[0065]a4、判断是否(y-max+y-offset)接近边界,但(y-min+y-offset)没有接近边界,是则y-offset减一并进入步骤a6,否则进入步骤a5;
[0066]a5、判断是否(y-min+y-offset)接近边界,但(y-max+y-offset)没有接近边界,是则y-offset加一并进入步骤a6,否则直接进入步骤a6;
[0067]a6、判断x-offset或y-offset是否发生了变化是则启动平移整个栅格地图,否则跳出所述子流程。

[0068]如图5所示,其中x-offset、y-offset记录当前栅格地图x轴、y轴方向上实际栅格偏移;old-x-offset、old-y-offset记录上次栅格地图平移时x轴、y轴方向上栅格偏移;abs 表示取这个数的绝对值;actul-x-offset、actul-y-offset为本次实际要平移的栅格数。

[0069]地图平移子流程中步骤b的具体方法包括:
[0070]b1、设定actul-x-offset=x-offset-old-x-offset,actul-y-offset=y-offset-old-y-offset;
[0071]b2、判断是否actul-x-offset<0,是则确定整个栅格地图往x轴负方向移动abs (actul-x-offset)个栅格并进入步骤b4,否则进入步骤b3;
[0072]b3、判断是否actul-x-offset>0,是则确定整个栅格地图往x轴正方向移动abs (actul-x-offset)个栅格并进入步骤b4,否则直接进入步骤b4;
[0073]b4、判断是否actul-y-offset<0;是则确定整个栅格地图往y轴负方向移动abs (actul-y-offset)个栅格并进入步骤b6,否则进入步骤b5;
[0074]b5、判断是否actul-y-offset>0;整个栅格地图,往y轴正方向移动abs(actul-y-offset)个栅格并进入步骤b6,否则直接进入步骤b6;
[0075]b6、用当前栅格地图x轴、y轴方向上实际栅格偏移x-offset、y-offset更新上次栅格地图平移时x轴、y轴方向上的栅格偏移old-x-offset、old-y-offset录。

[0076]如图6所示,其中global-map为栅格地图数组;Height、Width代表global-map栅格数组的高度和宽度;start-x代表第一行有数据不为零的行号,也就是从这一行开始后的数据需要进行平移;count记录一行数据有多少个栅格为零(没有使用的栅格)。

如果整行栅格数据都为零,则平移工作结束。

[0077]本实施例以x轴往负方向平移为例进行说明,也就是actul-x-offset小于零时。

在平移整个栅格地图时,没有使用过的栅格(数据为零)是不需要进行操作的。

[0078]地图平移子流程中步骤c的具体方法包括:
[0079]c1、开始时x=0、y=0、start-x=0;
[0080]c2、判断是否x<Height,是则进入步骤c3,否则结束;
[0081]c3、设定count=0进入步骤c4;
[0082]c4、判断是否y<Width,是则进入步骤c5,否则x++并返回步骤c2;
[0083]c5、判断是否start-x!=0,是则进入步骤c51,否则进入步骤c6;
[0084]c51、判断是否global-map[x][y]!=0;是则设定global-map[x+actul-x-offset] [y]=global-map[x][y],global-map[x][y]=0并进入步骤步骤c8,否则count++并进入步骤步骤c8;
[0085]c6、判断是否global-map[x][y]!=0,是则进入步骤c7,否则进入步骤c8;[0086]c7、设定start-x=x,global-map[x+actul-x-offset][y]=global-map[x][y],global-map[x][y]=0,进入步骤c8;
[0087]c8、判断是否count==Width,是则结束,否则y++并返回步骤c4。

[0088]当actul-x-offset大于零时,在上面的流程图中,只需要把x的初始值设为Height-1,每次循环后,执行x--,直到x<0结束。

[0089]y轴的平移原理与x轴相同。

[0090]此外,当启动平移功能时,并不适合马上平移整个栅格地图,最好能等待样机停止时,来进行平移。

因为平移整个栅格地图,非常耗CPU资源,会影响扫地机运动的平滑性。

[0091]为了防止在这个等待的过程中,栅格地图越界,必须开辟一小段内存作为缓冲,存储已经越界的栅格地图数据。

当整个栅格地图平移后,再将缓冲的栅格数据,写入栅格地图。

因此在读取或写入栅格地图数据时,必须考虑是否存在缓冲的情况。

[0092]如图7所示,本实施例提供相应的缓冲方法中读取数据的流程如下:
[0093]S1、设定x-index=x+x-offset,y-index=y+y-offset;
[0094]S2、判断是否(x-index,y-index)在栅格地图内且地图平移功能并没有启动,是则进入步骤S3,否则进入步骤S2a;
[0095]S2a、从缓冲中读取并进入步骤S2b;
[0096]S2b、判断是否读取成功,是则进入步骤S4,否则进入步骤S2c;
[0097]S2c、判断是否(x-index,y-index)在栅格地图内,是则进入步骤S2d,否则返回零并结束;
[0098]S2d、直接读取对应的栅格地图数据并进入步骤S4;
[0099]S3、直接读取对应的栅格地图数据并进入步骤S4;
[0100]S4、返回读取的值并结束。

[0101]如图8所示,本实施例提供相应的缓冲方法中写入数据的流程如下:
[0102]T1、读取(x,y)值并进入步骤T2;
[0103]T2、判断写入值与读取值是否相等,是则结束,否则设定x-index=x+x-offset,y-index=y+y-offset并进入步骤T3;
[0104]T3、判断是否(x-index,y-index)在栅格地图内且地图平移功能并没有启动,是则直接将数据写入对应的栅格地图数据并结束,否则将数据写入缓冲中并结束。

[0105]其中,x、y为机器人当前所处栅格坐标;x-index,y-index为对应栅格地图的实际坐标。

[0106]以上实施例仅为充分公开而非限制本发明,凡基于本发明的创作主旨、未经创造性劳动的等效技术特征的替换,应当视为本申请揭露的范围。

相关文档
最新文档