地图构建方法、装置和计算机可读存储介质
技术领域
本公开涉及机器人算法技术领域,特别是一种地图构建方法、装置和计算机可读存储介质。
背景技术
作为无人驾驶设备领域的关键技术,SLAM(Simultaneous Localization andMapping,即时定位与地图构建)技术处在快速发展阶段,每年都会涌现出一些新的算法。各种SLAM算法有各自的优势,也往往有各自的劣势,采用一种算法进行地图构建难以规避其劣势,从而影响地图构建效果,频繁更新的技术也增加了技术人员的对设备升级的压力。
发明内容
本公开的一个目的在于提到地图构建的灵活度和自适应程度。
根据本公开的一个方面,提出一种地图构建方法,包括:根据先验信息确定场景检测模型;根据场景检测模型输出的场景条件,基于预定策略选择地图构建模型;通过选择的地图构建模型执行地图构建。
可选地,地图构建方法还包括:根据场景检测模型输出的场景条件的变化更新用于地图构建的地图构建模型。
可选地,更新执行地图构建的地图构建模型包括以下至少一项:在场景条件的变化未对选择的地图构建模型产生影响的情况下,不切换用于地图构建的地图构建模型;在场景条件的变化使选择的地图构建模型的参数配置变化的情况下,修改用于地图构建的地图构建模型的参数配置;在场景条件的变化使选择的地图构建模型类型改变的情况下,切换用于地图构建的地图构建模型。
可选地,地图构建方法还包括:通过修改先验信息更改选择的场景检测模型。
可选地,地图构建方法还包括:通过修改预定策略更改地图构建模型的选择逻辑。
可选地,地图构建方法还包括:通过添加或修改模型插件更新场景检测模型库或地图构建模型库中的一种或多种,其中,场景检测模型库中包括允许调用的全部场景检测模型,地图构建模型库中包括允许调用的全部地图构建模型。
可选地,地图构建方法还包括:根据场景检测模型输出的场景条件选择场景检测模型;当选择的场景检测模型发生变化时,切换场景检测模型;根据切换至的场景检测模型输出的场景条件,基于预定策略选择地图构建模型。
可选地,场景检测模型包括基于卷积神经网络的场景分类算法、面向机器人场景检测的贝叶斯滤波算法中的一种或多种。
可选地,地图构建模型包括ORB(Oriented FAST and Rotated BRIEF,快速特征点提取和描述算法)-SLAM算法、根据激光距离数据得出栅格地图GMapping算法或RGBD(RedGreen Blue and Depth,红绿蓝及深度)-SLAM算法中的一种或多种。
可选地,先验信息包括指定场景检测模型信息或场景条件中的一种或多种与场景检测模型的对应关系。
可选地,预定策略包括场景条件与地图构建模型之间的对应关系。
通过这样的方法,能够根据先验信息确定场景检测模型,根据场景条件和预定策略选择地图构建模型,从而能够实现场景检测模型和地图构建模型的切换,能够应用各个模型的优势,规避其劣势,实现模型的灵活调度,提高地图构建的灵活度和自适应程度。
根据本公开的另一个方面,提出一种地图构建装置,包括:场景检测模型确定模块,被配置为根据先验信息确定场景检测模型;地图构建模型确定模块,被配置为根据场景检测模型输出的场景条件,基于预定策略选择地图构建模型;构建模块,被配置为通过选择的地图构建模型执行地图构建。
可选地,地图构建模型确定模块还被配置为根据场景检测模型输出的场景条件的变化更新选择的地图构建模型;构建模块,被配置为更新用于地图构建的地图构建模型。
可选地,构建模块被配置为:在地图构建模型确定模块确定场景条件的变化使选择的地图构建模型的参数配置变化的情况下,修改用于地图构建的地图构建模型的参数配置;在地图构建模型确定模块确定场景条件的变化使选择的地图构建模型类型改变的情况下,切换用于地图构建的地图构建模型。
可选地,地图构建装置还包括:调度机制修改模块,被配置为允许使用者执行以下操作中的至少一项:通过修改先验信息更改选择的场景检测模型;或通过修改预定策略更改地图构建模型的选择逻辑。
可选地,地图构建装置还包括:插件更新模块,被配置为允许使用者通过添加或修改模型插件更新场景检测模型库或地图构建模型库中的一种或多种,其中,场景检测模型库中包括允许调用的全部场景检测模型,地图构建模型库中包括允许调用的全部地图构建模型。
可选地,场景检测模型确定模块还被配置为:根据场景检测模型输出的场景条件选择场景检测模型;当选择的场景检测模型发生变化时,切换场景检测模型;地图构建模型确定模块被配置为根据切换至的场景检测模型的输出的场景条件,基于预定策略选择地图构建模型。
可选地,场景检测模型包括基于卷积神经网络的场景分类算法、面向机器人场景检测的贝叶斯滤波算法中的一种或多种。
可选地,地图构建模型包括ORB-SLAM算法、GMapping算法或RGBD-SLAM中的一种或多种。
可选地,先验信息包括指定场景检测模型信息或场景条件中的一种或多种与场景检测模型的对应关系。
可选地,预定策略包括场景条件与地图构建模型之间的对应关系。
根据本公开的又一个方面,提出一种地图构建装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器的指令执行上文中任意一种地图构建方法。
这样的装置能够根据先验信息确定场景检测模型,根据场景条件和预定策略选择地图构建模型,从而能够实现场景检测模型和地图构建模型的切换,能够应用各个模型的优势,规避其劣势,实现模型的灵活调度,提高地图构建的灵活度和自适应程度。
根据本公开的再一个方面,提出一种计算机可读存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现上文中任意一种地图构建方法的步骤。
通过执行这样的计算机可读存储介质上的指令,能够根据先验信息确定场景检测模型,根据场景条件和预定策略选择地图构建模型,从而能够实现场景检测模型和地图构建模型的切换,从而能够应用各个模型的优势,规避其劣势,实现模型的灵活调度,提高地图构建的灵活度和自适应程度。
附图说明
此处所说明的附图用来提供对本公开的进一步理解,构成本公开的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
图1为本公开的地图构建方法的一个实施例的流程图。
图2为本公开的地图构建方法的另一个实施例的流程图。
图3为本公开的地图构建装置的一个实施例的示意图。
图4为本公开的地图构建装置的状态机示意图。
图5为本公开的地图构建装置的实现架构的一个实施例的示意图。
图6为本公开的地图构建装置的另一个实施例的示意图。
图7为本公开的地图构建装置的又一个实施例的示意图。
具体实施方式
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
本公开的地图构建方法的一个实施例的流程图如图1所示。
在步骤101中,根据先验信息确定场景检测模型。在一个实施例中,场景检测模型可以包括基于卷积神经网络的场景分类算法、面向机器人场景检测的贝叶斯滤波算法中的一种或多种。根据先验信息中指定场景检测模型信息与场景检测模型的对应关系能够确定当前应该使用的场景检测模型,其中,指定场景检测模型信息可以是用户预先配置的信息,通过读取用户配置的信息确定使用的场景检测模型。
在步骤102中,根据场景检测模型输出的场景条件,基于预定策略选择地图构建模型。在一个实施例中,预定策略可以包括场景条件与地图构建模型的对应关系,如在室内环境下采用基于深度相机的RGBD-SLAM算法,在黑暗环境下采用基于激光的GMapping算法,在室外明亮环境下采用ORB-SLAM算法等,可以根据场景条件确定对应的地图构建模型。
在步骤103中,通过选择的地图构建模型执行地图构建。
通过这样的方法,能够根据先验信息确定场景检测模型,根据场景条件和预定策略选择地图构建模型,从而能够实现场景检测模型和地图构建模型的切换,能够应用各个模型的优势,规避其劣势,实现模型的灵活调度,提高地图构建的灵活度和自适应程度。
在一个实施例中,当运行场景检测模型后能够得到场景条件,根据先验信息中场景条件与场景检测模型的对应关系可以切换所使用的场景检测模型。通过这样的方法,能够根据场景条件的变化选择更加适合的场景检测模型,从而提高获取的场景条件的准确度,提高场景检测的自适应程度。
在一个实施例中,还可以实时监测场景检测模型输出的场景条件,判断其对应的地图构建模型是否发生变化。若地图构建模型发生变化,则实时调整或切换所使用的地图构建模型。在一个实施例中,根据场景条件和预定策略确定的地图构建模型除了其种类信息,还可以包括参数配置信息。在场景条件的变化使选择的地图构建模型的参数配置变化,但并未影响选择的地图构建模型种类的情况下,修改用于地图构建的地图构建模型的参数配置;在场景条件的变化使选择的地图构建模型类型改变的情况下,切换用于地图构建的地图构建模型。
通过这样的方法,能够在场景条件发生变化的情况下及时切换使用的地图构建模型;另外,可以优先采用修改地图构建模型配置参数的方式调整地图构建模型,即通过模型内部的参数切换使地图构建模型适应场景变化,降低切换地图构建模型的频率,也降低设备在模型切换过程的运算负担。
本公开的地图构建方法的另一个实施例的流程图如图2所示。
在步骤201中,根据先验信息确定场景检测模型。
在步骤202中,获取场景检测模型输出的场景条件。在一个实施例中,可以采用基于卷积神经网络的场景分类算法和面向机器人场景检测的贝叶斯滤波优化对环境进行高效准确地检测。例如,将当前环境的图像输入到基于卷积神经网络的场景分类器中,获得场景分类结果,通过贝叶斯滤波为场景分类结果添加连续图像之间时间与空间相关性信息,提升分类结果的稳定性和准确性。在一个实施例中,场景条件可以包括室内明亮场景、室外明亮场景及黑暗场景,在一个实施例中,还可以进行更细致的划分,如划分光照等级、划分场景宽阔度等级等。
在步骤203中,根据场景条件,基于预定策略选择地图构建模型。
在步骤204中,通过地图构建模型执行地图构建。
在步骤205中,通过实时监测场景条件判断是否需要切换场景检测模型。若需要切换场景检测模型,则执行步骤206;若不需要切换场景检测模型,则执行步骤207。
在步骤206中,切换场景检测模型,并获取切换至的场景检测模型输出的场景条件,继而执行步骤207。
在步骤207中,根据场景条件判断是否切换地图构建模型。若需要切换地图构建模型,则执行步骤203;若不需要切换地图构建模型,则执行步骤204。
在一个实施例中,对场景条件的监测可以持续进行以及时切换模型,优化地图构建效果;还可以以预定频率监测,以降低设备负担和能量消耗。
通过这样的方法,能够在地图构建过程中监测场景条件的变化,进而及时切换场景检测模型和地图构建模型,提高地图构建的准确度和自适应程度。
在一个实施例中,各种场景检测模型、地图构建模型可以以插件的方式存储于模型库中,场景检测模型库中存储有允许调用的全部场景检测模型,地图构建模型库中存储有允许调用的全部地图构建模型。使用者能够通过添加、修改模型插件的方式更新场景检测模型、地图构建模型。
通过这样的方法,能够以插件的方式来更新场景检测模型、地图构建模型,从而方便系统随着技术和研究的发展更新,避免反复的平台搭建,提高更新的效率。
在一个实施例中,可以通过修改先验信息更改选择的场景检测模型,从而能够使选择的场景检测模型可控,方便更新使用的场景检测模型。在一个实施例中,可以通过修改预定策略更改地图构建模型的选择逻辑,从而使选择的地图构建模型可控,方便更新使用的地图构建模型。
通过这样的方法,能够通过修改先验信息或预定策略的方式分别控制选择的场景检测模型、地图构建模型,便于在技术更新、插件更新过程中调整所采用的模型,降低技术更新成本,提高模型上线使用的效率。
本公开的地图构建装置的一个实施例的示意图如图3所示。场景检测模型确定模块301能够根据先验信息确定场景检测模型。在一个实施例中,场景检测模型可以包括基于卷积神经网络的场景分类算法、面向机器人场景检测的贝叶斯滤波算法中的一种或多种。根据先验信息中指定场景检测模型信息与场景检测模型的对应关系能够确定当前应该使用的场景检测模型,其中,指定场景检测模型信息可以是用户预先配置的信息,通过读取用户配置的信息确定使用的场景检测模型。
地图构建模型确定模块302能够根据场景检测模型输出的场景条件,基于预定策略选择地图构建模型。在一个实施例中,预定策略可以包括场景条件与地图构建模型的对应关系,如在室内环境下采用基于深度相机的RGBD-SLAM算法,在黑暗环境下采用基于激光的GMapping算法,在室外明亮环境下采用ORB-SLAM算法等,可以根据场景条件确定对应的地图构建模型。
构建模块303能够通过选择的地图构建模型执行地图构建。
这样的地图构建装置能够根据先验信息确定场景检测模型,根据场景条件和预定策略选择地图构建模型,从而能够实现场景检测模型和地图构建模型的切换,能够应用各个模型的优势,规避其劣势,实现模型的灵活调度,提高地图构建的灵活度和自适应程度。
在一个实施例中,场景检测模型确定模块301还能够根据先验信息中场景条件与场景检测模型的对应关系切换所使用的场景检测模型。这样的地图构建装置能够根据场景条件的变化选择更加适合的场景检测模型,从而提高获取的场景条件的准确度,提高场景检测的自适应程度。
在一个实施例中,地图构建模型确定模块302能够实时监测场景检测模型输出的场景条件,判断其对应的地图构建模型是否发生变化。若地图构建模型发生变化,则实时调整或切换所使用的地图构建模型。在一个实施例中,根据场景条件和预定策略确定的地图构建模型除了其种类信息,还可以包括参数配置信息。在场景条件的变化使选择的地图构建模型的参数配置变化,但并未影响选择的地图构建模型种类的情况下,修改用于地图构建的地图构建模型的参数配置;在场景条件的变化使选择的地图构建模型类型改变的情况下,切换用于地图构建的地图构建模型。
这样的地图构建装置能够在场景条件发生变化的情况下及时切换使用的地图构建模型;另外,可以优先采用修改地图构建模型配置参数的方式调整地图构建模型,即通过模型内部的参数切换使地图构建模型适应场景变化,降低切换地图构建模型的频率,也降低设备在模型切换过程的运算负担。
在一个实施例中,如图3所示,地图构建装置还可以包括调度机制修改模块304,能够允许使用者通过修改先验信息的方式更改选择的场景检测模型,从而能够使选择的场景检测模型可控,方便更新使用的场景检测模型。在一个实施例中,还可以允许使用者通过修改预定策略的方式更改地图构建模型的选择逻辑,从而使选择的地图构建模型可控,方便更新使用的地图构建模型。
本公开的地图构建装置的状态机示意图如图4所示。地图构建装置开启后的初始状态为初始化41,场景检测模型确定模块301确定使用的场景检测模型,运行确定的场景检测模型,获取场景条件,若执行成功,则切换至开始42状态;若未能执行成功,则继续保持在初始化41状态继续尝试。
在开始42状态下,地图构建模型确定模块302确定地图构建模型,加载、启动确定的地图构建模型,开始构建地图。在启动成功的状态下,切换至运行43状态;若未能启动成功,则切换至结束45状态,退出地图构建。
在运行43状态下,除了由地图构建模型持续构建地图外,还检测场景条件的变化情况。在场景条件未变化的情况下,保持在运行43状态下;在场景条件发生变化的情况下,切换至切换44状态。另外,若完成地图构建,则切换至结束45状态,退出地图构建。
在切换44状态下,根据场景条件的变化情况判断是否执行场景检测模型、地图构建模型的切换。若确定需要进行模型切换,则执行切换,若切换成功,则返回运行43状态;若确定不需要切换,也返回运行43状态。若运行失败,则切换至结束45状态,退出地图构建。
在结束45状态下,退出地图构建。在一个实施例中,如果由运行43状态下切换至结束45状态,则提示地图构建完成;如果由其他状态下切换至结束45状态,则提示上一状态,还可以提示失败的原因方便系统维护。
这样的地图构建装置通过FSM(Finite-state machine,有限状态机)线程的设置能够将场景检测、地图构建模型的启动、停止与切换映射为有限状态机的动作,再结合先验信息,使装置的运行在多个状态之间切换,有效地实现对场景检测模型和地图构建模型的自动化调度。
在一个实施例中,如图3所示,地图构建装置还可以包括插件更新模块305,能够允许使用者通过添加、修改模型插件的方式更新存储在场景检测模型库中的场景检测模型,以及存储在地图构建模型库中的地图构建模型。
这样的地图构建装置能够以插件的方式更新场景检测模型、地图构建模型,从而方便系统随着技术和研究的发展更新,避免反复的平台搭建,提高更新的效率。
本公开的地图构建装置的实现架构的一个实施例的示意图如图5所示。传感器51可以包括深度相机、单目或双目相机、光照传感器、距离传感器等,能够获取探测信息。显示器52能够显示地图构建结果,方便使用者实时查看。场景检测模块库53中存储有多种场景检测模型,地图构建模型库54中存储有多种地图构建模型。
调度机制55能够根据先验信息描述文件提供的先验信息,通过场景检测模型和地图构建模型提供的接口,实现基于场景检测结果的多地图构建模型调度。在一个实施例中,调度机制55可以解析先验信息描述文件,获得场景识别模型的名称,以及场景类型与地图构建模型之间的调度关系,并将这些关系存储于配置Config类中;再根据场景识别模型的名称实例化场景识别模型,并通过Activate接口启动场景识别模型,执行场景检测功能,可以通过GetScene接口获取场景检测的结果;进而启动FSM,使其根据场景类型与地图构建模型之间的调度关系对地图构建模型执行实例化、启动与停止操作。
在一个实施例中,可以通过外部描述文件的方式提供先验信息,一方面使得描述文件易于修改与扩展,只需要修改描述文件即可完成先验信息的更新,而不需要去修改和重新编译装置的框架,提升了开发的灵活性;另一方面,描述文件易于理解与编写,利用描述文件可以非常清晰地展现当前正在使用的场景检测模型,以及根据场景检测结果该调度哪一个地图构建模型。
场景检测算法兼容机制56和地图构建算法兼容机制57能够实现不同场景检测算法与地图构建算法升级和复用。在一个实施例中,可以基于pluginlib的插件化策略实现不同场景检测算法与地图构建算法升级和复用。pluginlib包是ROS(Robot OperatingSystem,机器人操作系统)中的一个C++开发库,它提供了一系列的C++开发工具使得ROS程序可以动态地加载或者卸载软件插件。相同类型的软件插件的功能往往相似,但是达到目的的算法不一定相同,装载不同的软件插件可以使程序获得不同的性能表现。为了方便插件的开发和使用,pluginlib允许程序根据软件插件名称实现对软件插件地动态加载。这一过程是不需要对整个程序重新编译的,只需要单独对软件插件进行重新编译,所以通过设计配置文件和相关机制,可以实现只更改配置文件中的插件名达到使用不同算法的目的。
采用这样的地图构建装置的实现架构能够提供地图构建算法和场景检测算法的兼容机制,保证了场景检测模型和地图构建模型都能以软件插件的方式在架构中运行;为应对复杂场景,还具备在不同场景下调度不同地图构建模型的能力,根据场景检测模型所返回的检测结果对地图构建模型实现自动化地调度。
在一个实施例中,将SLAM算法和场景检测算法插件化形成地图构建模型和场景检测模型可以包括以下步骤:
(1)定义接口:定义的接口可以包括地图构建模型接口和场景检测模型接口。
(2)实现接口:包括封装SLAM算法,实现地图构建模型接口,以及封装场景检测算法,实现场景检测模型接口
(3)导出/注册插件:通过pluginlib包的特殊宏PLUGINLIB_EXPORT_CLASS导出插件;通过ROS包中的package.xml声明文件内的export标签注册插件。
除此之外,为了便于使用者查询、编辑或维护插件,还可以进行如下设置:
(1)插件描述文件设置:通过对应插件名称的XML(eXtensible Markup Language,可扩展标记语言)文件描述插件的主要信息。插件的主要信息包括插件所在库的信息、插件的名称、插件的类型等。插件的描述文件主要用于标识,便于使用者、维护者区分使用和后期维护。
(2)提供查询插件功能,使用者可以通过rospack命令查询可用的地图构建模型和场景检测模型。
(3)提供插件使用方式:通过调用地图构建模型接口和场景检测模型接口的ClassLoader类分别完成对地图构建模型和场景检测模型插件的接口调用。
这样的地图构建装置实现了不同的场景检测模型、地图构建模型的兼容及快速复用,且支持采用插件的方式对算法进行升级和扩展,极大地提升地图构建装置框架的灵活性和可扩展能力。
本公开地图构建装置的一个实施例的结构示意图如图6所示。地图构建装置包括存储器601和处理器602。其中:存储器601可以是磁盘、闪存或其它任何非易失性存储介质。存储器用于存储上文中地图构建方法的对应实施例中的指令。处理器602耦接至存储器601,可以作为一个或多个集成电路来实施,例如微处理器或微控制器。该处理器602用于执行存储器中存储的指令,能够实现模型的灵活调度,提高地图构建的灵活度和自适应程度。
在一个实施例中,还可以如图7所示,地图构建装置700包括存储器701和处理器702。处理器702通过BUS总线703耦合至存储器701。该地图构建装置700还可以通过存储接口704连接至外部存储装置705以便调用外部数据,还可以通过网络接口706连接至网络或者另外一台计算机系统(未标出)。此处不再进行详细介绍。
在该实施例中,通过存储器存储数据指令,再通过处理器处理上述指令,能够实现模型的灵活调度,提高地图构建的灵活度和自适应程度。
在另一个实施例中,一种计算机可读存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现地图构建方法对应实施例中的方法的步骤。本领域内的技术人员应明白,本公开的实施例可提供为方法、装置、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
至此,已经详细描述了本公开。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
可能以许多方式来实现本公开的方法以及装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法以及装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
最后应当说明的是:以上实施例仅用以说明本公开的技术方案而非对其限制;尽管参照较佳实施例对本公开进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本公开的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本公开技术方案的精神,其均应涵盖在本公开请求保护的技术方案范围当中。