地图探索、地图使用方法、装置、机器人和存储介质转让专利

申请号 : CN202210701218.4

文献号 : CN114812539B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蔡华强黄志鹰陈晶

申请人 : 杭州涂鸦信息技术有限公司

摘要 :

本申请公开了一种地图探索、地图使用方法、装置、机器人和存储介质。其中,根据传感器获取的扫描信息,确定当前栅格地图;根据当前机器人在当前栅格地图中的定位位姿,确定待探索边界点集;根据待探索边界点集和边界点黑名单,确定当前导航点;其中,边界点黑名单用于筛选当前导航点;基于当前导航点,更新当前栅格地图;根据更新后的当前栅格地图,构建目标地图。确定了待探索边界点集,根据边界点黑名单从待探索边界点集中筛选当前导航点,为建图过程提供了精确有效的导航指引,减少了探索资源的浪费,避免了出现重复探索无效边界点的情况,缩短了目标环境的探索时间,从而提高了当前机器人对目标环境的探索建图效率和探索成功率。

权利要求 :

1.一种地图探索方法,其特征在于,包括:根据传感器获取的扫描信息,确定当前栅格地图;

根据当前机器人在所述当前栅格地图中的定位位姿,确定待探索边界点集;

根据所述待探索边界点集和边界点黑名单,确定当前导航点;其中,所述边界点黑名单用于筛选所述当前导航点;

基于当前导航点,更新所述当前栅格地图;

根据更新后的所述当前栅格地图,构建目标地图;

其中,所述根据所述待探索边界点集和边界点黑名单,确定当前导航点,包括:根据所述待探索边界点集内各待探索边界点,确定所述待探索边界点的平均坐标;

根据所述平均坐标和所述边界点黑名单,确定所述当前导航点。

2.根据权利要求1所述的方法,其特征在于,所述基于当前导航点,更新所述当前栅格地图,包括:基于所述定位位姿和所述当前导航点,确定当前导航路线,并执行所述当前导航路线;

在执行所述当前导航路线的过程中,更新所述当前栅格地图,并判断所述当前导航点是否符合所述待探索边界点集和所述边界点黑名单;

根据判断结果,更新所述当前导航路线。

3.根据权利要求2所述的方法,其特征在于,所述判断所述当前导航点是否符合所述待探索边界点集和所述边界点黑名单,包括:若在所述待探索边界点集中不存在所述当前导航点,则将该所述待探索边界点集加入所述边界点黑名单,并更新所述当前导航点;

相应的,所述根据判断结果,更新所述当前导航路线,包括:基于更新后的所述当前导航点,更新所述当前导航路线。

4.根据权利要求1所述的方法,其特征在于,所述根据所述平均坐标和所述边界点黑名单,确定所述当前导航点,包括:将所述边界点黑名单之外的待探索边界点作为候选导航点;

根据各所述候选导航点和所述平均坐标之间的距离,以及各所述候选导航点和所述边界点黑名单内各点坐标的距离,确定当前导航点。

5.根据权利要求1‑4任一项所述的方法,其特征在于,所述根据当前机器人在所述当前栅格地图中的定位位姿,确定待探索边界点集,包括:基于所述定位位姿,确定所述当前栅格地图中的各初始边界点集;

剔除各初始边界点集中不符合预设边界点个数的无用边界点集,确定所述待探索边界点集。

6.根据权利要求5所述的方法,其特征在于,在所述剔除各初始边界点集中不符合预设边界点个数的无用边界点集之后,所述方法还包括:将所述无用边界点集加入所述边界点黑名单。

7.根据权利要求1‑4任一项所述的方法,其特征在于,所述方法还包括:根据所述传感器获取当前机器人的实时状态数据,确定所述当前机器人的卡困信息;

其中,所述实时状态数据包括所述当前机器人与障碍物之间的距离数据、所述当前机器人的定位数据、里程数据和姿态数据中的至少一种;

根据所述卡困信息,确定所述当前栅格地图中的卡困栅格点;

将所述卡困栅格点加入所述边界点黑名单。

8.根据权利要求7所述的方法,其特征在于,所述方法还包括:根据所述卡困信息,确定所述当前机器人的卡困状态;其中,所述卡困状态包括碰撞卡困和过坎卡困;

若所述卡困状态为所述碰撞卡困,则根据碰撞方向,执行对所述碰撞方向的预设避障策略;

若所述卡困状态为所述过坎卡困,则根据卡困方向,执行对所述卡困方向的预设过坎策略。

9.一种地图使用方法,其特征在于,包括:获取目标地图;其中,所述目标地图采用权利要求1‑8任一项所述的地图探索方法生成;

根据所述目标地图,对当前机器人进行行驶控制。

10.一种地图探索装置,其特征在于,包括:栅格地图确定模块,用于根据传感器获取的扫描信息,确定当前栅格地图;

边界点集确定模块,用于根据当前机器人在所述当前栅格地图中的定位位姿,确定待探索边界点集;

导航点确定模块,用于根据所述待探索边界点集和边界点黑名单,确定当前导航点;其中,所述边界点黑名单用于筛选所述当前导航点;

栅格地图更新模块,用于基于当前导航点,更新所述当前栅格地图;

