本发明属于移动机器人室内导航技术领域,涉及一种基于语义信息的移动机器人室内导航方法。
背景技术:
随着世界各国存在日益严重的老龄化社会问题,对机器人的研究不再局限于工业机器人。服务机器人研究也正成为日益备受关注的研究热点。服务机器人顾名思义,就是为人类服务的机器人,其工作方式是,半自主或者全自主,具备很高的智能性。服务机器人与工业机器人的一个重要差别在于工业机器人的工作环境都是己知的。工业机器人只需要无思维的完成重复简单的行为即可,而服务机器人所面临的工作环境绝大多数都是未知的,要想自主完成复杂的任务必须构建对于环境的认识即地图。
有了环境地图,机器人就能够实现路径规划,避障,目标识别等任务。因此建立环境地图是机器人在未知环境中长时间稳定工作的前提和保证。然而服务机器人是服务于人,所以只有建立和人类认知方式相似的语义地图才能使机器人友善的与用户交互,高效的完成各种服务用户的任务。人机交互应用在机器人制图和导航领域现今是一个研究热点,自然,简洁,友善的人机接口是服务机器人能否被大众所广泛接受的关键性因素。在安全检查,老人看护,展览馆导航,房屋清洁,搜寻救援等方面,构建含有语义的环境地图以及和用户自然的交流能够有效改善机器人的服务质量。
针对以上所述的各种问题,基于语义信息的移动机器人导航技术的研究与实现,就成为了一种新的需求。只有机器人能够理解人类自然语言的交互,才真正能够体现机器人的智能性,才能更好地将机器人应用到我们的生活中。所以,基于语义信息的移动机器人导航技术的研究,具有重要的理论意义和实际应用价值。
技术实现要素:
本发明旨在解决以上现有技术的问题。提出了一种提升人机交互的效率,改善机器人的服务质量的基于语义信息的移动机器人室内导航方法。本发明的技术方案如下:
一种基于语义信息的移动机器人室内导航方法,其包括以下步骤:
1)、通过kinect传感器对室内环境进行三维重绘,采用基于图优化的视觉slam算法,通过构建数据帧、筛选出关键帧序列、执行帧间配准、图优化步骤、点云融合优化步骤,生成三维先验地图,然后对该三维先验地图进行语义信息标注,实现栅格层-拓扑层-语义层分层语义地图的构建;
2)、基于步骤1)构建的分层语义地图,在分层语义地图中采用自上而下的导航方式设计一种路径规划算法,首先由语义层和拓扑层根据任务目标生成目标地点序列,基于目标地点序列,在栅格层采用a*平滑路径算法,实现基于语义信息的移动机器人室内导航。
进一步的,所述构建数据帧包括:对室内环境进行三维重绘时,首先会从kinect传感器获得rgb图像和深度图像,将rgb图像和深度图像进行融合封装构造数据帧frame。
进一步的,所述帧间配准的步骤为:
(1)提取关键帧的特征点:(2)提取描述子:(3)匹配:(4)去外点:(5)位姿求解步骤。
进一步的,所述提取特征点采用opencv提供的通用接口cv::featuredetector,这里将其设定为orb(orientedfastandrotatedbrief)特征;所述提取描述子:对于检测出的角点,通过cv::featuredetectorextractor接口设置特征描述子提取器;所述匹配采用快速最近邻算法flann描述子来判断角点在两张图像中的对应关系;所述去外点利用ransac算法去除错误匹配的外点,保留正确的内点;所述位姿求解调用opencv的pnpsolver()函数,求解相机的位姿运动(r,t)。
进一步的,所述图优化的步骤包括:在相机观测约束下,构建相机观测约束下的位姿优化、局部闭环约束下的位姿优化、全局闭环约束下的位姿优化,求得优化后的相机的位姿变化(r,t)。
进一步的,所述将图优化包括;
以kinect作为主要的传感器输入,通过对视觉信号的处理,构建视觉里程计,用于位姿估计,所以这里只考虑状态变量和观测方程,构建出目标函数:
e(xk,yj,zk,j)=zk,j-g(xk,yj)(1)
式中:x*表示优化后的位姿状态变量,e(x)表示误差函数的二次型,xk表示第k时刻的机器人位姿,也称为图优化的一个pose节点,yj表示第k时刻机器人所能观测到的路标,也称为图优化的一个point节点,zk,j表示pose节点与point节点的约束,在闭环检测优化过程中,zk,j代表pose节点与pose节点的约束,e(xk,yj,zkj)为由两顶点组成的边所产生的向量误差函数,代表两顶点满足约束条件zk,j的程度,当它的值为0时,表示两顶点完全满足匹配约束。
进一步的,所述图优化后还包括进行闭环检测的步骤,具体包括:通过动态计算闭环帧筛选阈值,得到匹配质量较高的闭环帧候选序列,闭环检测结束后,遍历闭环帧候选序列,在当前帧与闭环候选帧之间,进行相似变换矩阵求解与优化,当某一候选帧通过了相似变换矩阵求解与优化,则认为闭环检测成功,跳出对闭环帧候选序列的遍历,求得对应相似变换矩阵。
进一步的,所述对三维地图的语义标注具体包括:由二维图片进行语义目标识别,获取语义信息,在三维全局地图生成的同时,进行语义标注,进而通过人工检验标定,完成精确的语义标定,其中,所用的目标识别算法是基于特征点检测的bag-of-words模型,并将bag-of-words模型应用于图像表示,为了表示一幅图像,可以将图像看作文档,即若干个“视觉词汇”的集合,把每幅图像描述为一个局部区域/关键点特征的无序集合,使用k-means聚类算法将局部特征进行聚类,每个聚类中心被看作是词典中的一个视觉词汇,视觉词汇由聚类中心对应特征形成的码字来表示,所有视觉词汇形成一个视觉词典,对应一个码书,即码字的集合,词典中所含词的个数反映了词典的大小,图像中的每个特征都将被映射到视觉词典的某个词上,这种映射可以通过计算特征间的距离去实现,然后统计每个视觉词的出现与否或次数,图像可描述为一个维数相同的直方图向量,进而利用此算法对环境进行语义识别,完成语义标注。
进一步的,所述基于分层语义地图的路径规划算法具体包括:在分层语义地图中采用自上而下的导航方式,首先在语义层和拓扑层根据任务目标,将输入系统的声音/动作/文本,经过对应的计算,都先转化为文本信息;针对文本信息做关键字提取,进而通过语义目标分解处理,生成目标地点序列;基于目标地点序列,在栅格层采用a*平滑路径算法,实现移动机器人室内导航。
进一步的,所述a*平滑路径算法的步骤为:
step1设置两个表:open表和closed表,a*路径规划算法将考察后代价最小的节点存储在closed表,剩下的生成的未考察点存储在open表;对机器人起始点ss,目标点te进行初始化,将起始点ss坐标送入open表中,并计算起始点的估价函数值f(ss);
step2对open表进行判断,如果该表为空,那么路径规划失败;若表中有节点存在,查找当中f值最小的节点作为当前节点(记为n),并将其移入closed表中;
step3对当前节点n进行判断,若其为目标节点,路径规划成功,退出规划,否则转step4;
step4判断节点n是否可扩展,如果不可扩展,路径规划失败;如果可扩展,则按照优先子节点生成策略生成n的相邻子节点:
step5保存路径离散点的集合{p1,p2,…,pn-1,pn},遍历{p1,p2,…,pn-1,pn},当某一节点前后节点连线上无障碍物时,将该节点删除,得到新的路径节点集合{p1',p2',…,p′q-1,p′q},q≤n。
本发明的优点及有益效果如下:
本发明提出的基于语义信息的移动机器人室内导航方法与其他室内导航算法的不同之处在于本方法利用kinect摄像头对环境进行三维重绘,进行语义标注,构建分层语义地图,由于采用了基于图优化的视觉slam方法为机器人位姿和三维点云进行优化,因此实现了实时性好、精确度高的稠密化三维环境重绘;同时基于分层语义地图设计了设计了一种路径规划算法,以自上而下的导航方式,实现移动机器人的室内导航,由于在语义层和拓扑层进行了语义目标分解,因此降低了栅格层路径规划的复杂性和规模,提升了算法的效率。采用本方法的移动机器人室内导航,能够实现移动机器人在室内环境下的导航能力,并且明显提升了人机交互的效率,有效地改善机器人的服务质量,实现了人机共融的目标。
附图说明
图1是本发明提供优选实施例系统总框架示意图;
图2为语义地图的构建示意图;
图3为基于分层语义地图的导航示意图;
图4为图的建立与优化示意图;
图5为位姿优化求解流程。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。
本发明解决上述技术问题的技术方案是:
本发明提供了基于语义信息的移动机器人室内导航方法,其系统框架如图1所示。在本系统中,设计了一种分层语义地图的构建方法,如图2所示。并基于分层语义地图设计了一种路径规划算法实现移动机器人的室内导航,如图3所示。在三维先验地图的生成中,图的建立与优化示意图,如图4所示。基于位姿约束条件,位姿优化的求解流程,如图5所示。
分层语义地图的构建方法包括以下步骤:
step1封装构造数据帧frame,根据帧间的关联程度,筛选出关键帧序列。
step2执行帧间配准。完成相机位姿初始估计。帧间配准的步骤为:
(1)提取特征点:opencv提供了通用接口cv::featuredetector,这里将其设定为orb特征。
(2)提取描述子:对于检测出的角点,用一些数学上的特征对其进行描述,这里通过cv::featuredetectorextractor接口设置特征描述子提取器。
(3)匹配:通过各个角点的描述子来判断它们在两张图像中的对应关系。这里采用的方法为快速最近邻算法flann。
(4)去外点:利用ransac算法去除错误匹配的外点,保留正确的内点。
(5)位姿求解:调用opencv的pnpsolver()函数,求解相机的位姿运动(r,t)。
step3在相机观测约束下,直接构建如图4(a)、4(b)、4(c)所示的图优化。求得优化后的相机的位姿变化(r,t),将原始点云进行坐标系变换,实现点云的拼接融合。本方法主要以kinect作为主要的传感器输入,通过对视觉信号的处理,构建视觉里程计,用于位姿估计。所以这里只考虑状态变量和观测方程,构建出目标函数:
e(xk,yj,zk,j)=zk,j-g(xk,yj)(4)
式中:xk表示第k时刻的机器人位姿,也称为图优化的一个pose节点。yj表示第k时刻机器人所能观测到的路标,也称为图优化的一个point节点。zk,j表示pose节点与point节点的约束。特别地,在闭环检测优化过程中,zk,j代表pose节点与pose节点的约束。e(xk,yj,zkj)为由两顶点组成的边所产生的向量误差函数,代表两顶点满足约束条件zk,j的程度,当它的值为0时,表示两顶点完全满足匹配约束。
在假设噪声是高斯分布之后,将整个slam问题等效为一个最小二乘问题。进一步,利用李代数的扰动模型,求得目标函数关于pose和point的导数jx和jy,可对此最小二乘问题求解。以此建立最终的求解方程:
e(x+δx,y+δy)≈e(x,y)+jxδx+jyδy(7)
hδx=-b(10)
式中:jx代表相机微小运动后,像素的变化。jy代表空间点微小运动后,像素的变化。公式(7)代表了考虑所有的变量与边的fullslam问题的求解。结合slam问题的稀疏性,选用合适的梯度下降方法,用求得的δx用于状态变量x的更新,通过多次迭代,最终求得满足目标方程的状态变量x的收敛值。可借助通用图优化工具g2o来解决上述非线性最小二乘问题,求解过程如图5所示。
step4执行闭环检测。通过动态计算闭环帧筛选阈值,得到匹配质量较高的闭环帧候选序列。闭环检测结束后,遍历闭环帧候选序列,在当前帧与闭环候选帧之间,进行sim3(相似变换矩阵)求解与优化。当某一候选帧通过了sim3求解与优化,则认为闭环检测成功,跳出对闭环帧候选序列的遍历。求得对应相似变换矩阵为:
step5位姿优化的传播。当前帧坐标系与世界坐标系之间的变换在在步骤5中已经确定并优化。通过一级相连关系的传播,可以确定这些相连的关键帧坐标系与世界坐标系之间的相似变换矩阵。
step6优化点云,生成环境细节清晰可辨的三维先验地图。利用步骤6中的相似变换矩阵,将原始点云的世界坐标系转换到当前闭环帧处的坐标系,进行点云的拼接融合,实现点云的优化。
step7通过语义标注,生成分层语义地图的拓扑层和语义层。这里设计了一种语义标注的方法:由二维图片进行语义目标识别,获取语义信息,在三维全局地图生成的同时,进行语义标注。进而通过人工检验标定,完成精确的语义标定。其中,所用的目标识别算法是基于特征点检测的bag-of-words模型,并将bag-of-words模型应用于图像表示。为了表示一幅图像,可以将图像看作文档,即若干个“视觉词汇”的集合,把每幅图像描述为一个局部区域/关键点(patches/keypoints)特征的无序集合。使用k-means聚类算法将局部特征进行聚类,每个聚类中心被看作是词典中的一个视觉词汇(visualword),相当于文本检索中的词,视觉词汇由聚类中心对应特征形成的码字(codeword)来表示(可看当为一种特征量化过程)。所有视觉词汇形成一个视觉词典(visualvocabulary),对应一个码书(codebook),即码字的集合,词典中所含词的个数反映了词典的大小。图像中的每个特征都将被映射到视觉词典的某个词上,这种映射可以通过计算特征间的距离去实现,然后统计每个视觉词的出现与否或次数,图像可描述为一个维数相同的直方图向量,进而利用此算法对环境进行语义识别,完成语义标注。
进一步,基于分层语义地图设计了一种路径规划算法,实现移动机器人的室内导航,,其特征在于,所述的基于分层语义地图设计的路径规划算法具体包括:在分层语义地图中采用自上而下的导航方式。如图3所示,首先在语义层和拓扑层根据任务目标,将输入系统的声音/动作/文本,经过对应的计算,都先转化为文本信息。针对文本信息做关键字提取,进而通过语义目标分解处理,生成目标地点序列。基于目标地点序列,在栅格层采用a*平滑路径算法,实现移动机器人室内导航。其中,a*路径规划算法在搜索中设置两个表:open表和closed表。a*路径规划算法将考察后代价最小的节点存储在closed表,剩下的生成的未考察点存储在open表。所应用的改进的a*算法的流程为:
step1对机器人起始点ss,目标点te进行初始化,将起始点ss坐标送入open表中,并计算起始点的估价函数值f(ss);
step2对open表进行判断,如果该表为空,那么路径规划失败;若表中有节点存在,查找当中f值最小的节点作为当前节点(记为n),并将其移入closed表中;
step3对当前节点n进行判断,若其为目标节点,路径规划成功,退出规划,否则转step4;
step4判断节点n是否可扩展,如果不可扩展,路径规划失败;如果可扩展,则按照优先子节点生成策略生成n的相邻子节点:
(1)因垂直和水平的子节点的优先级相对较高,则先生成此类节点后生成其他节点;
(2)若节点已在closed表中或被障碍物占据,则执行之后节点的生成策略。假如该节点不在open表中,将其移入,并记录它的f、g和h值,随之执行下一子节点生成策略。假如该节点已经存在于open表中,使用其估价值f作为参照,查看新生成路径是不是比之前更优,转入下一子节点生成操作;
(3)如果8个方向检查完毕,为每个后继节点设置指向n的指针,转step2;
step5保存路径离散点的集合{p1,p2,…,pn-1,pn},遍历{p1,p2,…,pn-1,pn},当某一节点前后节点连线上无障碍物时,将该节点删除,得到新的路径节点集合{p1',p2',…,p′q-1,p′q},q≤n。
以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。