机器人的避障方法、装置、机器人及存储介质
技术领域
本发明实施例涉及移动机器人领域,特别涉及一种机器人的避障方法、装置、机器人及存储介质。
背景技术
随着计算机技术、传感器技术及人工智能的迅速发展,机器人自主导航技术也取得了很大进展。机器人在自主导航过程中,需要对行进路线上的障碍物进行探测,从而避免机器人与障碍物之间擦碰导致机器人损坏。机器人通常是通过安装其上的传感器对行进路线进行探测,从而可以知晓障碍物的方向并调整机器人的行进路线。
发明人发现相关技术中至少存在如下问题:为保证机器人上安装的传感器可以探测到较远的区域,通常机器人上安装的传感器会与地面存在一定的距离,如图1所示,由于传感器的安装位置,导致机器人两侧或者机器人前方较短的范围存在探测盲区,若探测盲区内存在障碍物则会导致机器人与障碍物出现擦碰。
发明内容
本发明实施例的目的在于提供一种机器人的避障方法、装置、机器人及存储介质,使得在机器人的导航地图中不仅存在机器人可以探测到的障碍物,还存有机器人当前时刻探测盲区内的障碍物,避免机器人出现擦碰。
为解决上述技术问题,本发明的实施例提供了一种机器人的避障方法,包括:检测当前检测范围内的障碍物,并生成当前障碍物点云数据;获取存储的历史障碍物点云数据;利用当前障碍物点云数据与历史障碍物点云数据建立导航地图,根据导航地图确定障碍物的位置信息并规划导航路线。
本发明的实施例还提供了一种机器人的避障装置,包括:检测模块,获取模块,建立模块;检测模块用于检测当前检测范围内的障碍物,并生成第一障碍物点云数据;获取模块用于获取存储的历史障碍物点云数据;建立模块用于利用第一障碍物点云数据与历史障碍物点云数据建立导航地图,根据导航地图确定障碍物的位置信息并规划导航路线。
本发明的实施方式还提供了一种机器人,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行机器人的避障方法。
本发明的实施方式还提供了一种存储介质,存储有计算机程序,计算机程序被处理器执行时上述的机器人的避障方法。
本发明实施例相对于现有技术而言,检测机器人在当前位姿下检测范围内的障碍物,并生成当前障碍物的点云数据,获取存储的历史障碍物点云数据,历史障碍物点云数据为机器人在过去时间段内检测到的障碍物的点云数据,由于在过去时间段内机器人的位姿与机器人的当前位姿不同,所以当前机器人位姿下的探测盲区是过去时间段内机器人的位姿下的探测区域,也就是说可以根据历史障碍物点云数据知晓当前机器人的探测盲区内是否存在障碍物,利用当前障碍物点云数据与历史障碍物点云数据建立导航地图,这样建立的导航地图可以向机器人展示探测区域是否存在障碍物的同时,还可以向机器人展示当前时刻探测盲区是否存在障碍物,从而为机器人规划更为准确的行动路线,避免机器人与障碍物之间出现擦碰,保证机器人的顺利行进。
另外,利用当前障碍物点云数据与历史障碍物点云数据建立导航地图,包括:对历史障碍物点云数据进行坐标系转换,坐标系转换后的历史障碍物点云数据与当前障碍物点云数据为同一坐标系下的点云数据;利用当前障碍物点云数据与坐标系转换后的历史障碍物点云数据建立导航地图。通过对当前障碍物点云数据和历史障碍物点云数据形成的不同地图层进行坐标系转换,将不同的点云数据的坐标系统一,进而通过统一坐标系下的点云数据建立导航地图,从而实现通过不同坐标系下的点云数据建立一张导航地图,保证得到的导航地图中包含的信息的准确性。
另外,对历史障碍物点云数据进行坐标系转换,包括:获取当前障碍物点云数据对应的第一坐标系以及历史障碍物点云数据对应的第二坐标系;根据第一坐标系与第二坐标系,确定坐标系的相对变化量;根据相对变化量对历史障碍物点云数据进行坐标系转换。
另外,利用当前障碍物点云数据与坐标系转换后的历史障碍物点云数据建立导航地图,包括:利用当前障碍物点云数据建立第一地图层;利用坐标系转换后的历史障碍物点云数据建立与第一地图层分辨率相同的第二地图层;将第一地图层与第二地图层内的各像素点叠加,建立导航地图。通过建立的不同地图层中的像素点的叠加建立导航地图,使建立的导航地图中涵盖了两个地图层包含的障碍物信息,避免障碍物信息的遗漏导致导航的路线不准确。另外,第一地图层和第二地图层的分辨率相同,即两个地图层中包含的像素点的位置是一一对应的,从而便于进行叠加操作。
另外,在生成当前障碍物点云数据之后,还包括:将当前障碍物点云数据存储至历史点云队列的队尾,并将历史点云队列中的队头的点云数据移除;获取存储的历史障碍物点云数据,包括:获取历史点云队列中的所有点云数据作为历史障碍物点云数据。在历史点云队列的队尾添加点云数据时,会在队列的队头移除相应长度的点云数据,从而控制历史点云队列中存储的数据量,而在获取历史障碍物点云数据时,获取的是历史点云队列中存储的所有数据,这时获取的历史障碍物点云数据量较小,且获取的历史障碍物点云数据较新,从而可以快速的建立导航地图,且建立的导航地图的信息较为符合当前的实际场景中的障碍物分布情况。
另外,将当前障碍物点云数据存储至历史点云队列的队尾,包括:比对当前障碍物点云数据与预先存储的全局障碍物点云地图中的点云数据,将共同包含的点云数据作为静态障碍物点云数据;将静态障碍物点云数据存储至历史点云队列的对尾。首先,历史点云队列中存储的是一段时间内的多帧障碍物点云数据,每一帧障碍物点云数据均可以生成一张机器人探测范围内的地图,多帧障碍物点云数据各自生成的地图存在共同的区域,在利用历史障碍物点云数据建立导航地图时,需要利用历史点云队列中保存的所有帧的点云数据。另外,静态障碍物相对于动态障碍物保持同一位置的时间较长,所以历史点云队列中存储的所有帧的点云数据中,记录的静态障碍物的位置相对固定,所以生成的地图中同一静态障碍物在地图上显示同一位置,不会出现残影的现象,避免建立的导航地图中存在残影影响导航。
另外,比对当前障碍物点云数据与预先存储的全局障碍物点云地图中的点云数据,包括:根据当前障碍物点云数据对全局障碍物点云地图中的点云数据进行选取,得到局部地图中的障碍物点云数据;比对当前障碍物点云数据与局部地图中的障碍物点云数据。这样做可以减少比对的数据量,提高静态障碍物点云数据的获取效率。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明机器人的探测区域及探测盲区的示意图;
图2是根据本发明第一实施例中的机器人的避障方法的流程图;
图3是根据本发明第二实施例中的机器人的避障方法的流程图;
图4是根据本发明第三实施例中的机器人的避障方法的流程图;
图5是根据本发明第四实施例中的机器人的避障装置的结构示意图;
图6是根据本发明第五实施例中的机器人的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。
以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明的第一实施例涉及一种机器人的避障方法,包括:检测当前检测范围内的障碍物,并生成当前障碍物点云数据;获取存储的历史障碍物点云数据;利用当前障碍物点云数据与历史障碍物点云数据建立导航地图,根据导航地图确定障碍物的位置信息并规划导航路线。使得在机器人的导航地图中不仅存在机器人可以探测到的障碍物,还存有机器人当前时刻探测盲区内的障碍物,避免机器人出现擦碰。下面对本实施例的机器人的避障方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
具体流程如图2所示,第一实施例涉及一种机器人的避障方法,包括:
步骤201,检测当前检测范围内的障碍物,并生成当前障碍物点云数据。
具体地说,机器人通过设置其上的传感器对探测区域内的障碍物进行检测,若探测区域(检测范围)内存在障碍物,则将障碍物所处的位置以点的形式记录为障碍物点云数据,所记录的每个点均包含二维坐标或三维坐标,还可以包含颜色信息等其他信息,从而使记录的障碍物点云信息更加形象立体。
机器人的传感器所检测的检测范围可以预先进行设置,或根据传感器设置在机器人的位置所确定,例如,可以根据机器人的大小进行设置,以机器人的长度和宽度与预设系数的乘积作为该机器人的检测范围,所设置的检测范围可以是以机器人为中心的一定区域,也可以是机器人行进方向上的一定区域,在此处对检测范围的大小及检测的区域相对于机器人的位置关系不做限制。
另外,在生成当前障碍物点云数据之后,还可以对当前生成的障碍物点云数据进行存储,如,可以通过历史点云队列实现障碍物点云数据的有序存储,将当前障碍物点云数据存储至历史点云队列的队尾。由于历史点云队列中存储的点云数据的帧数是有限的,所以可以将历史点云队列中的队头的点云数据移除,以保证最新的障碍物点云数据的存储。
步骤202,获取存储的历史障碍物点云数据。
具体地说,在机器人对检测范围内的障碍物进行检测得到障碍物的点云数据之后,将生成的障碍物点云数据作为历史障碍物点云数据进行存储,当前时刻获取的历史障碍物点云数据可以是前一时刻生成并存储的障碍物点云数据,也可以是之前的任一时间段内生成的并存储的所有障碍物点云数据。若通过上述历史点云队列对当前障碍物点云数据进行存储,则可以将历史点云队列中的所有障碍物点云数据作为历史障碍物点云数据,以供机器人可以通过获取的历史障碍物点云数据知晓当前时刻机器人的探测盲区内的障碍物点云数据,从而知晓当前时刻机器人的探测盲区内是否存在障碍物,及障碍物相对于机器人的位置信息。
步骤203,利用当前障碍物点云数据与历史障碍物点云数据建立导航地图。
具体地说,机器人在生成障碍物点云数据的同时还会记录机器人的位姿,由于生成的障碍物点云数据是在某一特定坐标系下的点云数据,而这一特定坐标系是根据机器人的位姿确定的,所以在机器人的位姿发生改变时,相应的生成障碍物点云数据对应的坐标系是发生变化的。利用不同坐标系下的点云数据建立导航地图时,需要预先对两者的坐标系进行统一,可以根据记录的机器人在不同时刻下的位姿对障碍物点云数据的坐标系进行统一,例如,假设当前时刻机器人的位姿为T1,机器人上一时刻的位姿为T0,在对当前时刻生成的障碍物点云数据1和上一时刻生成的障碍物点云数据2的坐标系进行统一时,计算机器人在上一时刻到此时刻位姿的变化量Tdiff,Tdiff=T0/T1,再将当前障碍物点云数据的坐标系与上一时刻障碍物点云数据的坐标系进行统一,若上一时刻障碍物点云数据2以last_pcl表示,当前坐标系下的障碍物点云数据1以current_pcl表示,则利用公式currentpcl=Tdiff*lastocl实现上一时刻障碍物点云数据2的坐标系转换为当前障碍物点云数据1的坐标系。在实现不同障碍物点云数据的坐标系的转换之后,即可以根据同属于同一坐标系下的障碍物点云数据建立导航地图。在实际应用中所获取的历史障碍物点云数据可能并非同一位姿下的点云数据,在获取的历史障碍物点云数据中包含多个时刻下生成的点云数据时,分别获取历史障碍物点云数据中的各个时刻下机器人的位姿,并根据上述方法分别对各个时刻的障碍物点云数据的坐标系与当前障碍物点云数据的坐标系进行统一,直至所有历史障碍物点云数据的坐标系均与当前障碍物点云数据的坐标系完成统一,利用坐标转换后的历史障碍物点云数据与当前障碍物点云数据建立导航地图。
另外,在利用坐标转换后的历史障碍物点云数据与当前障碍物点云数据建立导航地图时,可以利用当前障碍物点云数据建立分辨率为resolution的栅格地图,将利用当前障碍物点云数据建立的栅格地图作为导航地图(costmap)的动态层。再利用坐标转换后的历史障碍物点云数据建立分辨率同为resolution的栅格地图,将其作为导航地图的投影层。建立的导航地图的动态层和投影层的分辨率相同,导致动态层和投影层中单位面积内的像素点数相同,从而便于实现动态层和投影层的叠加。
在建立栅格地图时,将障碍物点云数据对应的栅格标记为1,不存在障碍物点云数据的栅格标记为0,从而实现对障碍物的标记。对建立的动态层的栅格地图和投影层的栅格地图进行叠加,叠加后的栅格地图的各个栅格取两者的最大值,即在动态层的栅格地图的第一栅格为1,而投影层的栅格地图中该第一栅格为0时,叠加后的栅格地图中该第一栅格对应的数值为1;而在动态层的栅格地图的第二栅格和投影层的栅格地图的第二栅格均为0时,叠加后的栅格地图的第二栅格对应的数值为0。如可以根据以下公式对动态层和投影层进行叠加,costmapnav[i][j]=max(costmapprojection[i][j],costmapdynamic[i][j]),costmapnav[i][j]为叠加后的栅格地图中各个栅格对应的数值;costmapprojection[i][j]为投影层中各个栅格对应的数值;costmapdynamic[i][j]为动态层中各个栅格对应的数值。据此完成建立的动态层与投影层的叠加,叠加后的栅格地图即为导航地图,从而实现利用坐标转换后的历史障碍物点云数据与当前障碍物点云数据建立导航地图。
步骤204,根据导航地图确定障碍物的位置信息并规划导航路线。
具体地说,在建立导航地图之后,可以根据导航地图的各个栅格对应的数值,得知障碍物的位置信息,例如,在栅格对应的数值为1时,这一栅格相对于机器人的位置是存在障碍物的,而栅格对应的数值若为0,这一栅格相对于机器人的位置是不存在障碍物的,从而可以根据不存在障碍物的位置,对机器人行进路线进行规划,避免机器人与障碍物出现擦碰,导致机器人损坏。
本发明实施例相对于现有技术而言,检测机器人在当前位姿下检测范围内的障碍物,并生成当前障碍物的点云数据,获取存储的历史障碍物点云数据,历史障碍物点云数据为机器人在过去时间段内检测到的障碍物的点云数据,由于在过去时间段内机器人的位姿与机器人的当前位姿不同,所以当前机器人位姿下的探测盲区是过去时间段内机器人的位姿下的探测区域,也就是说可以根据历史障碍物点云数据知晓当前机器人的探测盲区内是否存在障碍物,利用当前障碍物点云数据与历史障碍物点云数据建立导航地图,这样建立的导航地图可以向机器人展示探测区域是否存在障碍物的同时,还可以向机器人展示当前时刻探测盲区是否存在障碍物,从而为机器人规划更为准确的行动路线,避免机器人与障碍物之间出现擦碰,保证机器人的顺利行进。
本发明的第二实施例涉及一种机器人的避障方法。在本发明第二实施例中,历史障碍物点云数据记录在历史点云队列中,且历史障碍物点云数据为静态障碍物点云数据,在历史障碍物点云数据为静态障碍物点云数据时,生成的导航地图中不会出现残影的现象,保证规划机器人的导航路线可以为最优路线。
具体流程如图3所示,包括:
步骤301,检测当前检测范围内的障碍物,并生成当前障碍物点云数据。与第一实施例中步骤201一致,在此不再赘述。
步骤302,比对当前障碍物点云数据与预先存储的全局障碍物点云地图中的点云数据,将共同包含的点云数据作为静态障碍物点云数据。
具体地说,在机器人应用于某一场景之前,相关人员可以控制机器人在这一应用场景行动,获取应用场景下的所有的障碍物信息,建立全局障碍物点云地图,从而在机器人应用在这一场景下时,可以根据建立的全局障碍物点云地图规划全局的路线。还可以人为获取全局障碍物地图,并将获取的地图导入机器人的存储数据库,以便机器人可以根据全局障碍物点云地图进行路线的规划。
在生成当前障碍物点云数据之后,将当前障碍物点云数据与全局障碍物点云地图中的点云数据进行比对,当前障碍物点云数据中若存在与全局障碍物点云地图中的点云数据相同的点云数据,则将相同的点云数据作为静态障碍物点云数据。由于预先存储的全局障碍物点云地图中的点云数据与当前检测的障碍物点云数据,两类点云数据的生成时间是不相同的,两个时间是存在一定间隔的,若这两类点云数据中表示的同一障碍物处于同一位置,那么可以看作这一障碍物在这一时间间隔内并未发生移动,将这一障碍物的点云数据作为静态障碍物点云数据。这样做通过比对当前障碍物点云数据与全局障碍物点云地图中的点云数据即可确定应用场景中的静态障碍物。
在比对当前障碍物点云数据与预先存储的全局障碍物点云地图中的点云数据时,可以根据当前障碍物点云数据对全局障碍物点云地图中的点云数据进行选取,得到局部地图中的障碍物点云数据,从而可以减少比对的数据量,提高静态障碍物点云数据的获取效率。在对全局障碍物点云地图中的点云数据进行选取时,可以先根据当前障碍物点云数据建立导航地图的动态层,然后从全局点云地图中截取与动态层等尺寸的局部障碍物点云地图,截取的局部障碍物点云地图所指示的位置区域与导航地图的动态层指示的位置区域相同。将截取的局部障碍物点云地图作为导航地图的静态层,通过比对导航地图的静态层和动态层,将动态层和静态层对应的栅格均有的障碍物作为静态障碍物,将静态障碍物对应的点云数据作为静态障碍物点云数据。
步骤303,将当前障碍物点云数据存储至历史点云队列的队尾,并将历史点云队列中的队头的点云数据移除。
具体地说,在生成当前障碍物点云数据之后,将当前障碍物点云数据存储至历史点云队列,历史点云队列中可以存储若干帧点云数据,每一帧的点云数据均可以对应建立一层栅格地图。例如,在第一时刻向历史点云队列中存储障碍物点云数据,根据第一时刻存储的障碍物点云数据即可生成第一时刻检测范围内的障碍物点云地图;同理,在第二时刻直至当前时刻均可向历史点云队列中存储障碍物点云数据,并根据存储的这一时刻的障碍物点云数据建立这一时刻的检测范围内的障碍物点云地图。另外,由于历史点云队列中存储的数据是有限的,在将当前障碍物点云数据存储至历史点云队列的队尾之后,需要将历史点云队列中的队头的点云数据移除,从而保证历史点云队列中可以陆续接收新的数据。例如,历史点云队列中可以接收10帧的数据,一帧数据代表某一时刻生成的障碍物点云数据。在将当前障碍物点云数据存储至历史点云队列的队尾作为第10帧数据时,将历史点云队列的对头的点云数据删除,即将历史点云队列的第1帧数据删除,删除后可以将剩余所有的帧的数据均向前平移一帧,保证历史点云队列中存储的数据是有时间顺序的。
历史点云队列的队列大小可以根据数据在队列中保存的时间确定的,若需要点云数据在历史点云队列中保存的时间较长,则可以适当增加队列的大小,反之亦然。历史点云队列的队列大小的确定具体如下:假设设置的点云数据的擦除时间为t_erase,也可以说是点云数据在历史点云队列中保存的时间为t_erase。如果机器人向历史点云队列中保存障碍物点云数据的频率为rate,则历史点云的队列大小需通过以下公式进行计算,队列大小queue_size=floor(t_erase*rate),floor()函数表示向上取整运算。为方便理解下面以一实例进行说明,对于各项参数所设置的具体数值,在此并不做限制。假设设置的擦除时间t_erase为3秒,频率为5次/秒,那么计算的队列大小为3*5,需将历史点云队列的队列大小设置为15帧,才可以保证每帧数据在历史点云队列中保存的时间在3秒。
步骤304,获取存储的历史点云队列中的所有点云数据作为历史障碍物点云数据。具体地说,由上述说明可以知道历史点云队列中存储有若干帧的点云数据,将历史点云队列中存储的所有点云数据均作为历史障碍物点云数据,由于历史点云队列中存储的点云数据具有时效性,所以获取的历史障碍物点云数据实时进行更新,根据历史点云队列中的点云数据可以反应最新的历史障碍物信息,在障碍物位置发生改变时可以及时的更新导航地图。
步骤305,利用当前障碍物点云数据与历史障碍物点云数据建立导航地图。
步骤306,根据导航地图确定障碍物的位置信息并规划导航路线。
步骤305、306与第一实施例中步骤203、204一一对应,为避免重复,在此不再赘述。
在本实施例中,利用历史点云队列对障碍物点云数据进行存储,实现历史障碍物点云数据的实时更新;另外,历史点云队列中存储的障碍物点云数据为静态障碍物点云数据,记录的静态障碍物的位置相对固定,所以生成的地图中同一静态障碍物在地图上显示同一位置,不会出现残影的现象,避免建立的导航地图中存在残影影响导航。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明的第三实施例涉及一种机器人的避障方法,如图4所示,包括:
步骤401,机器人在行进之前加载预先建立的全局障碍物点云地图,全局障碍物点云地图为预先探测的机器人行进范围内所有障碍物的点云地图,由于障碍物的位置可能会随时间的推移而变化,所以全局障碍物点云地图可以为机器人行进过程提供障碍物位置的参考信息,而非准确的障碍物位置信息。
步骤402,在机器人位姿变化之后,获取机器人当前位姿和机器人在上一时刻的位姿。
步骤403,根据机器人的当前位姿在全局障碍物点云地图中截取部分点云地图作为局部地图。
步骤404,利用局部地图建立代价地图(costmap)的静态层,静态层以costmap_static表示。
步骤405,机器人在移动至当前位姿时获取当前障碍物点云数据并存储。
步骤406,根据当前障碍物点云数据建立代价地图(costmap)的动态层,动态层以costmap_dynamic表示。
步骤407,通过对比上述建立的代价地图的静态层和动态层,当两层栅格地图中的坐标对应的栅格均有障碍物时,则认定均有障碍物的该点坐标所代表的障碍物为静态障碍物。
步骤408,将静态障碍物的点云数据放入历史点云队列的队尾,并移除历史点云队列的队头的点云数据。
步骤409,根据机器人的位姿变化量,计算历史点云队列中其余帧到最新帧的投影。具体地说,在将静态障碍物的点云数据存储至历史点云队列中之后,由于历史点云队列是以帧为单位进行存储,所以每一帧对应一个时刻的点云数据。由于每一时刻机器人的位姿均为发生变化,所以每个帧内的点云数据所处的坐标系可能并不相同,在综合所有帧内的点云数据时,需要根据机器人的位姿变化量,计算历史点云队列中的所有帧的点云数据到当前帧的投影,例如,机器人的当前位姿为T1,机器人的上一时刻的位姿为T0,机器人上一时刻与当前时刻的位姿变化量为T0/T1,若将历史点云队列中上一时刻对应的帧内的点云数据投影至当前时刻对应的帧,则将上一时刻对应的帧内的所有点云数据分别与计算出的位姿变化量相乘,计算后的点云数据即为上一时刻对应的点云数据在当前时刻的点云数据的坐标系下的位置坐标,实现将上一时刻的点云数据投影至当前时刻的障碍物点云数据中。通过上述方式实现历史点云队列中所有帧内的点云数据的整合。
步骤410,利用上述投影处理整合后的点云数据建立代价地图(costmap)的投影层,投影层以costmap_projection表示。
步骤411,将上述建立的动态层costmap_dynamic与投影层costmap_projection进行叠加,并对叠加后的地图内的障碍物点云数据进行膨胀处理,完成导航地图的建立。在对动态层和投影层进行叠加时可以利用下述公式:costmapnav[i][j]=max(costmapprojection[i][j],costmapdynamic[i][j]),costmapnav[i][j]为叠加后的栅格地图中各个栅格对应的数值;costmapprojection[i][j]为投影层中各个栅格对应的数值;costmapdynamic[i][j]为动态层中各个栅格对应的数值,对利用上述公式叠加后的结果costmapnav[i][j]进行膨胀处理,从而生成导航地图。通过导航地图即可确定机器人当前位置下探测区域以及探测盲区内是否存在障碍物,并规划导航路线。
本发明第四实施例涉及一种机器人的避障装置,如图5所示,包括:检测模块51,获取模块52,建立模块53;检测模块51用于检测当前检测范围内的障碍物,并生成第一障碍物点云数据;获取模块52用于获取存储的历史障碍物点云数据;建立模块53用于利用第一障碍物点云数据与历史障碍物点云数据建立导航地图,根据导航地图确定障碍物的位置信息并规划导航路线。
不难发现,本实施例为与第一实施例相对应的装置实施例,本实施例可与第一实施例互相配合实施。第一实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例中。
另外,机器人的避障装置还包括:坐标转换模块;坐标转换模块用于对历史障碍物点云数据进行坐标系转换,坐标系转换后的历史障碍物点云数据与当前障碍物点云数据为同一坐标系下的点云数据。建立模块53用于利用当前障碍物点云数据与坐标系转换后的历史障碍物点云数据建立导航地图。
另外,坐标转换模块用于获取当前障碍物点云数据对应的第一坐标系以及历史障碍物点云数据对应的第二坐标系;根据第一坐标系与第二坐标系,确定坐标系的相对变化量;根据相对变化量对历史障碍物点云数据进行坐标系转换。
另外,建立模块53用于利用当前障碍物点云数据建立第一地图层;利用坐标系转换后的历史障碍物点云数据建立与第一地图层分辨率相同的第二地图层;将第一地图层与第二地图层内的各像素点叠加,建立导航地图。
另外,机器人的避障装置还包括:存储模块;存储模块用于将当前障碍物点云数据存储至历史点云队列的队尾,并将历史点云队列中的队头的点云数据移除;获取模块52用于获取历史点云队列中的所有点云数据作为历史障碍物点云数据。
另外,存储模块用于比对当前障碍物点云数据与预先存储的全局障碍物点云地图中的点云数据,将共同包含的点云数据作为静态障碍物点云数据;将静态障碍物点云数据存储至历史点云队列的对尾。
另外,存储模块用于根据当前障碍物点云数据对全局障碍物点云地图中的点云数据进行选取,得到局部地图中的障碍物点云数据;比对当前障碍物点云数据与局部地图中的障碍物点云数据。
值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
本发明第五实施例涉及一种机器人,如图6所示,包括至少一个处理器601;以及,与至少一个处理器601通信连接的存储器602;其中,存储器602存储有可被至少一个处理器601执行的指令,指令被至少一个处理器601执行,以使至少一个处理器601能够执行上述机器人的避障方法。
其中,存储器602和处理器601采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器601和存储器602的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器601。
处理器601负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器602可以被用于存储处理器601在执行操作时所使用的数据。
本发明第六实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。