目标地图探索模块,用于根据更新后的所述当前栅格地图,构建目标地图;

其中,所述导航点确定模块,包括:

平均坐标确定单元,用于根据待探索边界点集内各待探索边界点,确定待探索边界点的平均坐标;

当前导航点确定单元,用于根据平均坐标和边界点黑名单,确定当前导航点。

11.一种地图使用装置,其特征在于,包括:目标地图获取模块,用于获取目标地图;其中,所述目标地图采用权利要求10所述的地图探索装置生成;

行驶控制模块,用于根据所述目标地图,对当前机器人进行行驶控制。

12. 一种机器人,其特征在于,所述机器人包括:至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1‑8中任一项所述的地图探索方法,和/或,实现如权利要求9所述的地图使用方法。

13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1‑8中任一项所述的地图探索方法,和/或,实现如权利要求9所述的地图使用方法。

说明书 :

地图探索、地图使用方法、装置、机器人和存储介质

技术领域

[0001] 本申请涉及机器人技术领域,尤其涉及一种地图探索、地图使用方法、装置、机器人和存储介质。

背景技术

[0002] 地图探索是指利用平面移动机器人搭载的传感器扫描目标空间内环境,获取相关地图信息从而构建地图的过程。该技术广泛应用于探测、施工、抢险、环保等领域,为识别环境因素提供了基础。
[0003] 当前现有的自主建图方法主要通过优化边界点搜索算法提高地图探索效率,但在边界点的确定过程中,机器人的移动探索可能导致原有边界点变化为障碍物或自由点,或者机器人自身行进的路线点变为障碍物点,这种边界点的确定过程使得地图的探索效率变低,对探索成功率有影响。

发明内容

[0004] 本申请提供了一种地图探索、地图使用方法、装置、机器人和存储介质,以提高机器人的探索和建图效率。
[0005] 根据本申请的一方面,提供了一种地图探索方法,包括:
[0006] 根据传感器获取的扫描信息,确定当前栅格地图;
[0007] 根据当前机器人在当前栅格地图中的定位位姿,确定待探索边界点集;
[0008] 根据待探索边界点集和边界点黑名单,确定当前导航点;其中,边界点黑名单用于筛选当前导航点;
[0009] 基于当前导航点,更新当前栅格地图;
[0010] 根据更新后的当前栅格地图,构建目标地图。
[0011] 根据本申请的另一方面,提供了一种地图使用方法,包括:
[0012] 获取目标地图;其中,目标地图采用本申请任意实施例所提供的地图探索方法生成;
[0013] 根据目标地图,对当前机器人进行行驶控制。
[0014] 根据本申请的又一方面,提供了一种地图探索装置,包括:
[0015] 栅格地图确定模块,用于根据传感器获取的扫描信息,确定当前栅格地图;
[0016] 边界点集确定模块,用于根据当前机器人在当前栅格地图中的定位位姿,确定待探索边界点集;
[0017] 导航点确定模块,用于根据待探索边界点集和边界点黑名单,确定当前导航点;其中,边界点黑名单用于筛选当前导航点;
[0018] 栅格地图更新模块,用于基于当前导航点,更新当前栅格地图;
[0019] 目标地图探索模块,用于根据更新后的当前栅格地图,构建目标地图。根据本申请的又一方面,提供了一种地图使用装置,其特征在于,包括:
[0020] 目标地图获取模块,用于获取目标地图;其中,目标地图采用本申请任意实施例所提供的地图探索装置生成;
[0021] 行驶控制模块,用于根据目标地图,对当前机器人进行行驶控制。
[0022] 根据本申请的又一方面,提供了一种机器人,所述机器人包括:
[0023] 至少一个处理器;以及
[0024] 与所述至少一个处理器通信连接的存储器;其中,
[0025] 所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请任意实施例所述的地图探索方法,和/或,执行本申请任意实施例所述的地图使用方法。
[0026] 根据本申请的又一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本申请任意实施例所述的地图探索方法,和/或,执行本申请任意实施例所述的地图使用方法。
[0027] 本申请实施例的技术方案,确定了待探索边界点集,根据边界点黑名单从待探索边界点集中筛选当前导航点,为当前机器人的建图过程提供了精确有效的导航指引,减少了探索资源的浪费,避免了出现重复探索无效边界点的情况,缩短了目标环境的探索时间,从而提高了当前机器人对目标环境的探索建图效率和探索成功率。
[0028] 应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。

附图说明

[0029] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0030] 图1是根据本申请实施例一提供的一种地图探索方法的流程图;
[0031] 图2是根据本申请实施例二提供的另一种地图探索方法的流程图;
[0032] 图3是根据本申请实施例三提供的一种边界点集的示意图;
[0033] 图4是根据本申请实施例四提供的一种地图使用方法的流程图;
[0034] 图5是根据本申请实施例五提供的一种地图探索装置的结构示意图;
[0035] 图6是根据本申请实施例六提供的一种地图使用装置的结构示意图;
[0036] 图7是实现本申请实施例的地图探索方法和/或地图使用方法的机器人的结构示意图。

具体实施方式

