CN107390700B - 机器人的动态建图方法及芯片 - Google Patents
机器人的动态建图方法及芯片 Download PDFInfo
- Publication number
- CN107390700B CN107390700B CN201710791899.7A CN201710791899A CN107390700B CN 107390700 B CN107390700 B CN 107390700B CN 201710791899 A CN201710791899 A CN 201710791899A CN 107390700 B CN107390700 B CN 107390700B
- Authority
- CN
- China
- Prior art keywords
- dynamic local
- map
- local map
- robot
- dynamic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000013507 mapping Methods 0.000 title claims abstract description 14
- 210000004027 cell Anatomy 0.000 claims description 42
- 238000012163 sequencing technique Methods 0.000 claims description 11
- 230000001960 triggered effect Effects 0.000 claims description 9
- 210000003888 boundary cell Anatomy 0.000 claims description 4
- 238000010408 sweeping Methods 0.000 description 10
- 238000004140 cleaning Methods 0.000 description 9
- 238000010276 construction Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 239000011664 nicotinic acid Substances 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0276—Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle
Landscapes
- Engineering & Computer Science (AREA)
- Aviation & Aerospace Engineering (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
- Manipulator (AREA)
Abstract
本发明涉及一种机器人的动态建图方法及芯片,通过先建一个数据结构,再申请一个动态局部地图所需要的内存,然后才基于当前位置构建一个动态局部地图,这种申请一份内存,建一个动态局部地图的方式,可以有效、合理地利用系统内存,提高机器人建图的灵活性,从而提高机器人的清扫面积,避免了现有的静态栅格地图占用内存大、内存利用不合理,清扫面积受限的问题。
Description
技术领域
本发明涉及机器人领域,具体涉及一种机器人的动态建图方法及芯片。
背景技术
智能扫地机器人,顾名思义,就是能在不需要人工干预的情况下,自动完成扫地功能的机器人,是智能家用电器的一种,通过仿生算法,实现了人工智能,释放人类双手。智能扫地机器人仿生算法,模拟人的思维,按一定的路径规划来覆盖整个房间区域,完成清扫,同时在规划中又带有人的“随机”性,就是对于不同的环境,不是严格按照某一种规划来完成,而是按照最优的方式来进行,所以同一房子,如果家具的摆设不同了,则清扫规划方式是不同的。现在新一代的slam技术,与传统的随机清扫技术相比,有了很大的体验突破,比如新一代的slam技术是基于地图规划清扫的,有规则性,大大提升了清扫效率,从覆盖率上也有提高。传统的随机清扫技术,因为没有地图的规划,缺乏目标性,给人的感觉是乱扫,而新的slam技术,按照地图的实际情况作出最佳的清扫规划。
从上面所述中,可以了解到地图是新一代slam技术的关键点,目前市面上大部分扫地机器人为了达到地图的精确性,都是用栅格地图。栅格地图,一般是按照机器人机身的大小,然后按比例来定义一个N*N大小的方格子作为地图的最小的栅格单元,整个地图从宏观上看就形成了栅格地图。栅格地图可以提高地图的精确度,但是需要比较的大ram内存空间,而且目前为了管理方便和算法的复杂性考虑,一般栅格地图都是预先创建好固定大小的静态地图,但是这样就限制了地图的延伸性,对实际地形清扫有很大的约束性。比如,如果每个栅格单元的状态是用8bit表示,则一个12*12的栅格地图,一个格子的长度为0.2m,则机器能覆盖的最长距离是12*0.2=2.4m,地图消耗的内存为:12*12=144byte。假如是200*200的栅格地图,则200*0.2=40m,地图所耗的内存200*200=40000byte,则接近40k的ram,哪怕地图信息进行优化,也至少20k的ram空间。这个对于低成本的IC来说是一个非常多资源了。如果要考虑各种各样的地形,比如宽10m,长100m的地形,那么,因为栅格地图是受最长的那个数据影响的,所以建立的栅格地图需要500*500,则需要最低的ram是244k的ram空间,但是实际10*100m的地形,需要的真正的图数据是50*500,约24k的ram空间,这两个相差10倍多。这个就是静态栅格地图的弊端,它不管实际地图过程用多少ram,一开始就申请了庞大的ram,这样在实际过程其实很多的ram都是浪费的,因为实际情况受限于各种不同的地形,大多数地图的位置都没有覆盖到的,这样,那些ram就闲置在那里了,又因为地图是静态建立好的(而建立之初不可能建立一个很大的静态地图,由于ram受限),所以导致清扫的面积受限。
发明内容
为解决上述问题,本发明提供了一种机器人的动态建图方法及芯片,可以降低内存的占用量,提高机器人建图的灵活性。本发明的具体技术方案如下:
一种机器人的动态建图方法,包括如下步骤:
建立第一个数据结构;
申请构建一个动态局部地图所需要的内存;
基于机器人从原点出发行进至的第一个位置点,给所述第一个数据结构赋值,构建第一个动态局部地图;
基于机器人行进至动态局部地图外的第一个位置点,给对应的数据结构赋值,构建下一个动态局部地图,包括如下步骤:
将机器人行进至动态局部地图外的第一个位置点作为当前点;
确定所述当前点的坐标值为(x,y);
确定一个动态局部地图的长度为h,宽度为w;
将坐标值(X=(x/h)*h,Y=(y/w)*w)赋予与所述当前点对应的数据结构,其中,(x/h)和(y/w)都为整除;
将所述坐标值(X,Y)所对应的点作为起始点构建动态局部地图;
将所述坐标值(X,Y)所对应的点作为起始点构建动态局部地图的步骤之后,还包括如下步骤:
基于所述动态局部地图的起始点(X,Y),确定所述动态局部地图的其它三个点的坐标值分别为(X+h,Y)、(X+h,Y+w)和(X,Y+w);
根据所述起始点和所述其它三个点的坐标值,确定所述动态局部地图的范围;
将所述动态局部地图的范围赋予所述数据结构;
建立第二个数据结构;
再申请构建一个动态局部地图所需要的内存;
基于机器人行进至第一个动态局部地图外的第一个位置点,给所述第二个数据结构赋值,构建第二个动态局部地图;
以此类推,基于机器人行进至动态局部地图外的第一个位置点,给对应的数据结构赋值,构建下一个动态局部地图,至所有动态局部地图构建完成;
在动态局部地图构建的过程中或者在所有动态局部地图构建完成的步骤之后,还包括如下对所有动态局部地图进行排序的步骤:
在满足排序条件时,搜索每个动态局部地图的起始点的坐标值;
将所述动态局部地图按照所述起始点的坐标值中的y值从小到大进行排序;
如果y值相同的动态局部地图有多个时,则将所述y值相同的动态局部地图按照坐标值中的x值从小到大进行排序;
判断是否满足所述排序条件,包括如下步骤:
判断机器人是否在行进和是否在进行地图搜索;
如果机器人在行进或者在进行地图搜索,则不满足排序条件;
如果机器人不在行进,也不在进行地图搜索,则判断离上次排序的时间是否超过了设定时间,或者是否触发了排序标识;
如果离上次排序的时间超过了设定时间或者触发了排序标识,则满足排序条件;
如果离上次排序的时间没有超过设定时间或者没有触发排序标识,则不满足排序条件;
基于所有所述动态局部地图,构建全局地图的步骤之后,包括如下构建总地图的步骤:
基于原点,建立一个预定长度和预定宽度的方形边界;
搜索所述方形边界内的动态局部地图,标示不属于动态局部地图的区域为未知区域;
将搜索到的动态局部地图和未知区域作为总地图。
进一步地,所述申请构建一个动态局部地图所需要的内存,包括如下步骤:
确定一个栅格单元所占的内存为Q;
确定一个动态局部地图的长度为m个栅格单元的长度之和;
确定一个动态局部地图的宽度为n个栅格单元的宽度之和;
申请构建一个动态局部地图的内存为C,C=Q*m*n。
进一步地,所述触发排序标识的触发事件包括即将开始搜索地图的事件。
进一步地,所述所有动态局部地图构建完成的步骤之后,还包括如下对动态局部地图的信息进行更新的步骤:
确定所述动态局部地图中的栅格单元的初始状态为未知单元;
将机器人已行进过的栅格单元标示为已行进单元;
将机器人碰撞到障碍物的栅格单元标示为障碍单元;
将机器人检测到悬崖的栅格单元标示为悬崖单元;
将机器人行进至所述动态局部地图的边界时检测到栅格单元标示为边界单元;
将已标示过的栅格单元的信息替换所对应的未知单元的信息。
进一步地,所述所有动态局部地图构建完成的步骤之后,还包括如下基于所有所述动态局部地图,构建全局地图的步骤:
确定所有所述动态局部地图中x值最小的点所在的垂直X轴的直线作为第一条边;
确定所有所述动态局部地图中x值最大的点所在的垂直X轴的直线作为第二条边;
确定所有所述动态局部地图中y值最小的点所在的垂直Y轴的直线作为第三条边;
确定所有所述动态局部地图中y值最小的点所在的垂直Y轴的直线作为第四条边;
确定由所述第一条边、所述第二条边、所述第三条边和所述第四条边所围成的区域所对应的地图作为全局地图。
一种芯片,用于存储程序,所述程序用于控制机器人执行上述的机器人的动态建图方法。
本发明的有益效果在于:通过先建一个数据结构,再申请一个动态局部地图所需要的内存,然后才基于当前位置构建一个动态局部地图,这种申请一份内存,建一个动态局部地图的方式,可以有效、合理地利用系统内存,提高机器人建图的灵活性,从而提高机器人的清扫面积,避免了现有的静态栅格地图占用内存大、内存利用不合理,清扫面积受限的问题。
附图说明
图1为本发明的机器人动态地图的建图方法的流程图。
图2为本发明的所有动态局部地图构建完成的示意图。
图3为本发明的动态局部地图排序后的示意图。
图4为本发明的总地图的示意图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明:
如图1所示,机器人动态地图的建图方法,包括如下步骤:建立第一个数据结构;申请构建一个动态局部地图所需要的内存;基于机器人从原点出发行进至的第一个位置点,给所述第一个数据结构赋值,构建第一个动态局部地图;建立第二个数据结构;再申请构建一个动态局部地图所需要的内存;基于机器人行进至第一个动态局部地图外的第一个位置点,给所述第二个数据结构赋值,构建第二个动态局部地图;以此类推,基于机器人行进至动态局部地图外的第一个位置点,给对应的数据结构赋值,构建下一个动态局部地图,至所有动态局部地图构建完成。
其中,数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成,是计算机存储、组织数据的方式。所以,为了便于动态局部地图的管理,需要先建立一个数据结构。接着通过计算的方式得出一个动态局部地图所需要占用的内存,然后才向系统申请相应的内存,避免一次申请过多所造成的内存闲置。紧接着,如图2所示,当机器人从原点出发,朝右上角的方向行进至第一个位置点(这里所说的第一个位置点并不是指特定的某一个点,而是表示机器人从原点位置开始走出的第一步所对应的位置点)时,基于当前点的坐标位置,确定将要构建的动态局部地图的相关参数,再把相关参数赋予与当前位置点所对应的数据结构,以此构建对应的动态局部地图(图中1#所对应的方格区域地图,后续简称1#局部地图)。当机器人从1#局部地图的任意一条边界走出来并行进至第一位置点(同样的,这里所说的第一个位置点并不是指特定的某一个点,而是表示机器人走出边界时的第一步所对应的位置点)时,本实施例中,机器人从1#局部地图的右侧边界走出,基于当前点的坐标位置,确定将要构建的动态局部地图的相关参数,再把相关参数赋予与当前位置点所对应的数据结构,以此构建对应的动态局部地图(图中2#所对应的方格区域地图,后续简称2#局部地图)。以此类推,机器人依次动态地构建了3#、4#、5#、6#、7#、8#、9#、10#和11#局部地图。需要注意的是,机器人在构建完3#局部地图时,由于碰到障碍物或者其它路径规划条件的限制,会沿3#、2#和1#的方向行进,当从1#局部地图的左侧边界走出时,由于左侧还没有动态局部地图,所以,要在1#局部地图的左侧构成一个动态局部地图(即4#局部地图)。同理,机器人从4#局部地图的右上角的角点行进出时,构建5#局部地图。
本发明所述的建图方法,通过先建一个数据结构,再申请一个动态局部地图所需要的内存,然后才基于当前位置构建一个动态局部地图,这种申请一份内存,建一个动态局部地图的方式,可以有效、合理地利用系统内存,提高机器人建图的灵活性,从而提高机器人的清扫面积,避免了现有的静态栅格地图占用内存大、内存利用不合理,清扫面积受限的问题。
优选的,所述基于机器人行进至动态局部地图外的第一个位置点,给对应的数据结构赋值,构建下一个动态局部地图,包括如下步骤:将机器人行进至动态局部地图外的第一个位置点作为当前点;确定所述当前点的坐标值为(x,y);确定一个动态局部地图的长度为h,宽度为w;将坐标值(X=(x/h)*h,Y=(y/w)*w)赋予与所述当前点对应的数据结构,其中,(x/h)和(y/w)都为整除;将所述坐标值(X,Y)所对应的点作为起始点构建动态局部地图。如图2所示,假设原点的坐标值为(200,200),一个动态局部地图的长度为20,宽度也为20,机器人从原点开始朝右上角行进至第一个位置点(201,201)时,则计算得出X=(201/20)*20=10*20=200,Y=(201/20)*20=10*20=200,然后将坐标值(X=200,Y=200)赋予与当前点(201,201)所对应的数据结构,再将坐标值(X=200,Y=200)所对应的点(即原点)作为起始点构建1#局部地图。当机器人从1#局部地图的右侧边界走出至第一个位置点(比如坐标值为(221,208)的位置点)时,计算得出X=(221/20)*20=11*20=220,Y=(208/20)*20=10*20=200,然后将坐标值(X=220,Y=200)赋予与当前点(221,208)所对应的数据结构,再将坐标值(X=220,Y=200)所对应的点(即1#局部地图右下角的角点)作为起始点构建2#局部地图。以此类推,依次动态地构建了3#、4#、5#、6#、7#、8#、9#、10#和11#局部地图。本发明所述的方法通过先确定起始点,再构建动态局部地图的方式,可以准确地规划动态局部地图的方位,避免动态局部地图之间的位置参差不齐。
优选的,所述将所述坐标值(X,Y)所对应的点作为起始点构建动态局部地图的步骤之后,还包括如下步骤:基于所述动态局部地图的起始点(X,Y),确定所述动态局部地图的其它三个点的坐标值分别为(X+h,Y)、(X+h,Y+w)和(X,Y+w);根据所述起始点和所述其它三个点的坐标值,确定所述动态局部地图的范围;将所述动态局部地图的范围赋予所述数据结构。如图2所示,以1#局部地图为例,当以原点作为起始点构建1#局部地图后,还要根据1#局部地图的起始点坐标值(200,200)、左上角的角点坐标值(200,200+20)、右上角的角点坐标值(200+20,200+20)和右下角的角点坐标值(200+20,200)确定1#局部地图的范围,并将所确定的范围赋予所述数据结构,使得数据结构能够依据更多的参数对所述动态局部地图进行更准确、更全面的管理。
优选的,所述申请构建一个动态局部地图所需要的内存,包括如下步骤:确定一个栅格单元所占的内存为Q;确定一个动态局部地图的长度为m个栅格单元的长度之和;确定一个动态局部地图的宽度为n个栅格单元的宽度之和;申请构建一个动态局部地图的内存为C,C=Q*m*n。假设,以4bit数据来表示一个栅格单元的信息,则一个长度和宽度都为20个栅格单元的长度之和的动态局部地图所占用的内存为C=20*20*4=1600bit=200B。通过先计算一个动态局部地图所占用的内存,再根据计算结果申请相应的内存,使得每次申请的内存刚好满足使用需求,避免申请过多内存所造成的内存闲置或者申请的内存太少所造成的数据无法处理,提高了内存的利用率。
优选的,在所述动态局部地图构建的过程中或者在所述所有动态局部地图构建完成的步骤之后,还包括如下对所有动态局部地图进行排序的步骤:在满足排序条件时,搜索每个动态局部地图的起始点的坐标值;将所述动态局部地图按照所述起始点的坐标值中的y值从小到大进行排序;如果y值相同的动态局部地图有多个时,则将所述y值相同的动态局部地图按照坐标值中的x值从小到大进行排序。如图2所示,图中的动态局部地图是按照机器人的建图顺序进行排序的(即图中1#至11#这样的排布),如此,就显得很乱,不利于后续的地图搜索,所以,当满足排序条件时,需要对建好的动态局部地图重新进行排序。重新排序时,需要先搜索1#至11#局部地图的起始点的坐标值,分别为(200,200)、(220,200)、(240,200)、(180,200)、(200,220)、(180,220)、(220,220)、(180,180)、(200,180)、(220,180)和(160,200)。然后得出8#、9#和10#局部地图的y值最小,且都为180,接着进一步判断8#、9#和10#局部地图的x值分别为180、200和220,所以,按照x值从小到大排序,最终得出8#局部地图排第一,9#局部地图排第二,10#局部地图排第三。紧接着分析出y值第二小的动态局部地图为11#、4#、1#、2#和3#局部地图,且y值都为200,然后判断这5个动态局部地图的x值分别为160、180、200、220和240,所以,按照x值从小到大排序,最终得出11#局部地图排第四,4#局部地图排第五,1#局部地图排第六,2#局部地图排第七,3#局部地图排第八。同理,得出6#局部地图排第九,5#局部地图排第十,7#局部地图排第十一。如图3所示,为最终排好序的动态局部地图。
优选的,判断是否满足所述排序条件,包括如下步骤:判断机器人是否在行进和是否在进行地图搜索;如果机器人在行进或者在进行地图搜索,则不满足排序条件;如果机器人不在行进,也不在进行地图搜索,则判断离上次排序的时间是否超过了设定时间,或者是否触发了排序标识;如果离上次排序的时间超过了设定时间或者触发了排序标识,则满足排序条件;如果离上次排序的时间没有超过设定时间或者没有触发排序标识,则不满足排序条件。由于机器人正在行进或者正在进行地图搜索时,如果此时进行排序,就会导致机器人行进路径出错或者搜索出来的路径出错,所以,在这两种情况下,是不允许进行排序的。如果机器人不在行进,也不在进行地图搜索,则判断离上次排序的时间是否超过了设定时间,如果没有超过设定时间,就不进行排序,避免频繁排序所造成的数据处理资源浪费。其中,所述设定时间为一个可设置的值,可以根据具体的使用情况进行相应设置。如果机器人不在行进,也不在进行地图搜索,此时接收到了排序标识的触发信号,则直接进行排序,不用考虑距离上次排序时间是否超过了设定时间,如此是为了避免在一些特殊情况下,机器人需要排序,又得不到及时排序所造成的迟滞问题,提高机器人的效率和灵活性。
优选的,所述触发排序标识的触发事件包括即将开始搜索地图的事件,比如,机器人在外力作用下导致当前位置点变动,此时,为了重新搜索到准确的路径,需要重新对动态局部地图进行排序,所以,要向系统发送即将开始搜索地图的信号,系统接收到该信号,立即触发排序标识,使机器人进入排序状态。此外,触发排序标识的触发事件还可以是其它事件,具体可以根据实际情况进行相应设置。
优选的,所述所有动态局部地图构建完成的步骤之后,还包括如下对动态局部地图的信息进行更新的步骤:确定所述动态局部地图中的栅格单元的初始状态为未知单元;将机器人已行进过的栅格单元标示为已行进单元;将机器人碰撞到障碍物的栅格单元标示为障碍单元;将机器人检测到悬崖的栅格单元标示为悬崖单元;将机器人行进至所述动态局部地图的边界时检测到栅格单元标示为边界单元;将已标示过的栅格单元的信息替换所对应的未知单元的信息。假设,以4bit数据来表示一个栅格单元的信息,则每个栅格单元最多有16种状态信息。如果用0000表示未知,0001表示已行进,0010表示碰撞到障碍物,0011表示检测到悬崖,0100表示动态局部地图的边界。则,当机器人开始行进前,所有的栅格单元的状态信息都是0000,表示这些栅格单元都是未知单元。在机器人行进的过程中,当其走过某个栅格单元时,就用0001替换0000,使得该栅格单元的状态信息变为0001,表示该栅格单元为已行进单元。当机器人碰撞到障碍物时,就用0010替换0000,使得该栅格单元的状态信息变为0010,表示该栅格单元为障碍单元。同理,当机器人检测到悬崖时,就用0011替换0000,使得该栅格单元的状态信息变为0011,表示该栅格单元为悬崖单元。当机器人行进至所述动态局部地图的边界时,就用0100替换0000,使得该栅格单元的状态信息变为0100,表示该栅格单元为边界单元。机器人就是一边移动一边进行这些状态信息的替换,最终实现了对动态局部地图的信息的更新。其中,机器人移动时的位置信息是通过轮子的编码器和陀螺仪结合计算实时得到的,然后按照栅格单元的大小把得到的位置信息转为栅格信息,最后把当前位置检测到的状态信息作为对应的栅格单元的状态信息,更新所述动态局部地图中的栅格单元的初始状态信息。通过对动态局部地图的信息进行更新,有利于后续的地图路径搜索,保证机器人搜索到准确、高效的到达目标点的路径。
优选的,所有动态局部地图构建完成的步骤之后,还包括如下基于所有所述动态局部地图,构建全局地图的步骤:确定所有所述动态局部地图中x值最小的点所在的垂直X轴的直线作为第一条边;确定所有所述动态局部地图中x值最大的点所在的垂直X轴的直线作为第二条边;确定所有所述动态局部地图中y值最小的点所在的垂直Y轴的直线作为第三条边;确定所有所述动态局部地图中y值最小的点所在的垂直Y轴的直线作为第四条边;确定由所述第一条边、所述第二条边、所述第三条边和所述第四条边所围成的区域所对应的地图作为全局地图。如图4所示,在以(200,200)为原点的XY轴坐标系中,一个最小的方格表示一个动态局部地图,在机器人完成所有的动态局部地图的构建后,形成如图所示的动态局部地图组。此时,为了便于路径搜索和路径规划算法的使用,提高搜索算法的效率,需要构建一个全局地图的边框。首先,分析所述动态局部地图组中x值最小的点为19#局部地图的起始点,x值为160,此时将该点所在的垂直于X轴的直线(即连接(160,260)位置点和(160,160)位置点所构成的直线)作为第一条边。接着,分析所述动态局部地图组中x值最大的点为6#局部地图的右下角的角点,x值为320,此时将该点所在的垂直于X轴的直线(即连接(320,260)位置点和(320,160)位置点所构成的直线)作为第二条边。紧接着分析所述动态局部地图组中y值最小的点为1#局部地图的起始点,y值为160,此时将该点所在的垂直于Y轴的直线(即连接(160,160)位置点和(320,160)位置点所构成的直线)作为第三条边。再分析所述动态局部地图组中y值最大的点为25#局部地图的左上角的角点,y值为260,此时将该点所在的垂直于Y轴的直线(即连接(160,260)位置点和(320,260)位置点所构成的直线)作为第四条边。最后,确定由所述第一条边、所述第二条边、所述第三条边和所述第四条边所围成的区域所对应的地图作为全局地图。图中未以最小方格表示的区域为未知区域。通过在动态局部地图的基础上构建全局地图,有利于机器人的路径搜索,可以提高搜索效率。
优选的,所述基于所有所述动态局部地图,构建全局地图的步骤之后,包括如下构建总地图的步骤:基于原点,建立一个预定长度和预定宽度的方形边界;搜索所述方形边界内的动态局部地图,标示不属于动态局部地图的区域为未知区域;将搜索到的动态局部地图和未知区域作为总地图。如图4所示,基于XY轴坐标系的原点,建立一个长度为400,宽度为400的正方形边界(即图中所示的虚线框),搜索虚线框内的动态局部地图(即图中最小的方形格子),标示其它不属于动态局部地图的区域为未知区域,最后搜索到的动态局部地图和未知区域作为总地图(即虚线框所围成的地图)。通过总地图的限制,使得机器人的行进不会超过其最大行程范围,保证机器人能顺利地回到原点或者充电座。因为机器人的电能有限,如果走的太远,可能剩余的电能就不够机器人回到充电座的位置了,同时,由于行进误差和地图误差等原因,机器人离原点的位置越远,可能积累的误差就越大,最终导致机器人无法准确地回到原点位置。所以,通过构建总地图就可以有效地避免这些问题,当然,总地图的预定长度和预定宽度是可以设置的值,根据不同的机器人性能可以设置不同的值。
上述实施例中,所述动态局部地图为具有相同长度和宽度的正方形区域所对应的地图,长度和宽度都为20个栅格单元的长度之和,即每个动态局部地图中包含有20*20=400个栅格单元。每个栅格单元的长度为0.2m,为机器人机身宽度的一半。当然,这些数值都是可以设置的,只要解决本发明所述的问题,达到本发明所述的效果,就可以根据不同的情况设置为不同的值。
本发明所述的芯片,用于存储程序,所述程序用于控制机器人执行上述的动态建图方法。安装所述芯片的机器人通过先建一个数据结构,再申请一个动态局部地图所需要的内存,然后才基于当前位置构建一个动态局部地图,这种申请一份内存,建一个动态局部地图的方式,可以有效、合理地利用系统内存,提高机器人建图的灵活性,从而提高机器人的清扫面积,避免了现有的静态栅格地图占用内存大、内存利用不合理,清扫面积受限的问题。
以上实施例仅为充分公开而非限制本发明,凡基于本发明的创作主旨、未经创造性劳动的等效技术特征的替换,应当视为本申请揭露的范围。
Claims (6)
1.一种机器人的动态建图方法,其特征在于,包括如下步骤:
建立第一个数据结构;
申请构建一个动态局部地图所需要的内存;
基于机器人从原点出发行进至的第一个位置点,给所述第一个数据结构赋值,构建第一个动态局部地图;
基于机器人行进至动态局部地图外的第一个位置点,给对应的数据结构赋值,构建下一个动态局部地图,包括如下步骤:
将机器人行进至动态局部地图外的第一个位置点作为当前点;
确定所述当前点的坐标值为(x,y);
确定一个动态局部地图的长度为h,宽度为w;
将坐标值(X=(x/h)*h,Y=(y/w)*w)赋予与所述当前点对应的数据结构,其中,(x/h)和(y/w)都为整除;
将所述坐标值(X,Y)所对应的点作为起始点构建动态局部地图;
将所述坐标值(X,Y)所对应的点作为起始点构建动态局部地图的步骤之后,还包括如下步骤:
基于所述动态局部地图的起始点(X,Y),确定所述动态局部地图的其它三个点的坐标值分别为(X+h,Y)、(X+h,Y+w)和(X,Y+w);
根据所述起始点和所述其它三个点的坐标值,确定所述动态局部地图的范围;
将所述动态局部地图的范围赋予所述数据结构;
建立第二个数据结构;
再申请构建一个动态局部地图所需要的内存;
基于机器人行进至第一个动态局部地图外的第一个位置点,给所述第二个数据结构赋值,构建第二个动态局部地图;
以此类推,基于机器人行进至动态局部地图外的第一个位置点,给对应的数据结构赋值,构建下一个动态局部地图,至所有动态局部地图构建完成;
在动态局部地图构建的过程中或者在所有动态局部地图构建完成的步骤之后,还包括如下对所有动态局部地图进行排序的步骤:
在满足排序条件时,搜索每个动态局部地图的起始点的坐标值;
将所述动态局部地图按照所述起始点的坐标值中的y值从小到大进行排序;
如果y值相同的动态局部地图有多个时,则将所述y值相同的动态局部地图按照坐标值中的x值从小到大进行排序;
判断是否满足所述排序条件,包括如下步骤:
判断机器人是否在行进和是否在进行地图搜索;
如果机器人在行进或者在进行地图搜索,则不满足排序条件;
如果机器人不在行进,也不在进行地图搜索,则判断离上次排序的时间是否超过了设定时间,或者是否触发了排序标识;
如果离上次排序的时间超过了设定时间或者触发了排序标识,则满足排序条件;
如果离上次排序的时间没有超过设定时间或者没有触发排序标识,则不满足排序条件;
基于所有所述动态局部地图,构建全局地图的步骤之后,包括如下构建总地图的步骤:
基于原点,建立一个预定长度和预定宽度的方形边界;
搜索所述方形边界内的动态局部地图,标示不属于动态局部地图的区域为未知区域;
将搜索到的动态局部地图和未知区域作为总地图。
2.根据权利要求1所述的方法,其特征在于,所述申请构建一个动态局部地图所需要的内存,包括如下步骤:
确定一个栅格单元所占的内存为Q;
确定一个动态局部地图的长度为m个栅格单元的长度之和;
确定一个动态局部地图的宽度为n个栅格单元的宽度之和;
申请构建一个动态局部地图的内存为C,C=Q*m*n。
3.根据权利要求1所述的方法,其特征在于,所述触发排序标识的触发事件包括即将开始搜索地图的事件。
4.根据权利要求1所述的方法,其特征在于,所述所有动态局部地图构建完成的步骤之后,还包括如下对动态局部地图的信息进行更新的步骤:
确定所述动态局部地图中的栅格单元的初始状态为未知单元;
将机器人已行进过的栅格单元标示为已行进单元;
将机器人碰撞到障碍物的栅格单元标示为障碍单元;
将机器人检测到悬崖的栅格单元标示为悬崖单元;
将机器人行进至所述动态局部地图的边界时检测到栅格单元标示为边界单元;
将已标示过的栅格单元的信息替换所对应的未知单元的信息。
5.根据权利要求1所述的方法,其特征在于,所述所有动态局部地图构建完成的步骤之后,还包括如下基于所有所述动态局部地图,构建全局地图的步骤:
确定所有所述动态局部地图中x值最小的点所在的垂直X轴的直线作为第一条边;
确定所有所述动态局部地图中x值最大的点所在的垂直X轴的直线作为第二条边;
确定所有所述动态局部地图中y值最小的点所在的垂直Y轴的直线作为第三条边;
确定所有所述动态局部地图中y值最小的点所在的垂直Y轴的直线作为第四条边;
确定由所述第一条边、所述第二条边、所述第三条边和所述第四条边所围成的区域所对应的地图作为全局地图。
6.一种芯片,用于存储程序,其特征在于:所述程序用于控制机器人执行权利要求1至5任一项所述的机器人的动态建图方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710791899.7A CN107390700B (zh) | 2017-09-05 | 2017-09-05 | 机器人的动态建图方法及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710791899.7A CN107390700B (zh) | 2017-09-05 | 2017-09-05 | 机器人的动态建图方法及芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107390700A CN107390700A (zh) | 2017-11-24 |
CN107390700B true CN107390700B (zh) | 2021-06-01 |
Family
ID=60351185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710791899.7A Active CN107390700B (zh) | 2017-09-05 | 2017-09-05 | 机器人的动态建图方法及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107390700B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108507578B (zh) * | 2018-04-03 | 2021-04-30 | 珠海市一微半导体有限公司 | 一种机器人的导航方法 |
CN109540155A (zh) * | 2019-02-01 | 2019-03-29 | 西安全志科技有限公司 | 一种扫地机器人的路径规划与导航方法、计算机装置以及计算机可读存储介质 |
CN111700552B (zh) * | 2019-03-18 | 2023-09-01 | 北京奇虎科技有限公司 | 地图尺寸扩充的方法、装置、设备及计算机可读存储介质 |
WO2021003958A1 (zh) * | 2019-07-09 | 2021-01-14 | 苏州科瓴精密机械科技有限公司 | 栅格地图的创建方法及创建系统 |
CN114637698B (zh) * | 2022-05-18 | 2022-09-02 | 深圳市倍思科技有限公司 | 机器人的地图内存分配方法、装置、机器人及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100834571B1 (ko) * | 2006-09-28 | 2008-06-02 | 한국전자통신연구원 | 자율이동로봇의 최적 경로를 통한 환경 지도 작성 장치 및그 방법 |
CN104035444A (zh) * | 2014-06-27 | 2014-09-10 | 东南大学 | 机器人地图构建存储方法 |
CN106595659A (zh) * | 2016-11-03 | 2017-04-26 | 南京航空航天大学 | 城市复杂环境下多无人机视觉slam的地图融合方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100449444C (zh) * | 2006-09-29 | 2009-01-07 | 浙江大学 | 移动机器人在未知环境中同时定位与地图构建的方法 |
US20170102710A1 (en) * | 2015-10-13 | 2017-04-13 | Looq System, Inc. | Vacuum Cleaning Robot With Vision Navigation Function and Navigation Method Thereof |
-
2017
- 2017-09-05 CN CN201710791899.7A patent/CN107390700B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100834571B1 (ko) * | 2006-09-28 | 2008-06-02 | 한국전자통신연구원 | 자율이동로봇의 최적 경로를 통한 환경 지도 작성 장치 및그 방법 |
CN104035444A (zh) * | 2014-06-27 | 2014-09-10 | 东南大学 | 机器人地图构建存储方法 |
CN106595659A (zh) * | 2016-11-03 | 2017-04-26 | 南京航空航天大学 | 城市复杂环境下多无人机视觉slam的地图融合方法 |
Non-Patent Citations (2)
Title |
---|
"针对复杂环境的模块化栅格地图构建算法;秦玉鑫 等;《控制工程》;20161031;第23卷(第10期);第1627-1633页 * |
秦玉鑫 等."针对复杂环境的模块化栅格地图构建算法.《控制工程》.2016,第23卷(第10期),第1627-1633页. * |
Also Published As
Publication number | Publication date |
---|---|
CN107390700A (zh) | 2017-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107390700B (zh) | 机器人的动态建图方法及芯片 | |
CN109540155A (zh) | 一种扫地机器人的路径规划与导航方法、计算机装置以及计算机可读存储介质 | |
CN105354648A (zh) | Agv调度管理的建模及其优化方法 | |
CN108665117B (zh) | 一种室内空间最短路径的计算方法、装置、终端设备以及存储介质 | |
CN101702655B (zh) | 网络拓扑图的布局方法和系统 | |
CN105527964A (zh) | 一种机器人路径规划方法 | |
CN105467997A (zh) | 基于线性时序逻辑理论的仓储机器人路径规划方法 | |
CN111080786B (zh) | 基于bim的室内地图模型构建方法及装置 | |
CN112650229A (zh) | 一种基于改进蚁群算法的移动机器人路径规划方法 | |
CN110909961B (zh) | 基于bim的室内路径查询方法及装置 | |
CN102778229A (zh) | 未知环境下基于改进蚁群算法的移动Agent路径规划方法 | |
CN112221144B (zh) | 三维场景寻路方法及装置、三维场景地图处理方法及装置 | |
CN111631639B (zh) | 全局栅格地图的地图遍历块建立方法、芯片及移动机器人 | |
CN106204719B (zh) | 基于二维邻域检索的三维场景中海量模型实时调度方法 | |
CN111649758A (zh) | 一种动态环境下基于强化学习算法的路径规划方法 | |
CN108106624A (zh) | 一种多人预约调度路径规划方法及相关装置 | |
CN113189988A (zh) | 一种基于Harris算法与RRT算法复合的自主路径规划方法 | |
Lu et al. | Tmstc*: A path planning algorithm for minimizing turns in multi-robot coverage | |
CN108594813B (zh) | 一种大尺度室内环境下多清洁机器人任务分配方法 | |
Cagigas et al. | Hierarchical path search with partial materialization of costs for a smart wheelchair | |
CN116009552A (zh) | 一种路径规划方法、装置、设备及存储介质 | |
CN111722624A (zh) | 清扫方法、装置、设备及计算机可读存储介质 | |
Lima et al. | Formal analysis in a cellular automata ant model using swarm intelligence in robotics foraging task | |
CN111487962B (zh) | 一种应用于仓储环境下多机器人路径快速规划方法 | |
CN110887503B (zh) | 移动轨迹模拟方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |