机器人路径生成方法、装置、机器人和存储介质
技术领域
本申请涉及自动化技术领域,特别是涉及一种机器人路径生成方法、装置、机器人和存储介质。
背景技术
机器人逐渐应用于各行各业。在一些的应用场景(例如物流仓库区域)中需要布设多个机器人,通过机器人之间的配合更高效地完成诸如货物搬运、货物分类的任务。如何规划机器人的路径,避免机器人之间发生碰撞,同时提高机器人的行进效率,是机器人实际应用中需要解决的关键问题。
通常采用A*算法对机器人进行路径规划。在A*算法中将场景地图栅格化,用栅格表示真实环境中一定大小的区域,当规划路径的起点不位于栅格上、或者规划路径的终点不位于栅格上时,需要将规划路径的起点或规划路径的终点近似到附近的栅格,存在较大的误差,规划路径的起点和终点刚好位于栅格上才能实现较好的路径规划效果。考虑到路径规划的效率,在场景地图上无法设置很多的栅格,有较大概率出现规划路径的起点或终点不位于栅格上的情况。
发明内容
基于此,有必要针对上述技术问题,提供一种能够降低路径生成误差、提高路径生成效果的机器人路径生成方法、装置、机器人和存储介质。
一种机器人路径生成方法,所述方法包括:
获取机器人的当前位置和所述机器人待执行任务的任务终点;
获取预设的场景地图,所述场景地图上设有多个地图节点;
如果所述机器人的当前位置不在一个地图节点上,则在所述机器人的当前位置处创建虚拟起始节点;
如果所述任务终点不在一个地图节点上,则在所述任务终点的位置处创建虚拟目标节点;
依据创建了所述虚拟起始节点和所述虚拟目标节点的场景地图,生成所述机器人的任务规划路径。
在其中一个实施例中,所述虚拟起始节点的节点属性与第一地图节点的节点属性相同,且所述虚拟起始节点与所述第一地图节点连接,所述虚拟目标节点的节点属性与第二地图节点的节点属性相同,且所述虚拟目标节点与所述第二地图节点连接,所述第一地图节点为所述场景地图上距离所述当前位置最近的地图节点,所述第二地图节点为所述场景地图上距离所述任务终点最近的地图节点,所述节点属性包括转弯属性、障碍属性和连通属性。
在其中一个实施例中,所述方法还包括:
判断第一地图节点与所述当前位置的距离是否超过预设阈值,若超过则确定所述当前位置不在一个地图节点上,所述第一地图节点为所述场景地图上距离所述当前位置最近的地图节点;
判断第二地图节点与所述任务终点的距离是否超过所述阈值,若超过则确定所述任务终点不在一个地图节点上,所述第二地图节点为所述场景地图上距离所述任务终点最近的地图节点。
在其中一个实施例中,所述方法还包括:
获取所述机器人上扫描装置的扫描距离,将所述扫描距离设置为所述阈值,所述扫描装置用来扫描所述场景地图上的地图节点。
在其中一个实施例中,所述生成所述机器人的任务规划路径的步骤,包括:
构建待搜索节点集合和已搜索节点集合,所述待搜索节点集合中包含所述虚拟起始节点;
将所述待搜索节点集合中规划代价值最小的当前地图节点转移至所述已搜索节点集合中,并判断所述当前地图节点是否为所述虚拟目标节点;
当所述当前地图节点为所述虚拟目标节点时,获得所述机器人的任务规划路径,否则获取所述场景地图上所述当前地图节点的后续地图节点;
获取所述场景地图上剩余机器人的已规划路径,依据所述剩余机器人的已规划路径确定所述后续地图节点中的可行节点;
计算所述可行节点的规划代价值,并将所述可行节点放入所述待搜索节点集合,跳转至将所述待搜索节点集合中代价值最小的当前地图节点移入所述已搜索节点集合中的步骤。
在其中一个实施例中,所述生成所述机器人的任务规划路径的步骤,还包括:
当所述后续地图节点不存在可行节点时,判断所述待搜索节点集合是否为空,若不为空,则跳转至将所述待搜索节点集合中代价值最小的当前地图节点移入所述已搜索节点集合中的步骤。
在其中一个实施例中,所述依据所述剩余机器人的已规划路径确定所述后续地图节点中的可行节点的步骤,包括:
依据所述剩余机器人的已规划路径,判断所述机器人行走至第三地图节点处时是否与所述剩余机器人发生碰撞,若不发生碰撞则确定所述第三地图节点为可行节点,否则确定所述第三地图节点为不可行节点,所述第三地图节点为所述后续地图节点中的任一地图节点。
在其中一个实施例中,所述判断所述机器人行走至第三地图节点处时是否与所述剩余机器人发生碰撞的步骤,包括:
依据所述剩余机器人的已规划路径和所述地图节点的节点属性,确定所述机器人行走至所述第三地图节点时所述场景地图上所述机器人对应的几何形状和所述剩余机器人对应的几何形状;
判断所述机器人对应的几何形状与所述剩余机器人对应的几何形状是否发生重叠,若重叠则确定所述机器人与所述剩余机器人发生碰撞,否则确定所述机器人与所述剩余机器人未发生碰撞。
在其中一个实施例中,所述地图节点的规划代价值为从所述虚拟起始节点到所述地图节点的代价值与从所述地图节点到所述虚拟目标节点的预估代价值之和。
一种机器人路径生成装置,所述装置包括:
位置获取模块,用于获取机器人的当前位置和所述机器人待执行任务的任务终点;
地图获取模块,用于获取预设的场景地图,所述场景地图上设有多个地图节点;
起始节点创建模块,用于如果所述机器人的当前位置不在一个地图节点上,则在所述机器人的当前位置处创建虚拟起始节点;
目标节点创建模块,用于如果所述任务终点不在一个地图节点上,则在所述任务终点的位置处创建虚拟目标节点;以及
路径规划模块,用于依据创建了所述虚拟起始节点和所述虚拟目标节点的场景地图,生成所述机器人的任务规划路径。
一种机器人,所述机器人包括:
扫描模块,用于扫描预设场景地图上的地图节点;
传感器,用于探测所述机器人周围的障碍物;
处理器,存储有计算机程序,所述处理器执行所述计算机程序实现上述机器人路径生成方法中的步骤;以及
移动底盘,用于按照所述处理器生成的任务规划路径进行移动,并在移动时对所述传感器探测到的障碍物进行避让。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述机器人路径生成方法中的步骤。
上述机器人路径生成方法、装置、机器人和存储介质,获取机器人的当前位置、机器人待执行任务的任务终点和场景地图,场景地图上设有多个地图节点,在机器人的当前位置不在一个地图节点上时,在机器人的当前位置处创建虚拟起始节点,在任务终点不在一个地图节点上时,在任务终点的位置处创建虚拟目标节点,在创建了虚拟起始节点和虚拟目标节点的场景地图上进行路径规划,生成机器人的任务规划路径,能够有效地避免机器人位置或任务终点不落在任一地图节点上时所带来的路径生成误差,提高了机器人路径生成准确度和效果。
附图说明
图1为一个实施例中机器人路径生成方法的流程示意图;
图2为另一个实施例中机器人路径生成方法的流程示意图;
图3为一个实施例中机器人路径生成方法中生成机器人任务规划路径步骤的流程示意图;
图4为一个实施例中机器人路径生成装置的结构框图;以及
图5为一个实施例中机器人的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种机器人路径生成方法,该方法可以在机器人内部的处理器中执行,也可以在与机器人网络连接的服务器上执行,该方法包括以下步骤:
步骤102,获取机器人的当前位置和机器人待执行任务的任务终点。
具体地,在接收到分配给机器人的待执行任务时,获取机器人的当前位置,获取分配给机器人的待执行任务的任务终点,其中,机器人的当前位置和任务终点都可表示为机器人所在场景中的二维坐标。
步骤104,获取预设的场景地图,场景地图上设有多个地图节点。
其中,用户预先在当前场景中不同位置处布置相应的地图节点,通过机器人上预设的扫描装置扫描地图节点,可获得地图节点的坐标和节点属性。节点属性包括障碍属性、连通属性和转弯属性,地图节点的障碍属性即该地图节点上是否有障碍物,连通属性即该地图节点所连接的地图节点,转弯属性即该地图节点处机器人的行走方向是直行还是转弯。
具体地,获取机器人所在场景的场景地图,包括场景地图中所有地图节点的坐标和节点属性,将所有地图节点抽象为拓扑节点,场景地图则抽象为拓扑地图,以便后续在场景地图上进行路径规划。
步骤106,如果机器人的当前位置不在一个地图节点上,则在机器人的当前位置处创建虚拟起始节点。
具体地,在获得机器人的当前位置和场景地图后,判断机器人的当前位置是否在场景地图上的任一地图节点上,如果不在,则在机器人的当前位置处创建相应的地图节点,此时创建的地图节点为虚拟节点,在实际场景中并未设置实际的地图节点,因此将该创建的地图节点称为虚拟起始节点,以避免机器人的当前位置不在任一地图节点上时将机器人的当前位置近似至距离机器人最近的地图节点处导致的规划误差,同时无需在实际场景中布置新的地图节点,有效地提高了机器人路径规划的效率。
在一个实施例中,在创建虚拟起始节点时使得虚拟起始节点的坐标为机器人的当前位置的同时,虚拟起始节点的节点属性与第一地图节点的节点属性相同,虚拟起始节点与第一地图节点连接,其中,第一地图节点为距离机器人的当前位置最近的地图节点,从而有效地提高虚拟起始节点创建的准确度,进而提高后续路径规划的准确度。
步骤108,如果任务终点不在一个地图节点上,则在任务终点的位置处创建虚拟目标节点。
具体地,在获得任务终点和场景地图后,判断任务终点是否在场景地图上的任一地图节点上,如果不在,则在任务终点处创建相应的地图节点,此时创建的地图节点为虚拟节点,在实际场景中并未设置实际的地图节点,因此将该创建的地图节点称为虚拟目标节点,以避免任务终点不在任一地图节点上时将任务终点近似至距离任务终点最近的地图节点处导致的规划误差,同时无需在实际场景中布置新的地图节点,有效地提高了机器人路径规划的效率。
在一个实施例中,在创建虚拟目标节点时使得虚拟目标节点的坐标为任务终点的同时,虚拟目标节点的节点属性与第一地图节点的节点属性相同,虚拟目标节点与第一地图节点连接,其中,第一地图节点为距离任务终点最近的地图节点,从而有效地提高虚拟目标节点创建的准确度,进而提高后续路径规划的准确度。
步骤110,依据创建了虚拟起始节点和虚拟目标节点的场景地图,生成机器人任务规划路径。
具体地,在创建了虚拟起始节点和虚拟目标节点的场景地图上,以虚拟起始节点为规划起点,以虚拟目标节点为规划终点,进行路径规划,生成机器人的任务规划路径。
上述机器人路径生成方法中,在机器人的当前位置不在一个地图节点上时,在机器人的当前位置创建虚拟起始节点,在任务终点不在一个地图节点上时,创建虚拟目标节点,以虚拟起始节点为规划起点,以虚拟目标节点为规划终点,在场景地图上进行路径规划,生成机器人的任务规划路径,从而避免机器人位置或任务终点不位于地图节点上时导致的路径规划误差,有效地提高了机器人路径生成的准确度和效果,且无需在实际场景中布置过多的地图节点,也无需在实际场景中布置新的地图节点,提高了机器人路径生成的效率。
在另一个实施例中,如图2所示,提供了一种机器人路径生成方法,包括一下步骤:
步骤202,获取机器人的当前位置和机器人待执行任务的任务终点。
具体地,在接收到分配给机器人的待执行任务时,获取机器人的当前位置,获取分配给机器人的待执行任务的任务终点。
在一个实施例中,在接收到分配给机器人的待执行任务时,还可获得任务终点处的机器人朝向,从而在机器人行走至任务终点后进行朝向调整,提高待执行任务的执行效果。
在一个实施例中,在对用户或系统发送的待执行任务进行分配时,实时获取当前场景中所有机器人的机器人信息,机器人信息包括机器人的当前位置、当前速度、当前电量和内部状态,将待执行任务分配给内部状态为空闲的任一机器人;若待执行任务的任务信息中存在机器人ID,则判读机器人ID所对应的机器人的内部状态是否为离线、充电中或异常,是则返回分配任务失败的消息,否则将待执行任务分配给机器人ID所对应的机器人,以提高任务分配效果。其中,机器人的内部状态包括空闲、任务中、充电中、离线和异常。
步骤204,获取预设的场景地图,场景地图上设有多个地图节点。
其中,用户预先在当前场景中不同位置处布置相应的地图节点,通过机器人上预设的扫描装置扫描地图节点,可获得地图节点的坐标和节点属性。节点属性包括障碍属性、连通属性和转弯属性。
在一个实施例中,当前场景中的地图节点为二维码节点,机器人上的扫描装置为相机,通过相机扫描机器人下方的二维码节点,获得该节点的坐标和节点属性,还可获得该节点的二维码码值,提高了地图节点信息获取的便捷度。
具体地,获取机器人所在场景的场景地图,包括场景地图中所有地图节点的坐标和节点属性,将所有地图节点抽象为拓扑节点,场景地图则抽象为拓扑地图,以便后续在场景地图上进行路径规划。
步骤206,判断第一地图节点与当前位置的距离是否超过预设阈值,若超过,则确定当前位置不在一个地图节点上,在机器人的当前位置处创建虚拟起始节点。
其中,第一地图节点为场景地图上距离机器人当前位置最近的地图节点。
具体地,依据场景地图上各地图节点的坐标和机器人当前位置的坐标,确定第一地图节点,将第一地图节点的坐标与机器人当前位置的坐标进行比较,获得第一地图节点与机器人当前位置的距离,判断该距离是否超过预设阈值,是则确定机器人的当前位置不在一个地图节点上,在机器人的当前位置处创建虚拟起始节点,以避免机器人的当前位置不在任一地图节点上时将机器人的当前位置近似至距离机器人最近的地图节点处导致的规划误差,同时无需在实际场景中布置新的地图节点,有效地提高了机器人路径规划的效率。
在一个实施例中,在创建虚拟起始节点时使得虚拟起始节点的坐标为机器人的当前位置的同时,虚拟起始节点的节点属性与第一地图节点的节点属性相同,虚拟起始节点与第一地图节点连接,从而有效地提高虚拟起始节点创建的准确度,进而提高后续路径规划的准确度。
步骤208,判断第二地图节点与任务终点的距离是否超过该阈值,若超过,则确定任务终点不在一个地图节点上,在任务终点的位置处创建虚拟目标节点。
其中,第二地图节点为场景地图上距离任务终点最近的地图节点。
具体地,依据场景地图上各地图节点的坐标与任务终点的坐标,确定第二地图节点,将第二地图节点的坐标与任务终点的坐标进行比较,获得第二地图节点与任务终点之间的距离,判断该距离是否超过阈值,是则确定任务终点不在一个地图节点上,在任务节点的位置处创建虚拟目标节点,以避免任务终点不在任一地图节点上时将任务终点近似至距离任务终点最近的地图节点处导致的规划误差,同时无需在实际场景中布置新的地图节点,有效地提高了机器人路径规划的效率。
在一个实施例中,在创建虚拟目标节点时使得虚拟目标节点的坐标为任务终点的同时,虚拟目标节点的节点属性与第一地图节点的节点属性相同,虚拟目标节点与第一地图节点连接,其中,第一地图节点为距离任务终点最近的地图节点,从而有效地提高虚拟目标节点创建的准确度,进而提高后续路径规划的准确度。
在一个实施例中,获取机器人上扫描装置的扫描距离,将该扫描距离设为该阈值,即在机器人的当前位置处扫描装置可以扫描到地图节点时,认为机器人的当前位置在该扫描到的地图节点上,否则认为机器人的当前位置不位于一个地图节点上,同样地,假设在任务终点处扫描装置可以扫描到地图节点时,认为任务终点在该扫描到的地图节点上,否则认为任务终点不位于一个地图节点上,从而依据扫描装置的扫描距离来设置阈值,有效地降低了阈值判断带来的误差。
在一个实施例中,当机器人上扫描装置为相机时,依据相机的视场角大小设置阈值,以降低了阈值判断带来的误差。
步骤210,依据创建了虚拟起始节点和虚拟目标节点的场景地图,生成机器人任务规划路径。
具体地,在创建了虚拟起始节点和虚拟目标节点的场景地图上,以虚拟起始节点为规划起点,以虚拟目标节点为规划终点,进行路径规划,生成机器人的任务规划路径。
具体地,如果机器人的当前位置在一个地图节点上,则无需创建虚拟起始节点,直接以机器人的当前位置所在的地图节点作为后续路径规划的起点,如果任务终点在一个地图节点上,也无需创建虚拟目标节点,直接以任务终点所在的地图节点作为后续路径规划的终点。
在一个实施例中,如图3所示,依据创建了虚拟起始节点和虚拟目标节点的场景地图,生成机器人任务规划路径的过程可通过下述步骤实现:
步骤302,构建待搜索节点集合和已搜索节点集合,待搜索节点集合中包含虚拟起始节点。
其中,待搜索节点集合用来存储路径规划过程中待搜索的地图节点,以搜索节点集合用来存储路径规划过程中已搜索的地图节点。作为示例地,也可以列表格式来分别存储待搜索的地图节点和已搜索的地图节点,待搜索节点列表相当于待搜索节点集合,已搜索节点列表相当于已搜索节点集合,在此并不限制存储待搜索的地图节点和已搜索的地图节点的存储格式。
具体地,构建待搜索节点集合和已搜索节点集合,构建的待搜索节点集合和已搜索节点集合都为空集合,将虚拟起始节点存储至待搜索节点集合中。
在一个实施例中,在构建待搜索节点集合和已搜索节点集合时,初始化所有地图节点的代价值信息,地图节点的代价值信息包括从虚拟起始节点至该地图节点的代价值、从该地图节点至虚拟目标节点的预估代价值和规划代价值,规划代价值表示从虚拟起始节点至虚拟目标节点、且经过该地图节点的一条路径的代价值,规划代价值的大小为从虚拟起始节点至该地图节点的代价值与从该地图节点至虚拟目标节点的预估代价值的和。为了便于描述,用g表示从虚拟起始节点至地图节点的代价值,用h表示从地图节点至虚拟目标节点的预估代价值,用f表示规划代价值,f=g+h。其中,在初始化所有地图节点的代价值信息时,可将地图节点的g值初始化为无穷大,将地图节点的h值初始化为0。
步骤304,将待搜索节点集合中规划代价值最小的当前地图节点转移至已搜索节点集合中。
步骤306,判断当前地图节点是否为虚拟目标节点。
具体地,将待搜索节点集合中f值最小的当前地图节点取出,存储至已搜索节点集合中。将当前地图节点的坐标与虚拟目标节点的坐标进行比较,若当前地图节点的坐标与虚拟目标节点的坐标相同,则确定当前地图节点为虚拟目标节点,执行步骤314,否则当前地图节点不为虚拟目标节点,执行步骤308。
步骤308,获取场景地图上当前地图节点的后续地图节点。
具体地,依据当前地图节点的连通属性,获得与当前地图节点连接的、且未出现在已搜索节点集合中的地图节点,即当前地图节点的后续地图节点。
在一个实施例中,当前地图节点可有一个或多个后续地图节点。也可能不存在后续地图节点。当不存在后续地图节点时,判断待搜索节点集合中是否为空,若为空则返回路径规划失败的消息,否则跳转至步骤S304执行将待搜索节点集合中规划代价值最小的当前地图节点转移至已搜索节点集合中,继续搜索。
步骤310,获取场景地图上剩余机器人的已规划路径,依据剩余机器人的已规划路径确定后续地图节点中的可行节点。
具体地,场景地图上可能存在多个机器人,分别执行不同的任务。在对当前机器人进行路径规划时,获取场景地图上除当前机器人以外的剩余机器人的已规划路径。根据剩余机器人的已规划路径来确定后续地图节点中的可行节点。
在一个实施例中,依据剩余机器人的已规划路径,获取机器人行走至第三地图节点处时剩余机器人所在的位置,依据剩余机器人所在的位置,判断机器人行走至第三地图节点处时是否会与剩余机器人发生碰撞,若不发生碰撞则确定第三地图节点为可行节点,否则确定第三地图节点为不可行节点。其中,第三地图节点为后续地图节点中的任一地图节点。从而依次对每个后续地图节点进行判断,确定当机器人行走至后续地图节点处是否与剩余机器人发生碰撞,进而当场景中存在多个机器人时在路径规划阶段有效地解决机器人之间的路径冲突,提高了路径规划效果。
在一个实施例中,在判断机器人行走至第三地图节点处时是否会与剩余机器人发生碰撞时,依据地图节点的连通属性和转弯属性,判断机器人行走至第三地图节点处时是直行还是旋转,依据机器人直行还是旋转,确定机器人在第三地图节点处对应的几何形状。同样,依据剩余机器人的已规划路径、地图节点的的连通属性和转弯属性,确定机器人行走至第三地图节点处时剩余机器人对应的几何形状。判断机器人和剩余机器人分别对应的几何形状之间是否重叠,若重叠则确定机器人与剩余机器人发生碰撞,否则确定未发生碰撞。从而通过判断机器人与剩余机器人分别对应的几何形状是否重叠,来确定机器人与剩余机器人是否发生碰撞,有效地降低了碰撞检测的复杂度,提高了路径规划效率。
在一个实施例中,当机器人的动作是直行时,确定机器人对应的几何形状为长方形,该长方形位于场景地图上、且以机器人所在的地图节点为中心,并依据机器人的外轮廓大小设置长方形的大小。
在一个实施例中,当机器人的动作是旋转时,则确定机器人对应的几何形状为圆形,该圆形位于场景地图上、且以机器人所在的地图节点为中心,并依据机器人的外轮廓大小设置圆形的大小。
在一个实施例中,在判断机器人与剩余机器人分别对应的几何形状是否重叠时,存在长方形与长方形比较、长方形和圆形比较、以及圆形和圆形比较的三种情况,其中:
(1)当判断机器人对应的长方形与剩余机器人对应的长方形是否重叠时,判断机器人所对应长方形的四个顶点或中心点是否位于剩余机器人对应的长方形内、或者剩余机器人所对应长方形的四个顶点或中心点是否位于机器人对应的长方形内,是则重叠,否则不重叠;
(2)当判断机器人对应的长方形与剩余机器人对应的圆形是否重叠、或者判断机器人对应的圆形与剩余机器人对应的长方形是否重叠时,判断长方形的四个顶点或中心点是否位于圆形内、或者圆形的圆心是否位于长方形内,是则重叠,否则不重叠;
(3)当判断机器人对应的圆形与剩余机器人对应的圆形是否重叠时,计算该两个圆形的圆心距离,判断该圆形距离是否大于该两个圆形的半径和,是则不重叠,否则重叠。
步骤312,计算可行节点的规划代价值,并将可行节点放入待搜索节点集合。
具体地,计算可行节点的g、h、f值,具体计算方式可参考各A*算法中计算规划起点至当前地图节点的代价值、当前地图节点到规划终点的预估代价值的方式,在此不进行描述。将可行节点存储至待搜索节点集合,以备后续搜索。
在一个实施例中,当前地图节点的后续地图节点中可能不存在可行节点,即机器人行走至每个后续地图节点都会与剩余机器人发生碰撞,此时,判断待搜索节点集合是否为空,若为空则返回规划失败的消息,否则跳转至步骤S304执行将待搜索节点集合中规划代价值最小的当前地图节点转移至已搜索节点集合中,继续搜索。
步骤314,获得机器人的任务规划路径。
具体地,在当前地图节点为虚拟目标节点时,可依据搜索过程依次往前回溯,得到当前地图节点到虚拟起始节点的搜索路径,该搜索路径即机器人的任务规划路径,完成机器人的路径规划。
应该理解的是,虽然图1-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种机器人路径生成装置400,包括:位置获取模块402、地图获取模块404、起始节点创建模块406、目标节点创建模块408和路径规划模块410,其中:
位置获取模块402,用于获取机器人的当前位置和机器人待执行任务的任务终点;
地图获取模块404,用于获取预设的场景地图,场景地图上设有多个地图节点;
起始节点创建模块406,用于如果机器人的当前位置不在一个地图节点上,则在机器人的当前位置处创建虚拟起始节点;
目标节点创建模块408,用于如果任务终点不在一个地图节点上,则在任务终点的位置处创建虚拟目标节点;以及
路径规划模块410,用于依据创建了虚拟起始节点和虚拟目标节点的场景地图,生成机器人的任务规划路径。
在一个实施例中,虚拟起始节点的节点属性与第一地图节点的节点属性相同,且虚拟起始节点与第一地图节点连接,虚拟目标节点的节点属性与第二地图节点的节点属性相同,且虚拟目标节点与第二地图节点连接,第一地图节点为场景地图上距离当前位置最近的地图节点,第二地图节点为场景地图上距离任务终点最近的地图节点,节点属性包括转弯属性、障碍属性和连通属性。
在一个实施例中,机器人路径生成装置400还包括:
当前位置判断模块,用于判断第一地图节点与当前位置的距离是否超过预设阈值,若超过则确定当前位置不在一个地图节点上;以及
任务终点判断模块,用于判断第二地图节点与任务终点的距离是否超过阈值,若超过则确定任务终点不在一个地图节点上。
在一个实施例中,机器人路径生成装置400还包括:
阈值设置模块,用于获取机器人上扫描装置的扫描距离,将扫描距离设置为阈值,扫描装置用来扫描场景地图上的地图节点。
在一个实施例中,路径规划模块410包括:
节点集合构建模块,用于构建待搜索节点集合和已搜索节点集合,待搜索节点集合中包含虚拟起始节点;
当前节点判断模块,用于将待搜索节点集合中规划代价值最小的当前地图节点转移至已搜索节点集合中,并判断当前地图节点是否为虚拟目标节点;
规划路径获取模块,用于当当前地图节点为虚拟目标节点时,获得机器人的任务规划路径;
后续节点获取模块,用于当当前地图节点不为虚拟目标节点时,获取场景地图上当前地图节点的后续地图节点;
可行节点确定模块,用于获取场景地图上剩余机器人的已规划路径,依据剩余机器人的已规划路径确定后续地图节点中的可行节点;以及
可行节点处理模块,用于计算可行节点的规划代价值,并将可行节点放入待搜索节点集合,由当前节点判断模块执行将待搜索节点集合中代价值最小的当前地图节点移入已搜索节点集合中的步骤。
在一个实施例中,路径规划模块410还包括:
节点集合判断模块,用于当后续地图节点不存在可行节点时,判断待搜索节点集合是否为空,若不为空,则由当前节点判断模块执行将待搜索节点集合中代价值最小的当前地图节点移入已搜索节点集合中的步骤。
在一个实施例中,可行节点确定模块包括:
碰撞判断模块,用于依据剩余机器人的已规划路径,判断机器人行走至第三地图节点处时是否与剩余机器人发生碰撞,若不发生碰撞则确定第三地图节点为可行节点,否则确定第三地图节点为不可行节点,第三地图节点为后续地图节点中的任一地图节点。
在一个实施例中,碰撞判断模块包括:
几何形状确定模块,用于依据剩余机器人的已规划路径和地图节点的节点属性,确定机器人行走至第三地图节点时场景地图上机器人对应的几何形状和剩余机器人对应的几何形状;以及
几何形状重叠判断模块,用于判断机器人对应的几何形状与剩余机器人对应的几何形状是否发生重叠,若重叠则确定机器人与剩余机器人发生碰撞,否则确定机器人与剩余机器人未发生碰撞。
在一个实施例中,地图节点的规划代价值为从虚拟起始节点到地图节点的代价值与从地图节点到虚拟目标节点的预估代价值之和。
关于机器人路径生成装置的具体限定可以参见上文中对于机器人路径生成方法的限定,在此不再赘述。上述机器人路径生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,如图5所示,提供了一种机器人500,包括扫描模块502、传感器504、处理器506和移动底盘508,其中:
扫描模块502,用于扫描预设场景地图上的地图节点;
传感器504,用于探测机器人500周围的障碍物;
处理器506,存储有计算机程序,处理器执行计算机程序实现上述各实施例中提供的一种机器人路径生成方法的步骤;以及
移动底盘508,用于按照处理器506生成的任务规划路径进行移动,并在移动时对传感器504探测到的障碍物进行避让。
具体地,传感器504探测机器人500周围的障碍物,生成传感信号,将传感信号发送给处理器506,由处理器506生成相应的避让指令并将避让指令发送给移动底盘508,实现对障碍物的避让。
在一个实施例中,扫描模块502可为相机,地图节点为二维码节点,通过相机扫描机器人下方的二维码节点,获得该节点的内容、坐标和节点属性,提高了地图节点信息获取的便捷度。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各实施例中提供的一种机器人路径生成方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。