基于WIFI和激光雷达的室内定位方法、定位装置和机器人
技术领域
本发明实施例涉及无人机定位技术领域,具体涉及一种基于WIFI 和激光雷达的室内定位方法、定位装置、无人驾驶机器人、服务器、终端设备和计算机可读存储介质。
背景技术
本部分向读者介绍可能与本发明的各个方面相关的背景技术,相信能够向读者提供有用的背景信息,从而有助于读者更好地理解本发明的各个方面。因此,可以理解,本部分的说明是用于上述目的,而并非构成对现有技术的承认。
随着机器人技术的快速发展,越来越多种类的移动机器人进入千家万户、企业和工厂等,机器人应用领域广泛,已经涉及娱乐、安防、教育、旅游等,但不管是何种场合,机器人要进行正常的工作都需要对周围环境有全面的认知、感知,因此对于移动机器人来说,需要构建出适用于其工作的环境地图。
在未知环境,如何构建地图,如何定位机器人位置,是重中之重,也称为同步定位于地图构建(Simultaneous Localization And Mapping,简称SLAM)。通常SLAM包括特征提取、数据关联、状态估计、状态更新以及特征更新等步骤。SLAM可以辅助机器人进行路径规划、自主探索、导航等任务,常用的SLAM方法有激光SLAM和视觉SLAM两种。
激光SLAM采用2D、3D的激光雷达,2D激光雷达一般用于室内机器人,如扫地机器人、服务机器人等,而3D激光雷达一般用于自动驾驶领域。激光雷达的出现和普及使得数据测量的更快更准确。激光雷达采集到的物体信息呈现出一系列分散的、具有准确角度和距离信息的点,被称为点云。通常激光SLAM是通过对比不同时刻两片点云的信息,进行匹配,从而得到激光雷达相对于运动的距离的和姿态的改变,也就是机器人自身的定位。
激光雷达因为其测距准确,误差模型简单,在强光直射外都能保持稳定的运行,点云的处理也相对比较简单,所以激光SLAM应用场景丰富,研究理论也丰富。
眼睛是人类感知外界信息的主要来源,视觉SLAM也是如此,它可以通过摄像头从环境中获取海量的图像信息,有超强的场景辨识能力,早期的视觉SLAM基于滤波理论,其非线性的误差模型和巨大的计算量成为了它实用落地的障碍。近年来,随着具有稀疏性的非线性优化理论(Bundle Adjustment)以及相机技术、计算性能的进步,实时运行的视觉SLAM已经不再是梦想。
视觉SLAM的优点是它所利用的丰富纹理信息。例如两块尺寸相同内容却不同的广告牌,基于点云的激光SLAM算法无法区别他们,而视觉则可以轻易分辨。这带来了重定位、场景分类上无可比拟的巨大优势。同时,视觉信息可以较为容易的被用来跟踪和预测场景中的动态目标,如行人、车辆等,对于在复杂动态场景中的应用这是至关重要的。通过对比我们发现,激光SLAM和视觉SLAM各擅胜场,单独使用都有其局限性,而融合使用则可能具有巨大的取长补短的潜力。例如,视觉在纹理丰富的动态环境中稳定工作,并能为激光SLAM提供非常准确的点云匹配,而激光雷达提供的精确方向和距离信息在正确匹配的点云上会发挥更大的威力。而在光照严重不足或纹理缺失的环境中,激光SLAM的定位工作使得视觉可以借助不多的信息进行场景记录。
近年来,SLAM导航技术已取得了很大的发展,它将赋予机器人和其他智能体前所未有的行动能力,而激光SLAM与视觉SLAM必将在相互竞争和融合中发展,使机器人从实验室和展厅中走出来,做到真正的服务于人类。
而在室内场景下,还有一种非常热门的无线定位方法,基于WIFI 的室内定位。GPS难以解决室内环境下的一些定位问题,大部分室内环境下都存在WIFI,因此利用WIFI进行定位无需额外部署硬件设备,是一个非常节省成本的方法。然而WIFI并不是专门为定位而设计的,传统的基于时间和角度的定位方法并不适用于WIFI。近十年来,在室内 WIFI场景下的定位中,位置指纹法被广泛研究和采用。
在现有的技术方案中提出一种基于WIFI的室内定位方法,其主要包括两个阶段,采集阶段:采集室内场所的点位指纹数据,对指纹数据进行预处理并录入指纹库;定位阶段:根据目标周围的WIFI热点数据,去指纹库进行匹配,根据相似度模型计算出目标点的位置信息。该算法有更高的定位精度,一般在3米以内;由于WIFI已经覆盖全国的绝大部分商场、购物中心,所以该技术可以被广泛应用。从专利的结果来看可以明显的发现这是定位人类位置的方法。
另外在机器人领域,现有技术提出的一种基于激光雷达的机器人自主定位方法,包括:以机器人初始位置为中心,随机产生N个粒子组成粒子群,机器人运行的当前时刻,根据机器人传感器测得的机器人实时移动距离和实时旋转角度,更新粒子群;对于每一个粒子,计算激光雷达点云与地图的障碍物的重合数量作为每一个粒子的得分,以每一个粒子的得分为权重计算粒子群的加权位姿均值,作为AMCL估计位姿;将AMCL估计位姿作为初始值,使用基于高斯牛顿迭代法的扫描匹配算法,得到扫描匹配位姿,作为机器人运行的当前时刻的最优位姿;使用AMCL算法重采样粒子群,最终得到机器人运行时全程最优位姿作为定位结果。
发明内容
要解决的技术问题是如何提供一种基于WIFI和激光雷达的室内定位方法、定位装置和机器人。
针对现有技术中的缺陷,本发明实施例提供一种基于WIFI和激光雷达的室内定位方法、定位装置、无人驾驶机器人、服务器、终端设备和计算机可读存储介质,可以有效提高无人机室内定位精度。
第一方面,本发明实施例提供了一种基于WIFI和激光雷达的室内定位方法,包括:
构建WIFI指纹库;
构建激光2D地图;
同时执行室内WIFI定位和激光AMCL定位;
根据AMCL定位结果有效性选择WIFI定位结果替换AMCL重新定位,直至输出定位结果。
可选地,所述构建WIFI指纹库的步骤包括:
将环境中每个参考位置的每个AP的多次WIFI扫描与其坐标记录在一起,构建WIFI指纹库。
可选地,所述构建激光2D地图包括:
通过激光雷达扫所所在环境,获取激光扫描点数据;
将激光扫描点的数据插入对应的子地图中;
基于子地图已有的激光扫描点及其它传感器数据估计在子地图中的最佳位置;
将子地图在一定误差允许范围内拼接成一个完整的地图。
可选地,所述激光AMCL定位包括:
以机器人初始位置为中心随机产生粒子组成粒子群;
根据机器人实施移动距离和实时旋转角度更新每个粒子对应的位资;
根据激光雷达扫描结果计算AMCL估计位姿;
将AMCL估计位姿作为初始值,计算机器人运行的当前时刻的最优位姿;
将扫描匹配位姿作为一个高得分粒子插入到粒子群,使用AMCL算法重采样粒子群;
重复上述步骤,直至得到机器人运行时全程最优位姿作为定位结果。
可选地,所述根据激光雷达扫描结果计算AMCL估计位姿包括:
将激光雷达扫描结果以每个粒子对应的位资映射到地图得到激光雷达点云;
计算激光雷达点云与地图的障碍物的重合数量作为每一个粒子的得分;
以每一个粒子的得分为权重计算粒子群的加权位姿均值作为AMCL 估计位姿。
可选地,所述计算机器人运行的当前时刻的最优位姿包括:
将AMCL估计位姿作为初始值,得到扫描匹配位姿,作为机器人运行的当前时刻的最优位姿。
可选地,所述室内WIFI定位包括:
将新扫描RSSI与指纹库中记录的数据进行比较匹配,从而对当前位置进行预测。
可选地,所述室内WIFI定位包括采用神经网络的算法来平滑噪声的影响。
可选地,所述根据AMCL定位结果有效性选择WIFI定位结果替换 AMCL重新定位,直至输出定位结果包括:
当AMCL的结果正常时,机器人的位置按AMCL的位置作为实际定位位置;
若扫描匹配得到的解与AMCL算法的解之间的误差小于误差限制阈值,则将解作为高权重粒子插入到粒子群;
若误差过大,表示可能求出了错误的解,则放弃本次扫描匹配的解。
可选地,所述根据AMCL定位结果有效性选择WIFI定位结果替换 AMCL重新定位还包括:
当误差的解数量超过一定次数,开始发布WIFI定位的位置作为当前机器人的位置,令AMCL重开始解算,从而找回当前位置的AMCL计算的位置。
第二方面,本发明实施例还提供一种基于WIFI和激光雷达的室内定位装置,包括:
指纹库构建单元,用于构建WIFI指纹库;
地图构件单元,用于构建激光2D地图;
定位单元,同时执行室内WIFI定位和激光AMCL定位;
定位结果匹配单元,用于根据AMCL定位结果有效性选择WIFI定位结果替换AMCL重新定位,直至输出定位结果。
可选地,所述指纹库构建单元用于将环境中每个参考位置的每个 AP的多次WIFI扫描与其坐标记录在一起,构建WIFI指纹库。
可选地,所述地图构件单元包括:
激光扫描模块,用于通过激光雷达扫所所在环境,获取激光扫描点数据;
数据对应模块,用于将激光扫描点的数据插入对应的子地图中;
位置估计模块,用于基于子地图已有的激光扫描点及其它传感器数据估计在子地图中的最佳位置;
地图拼接模块,用于将子地图在一定误差允许范围内拼接成一个完整的地图。
可选地,所述定位单元包括:
粒子群生成模块,以机器人初始位置为中心随机产生粒子组成粒子群;
位资更新模块,根据机器人实施移动距离和实时旋转角度更新每个粒子对应的位资;
位资估计模块,根据激光雷达扫描结果计算AMCL估计位姿;
最优位资计算模块,将AMCL估计位姿作为初始值,计算机器人运行的当前时刻的最优位姿;
粒子群采样模块,将扫描匹配位姿作为一个高得分粒子插入到粒子群,使用AMCL算法重采样粒子群。
可选地,位资估计模块包括:
位资映射模块,将激光雷达扫描结果以每个粒子对应的位资映射到地图得到激光雷达点云;
粒子得分计算模块,计算激光雷达点云与地图的障碍物的重合数量作为每一个粒子的得分;
位资加权模块,以每一个粒子的得分为权重计算粒子群的加权位姿均值作为AMCL估计位姿。
可选地,所述最优位资计算模块包括:
将AMCL估计位姿作为初始值,得到扫描匹配位姿,作为机器人运行的当前时刻的最优位姿。
可选地,所述定位单元包括:
将新扫描RSSI与指纹库中记录的数据进行比较匹配,从而对当前位置进行预测。
可选地,所述定位单元包括,采用神经网络的算法来平滑噪声的影响。
可选地,所述定位结果匹配单元包括:
当AMCL的结果正常时,机器人的位置按AMCL的位置作为实际定位位置;
若扫描匹配得到的解与AMCL算法的解之间的误差小于误差限制阈值,则将解作为高权重粒子插入到粒子群;
若误差过大,表示可能求出了错误的解,则放弃本次扫描匹配的解。
可选地,所述定位结果匹配单元还包括:
当误差的解数量超过一定次数,开始发布WIFI定位的位置作为当前机器人的位置,令AMCL重开始解算,从而找回当前位置的AMCL计算的位置。
第三方面,本发明实施例还提供一种无人驾驶机器人,包括上述的室内定位装置。
第四方面,本发明实施例还提供一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行上述方法的步骤。
第五方面,本发明实施例还提供一种终端设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述的室内定位方法对应的操作。
第六方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如上述方法的步骤。
由上述技术方案可知,本本说明书一个或多个实施例的提供的基于WIFI和激光雷达的室内定位方法、定位装置、无人驾驶机器人、服务器、终端设备、和计算机可读存储介质,通过添加WIFI室内定位的方法,当机器人运行在室内环境时,采用WIFI定位的结果替换陷入局部最优的激光定位的结果使得激光定位的结果发生改变从而在此基础上完成重定位,找回激光定位的准确位置,帮助机器人在失配的情况下找到自己的位置,更符合实际场景的应用需要。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一个实施例中基于WIFI和激光雷达的室内定位方法流程示意图;
图2为本发明一个实施例中基于WIFI和激光雷达的室内定位方法流程示意图;
图3为本发明一个实施例中构建激光2D地图流程示意图;
图4为本发明一个实施例中法执行激光定位流程示意图;
图5为本发明一个实施例中根据激光雷达扫描结果计算AMCL估计位姿流程示意图;
图6为本发明一个实施例中神经网络的平滑方法流程示意图;
图7为本发明一个实施例中基于WIFI和激光雷达的室内定位装置结构示意图;
图8为本发明一个实施例中地图构件单元结构示意图;
图9为本发明一个实施例中定位单元结构示意图;
图10为本发明一个实施例中位资估计模块结构示意图;
图11是运行本说明书实施例的设备的一种硬件结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本说明书的实施例可以运行在任何具有计算和存储能力的设备上,如手机、平板电脑、PC(Personal Computer,个人电脑)、笔记本、服务器等设备;还可以由运行在两个或两个以上设备的逻辑节点来实现本说明书实施例中的各项功能。
如图1所示,本发明实施例提供一种基于WIFI和激光雷达的室内定位方法,包括:构建WIFI指纹库;构建激光2D地图;同时执行室内WIFI定位和激光AMCL定位;根据AMCL定位结果有效性选择WIFI 定位结果替换AMCL重新定位,直至输出定位结果。如图2所示,在本发明实施例中,通过添加WIFI室内定位的方法,当机器人运行在室内环境时,采用WIFI定位的结果替换陷入局部最优的激光定位的结果使得激光定位的结果发生改变从而在此基础上完成重定位,找回激光定位的准确位置,帮助机器人在失配的情况下找到自己的位置,更符合实际场景的应用需要。
下面对被本发明实施例提供的基于WIFI和激光雷达的室内定位方法展开详细的说明。
首先,介绍构建WIFI指纹库;
WIFI指纹定位是一种基于学习环境中分布在多个参考点的WIFI 的RSSI(Received Signal Strength Indication接收的信号强度指示)地图的解决方案。主要的假设是所有可用接入点(APs)的学习 RSSIs的每个参考位置将是一个独特的特征,允许机器人仅通过扫描RSSIs来识别该位置,以便下一次访问。在本发明实施例中,构建指纹库的方法将环境中每个参考位置的每个AP(发射射频信号的接入点,AccessPoint)的多次WIFI扫描与其坐标记录在一起,构建WIFI 指纹库。在本发明中,构件WIFI指纹库可以采用现有有的成熟的方法实现,在此不再一一赘述。
其次,介绍构建激光2D地图;
在本发明实施例中,如图3所示,所述构建激光2D地图包括:通过激光雷达扫所所在环境,获取激光扫描点数据;将激光扫描点的数据插入对应的子地图中;基于子地图已有的激光扫描点及其它传感器数据估计在子地图中的最佳位置;将子地图在一定误差允许范围内拼接成一个完整的地图。例如,激光雷达2d地图的构建可采用Google(谷歌公司)的开源项目Cartographer(地图制图员)完成,Cartographer 主要理论是通过闭环检测来消除构图过程中产生的累积误差。用于闭环检测的基本单元是submap(子地图)。一个submap是由一定数量的 laser scan(激光扫描点)构成。将一个laser scan插入其对应的 submap时,会基于submap已有的laser scan及其它传感器数据估计其在该submap中的最佳位置。最终将submap在一定误差允许范围内拼接成一个完整的地图。在本发明中,构建激光2D地图可以采用现有有的成熟的方法实现,在此不再一一赘述。
再次,同时执行室内WIFI定位和激光AMCL定位;
(1)采用AMCL法执行激光定位
在本发明实施例中,如图4所示,所述激光AMCL定位包括:以机器人初始位置为中心随机产生粒子组成粒子群;根据机器人实施移动距离和实时旋转角度更新每个粒子对应的位资;根据激光雷达扫描结果计算AMCL估计位姿;将AMCL估计位姿作为初始值,计算机器人运行的当前时刻的最优位姿;将扫描匹配位姿作为一个高得分粒子插入到粒子群,使用AMCL算法重采样粒子群;重复上述步骤,直至得到机器人运行时全程最优位姿作为定位结果。
在本发明实施例中,例如采用AMCL法执行激光定位是以机器人初始位置为中心,使用高斯分布随机产生N个粒子组成粒子群,每个粒子代表机器人的位姿,粒子群表示机器人位姿的概率分布;机器人运行的当前时刻,根据机器人传感器测得的机器人实时移动距离和实时旋转角度,更新粒子群中的每一个粒子对应的位姿;,所述根据激光雷达扫描结果计算AMCL估计位姿;所述计算机器人运行的当前时刻的最优位姿;将扫描匹配位姿作为一个高得分粒子插入到粒子群,使用AMCL 算法重采样粒子群,在机器人运行的下一时刻重新更新粒子群中的每一个粒子对应的位姿;一直重复上述步奏,如此反复,最终得到机器人运行时全程最优位姿作为定位结果。
在本发明实施例中,如图5所示,所述根据激光雷达扫描结果计算AMCL估计位姿包括:将激光雷达扫描结果以每个粒子对应的位资映射到地图得到激光雷达点云;计算激光雷达点云与地图的障碍物的重合数量作为每一个粒子的得分;以每一个粒子的得分为权重计算粒子群的加权位姿均值作为AMCL估计位姿。例如,对得到的每一个粒子,将激光雷达的扫描结果以每一个粒子对应的位姿映射到地图得到激光雷达点云,计算激光雷达点云与地图的障碍物的重合数量作为每一个粒子的得分,以每一个粒子的得分为权重计算粒子群的加权位姿均值,作为AMCL估计位姿。
在本发明实施例中,所述计算机器人运行的当前时刻的最优位姿包括:将AMCL估计位姿作为初始值,得到扫描匹配位姿,作为机器人运行的当前时刻的最优位姿。例如,所述计算机器人运行的当前时刻的最优位姿将AMCL估计位姿作为初始值,使用基于高斯牛顿迭代法的扫描匹配算法,得到扫描匹配位姿,作为机器人运行的当前时刻的最优位姿。
(2)执行室内WIFI定位:
将新扫描RSSI与指纹库中记录的数据进行比较匹配,从而对当前位置进行预测。现有的室内WiFi定位方法,由于干扰和多路径传播问题,往往存在噪声。由于RSSI噪声大,为了避免这种问题,本发明实施例中利用基于集成Bagging(Bootstrap聚类)神经网络的算法来平滑噪声的影响。基于集成Bagging(Bootstrap聚类)神经网络的平滑算法。
集成Bagging(Bootstrap聚类)神经网络是一个通过组合多个模型来减少泛化误差的方法。其原理是单独训练数个不同的模型,然后让多个模型在测试集的输出上投票,这是一个在机器学习中普遍应用的被称作model averaging(模型平均)的策略。
如图6所示,在原始数据集上通过放回抽样的方法构造k个与原始数据集大小相同的新数据集去训练k个分类器,然后将k个分类器通过一定的组合策略聚合成一个强学习器。即在指纹库中通过放回抽样的方法构造k个和指纹库数据大小相同的采样集,然后让这k个不同的采样集分别去训练k个分类器。
在预测时,将新的新扫描到RSSI输入到k个分类器中,让所有分类器都进行分类,最后对k个分类器的k个输出的分类结果进行平均,得到最终的输出位置信息。并且,假如我们有一个包含k个回归器的集合,每个模型在一个样本上的误差为ε
i该误差服从零均值方差为
且协方差E(ε
iε
j)的多变量正态分布。那么通过Bagging (Bootstrap聚类)神经网络的平滑算法得到的平均预测误差是
那么平方误差的期望是
在各个模型误差不相关时,该方法的平方误差期望仅仅为
这意味着集成平方误差的期望与集成规模k的倒数成正比。换言之,集成平均至少与它的任何成员表现得一样好。本发明实施例利用基于集成 Bagging(Bootstrap聚类)神经网络的算法来平滑噪声的影响,首先利用30个APs进行仿真得到指纹库,然后通过从指纹库放回采样的方法构造8个和指纹库数据量相同的采样集,再将8个采样集分别去训练8 个分类器,8个分类器均采用KNN(K最近邻)的分类方法,在预测阶段,当输入一个新的RSSI值,让其通过这8个分类器,然后计算8个分类器的结果的平均值,得到最终输出结果。测试得到的平均误差2.25m,比现有的方法的3.0m误差结果更佳。
最后,根据AMCL定位结果有效性选择WIFI定位结果替换AMCL重新定位,直至输出定位结果。
如图2所示,在本发明实施例中,所述根据AMCL定位结果有效性选择WIFI定位结果替换AMCL重新定位,直至输出定位结果包括:当 AMCL的结果正常时,机器人的位置按AMCL的位置作为实际定位位置;若扫描匹配得到的解与AMCL算法的解之间的误差小于误差限制阈值,则将解作为高权重粒子插入到粒子群;若误差过大,表示可能求出了错误的解,则放弃本次扫描匹配的解。
由于激光定位的结果远远比WIFI定位的结果准确,当AMCL的结果正常时,机器人的位置按AMCL的位置作为实际定位位置。若扫描匹配得到的解与AMCL算法的解之间的误差小于误差限制阈值,则将解作为高权重粒子插入到粒子群;若误差过大,表示可能求出了错误的解,则放弃本次扫描匹配的解。当误差的解数量超过一定次数,开始发布 WIFI定位的位置作为当前机器人的位置,令AMCL重开始解算,从而找回当前位置的AMCL计算的位置。
为进一步体现本发明提供的一种基于WIFI和激光雷达的室内定位方法的优越性,如图7所示,本发明还提供一种应用上述基于WIFI和激光雷达的室内定位方法的室内定位装置,该装置包括:指纹库构建单元,用于构建WIFI指纹库;地图构件单元,用于构建激光2D地图;定位单元,同时执行室内WIFI定位和激光AMCL定位;定位结果匹配单元,用于根据AMCL定位结果有效性选择WIFI定位结果替换 AMCL重新定位,直至输出定位结果。下面对本发明提供的基于WIFI 和激光雷达的室内定位装置展开详细的说明。
本发明提供的室内定位装置与上述室内定位方法采用了相同的发明构思,能够取得相同的有益效果,具体方法和步骤可以参照上述方法,该装置通过添加WIFI室内定位的方法,当机器人运行在室内环境时,采用WIFI定位的结果替换陷入局部最优的激光定位的结果使得激光定位的结果发生改变从而在此基础上完成重定位,找回激光定位的准确位置,帮助机器人在失配的情况下找到自己的位置,更符合实际场景的应用需要。
为了便于理解本申请的方案,所述指纹库构建单元用于将环境中每个参考位置的每个AP的多次WIFI扫描与其坐标记录在一起,构建 WIFI指纹库。WIFI指纹定位是一种基于学习环境中分布在多个参考点的WIFI的RSSI(Received Signal Strength Indication接收的信号强度指示)地图的解决方案。主要的假设是所有可用接入点(APs)的学习RSSIs的每个参考位置将是一个独特的特征,允许机器人仅通过扫描RSSIs来识别该位置,以便下一次访问。在本发明实施例中,构建指纹库的方法将环境中每个参考位置的每个AP(发射射频信号的接入点,AccessPoint)的多次WIFI扫描与其坐标记录在一起,构建WIFI 指纹库。
为了便于理解本申请的方案,可以参见图8,所述地图构件单元包括:激光扫描模块,用于通过激光雷达扫所所在环境,获取激光扫描点数据;数据对应模块,用于将激光扫描点的数据插入对应的子地图中;位置估计模块,用于基于子地图已有的激光扫描点及其它传感器数据估计在子地图中的最佳位置;地图拼接模块,用于将子地图在一定误差允许范围内拼接成一个完整的地图。例如,激光雷达2d地图的构建可采用Google(谷歌公司)的开源项目Cartographer(地图制图员) 完成,Cartographer主要理论是通过闭环检测来消除构图过程中产生的累积误差。用于闭环检测的基本单元是submap(子地图)。一个 submap是由一定数量的laser scan(激光扫描点)构成。将一个laser scan插入其对应的submap时,会基于submap已有的laser scan及其它传感器数据估计其在该submap中的最佳位置。最终将submap在一定误差允许范围内拼接成一个完整的地图。在本发明中,构建激光2D 地图可以采用现有有的成熟的方法实现,在此不再一一赘述。
为了便于理解本申请的方案,可以参见图9,所述定位单元包括:粒子群生成模块,以机器人初始位置为中心随机产生粒子组成粒子群;位资更新模块,根据机器人实施移动距离和实时旋转角度更新每个粒子对应的位资;位资估计模块,根据激光雷达扫描结果计算AMCL估计位姿;最优位资计算模块,将AMCL估计位姿作为初始值,计算机器人运行的当前时刻的最优位姿;粒子群采样模块,将扫描匹配位姿作为一个高得分粒子插入到粒子群,使用AMCL算法重采样粒子群。在本发明实施例中,例如采用AMCL法执行激光定位是以机器人初始位置为中心,使用高斯分布随机产生N个粒子组成粒子群,每个粒子代表机器人的位姿,粒子群表示机器人位姿的概率分布;机器人运行的当前时刻,根据机器人传感器测得的机器人实时移动距离和实时旋转角度,更新粒子群中的每一个粒子对应的位姿;,所述根据激光雷达扫描结果计算AMCL估计位姿;所述计算机器人运行的当前时刻的最优位姿;将扫描匹配位姿作为一个高得分粒子插入到粒子群,使用AMCL算法重采样粒子群,在机器人运行的下一时刻重新更新粒子群中的每一个粒子对应的位姿;一直重复上述步奏,如此反复,最终得到机器人运行时全程最优位姿作为定位结果。
进一步地,如图9所示,所述位资估计模块包括:位资映射模块,将激光雷达扫描结果以每个粒子对应的位资映射到地图得到激光雷达点云;粒子得分计算模块,计算激光雷达点云与地图的障碍物的重合数量作为每一个粒子的得分;位资加权模块,以每一个粒子的得分为权重计算粒子群的加权位姿均值作为AMCL估计位姿。例如,对得到的每一个粒子,将激光雷达的扫描结果以每一个粒子对应的位姿映射到地图得到激光雷达点云,计算激光雷达点云与地图的障碍物的重合数量作为每一个粒子的得分,以每一个粒子的得分为权重计算粒子群的加权位姿均值,作为AMCL估计位姿。
所述最优位资计算模块包括:将AMCL估计位姿作为初始值,得到扫描匹配位姿,作为机器人运行的当前时刻的最优位姿。例如,所述计算机器人运行的当前时刻的最优位姿将AMCL估计位姿作为初始值,使用基于高斯牛顿迭代法的扫描匹配算法,得到扫描匹配位姿,作为机器人运行的当前时刻的最优位姿。
进一步地,所述定位单元包括:将新扫描RSSI与指纹库中记录的数据进行比较匹配,从而对当前位置进行预测。
将新扫描RSSI与指纹库中记录的数据进行比较匹配,从而对当前位置进行预测。现有的室内WiFi定位方法,由于干扰和多路径传播问题,往往存在噪声。由于RSSI噪声大,为了避免这种问题,本发明实施例中利用基于集成Bagging(Bootstrap聚类)神经网络的算法来平滑噪声的影响。基于集成Bagging(Bootstrap聚类)神经网络的平滑算法。
集成Bagging(Bootstrap聚类)神经网络是一个通过组合多个模型来减少泛化误差的方法。其原理是单独训练数个不同的模型,然后让多个模型在测试集的输出上投票,这是一个在机器学习中普遍应用的被称作model averaging(模型平均)的策略。
如图6所示,在原始数据集上通过放回抽样的方法构造k个与原始数据集大小相同的新数据集去训练k个分类器,然后将k个分类器通过一定的组合策略聚合成一个强学习器。即在指纹库中通过放回抽样的方法构造k个和指纹库数据大小相同的采样集,然后让这k个不同的采样集分别去训练k个分类器。
在预测时,将新的新扫描到RSSI输入到k个分类器中,让所有分类器都进行分类,最后对k个分类器的k个输出的分类结果进行平均,得到最终的输出位置信息。
并且,假如我们有一个包含k个回归器的集合,每个模型在一个样本上的误差为ε
i该误差服从零均值方差为
且协方差E(ε
iε
j) 的多变量正态分布。那么通过Bagging(Bootstrap聚类)神经网络的平滑算法得到的平均预测误差是
那么平方误差的期望是
在各个模型误差不相关时,该方法的平方误差期望仅仅为
这意味着集成平方误差的期望与集成规模k的倒数成正比。换言之,集成平均至少与它的任何成员表现得一样好。
进一步地,所述定位结果匹配单元包括:当AMCL的结果正常时,机器人的位置按AMCL的位置作为实际定位位置;若扫描匹配得到的解与AMCL算法的解之间的误差小于误差限制阈值,则将解作为高权重粒子插入到粒子群;若误差过大,表示可能求出了错误的解,则放弃本次扫描匹配的解。所述定位结果匹配单元还包括:当误差的解数量超过一定次数,开始发布WIFI定位的位置作为当前机器人的位置,令 AMCL重开始解算,从而找回当前位置的AMCL计算的位置。在本发明实施例中,所述根据AMCL定位结果有效性选择WIFI定位结果替换AMCL 重新定位,直至输出定位结果包括:当AMCL的结果正常时,机器人的位置按AMCL的位置作为实际定位位置;若扫描匹配得到的解与AMCL 算法的解之间的误差小于误差限制阈值,则将解作为高权重粒子插入到粒子群;若误差过大,表示可能求出了错误的解,则放弃本次扫描匹配的解。
由于激光定位的结果远远比WIFI定位的结果准确,当AMCL的结果正常时,机器人的位置按AMCL的位置作为实际定位位置。若扫描匹配得到的解与AMCL算法的解之间的误差小于误差限制阈值,则将解作为高权重粒子插入到粒子群;若误差过大,表示可能求出了错误的解,则放弃本次扫描匹配的解。当误差的解数量超过一定次数,开始发布 WIFI定位的位置作为当前机器人的位置,令AMCL重开始解算,从而找回当前位置的AMCL计算的位置。
为进一步体现本发明提供的一种基于WIFI和激光雷达的室内定位装置的优越性,本发明还提供一种应用上述基于WIFI和激光雷达的室内定位装置的无人驾驶机器人,该机器人包括上述的室内定位装置。
为进一步体现本发明提供的基于WIFI和激光雷达的室内定位方法的优越性,本发明还提供一种应用上述基于WIFI和激光雷达的室内定位方法的服务器,该服务器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。
本发明实施例还提供一种终端设备,包括:一个或多个处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述的室内定位方法对应的操作指令(程序)1080。需要说明的是,尽管上述设备仅示出了处理器、存储器以及总线,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。在本发明实施例中,操作的指令可以参照上述基于WIFI和激光雷达的室内定位方法的流程执行,在此不再赘述。
本说明书一种终端设备的实施例可以应用在计算机设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在计算机设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图11所示,为本说明书一种终端设备所在计算机设备的一种硬件结构图,除了图11所示的处理器 (processor)1010、非易失性存储器(memory)1020、内存1060、通信接口(Communications Interface)1040、以及输入/输出接口1030之外,实施例中终端设备所在的计算机设备通常根据该设备的实际功能,还可以包括用于实现网络通信功能的板卡等其他硬件1090对此不再赘述。其中处理器1010、存储器1020、输入/输出接口1030和通信接口 1040通过总线1050实现彼此之间在设备内部的通信连接。处理器1010 负责管理总线1050和通常的处理,而存储器1020可以被用于存储处理器1020在执行操作时所使用的数据。还包括及存储在存储器1020 上并可在处理器1010上运行的计算机程序,所述处理器1010执行所述程序时实现前文所述基于WIFI和激光雷达的室内定位方法的任一方法的步骤。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者是被配置成实施本发明实施例的一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。终端设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等) 实现通信。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。总线可以包括任意数量的互联的总线和桥,总线1050将包括由处理器 1010代表的一个或多个处理器和存储器1020代表的存储器的各种电路链接在一起。总线1050表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构 (MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。处理器负责管理总线和通常的处理,而存储器可以被用于存储处理器在执行操作时所使用的数据。
存储器1020用于存放程序1080,存储器可以包括ROM(Read Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、静态存储设备,动态存储设备等计算机系统可读存储介质形式实现。也可能还包括非易失性存储器(non-volatile memory)等计算机系统可读存储介质形式实现,例如随机存取存储器(RAM)和/或高速缓存存储器。终端可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统可以用于读写不可移动的、非易失性磁存储介质(图中未显示,通常称为“硬盘驱动器”)。尽管图中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如 CD-ROM,DVD-ROM或者其它光存储介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据存储介质接口与总线相连。存储器可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。具有一组(至少一个)程序模块的程序/实用工具,可以存储在例如存储器中,这样的程序模块包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块通常执行本发明所描述的实施例中的功能和/或方法。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
内存1060可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存 (flashRAM)。内存是计算机可读介质的示例。
本发明实施例提供的终端设备也可以与一个或多个外部终端(例如键盘、指向终端、显示器等)通信,还可与一个或者多个使得用户能与该终端交互的终端通信,和/或与使得该终端能与一个或多个其它计算终端进行通信的任何终端(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口进行。并且,终端还可以通过网络适配器与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图11所示,网络适配器通过总线与终端的其它模块通信。应当明白,尽管图中未示出,可以结合终端使用其它硬件和/或软件模块,包括但不限于:微代码、终端驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
具体地,程序1080可以包括程序代码,该程序代码包括计算机操作指令。程序1080具体可以用于使得处理器1010执行以下操作:构建WIFI指纹库;构建激光2D地图;同时执行室内WIFI定位和激光AMCL 定位;根据AMCL定位结果有效性选择WIFI定位结果替换AMCL重新定位,直至输出定位结果。
处理器通过运行存储在系统存储器中的多个程序中其他程序的至少一个,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的基于WIFI和激光雷达的室内定位方法。需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本发明实施例还提供一种计算机程序,具体地,程序可以包括程序代码,该程序代码包括计算机操作指令。程序具体可以用于使得处理器执行以下操作:构建WIFI指纹库;构建激光2D地图;同时执行室内WIFI定位和激光AMCL定位;根据AMCL定位结果有效性选择WIFI 定位结果替换AMCL重新定位,直至输出定位结果。在本发明中,计算机程序可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或终端上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本说明书的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如上述基于WIFI 和激光雷达的室内定位方法的步骤。基于WIFI和激光雷达的室内定位方法的各个步骤的详细描述请参见之前的内容,不再重复。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitorymedia),如调制的数据信号和载波。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的存储介质的任意组合。计算机可读存储介质可以是计算机可读信号存储介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器 (CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明实施例中,计算机可读存储介质可以是任何包含或存储程序的有形存储介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号存储介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读存储介质上包含的程序代码可以用任何适当的存储介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
综上所述,本发明实施例提供的基于WIFI和激光雷达的室内定位方法、定位装置、无人驾驶机器人、服务器、终端设备和计算机可读存储介质,本发明实施例通过添加WIFI室内定位的方法,当机器人运行在室内环境时,采用WIFI定位的结果替换陷入局部最优的激光定位的结果使得激光定位的结果发生改变从而在此基础上完成重定位,找回激光定位的准确位置,帮助机器人在失配的情况下找到自己的位置,更符合实际场景的应用需要。在本发明实施例中利用基于集成Bagging (Bootstrap聚类)神经网络的算法来平滑噪声的影响,利用30个APs 进行仿真测试得到计算得到的平均误差2.25m,比现有方法误差结果更佳。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存 (flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitorymedia),如调制的数据信号和载波。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD 上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language, HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、 Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language) 等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器或处理器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone LabsC8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书一个或多个实施例时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机、也可装载到计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令执行一系列操作步骤以产生计算机实现的处理,产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同/相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例、装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等任何修改、等同替换、改进等;而这些任何修改、等同替换、改进等,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。