[0037] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0038] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“当前”、“目标”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“等”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0039] 实施例一
[0040] 图1为本申请实施例一提供了一种地图探索方法的流程图,本实施例可适用于使用机器人进行建图的情况,该方法可以由地图探索装置来执行,该装置可以采用硬件和/或软件的形式实现,该地图探索装置可配置于机器人中。如图1所示,该方法包括:
[0041] S110、根据传感器获取的扫描信息,确定当前栅格地图。
[0042] 其中,传感器可以是用于感知目标环境信息的装置,例如可以是激光传感器(例如距离探测)、视觉相机等。需要说明的是,传感器可以是当前正在进行建图的机器人上设置的,也可以是与当前正在进行建图的机器人处于同一环境中的其他机器人或设备上设置的,本申请实施例对感知目标环境信息的方式和传感器的具体类型与设置方式不作限定。扫描信息可以是通过传感器扫描获取的目标环境的环境信息,例如可以包括但不限于障碍信息等。
[0043] 当前栅格地图可以是将目标环境的二维地图拆分成栅格,并可以为不同的栅格设置不同的代价值,用于标识不同栅格的状态,例如自由状态、占用状态和未知状态等。其中,自由状态代表该栅格内区域无障碍物,占用状态代表该栅格内有障碍物,未知状态代表该栅格区域还未被探测到具体情况。各栅格内的代价值可以随着机器人在目标环境中的移动和探索进行更新,例如可以使未知状态可以转化为自由状态或占用状态。因此,在改变栅格状态的同时也在更新当前栅格地图。需要补充的是,当前栅格地图中的栅格优选采用正方形的栅格,例如5cm×5cm,每个栅格周围相邻有其他八个栅格。
[0044] 具体的,通过传感器扫描目标环境的环境信息,生成栅格地图,并为各栅格生成相应的代价值,例如占用状态栅格的代价值可以是254,未知状态的栅格代价值可以是255等。特别需要说明的是,由于在二维平面进行建图的机器人自身具备一定的旋转半径,例如圆柱或圆台型机器人自身半径,或者圆角长方体型机器人的最大旋转半径等,为了保证机器人在探索目标环境中运行稳定减少碰撞,因此可以对占用状态栅格周围的栅格设置较高的代价值,以标识距离障碍物较近的地图信息。例如,可以设置在距离障碍物机器人旋转半径的长度范围内的栅格的代价值为253,随着与障碍物距离的增加,可以将各栅格的代价值逐步减小,直至为0代表自由状态。当然,生成栅格地图和代价值可以采用现有技术中任意一种栅格地图生成方法和代价值生成方法,本申请实施例对此不作限定。
[0045] S120、根据当前机器人在当前栅格地图中的定位位姿,确定待探索边界点集。
[0046] 其中,当前机器人可以是正在目标环境中进行探索和建图的机器人,可以是二维平面移动型机器人,例如常见的扫地机器人等。定位位姿可以是当前机器人在当前栅格地图中的坐标和姿态。边界点可以是已知状态栅格(包括占用状态和自由状态)与未知状态栅格之间的交界处的栅格点。边界点集可以是边界点的集合,该集合可以表征已知状态栅格和未知状态栅格之间的边界情况。那么,待探索边界点集可以是需要进行探索、更新栅格代价值和更新当前栅格地图的边界点的集合。可以理解的是,并不是所有的边界点都有必要依次进行探索,因此可以通过筛选确定待探索边界点集来减少重复探索,提高探索建图效率。
[0047] 具体的,可以通过当前机器人的定位位姿,确定可以进行探索的待探索边界点集。示例性的,可以以当前机器人在当前栅格地图中的坐标为中心,向外扩散式搜索待探索边界点集。当然扩散式的搜索方法可以是遍历,也可以是按照预设规则进行搜索,预设规则可以利用现有算法或技术人员的经验或大量试验确定,本申请实施例对此不作限定。
[0048] 在一种可选实施方式中,所述根据当前机器人在当前栅格地图中的定位位姿,确定待探索边界点集,可以包括:基于定位位姿,确定当前栅格地图中的各初始边界点集;剔除各初始边界点集中不符合预设边界点个数的无用边界点集,确定待探索边界点集。
[0049] 其中,初始边界点集可以是当前栅格地图中存在的所有边界点集,初始边界点集中可以包括待探索边界点集和无用边界点集。无用边界点集可以是不需要进行探索的边界点的集合。
[0050] 具体的,根据当前机器人在当前栅格地图中的坐标与姿态,确定当前栅格地图中所有的边界点集,作为初始边界点集。对所有初始边界点集中边界点数量进行统计,将边界点数量不符合预设边界点个数要求的初始边界点集作为无用边界点集,剔除掉无用边界点集,得到剩余的待探索边界点集。其中,预设边界点个数可以由技术人员根据经验设定或通过大量试验得出,本申请实施例对此不作限定。
[0051] 示例性的,各初始边界点集中,边界点数量小于10的初始边界点集可以定义为无用边界点集。可想而知,由于边界点数量较少,该边界点集可能是存在于障碍物缝隙中的点,机器人很有可能无法通过,也就失去了探索的意义。将这些边界点数量小于10的无用边界点集剔除后,保存其他的待探索边界点集,后续针对这些待探索边界点集进行探索和地图构建。
[0052] 上述实施方式中,通过剔除无用边界点集,筛选出待探索边界点集,为待探索边界点集的确定提供了一种行之有效的方式,避免了对所有边界点集的遍历,减小了探索范围,提高了探索精度和探索效率,有助于提高地图探索的效率。
[0053] S130、根据待探索边界点集和边界点黑名单,确定当前导航点;其中,边界点黑名单用于筛选当前导航点。
[0054] 其中,边界点黑名单可以记录不需要探索的栅格点,因此可以用于从待探索边界点集中筛选当前导航点。当前导航点是指以当前机器人所在定位位姿为基础,即将进行下次移动并更新当前栅格地图的目标导航点。
[0055] 示例性的,边界点黑名单可以包括障碍物所在栅格点、距离障碍物预设范围内的栅格点、和已经导航过(已经探索过)的历史导航点等。并且,在当前机器人进行探索建图的过程中可以实时的更新该边界点黑名单。
[0056] 在一种可选实施方式中,在剔除各初始边界点集中不符合预设边界点个数的无用边界点集之后,所述方法还可以包括:将无用边界点集加入边界点黑名单。
[0057] 可以理解的是,在前述步骤中确定了无用边界点集,由于无用边界点集不需要进行探索,因此可以将各无用边界点集中的各边界点添加至黑名单中。这样做可以帮助黑名单及时更新,有助于更精确的筛选当前导航点,有助于提高探索和建图效率。
[0058] S140、基于当前导航点,更新当前栅格地图。
[0059] 在前述步骤中确定了当前导航点,从当前机器人的定位位姿到当前导航点进行路径规划和路径跟踪,在当前机器人移动的过程中可以实时的进行探索,更新当前栅格地图。其中,路径规划和路径跟踪可以采用现有技术中任意一种算法,例如可以采用A*(A‑star Algorithm,A星算法)或者RRT(Rapidly‑exploring Random Trees,快速扩展随机树)等算法进行路径规划,采用PID(Proportion Integral Differential,比例‑积分‑微分)等算法进行路径跟踪。当然,上述算法仅用作举例说明,不可理解为对本申请实施例的限定。
[0060] 在一种可选实施方式中,所述基于当前导航点,更新当前栅格地图,可以包括:基于定位位姿和当前导航点,确定当前导航路线,并执行当前导航路线;在执行当前导航路线的过程中,更新当前栅格地图,并判断当前导航点是否符合待探索边界点集和边界点黑名单;根据判断结果,更新当前导航路线。
[0061] 可以理解的是,由于当前机器人需要进行地图探索就势必要进行路径规划和路径跟踪,根据当前机器人所在的定位位姿和前述步骤中确定的当前导航点,利用前述的路径规划算法,确定可行的当前导航路线,并按照该当前导航路线进行导航。
[0062] 在导航的过程中(即沿当前导航路线,从定位位姿到当前导航点的运动过程中),当前机器人可以动态的、实时的更新当前栅格地图,即做到边运动边探索。在导航过程和更新当前栅格地图的过程中,判断当前导航点是否存在于待探索边界点集和边界点黑名单中。并根据判断的结果更新当前导航路线。若当前导航点存在于待探索边界点集,且不存在于边界点黑名单中,则说明当前导航点需要进行继续探索,因此控制当前机器人完成当前导航路线。
[0063] 当然,另一种情况下,若待探索边界点集中不存在当前导航点,则将该待探索边界点集加入边界点黑名单,并更新当前导航点;相应的,根据判断结果,更新当前导航路线,可以包括:基于更新后的当前导航点,更新当前导航路线。
[0064] 可以理解的是,在导航的过程中,实时检测当前栅格地图中对应的待探索边界点,若当前导航点不在待探索边界点集中,则将该待探索边界点集加入边界点黑名单,并且重新进行导航点的确定。可想而知,在执行当前导航路线的过程中确定了当前导航点的失效,则证明该当前导航点无需继续进行探索(可能已被判定为障碍物或已探索区域等情况,此处不作穷举),那么无需继续执行当前导航路线,从而确定下一个导航点和下一个导航路线进行地图的探索,为地图探索节省了资源、提高了效率。
[0065] 上述实施方式中,通过在执行当前导航路线的过程中,对当前导航点进行是否可以继续导航的判断,动态的更新了当前导航点,在判断出当前导航点不需要进行探索后及时的更新并进行其他导航点的导航和探索,为当前机器人节省了探索资源,同时极大的提高了地图探索和构建的效率。
[0066] S150、根据更新后的当前栅格地图,构建目标地图。
[0067] 在前述各步骤的执行下,可以使当前机器人同时进行目标环境的探索和当前栅格地图的更新,将目标环境中全部栅格更新完成即可得到目标地图,或者无法确定当前导航点,即可以理解为没有待探索边界点集,也可以确定目标地图已构建完成。
[0068] 在一种可选实施方式中,所述地图探索方法还可以包括:根据传感器获取当前机器人的实时状态数据,确定当前机器人的卡困信息;其中,实时状态数据包括当前机器人与障碍物之间的距离数据、当前机器人的定位数据、里程数据和姿态数据等中的至少一种;根据卡困信息,确定当前栅格地图中的卡困栅格点;将卡困栅格点加入边界点黑名单。
[0069] 其中,检测当前机器人实时状态数据的传感器可以包括但不限于激光距离传感器、里程编码器和IMU(Inertial Measurement Unit,惯性测量单元)等。当前机器人的卡困信息可以包括碰撞卡困信息和过坎卡困信息,根据当前机器人与障碍物之间的距离数据等确定当前机器人是否被卡困于至少两个障碍物中;还可以根据当前机器人的定位数据、里程数据和姿态数据等确定当前机器人是否卡困于目标环境中的某些地形,导致无法过坎等。可以将卡困信息对应在当前栅格地图中的栅格点作为卡困栅格点,并将各卡困栅格点添加至边界点黑名单中,以预防当前机器人再次探索各卡困栅格点导致重复探索,有助于提高建图效率;并且,及时的发现当前机器人的卡困信息并通过预设方式帮助当前机器人脱困,提高了探索过程的鲁棒性,从而提升了建图的成功率。
[0070] 在一种可选实施方式中,所述方法还可以包括:根据所述卡困信息,确定所述当前机器人的卡困状态;其中,所述卡困状态包括碰撞卡困和过坎卡困;若所述卡困状态为所述碰撞卡困,则根据碰撞方向,执行对所述碰撞方向的预设避障策略;若所述卡困状态为所述过坎卡困,则根据卡困方向,执行对所述卡困方向的预设过坎策略。
[0071] 其中,卡困信息中的碰撞卡困信息对应碰撞卡困的状态;同理,卡困信息中的过坎卡困信息对应过坎卡困的状态。若根据碰撞卡困信息判断当前机器人处于碰撞卡困的状态,则根据碰撞方向,采取预设的避障方法使当前机器人脱困,例如可以采用改变行进方向重新进行路径规划和导航等方法。同理,若根据过坎卡困信息判断当前机器人处于过坎卡困的状态,则根据卡困方向,采取预设的脱困方法使当前机器人脱离沟坎,例如可以采用改变行进方向重新进行路径规划和导航,或者加大行进速度使当前机器人冲过沟坎等方法。当前,本申请实施例提供的各种脱困方法仅作说明,不可理解为对本申请的限定。
[0072] 本申请实施例的技术方案,确定了待探索边界点集,根据边界点黑名单从待探索边界点集中筛选当前导航点,为当前机器人的建图过程提供了精确有效的导航指引,减少了探索资源的浪费,避免了出现重复探索无效边界点的情况,缩短了目标环境的探索时间,从而提高了当前机器人对目标环境的探索建图效率和探索成功率。
[0073] 实施例二
[0074] 图2为本申请实施例二提供的一种地图探索方法的流程图,本实施例与是在前述各实施例的基础上对当前导航点的确定操作进行的细化。如图2所示,该方法包括:
[0075] S210、根据传感器获取的扫描信息,确定当前栅格地图。
[0076] S220、根据当前机器人在当前栅格地图中的定位位姿,确定待探索边界点集。
[0077] S230、根据待探索边界点集内各待探索边界点,确定待探索边界点的平均坐标。
[0078] 其中,待探索边界点的平均坐标可以是将待探索边界点集中的所有点的坐标进行加权平均计算得来的,其目的在于确定待探索边界点集中各点分布的中心。距离说明,若某待探索边界点集中各点分布为一条直线,则平均坐标对应该直线的中点。
[0079] S240、根据平均坐标和边界点黑名单,确定当前导航点。
[0080] 边界点黑名单可以用于筛选待探索边界点集中不需要进行探索的点,在剩余的待探索边界点中,可以选择于平均坐标距离在预设距离范围内的点作为当前导航点进行探索,例如可以是距离平均坐标较近(比如最近)的待探索边界点作为当前导航点。当前,预设距离范围可以根据技术人员的经验进行设定,还可以通过大量试验得出,本申请实施例对此不作限定。
[0081] 延续前例,若该待探索边界点集是一条直线,那么直线的中点距离两侧端点的长度是一样的,若将该中点作为当前导航点进行探索,可以节省更多的建图资源,提高建图效率。
[0082] 在一种可选实施方式中,所述根据平均坐标和边界点黑名单,确定当前导航点,可以包括:将边界点黑名单之外的待探索边界点作为候选导航点;根据各候选导航点和平均坐标之间的距离,以及各候选导航点和边界点黑名单内各点坐标的距离,确定当前导航点。
[0083] 其中,通过边界点黑名单筛选所有的待探索边界点,将边界点黑名单内不存在的待探索边界点作为候选导航点,为当前导航点的选择提供支持。各候选导航点和平均坐标之间的距离可以用于选择当前导航点,例如可以选择各候选导航点中和平均坐标之间距离最近的候选导航点作为当前导航点的筛选标准之一。候选导航点和边界点黑名单内各点坐标的距离也可以用于选择当前导航点,例如可以从距离边界点黑名单中各店均大于0.2米的边界点作为筛选当前导航点的标准之二。同时满足上述两种当前导航点的筛选标准的点即可作为当前导航点。
[0084] 上述实施方式中,将边界点黑名单之外的待探索边界点作为候选导航点,为当前导航点的确定提供了选择范围。根据各候选导航点和平均坐标之间的距离,以及各候选导航点和边界点黑名单内各点坐标的距离,确定当前导航点,为当前导航点的确定提供了选择依据,提高了当前导航点确定的准确度,有助于提高建图效率。
[0085] 在一种可选实施方式中,所述地图探索方法还可以包括:若在待探索边界点集中不存在当前导航点,则将该待探索边界点集加入边界点黑名单。
[0086] 可以理解的是,如果某一待探索边界点集中的所有点中,不存在符合前述实施方式中当前导航点筛选标准的点,则说明该待探索边界点集不需要再次进行探索,因此可以将该待探索边界点集中的所有点添加至边界点黑名单中。这样作为边界点黑名单的更新提供了另一种途径,不断地更新边界点黑名单帮助当前机器人排除不需要进行探索的边界点,有助于提高探索效率和建图效率。
[0087] S250、基于当前导航点,更新当前栅格地图。
[0088] S260、根据更新后的当前栅格地图,构建目标地图。
[0089] 本申请实施例的技术方案,根据待探索边界点集内各点的平均坐标与边界点黑名单,确定当前导航点,选择当前导航点时向平均坐标的靠近使当前机器人可以最大化利用探索资源,并且结合边界点黑名单的限制,减少重复探索,提高了当前机器人的建图效率。
[0090] 实施例三
[0091] 图3是根据本申请实施例三提供的一种边界点集的示意图。本申请实施例三是在前述各实施例的基础上提供的一种优选实施例,适用于当前机器人的建图过程,具体如下:
[0092] 首先,开启当前机器人的相关建图程序,驱动当前机器人所搭载的激光传感器等设备获取目标环境中的距离信息,基于这些距离信息运行SLAM(Simultaneous Localization and Mapping,同步建图定位),获取实时的地图信息和定位位姿。当前机器人车轮上设置有轮式编码器,可以通过编码器数据计算得到里程数据。当前机器人原地旋转一周,获得带有边界信息的初始地图(首次扫描得到的当前栅格地图),地图被划分为多个栅格,一般设置5cm×5cm为一个栅格的大小,每个栅格周围有8个栅格,栅格的代价值代表一定分辨率范围内的环境状态信息,可以包括自由状态、占用状态和未知状态。自由状态代表栅格内无障碍物,占用状态代表栅格内有障碍物,未知状态代表该栅格暂时未被探测到。可选的,将栅格状态为未知状态,且其周围8个栅格至少有一个是自由状态的栅格定义为边界点,边界点周围8个栅格内同样是边界点的栅格定义为相邻边界点,所有相邻边界点构成一组边界点集(如图3所示)。可想而知,当前栅格地图中可以包括多组边界点集。
[0093] 栅格状态可以根据栅格的代价值确定,代价值的范围是[0,255],占用状态的栅格代价值为254,距离障碍物在当前机器人旋转半径以内的非障碍物栅格代价是253,随着与障碍物距离变远,代价逐步减小,直至0代表自由状态,未知栅格的代价值为255。
[0094] 其次,从当前机器人的定位位姿对应的栅格开始,扩散式的搜索代价值为255的首个边界点(例如从定位位姿栅格周围的8个栅格开始遍历,再遍历包围此8个栅格的其他栅格,以此类推,直至寻找到第一个边界点)。再以此首个边界点为基础,扩散式的搜索该首个边界点周围的边界点,组成一个边界点集。遍历过程中,将首个边界点周围8个栅格内的代价值不小于253的边界点定义为非法边界点,并将其添加至由非法边界点和历史导航点(已执行过路径规划和探索的边界点)构成的边界点黑名单。再搜索完一个边界点集后,继续搜索当前栅格地图中的其他边界点集。
[0095] 再次,剔除前述各边界点集中边界点数小于10个的边界点集,按搜索的先后顺序遍历剩下的边界点集,并计算其中各边界点的平均坐标,将不在边界点黑名单内、距离平均坐标最近,且距离所有边界点黑名单内点的坐标都大于0.2m的边界点作为当前导航点。若不存在这样的当前导航点,则将该边界点集剔除,并加入至便系欸但黑名单中,继续筛选其他边界点集。
[0096] 在确定当前导航点后,使用A*算法规划从当前机器人的定位位姿到当前导航点的全局路径,使用PID算法执行路径跟踪前往当前导航点。在路径跟踪过程中,按照每20ms一次,接受安装于当前机器人前方的碰撞传感器发出的多个方向的碰撞信号。若当前机器人触发机械碰撞或者红外距离小于2cm,基于碰撞处相对于当前机器人中心位置和当前机器人相对于当前栅格地图的位置,通过坐标变换,将碰撞处位置在当前栅格地图中的代价值标记为253,此时即触发碰撞卡困条件,需执行脱困处理。例如,可以控制当前机器人后退2cm,如果是左侧碰撞,控制机器人原地右旋15度;如果是前方碰撞,控制机器人随机向左或右旋15度;如果是右侧碰撞,机器人原地左旋15度。然后控制当前机器人以0.1m/s的速度向旋转后方向前进,从而脱离碰撞卡困。若路径规划失败,还可以关闭当前栅格地图对应代价地图中的碰撞层,重新进行A*的路径规划,若仍然失败,控制机器人后退2cm,并默认为前方碰撞,向左或向右旋转5度,控制当前机器人以0.1m/s的速度向旋转后的方向前进。
[0097] 同时,在路径跟踪期间,可以按照每50ms一次,获取当前机器人的定位位姿、通过IMU计算得到的俯仰角和通过编码器推算得到的里程计位姿;按照每20s一次,进行如下步骤检查:计算从当前时间之前10s内储存的定位位姿与当前定位位姿的欧氏距离最大偏差值Loc_Max;将储存的两两相邻定位位姿计算欧式距离,将欧氏距离累加得到位姿的累计变化量Loc_Change_Dist;将储存的两两相邻里程计位姿计算欧式距离,将欧氏距离累加得到里程计位姿累计变化量Odom_Change_Dist;将储存的IMU俯仰角求绝对值并相加除以总记录数量,得到俯仰角变化量平均值Mean_Pitch。
[0098] 此时判断若Loc_Max < Loc_th ,Loc_th为偏离阈值,可取0.2m;或者同时判断Odom_Change_Dist‑Loc_Change_Dist>Change_th,Change_th为位姿变化量阈值,可取0.5m;且同时判断俯仰角变化量Mean_Pitch>Pitch_th,Pitch_th为俯仰角变化量阈值,可取10度。若满足以上条件中的至少一个,则确定当前机器人处于过坎卡困中,同样需要脱困处理。可以提高当前机器人的行驶速度冲过卡困,例如将当前机器人的行驶速度提高至
0.3m/s。
[0099] 此外,在路径跟踪期间,可以按照每5s一次,检测当前导航点的代价值变化,当代价值由255变化至[0,254]范围内、或者当前机器人的当前位置距离当前导航点的欧氏距离小于0.2m时,结束当前路径跟踪并将该导航点添加至边界点黑名单,并重新进行前述导航点的选择过程。在路径跟踪期间,可以按照每1s一次,进行实时路径规划,目的在于躲避当前栅格地图中新扫描到的障碍物,若在前往当前导航的过程中遇到新的障碍物,应重新进行路径规划,若路径重规划失败,可以检测当前机器人的定位栅格和周围8个栅格对应的代价值,若各代价值均符合[0,254]的代价范围,则将当前导航点添加至边界点黑名单中,并进行下一个导航点的确定。
[0100] 实施例四
[0101] 图4是根据本申请实施例四提供的一种地图使用方法的流程图。本申请实施例可适用于使用机器人构建地图的情况,该方法可以由一种地图使用装置来执行,该装置可以采用软件和/或硬件实现,并具体配置于当前机器人中。其中,当前机器人可以理解为正在行驶中的机器人,可以与构建地图的机器人相同,也可以不同。
[0102] 参考图4所示的地图使用方法,应用于当前机器人,具体包括如下步骤:
[0103] S410、获取目标地图;其中,目标地图采用目标地图采用如本申请上述各实施例所提供的任一种地图探索方法生成。
[0104] S420、根据目标地图,对当前机器人进行行驶控制。
[0105] 具体的,当前机器人可以对已经生成的目标地图进行调用,并根据目标地图在现实场景中进行行驶控制,其中,行驶控制包括但不限于避障控制、脱离碰撞卡困和脱离过坎卡困等。
[0106] 本申请实施例的技术方案,通过获取目标地图并据此控制当前机器人人运动,防止机器人在目标环境中重复搜索,提高了建图机器人的工作效率,提升了机器人工作的灵活性,有助于提高当前机器人的行驶安全。
[0107] 实施例五
[0108] 图5为本申请实施例五提供的一种地图探索装置的结构示意图。本申请实施例可适用于使用机器人构建地图的情况,该装置可以由软件和/或硬件的方式来实现,可配置于当前机器人中。如图5所示,该地图探索装置500可以包括:栅格地图确定模块510、边界点集确定模块520、导航点确定模块530、栅格地图更新模块540和目标地图探索模块550,其中,[0109] 栅格地图确定模块510,用于根据传感器获取的扫描信息,确定当前栅格地图;
[0110] 边界点集确定模块520,用于根据当前机器人在当前栅格地图中的定位位姿,确定待探索边界点集;
[0111] 导航点确定模块530,用于根据待探索边界点集和边界点黑名单,确定当前导航点;其中,边界点黑名单用于筛选当前导航点;
[0112] 栅格地图更新模块540,用于基于当前导航点,更新当前栅格地图;
[0113] 目标地图探索模块550,用于根据更新后的当前栅格地图,构建目标地图。
[0114] 本申请实施例的技术方案,确定了待探索边界点集,根据边界点黑名单从待探索边界点集中筛选当前导航点,为当前机器人的建图过程提供了精确有效的导航指引,减少了探索资源的浪费,避免了出现重复探索无效边界点的情况,缩短了目标环境的探索时间,从而提高了当前机器人对目标环境的探索建图效率和探索成功率。
[0115] 在一种可选实施方式中,所述栅格地图更新模块540,可以包括:
[0116] 导航路线确定单元,用于基于所述定位位姿和所述当前导航点,确定当前导航路线,并执行所述当前导航路线;
[0117] 导航点判断单元,用于在执行所述当前导航路线的过程中,更新所述当前栅格地图,并判断所述当前导航点是否符合所述待探索边界点集和所述边界点黑名单;
[0118] 导航路线更新单元,用于根据判断结果,更新所述当前导航路线。
[0119] 在一种可选实施方式中,所述导航点判断单元可以包括:
[0120] 导航点动态更新子单元,用于若在所述待探索边界点集中不存在所述当前导航点,则将该所述待探索边界点集加入所述边界点黑名单,并更新所述当前导航点;
[0121] 相应的,所述导航路线更新单元,具体用于:基于更新后的所述当前导航点,更新所述当前导航路线。
[0122] 在一种可选实施方式中,所述导航点确定模块530,可以包括:
[0123] 平均坐标确定单元,用于根据待探索边界点集内各待探索边界点,确定待探索边界点的平均坐标;
[0124] 当前导航点确定单元,用于根据平均坐标和边界点黑名单,确定当前导航点。
[0125] 在一种可选实施方式中,所述当前导航点确定单元,可以包括:
[0126] 候选导航点确定子单元,用于将边界点黑名单之外的待探索边界点作为候选导航点;
[0127] 导航点确定子单元,用于根据各候选导航点和平均坐标之间的距离,以及各候选导航点和边界点黑名单内各点坐标的距离,确定当前导航点。
[0128] 在一种可选实施方式中,所述地图探索装置500还可以包括:
[0129] 黑名单添加模块,用于若在待探索边界点集中不存在当前导航点,则将该待探索边界点集加入边界点黑名单。
[0130] 在一种可选实施方式中,所述边界点集确定模块520可以包括:
[0131] 初始边界点集确定单元,用于基于定位位姿,确定当前栅格地图中的各初始边界点集;
[0132] 待探索点集确定单元,用于剔除各初始边界点集中不符合预设边界点个数的无用边界点集,确定待探索边界点集。
[0133] 在一种可选实施方式中,所述地图探索装置500还可以包括:
[0134] 黑名单更新模块,用于将无用边界点集加入边界点黑名单。
[0135] 在一种可选实施方式中,所述地图探索装置500还可以包括:
[0136] 卡困信息确定模块,用于根据传感器获取当前机器人的实时状态数据,确定当前机器人的卡困信息;其中,实时状态数据包括当前机器人与障碍物之间的距离数据、当前机器人的定位数据、里程数据和姿态数据等中的至少一种;
[0137] 卡困点确定模块,用于根据卡困信息,确定当前栅格地图中的卡困栅格点;
[0138] 黑名单加入模块,用于将卡困栅格点加入边界点黑名单。
[0139] 在一种可选实施方式中,所述地图探索装置500还可以包括:
[0140] 卡困状态判断单元,用于根据所述卡困信息,确定所述当前机器人的卡困状态;其中,所述卡困状态包括碰撞卡困和过坎卡困;
[0141] 碰撞脱困单元,用于若所述卡困状态为所述碰撞卡困,则根据碰撞方向,执行对所述碰撞方向的预设避障策略;
[0142] 过坎脱困单元,用于若所述卡困状态为所述过坎卡困,则根据卡困方向,执行对所述卡困方向的预设过坎策略。
[0143] 本申请实施例所提供的地图探索装置可执行本申请任意实施例所提供的地图探索方法,具备执行各地图探索方法相应的功能模块和有益效果。
[0144] 实施例六
[0145] 图6为本申请实施例六提供的一种地图使用装置的结构示意图。本申请实施例可适用于使用机器人构建地图的情况,该装置可以由软件和/或硬件的方式来实现,可配置于当前机器人中。其中,当前机器人可以与构建地图的机器人相同,也可不同。如图6所示,该地图使用装置600可以包括:目标地图获取模块610和行驶控制模块620,其中,[0146] 目标地图获取模块610,用于获取目标地图;其中,目标地图采用本申请各实施例所述的地图探索装置生成;
[0147] 行驶控制模块620,用于根据目标地图,对当前机器人进行行驶控制。
[0148] 本申请实施例的技术方案,通过获取目标地图并据此控制当前机器人人运动,防止机器人在目标环境中重复搜索,提高了建图机器人的工作效率,提升了机器人工作的灵活性,有助于提高当前机器人的行驶安全。
[0149] 本申请实施例所提供的地图使用装置可执行本申请任意实施例所提供的地图使用方法,具备执行各地图使用方法相应的功能模块和有益效果。
[0150] 实施例七
[0151] 图7示出了可以用来实施本申请的实施例的机器人10的结构示意图。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
[0152] 如图7所示,机器人10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如ROM 12(即只读存储器)、RAM 13(即随机访问存储器)等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在ROM 12中的计算机程序或者从存储单元18加载到RAM 13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储机器人10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。I/O接口15(即输入/输出接口)也连接至总线14。
[0153] 机器人10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许机器人10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0154] 处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如地图探索方法和/或地图使用方法。
[0155] 在一些实施例中,地图探索方法和/或地图使用方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到机器人10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的地图探索方法和/或地图使用方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行地图探索方法和/或地图使用方法。
[0156] 本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0157] 用于实施本申请的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0158] 在本申请的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD‑ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0159] 为了提供与用户的交互,可以在机器人上实施此处描述的系统和技术,该机器人具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给机器人。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0160] 可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
[0161] 计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端‑服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
[0162] 应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请的技术方案所期望的结果,本文在此不进行限制。
[0163] 上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。