【发明内容】
本发明实施例提供了一种地图探索方法和装置、存储介质、电子装置,以至少解决相关技术中存在的探索效率较低的问题。
根据本发明的一个实施例,提供了一种地图探索方法,包括:基于机器人的定位信息,将机器人所处的已知区域更新至待探索地图中;在所述待探索地图中存在地图边沿的情况下,根据地图边沿的位置确定出所述地图边沿对应的目标观测点,其中,所述地图边沿处于所述待探索地图中已知区域和未知区域的边界处;控制所述机器人行驶至所述目标观测点,将所述机器人在行驶至所述目标观测点的过程中探索得到的已知区域更新至待探索地图中。
在一个示例性实施例中,根据以下方式确定是否存在地图边沿:在所述待探索地图中存在已知区域和未知区域的边界的情况下,获取所述边界所占据的栅格数量;在确定出所述边界所占据的栅格数量大于设定阈值的情况下,则将所述边界确定为所述地图边沿。
在一个示例性实施例中,在所述地图边沿的数量为1个的情况下,所述控制所述机器人行驶至所述目标观测点包括:获取所述目标观测点的位置;基于所述目标观测点的位置以及所述机器人当前的姿态规划第一路径;控制所述机器人沿所述第一路径行驶,以使所述机器人行驶至所述目标观测点处。
在一个示例性实施例中,在所述地图边沿的数量为多个的情况下,所述控制所述机器人行驶至所述目标观测点包括:获取每个所述地图边沿对应的所述目标观测点的位置;基于多个所述目标观测点的位置以及所述机器人当前的姿态规划第二路径,其中,多个所述目标观测点均位于所述第二路径上;控制所述机器人沿所述第二路径行驶,以使所述机器人依次行驶至多个所述目标观测点处。
在一个示例性实施例中,所述根据地图边沿的位置确定出所述地图边沿对应的目标观测点包括:以所述地图边沿中包括的目标点为圆心,预定长度为半径,根据设定角分辨率采样圆弧上的初始点;从所述初始点中确定出所述目标观测点。
在一个示例性实施例中,从所述初始点中确定出所述目标观测点包括:对每个所述初始点计算在所述机器人的传感器视场角FOV范围内的可视边沿栅格的目标数量及每个所述初始点距离所述机器人已探测到的最近障碍物的目标距离;基于所述目标数量和所述目标距离从所述初始点中确定出所述目标观测点。
在一个示例性实施例中,基于所述目标数量和所述目标距离从所述初始点中确定出所述目标观测点包括:对每个所述初始点所对应的所述目标数量和所对应的所述目标距离进行加权求和,以得到求和值;将求和值最大的初始点确定为所述目标观测点。
在一个示例性实施例中,所述目标观测点的位置是通过如下方式确定的:获取所述目标观测点相对于所述对应的所述地图边缘所占栅格的角度;对获取的多个所述角度求平均值,以确定所述目标观测点的位置。
根据本发明的另一个实施例,还提供了一种地图探索装置,包括:更新模块,用于基于机器人的定位信息,将机器人所处的已知区域更新至待探索地图中;确定模块,用于在所述待探索地图中存在地图边沿的情况下,根据地图边沿的位置确定出所述地图边沿对应的目标观测点,其中,所述地图边沿处于所述待探索地图中已知区域和未知区域的边界处;控制模块,用于控制所述机器人行驶至所述目标观测点,将所述机器人在行驶至所述目标观测点的过程中探索得到的已知区域更新至待探索地图中。
根据本发明的另一个实施例,还提供了一种计算机可读的存储介质,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行上述任一项实施例中所述的方法。
根据本发明的另一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行上述任一项实施例中所述的方法。
通过本发明,可以从地图边沿中确定出观测点,进而获取到最佳路径,还可以将在行驶到观测点的过程中所探索到的区域更新至待探索地图中,有效实现了最优策略选择,提升了探索效率,解决了相关技术中存在的由于无法做到实时的最优策略选择,而导致的探索效率相对较低的问题。
【具体实施方式】
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例所提供的方法实施例可以在移动机器人,或者类似的运算装置中执行。以运行在移动机器人上为例,图1是本发明实施例的一种地图探索方法的移动机器人的硬件结构框图。如图1所示,移动机器人可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,在一个示例性实施例中,上述移动机器人还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动机器人的结构造成限定。例如,移动机器人还可包括比图1中所示更多或者更少的组件,或者具有与图1所示等同功能或比图1所示功能更多的不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的地图探索方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动机器人。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动机器人的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
首先对本发明的应用场景进行说明:
当机器人需要在某个区域中行驶时,是需要预先探索出该区域的地图的,在探索出区域的地图后,可以基于该地图行驶,以有效避开障碍物。目前市面上已有的机器人探索地图都是采用在区域中随机行驶,并在碰撞到障碍物之后随机转动一个角度并继续行驶的方式进行探索的,该方式并不能保证机器人行驶的路径能够完全覆盖该区域,从而导致,地图探索不全,以及探索效率低的问题。针对该问题,本发明实施例中提出了一种探索的方式,可以有效避免无效探索,提高地图探索的效率。本发明实施例中所涉及的机器人可以是扫地机器人,具备运输功能的机器人(例如,快递运输机器人),还可以是商场中的向导机器人等,只要是具备自动行驶能力的机器人都可以涵盖在本发明的保护范围内。
下面结合实施例对本发明进行说明:
在本实施例中提供了一种地图探索方法,如图2所示,该方法包括如下步骤:
S202,基于机器人的定位信息,将机器人所处的已知区域更新至待探索地图中;
S204,在所述待探索地图中存在地图边沿的情况下,根据地图边沿的位置确定出所述地图边沿对应的目标观测点,其中,所述地图边沿处于所述待探索地图中已知区域和未知区域的边界处;
S206,控制所述机器人行驶至所述目标观测点,将所述机器人在行驶至所述目标观测点的过程中探索得到的已知区域更新至待探索地图中。
其中,上述操作的执行主体可以是智能机器人(例如,扫地机器人、快递运输机器人、向导机器人等),或者是智能机器人内设置的处理器,或者其他的具备类似处理能力的设备。上述目标区域是机器人和充电座所处的区域,该目标区域可以是卧室、客厅、书房、餐厅、办公室、商场等室内场所,此外,上述目标区域还可以是室外的部分区域,例如,健身广场等。
在上述实施例中,定位信息可以是机器人内设置的同步定位与建图SLAM所提供的定位信息(包括但不限于:经纬度信息、已探索到的区域中的障碍物位置信息等),其中,该SLAM可以精准感知并适应环境,并且该SLAM可以使得机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置和地图进行自身定位,同时在自身定位的基础上建造增量式地图,以实现机器人的自主定位和导航。本实施例中的待探索地图可以是costmap地图,即,可以预先建立全局或局部的costmap地图,由于该costmap地图是可以加工的地图,因此,可以为其配置多个图层,且不同的图层用于指示不同的内容,在初始建立时,可以通过SLAM建立完成costmap地图的静态地图,后续在机器人持续进行区域探索的过程可以完善costmap地图的其他图层,例如,障碍地图层、膨胀层、其他图层等。
还需要说明的是,机器人在进行区域探索时,可以先利用摄像头感知当前区域环境,通过对当前区域的边界进行检测来确定一个最佳观测点(即,上述的目标观测点),机器人在移动到该最佳观测点的过程中完成对经过的区域的探索及地图生成,机器人通过不断的边界探索及区域探索最终完成整个区域的地图的生成。
通过上述实施例中,可以从地图边沿中确定出观测点,进而获取到最佳路径,还可以将在行驶到观测点的过程中所探索到的区域更新至待探索地图中,有效实现了最优策略选择,提升了探索效率,解决了相关技术中存在的由于无法做到实时的最优策略选择,而导致的探索效率相对较低的问题。
在一个示例性实施例中,根据以下方式确定是否存在地图边沿:在所述待探索地图中存在已知区域和未知区域的边界的情况下,获取所述边界所占据的栅格数量;在确定出所述边界所占据的栅格数量大于设定阈值的情况下,则将所述边界确定为所述地图边沿。通过边界所占据的栅格数量来对边界进行过滤,可以有效过滤掉无效边界。
在一个示例性实施例中,上述地图边界可能有多个,有可能仅有一个,由于每个边界都会对应一个目标观测点,因此,可以基于边界的数量来确定目标观测点的数量,进而可以基于目标观测点的数量来规划机器人在进行地图探索时的行驶路径,从而有效避免无用行驶。下面进行分情况说明:
在所述地图边沿的数量为1个的情况下,所述控制所述机器人行驶至所述目标观测点包括:获取所述目标观测点的位置;基于所述目标观测点的位置以及所述机器人当前的姿态规划第一路径;控制所述机器人沿所述第一路径行驶,以使所述机器人行驶至所述目标观测点处。在本实施例中,当仅存在一个地图边沿时,说明仅存在一个位于该地图边界上的观测点,可以直接规划机器人当前位置至该观测点的路径,进而基于该路径对机器人所行驶经过的区域进行探索,并将探索得到的地图信息更新到待探索地图中。
在所述地图边沿的数量为多个的情况下,所述控制所述机器人行驶至所述目标观测点包括:获取每个所述地图边沿对应的所述目标观测点的位置;基于多个所述目标观测点的位置以及所述机器人当前的姿态规划第二路径,其中,多个所述目标观测点均位于所述第二路径上;控制所述机器人沿所述第二路径行驶,以使所述机器人依次行驶至多个所述目标观测点处。在本实施例中,当存在多个地图边沿的时候,机器人需要遍历每个边沿,才能保证不遗漏需要探索的区域,为了避免机器人行驶重复的路径,可以构建旅行商问题,即,将各个目标观测点的位置与当前机器人姿态一起构建为一个旅行商问题,从而构建一条最优路径(即,上述的第二路径),使多个所述目标观测点均位于该最优路径上,此外,这个最优路径是所有包含这些点的路径中最短的该路径,从而能够使机器人按照最短路径遍历全部目标观测点,有效避免行驶路径的冗余。
在一个示例性实施例中,所述根据地图边沿的位置确定出所述地图边沿对应的目标观测点包括:以所述地图边沿中包括的目标点为圆心,预定长度为半径,根据设定角分辨率采样圆弧上的初始点;从所述初始点中确定出所述目标观测点。在本实施例中,该目标点可以是地图边沿的中心点,或者位于地图边沿的除中心点之外的特定位置上的点,设为半径的预定长度可以根据实际应用场景而设定,例如,该长度可以是固定长度(例如,20cm、30cm、50cm等),还可以是预先设定的步进值(例如,依次选取5cm、10cm、15cm,或者,依次选取1m、1.5m、2m等),该实施例中的角分辨率也可以是灵活设置的,该角分辨率实际上也是雷达的指向精度,例如,可以设置雷达的指向精度为0.01弧度、0.02弧度等。
在一个示例性实施例中,从所述初始点中确定出所述目标观测点包括:对每个所述初始点计算在所述机器人的传感器视场角FOV范围内的可视边沿栅格的目标数量及每个所述初始点距离所述机器人已探测到的最近障碍物的目标距离;基于所述目标数量和所述目标距离从所述初始点中确定出所述目标观测点。可选地,基于所述目标数量和所述目标距离从所述初始点中确定出所述目标观测点包括:对每个所述初始点所对应的所述目标数量和所对应的所述目标距离进行加权求和,以得到求和值;将求和值最大的初始点确定为所述目标观测点。在本实施例中,可以根据实际情况对目标数量和目标距离所对应的权值进行设置,例如,设置目标数量所对应的权值为0.3,设置目标距离所对应的权值为0.7,或者设置目标数量所对应的权值为0.6,设置目标距离所对应的权值为0.4等。
在一个示例性实施例中,所述目标观测点的位置是通过如下方式确定的:获取所述目标观测点相对于所述对应的所述地图边缘所占栅格的角度;对获取的多个所述角度求平均值,以确定所述目标观测点的位置。
下面结合具体实施例对本发明进行整体说明:
图3是根据本发明实施例的整体流程图,如图3所示,包括如下步骤:
S302,根据预设的探索范围,构建一张相应大小的探索costmap地图(或称为探索地图,对应于前述的待探索地图)。
S304,根据SLAM部分提供的定位信息,与地图信息,将当前帧局部地图更新到探索地图中。
S306,寻找更新区域内未知边沿及其对应的最佳观测点;其中,地图边沿需满足处于已知与未知区域的边界处,且边沿所占据的栅格数量需大于设定阈值。观测点以边沿中心为圆心,根据设定步进值选取搜索半径,根据设定角分辨率采样圆弧上的点,并计算这些点相对于所有边沿栅格的角度,求其平均值,从而获得观测点的位置。对每个观测点计算在传感器FOV范围内的可视边沿栅格数量及其距离最近障碍物的距离,获得一个观测点的综合评分。按照得分从小到大的顺序排列,获得一个边沿对应的一组观测点列表。表头的观测点(即,得分最高的观测点)即为最佳观测点。
S308,获取当前更新的所有边沿对应的表头观测点,即获取最佳观测点。
S310,若最佳观测点数量超过两个,则将其与当前机器人的位置一起构建为一个旅行商问题。
S312,若当前更新区域只有一个最佳观测点则可直接进行路径规划。
S314,若没有最佳观测点,则访问整个地图。
S316,获取全局地图中的观测点。
S318,若全局地图中存在的观测点数量大于等于2,则按照步骤S310中的构建方式继续构建旅行商问题。
S320,若全局地图中只有一个最佳观测点,则可直接进行路径规划。
S322,若全局地图中没有最佳观测点,说明整个地图中找不到合适的边沿,即认为完成了全图探索。
地图的探索结果可以参见附图4。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种地图探索装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本发明实施例的地图探索装置的结构框图,如图5所示,该装置包括:
更新模块52,用于基于机器人的定位信息,将机器人所处的已知区域更新至待探索地图中;
确定模块54,用于在所述待探索地图中存在地图边沿的情况下,根据地图边沿的位置确定出所述地图边沿对应的目标观测点,其中,所述地图边沿处于所述待探索地图中已知区域和未知区域的边界处;
控制模块56,用于控制所述机器人行驶至所述目标观测点,将所述机器人在行驶至所述目标观测点的过程中探索得到的已知区域更新至待探索地图中。
在一个示例性实施例中,所述装置可以根据以下方式确定是否存在地图边沿:在所述待探索地图中存在已知区域和未知区域的边界的情况下,获取所述边界所占据的栅格数量;在确定出所述边界所占据的栅格数量大于设定阈值的情况下,则将所述边界确定为所述地图边沿。
在一个示例性实施例中,所述控制模块56用于在所述地图边沿的数量为1个的情况下,通过如下方式控制所述机器人行驶至所述目标观测点:获取所述目标观测点的位置;基于所述目标观测点的位置以及所述机器人当前的姿态规划第一路径;控制所述机器人沿所述第一路径行驶,以使所述机器人行驶至所述目标观测点处。
在一个示例性实施例中,所述控制模块56用于在所述地图边沿的数量为多个的情况下,通过如下方式控制所述机器人行驶至所述目标观测点:获取每个所述地图边沿对应的所述目标观测点的位置;基于多个所述目标观测点的位置以及所述机器人当前的姿态规划第二路径,其中,多个所述目标观测点均位于所述第二路径上;控制所述机器人沿所述第二路径行驶,以使所述机器人依次行驶至多个所述目标观测点处。
在一个示例性实施例中,所述确定模块54用于通过如下方式实现根据地图边沿的位置确定出所述地图边沿对应的目标观测点:以所述地图边沿中包括的目标点为圆心,预定长度为半径,根据设定角分辨率采样圆弧上的初始点;从所述初始点中确定出所述目标观测点。
在一个示例性实施例中,在一个示例性实施例中,所述确定模块54用于通过如下方式实现从所述初始点中确定出所述目标观测点:对每个所述初始点计算在所述机器人的传感器视场角FOV范围内的可视边沿栅格的目标数量及每个所述初始点距离所述机器人已探测到的最近障碍物的目标距离;基于所述目标数量和所述目标距离从所述初始点中确定出所述目标观测点。
在一个示例性实施例中,在一个示例性实施例中,在一个示例性实施例中,所述确定模块54用于通过如下方式实现基于所述目标数量和所述目标距离从所述初始点中确定出所述目标观测点:对每个所述初始点所对应的所述目标数量和所对应的所述目标距离进行加权求和,以得到求和值;将求和值最大的初始点确定为所述目标观测点。
在一个示例性实施例中,所述装置是通过如下方式确定所述目标观测点的位置的:获取所述目标观测点相对于所述对应的所述地图边缘所占栅格的角度;对获取的多个所述角度求平均值,以确定所述目标观测点的位置。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在本实施例中,上述计算机可读存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,基于机器人的定位信息,将机器人所处的已知区域更新至待探索地图中;
S2,在所述待探索地图中存在地图边沿的情况下,根据地图边沿的位置确定出所述地图边沿对应的目标观测点,其中,所述地图边沿处于所述待探索地图中已知区域和未知区域的边界处;
S3,控制所述机器人行驶至所述目标观测点,将所述机器人在行驶至所述目标观测点的过程中探索得到的已知区域更新至待探索地图中。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
在一个示例性实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,基于机器人的定位信息,将机器人所处的已知区域更新至待探索地图中;
S2,在所述待探索地图中存在地图边沿的情况下,根据地图边沿的位置确定出所述地图边沿对应的目标观测点,其中,所述地图边沿处于所述待探索地图中已知区域和未知区域的边界处;
S3,控制所述机器人行驶至所述目标观测点,将所述机器人在行驶至所述目标观测点的过程中探索得到的已知区域更新至待探索地图中。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。