二维码识别方法及基于其的机器人视觉导航自定位方法与流程

文档序号:16854457发布日期:2019-02-12 23:05阅读:1257来源:国知局
二维码识别方法及基于其的机器人视觉导航自定位方法与流程

本发明涉及一种二维码识别方法及基于其的机器人视觉导航自定位方法,属于人工智能技术领域。



背景技术:

目前,基于视觉导航的巡检机器人是人工智能领域研究的一个重要课题,未来的商业化市场应用极其广泛,如博物馆导游机器人为游客讲解历史文物古迹、送餐机器人沿轨迹线为顾客订餐、送餐,酒店服务机器人自规划路径为顾客托运行李、引导顾客到达客房等。在提供这些服务的同时,机器人需要知道目前所在的位置,下一步往哪个方向行走才能到达目的地等。那么,机器人的自主定位成为了机器人视觉导航不可或缺的一项重要环节,精确定位更是机器人实现正确行走的重要指标。

近些年,随着计算机硬件设施的升级,其计算处理能力不断增强,而且摄像头分辨率逐渐提高,满足了视觉导航系统的高精度、实时导航的需求。因此,机器人利用视觉信息来实现自定位,具有实时性好、易实施和成本低等优点。目前,基于视觉实现自定位的相关研究有:利用门牌号和rfid标签相结合的自定位和导航、采用条形编码格式的路标来实现机器人的定位等。

如果把机器人运行的真实路线环境用拓扑图来表示其相对结构,拓扑图中的每一个节点代表实际路线交叉处的路径节点,节点之间的权值代表实际路径节点之间的距离,这样选定起始点以及目标点,利用迪杰斯特拉算法就可以在拓扑图结构中为机器人规划好最短路径。机器人能够按此路径依次经过若干节点,正确到达目标点的前提是要对路径节点进行准确识别。机器人自主定位就是对于不同的路径节点进行识别,但是由于地面上没有足够的特征便于机器人去直接识别,而且对于不同的路口处需要设置不同的区别标识,所以,机器人运行路径的节点设计并非一件容易的事情。

因此,需要提出一种简单易用、准确可靠的机器人视觉导航自定位方法。



技术实现要素:

为解决上述现有技术上的不足,本发明提供了一种二维码及其识别方法,简单易用,准确度高;还提供了一种基于其的机器人视觉导航自定位方法,不仅定位准确,而且又能辨识机器人来向,更加具有实用性。

本发明解决其技术问题采取的技术方案是:

一方面,本发明实施例提供的一种二维码,所述二维码的编码图案包括顶角定位方格和中间九宫格编码区域,所述顶角定位方格为在二维码的编码图案四个顶角的其中三个顶角分别设有一个定位方格;所述中间九宫格编码区域是由3*3的数值方格组成,每个数值方格代表二进制字符串的码字符号“0”或者“1”,自上而下,从左到右对应的二进制位数依次是0~8。

作为本实施例一种可能的实现方式,根据二维码的编码图案四个顶角的其中三个顶角的定位方格的不同位置组合来判断二维码的视角方向。

作为本实施例一种可能的实现方式,所述九宫格编码区域中每个数值方格用黑白色表示“1”和“0”,每个二维码的中间九宫格编码区域对应不同的编码。

另一方面,本发明实施例提供的一种上述所述二维码的识别方法,它包括以下步骤:

s1:获取待识别的二维码的编码图案;

s2:利用背景和前景的差别自适应选取阈值进行图像二值化处理;

s3:二值化图像上找到具有封闭区域的孔或者轮廓,通过设置该轮廓对应的外接矩形宽高之比和面积大小这两条件,找到九宫格编码图案顶角三个定位方格的位置;

s4:对九宫格编码区域进行横向与纵向九个区域的划分,解码出每个定位方格对应的二进制数;

s5:根据图像中三个定位方格不同的位置组合,确定视角方向和每个数值方格的二进制字符串,进而获得二维码的数据信息。

作为本实施例一种可能的实现方式,在步骤s2中,采用最大类间方差法进行图像二值化处理。

作为本实施例一种可能的实现方式,在步骤s3中,在二值化图像上利用opencv中的cvfindcontours()函数快速找到具有封闭区域的孔或者轮廓。

再一方面,本发明实施例提供的一种基于二维码识别的机器人视觉导航自定位方法,用于机器人按照规划路径自主行走,方法包括以下步骤:

步骤1:将机器人行走导航路径上的交叉路口作为节点进行编号,并根据每个节点编号对应的二进制编码设计相应二维码的编码图案,将二维码的编码图案平铺在与之对应的交叉路口节点处;

步骤2:利用导航路径对应的电子地图并基于迪杰斯特拉算法规划出机器人从起始点到目标点的最短路径,该最短路径包含了所要依次经过的交叉路口节点编号;

步骤3:机器人利用机身固定的摄像头实时观测行走路线上的导航图像,并对设置在交叉路口处二维码进行识别,获得对应的节点编号;

步骤4:将摄像头获取的连续帧视频节点图像识别出的相同的节点编号结果作为最终的定位节点编号,根据导航路径对应的电子地图进行实现机器人的自主定位。

作为本实施例一种可能的实现方式,所述自定位方法还包括以下步骤:

步骤5:根据规划的最短路径,通过左拐、右拐、直行和刹车指令指导机器人下一步的动作。

作为本实施例一种可能的实现方式,在步骤3中,采用上述所述二维码的识别方法对设置在交叉路口处二维码进行识别。

作为本实施例一种可能的实现方式,在步骤s4中,对九宫格编码区域进行横向与纵向九个区域的划分,确定每个区域黑白像素的比例,自上而下、从左到右对这九个分区解码出二进制数字,进而根据每个数值方格相应的二进制位数号转化为十进制数字,即为交叉路口的节点编号。

作为本实施例一种可能的实现方式,在步骤s5中,在确定了九宫格编码顶角三个定位方格的位置后,判断出机器人在交叉路径节点的来向以决定九宫格编码各个分区对应的二进制位数号,用以保证不同方向识别该九宫格节点编码图案的结果都是相同的。

本发明实施例的技术方案可以具有的有益效果如下:

一方面,本发明的实施例技术方案的一种二维码,所述二维码的编码图案包括顶角定位方格和中间九宫格编码区域,所述顶角定位方格为在二维码的编码图案四个顶角的其中三个顶角分别设有一个定位方格;所述中间九宫格编码区域是由3*3的数值方格组成,每个数值方格代表二进制字符串的码字符号“0”或者“1”,自上而下,从左到右对应的二进制位数依次是0~8。该实施例技术方案通过九宫格编码区域中对应的二进制码字位置号便于确定二进制数字编码,在九宫格编码区域的四个顶角位置设计了三个定位方格,通过三个定位方格不同位置组合可以判断出视角方向,确保了从不同方向都能正确识别编码图案。该实施例技术方案不仅易识别,而且能够判断出视角方向。

另一方面,本发明的实施例技术方案的一种二维码的识别方法,可以包括以下步骤:获取待识别的二维码的编码图案;利用背景和前景的差别自适应选取阈值进行图像二值化处理;二值化图像上找到具有封闭区域的孔或者轮廓,通过设置该轮廓对应的外接矩形宽高之比和面积大小这两条件,找到九宫格编码图案顶角三个定位方格的位置;对九宫格编码区域进行横向与纵向九个区域的划分,解码出每个定位方格对应的二进制数;根据图像中三个定位方格不同的位置组合,确定视角方向和每个数值方格的二进制字符串,进而获得二维码的数据信息。该实施例技术方案通过对二维码的编码图案识别不仅能够准确提取出二维码信息,而且根据不同视角方向进行识别,简单易用,准确度高。

再一方面,本发明的实施例技术方案的一种基于二维码识别的机器人视觉导航自定位方法,用于机器人按照规划路径自主行走,所述自定位方法包括以下步骤:将机器人行走导航路径上的交叉路口作为节点进行编号,并根据每个节点编号对应的二进制编码设计相应二维码的编码图案,将二维码的编码图案平铺在与之对应的交叉路口节点处;利用导航路径对应的电子地图并基于迪杰斯特拉算法规划出机器人从起始点到目标点的最短路径,该最短路径包含了所要依次经过的交叉路口节点编号;机器人利用机身固定的摄像头实时观测行走路线上的导航图像,并对设置在交叉路口处二维码进行识别,获得对应的节点编号;将摄像头获取的连续帧视频节点图像识别出的相同的节点编号结果作为最终的定位节点编号,根据导航路径对应的电子地图进行实现机器人的自主定位。本发明的实施例技术方案在利用迪杰斯特拉算法进行路径规划后,机器人采用视觉导航方式,利用比例微分模糊控制规则沿地面导航线平稳行走,在行走过程中采用人工编码标识、自动识别标识来实现自主定位;同时在交叉路口设置九宫格编码方式,通过对九宫格编码的识别,进而完成机器人的自主定位和按照规划路径行走;采用人工编码标识,即通过九宫格编码方案来标记不同的交叉路口,根据视觉识别的编码结果实现机器人自主定位,进而实现按照既定规划路径的自主行走,该方案成本低,简单可靠;同时,在九宫格编码区域的四个顶角中有三个设有定位方格,可以保证从交叉路口的不同方向识别编码图案时具有相同的结果。该实施例技术方案既简单易用,准确可靠,又能辨识机器人来向,无需重复设置节点编码图案,更加具有实用性。

附图说明

图1(a)为根据一示例性实施例示出的一种二维码的九宫格编码图案示意图,图1(b)为图1(a)的编码示意图;

图2为根据一示例性实施例示出的一种二维码的识别方法的流程图;

图3(a)为根据一示例性实施例示出的一种二维码的九宫格编码图案第一种模板,图3(b)为图3(a)的编码示意图;

图4(a)为根据一示例性实施例示出的一种二维码的九宫格编码图案第二种模板,图4(b)为图4(a)的编码示意图;

图5(a)为根据一示例性实施例示出的一种二维码的九宫格编码图案第三种模板,图5(b)为图5(a)的编码示意图;

图6(a)为根据一示例性实施例示出的一种二维码的九宫格编码图案第四种模板,图6(b)为图6(a)的编码示意图;

图7为根据一示例性实施例示出的一种基于二维码识别的机器人视觉导航自定位方法的流程图;

图8(a)为一示例性实施例示出的一种机器人摄像头获取的路径节点九宫格编码原图,图8(b)为对图8(a)进行二值化后的图像,图8(c)表示图8(a)所示九宫格编码区域的划分区间。

具体实施方式

为能清楚说明本方案的技术特点,下面通过具体实施方式并结合其附图对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。

图1(a)为根据一示例性实施例示出的一种二维码的九宫格编码图案示意图,图1(b)为图1(a)的编码示意图。如图1所示,该实施例的一种二维码,所述二维码的编码图案包括顶角定位方格和中间九宫格编码区域,所述顶角定位方格为在二维码的编码图案四个顶角的其中三个顶角分别设有一个定位方格;所述中间九宫格编码区域是由3*3的数值方格组成,每个数值方格代表二进制字符串的码字符号“0”或者“1”,自上而下,从左到右对应的二进制位数依次是0~8。

作为本实施例一种可能的实现方式,根据二维码的编码图案四个顶角的其中三个顶角的定位方格的不同位置组合来判断二维码的视角方向。

作为本实施例一种可能的实现方式,所述九宫格编码区域中每个数值方格用黑白色表示“1”和“0”,每个二维码的中间九宫格编码区域对应不同的编码。

本实施例通过九宫格编码区域中对应的二进制码字位置号便于确定二进制数字编码,在九宫格编码区域的四个顶角位置设计了三个定位方格,通过三个定位方格不同位置组合可以判断出视角方向,确保了从不同方向都能正确识别编码图案。该实施例的技术方案不仅易识别,而且能够判断出视角方向。

图2为根据一示例性实施例示出的一种二维码的识别方法的流程图。如图2所示,该实施例的一种二维码的识别方法,它包括以下步骤:

s1:获取待识别的二维码的编码图案;

s2:利用背景和前景的差别自适应选取阈值进行图像二值化处理;

s3:二值化图像上找到具有封闭区域的孔或者轮廓,通过设置该轮廓对应的外接矩形宽高之比和面积大小这两条件,找到九宫格编码图案顶角三个定位方格的位置;

s4:对九宫格编码区域进行横向与纵向九个区域的划分,解码出每个定位方格对应的二进制数;

s5:根据图像中三个定位方格不同的位置组合,确定视角方向和每个数值方格的二进制字符串,进而获得二维码的数据信息,如图3-图6所示。

作为本实施例一种可能的实现方式,在步骤s2中,采用最大类间方差法进行图像二值化处理。

作为本实施例一种可能的实现方式,在步骤s3中,在二值化图像上利用opencv中的cvfindcontours()函数快速找到具有封闭区域的孔或者轮廓。

本实施例通过对二维码的编码图案识别不仅能够准确提取出二维码信息,而且根据不同视角方向进行识别,简单易用,准确度高。

图7为根据一示例性实施例示出的一种基于二维码识别的机器人视觉导航自定位方法的流程图。如图7所示,该实施例的一种基于二维码识别的机器人视觉导航自定位方法,用于机器人按照规划路径自主行走,方法包括以下步骤:

步骤1:将机器人行走导航路径上的交叉路口作为节点进行编号,并根据每个节点编号对应的二进制编码设计相应二维码的编码图案,将二维码的编码图案平铺在与之对应的交叉路口节点处,如图8(a)所示;

步骤2:利用导航路径对应的电子地图并基于迪杰斯特拉算法规划出机器人从起始点到目标点的最短路径,该最短路径包含了所要依次经过的交叉路口节点编号;

步骤3:机器人利用机身固定的摄像头实时观测行走路线上的导航图像,并对设置在交叉路口处二维码进行识别,获得对应的节点编号;

步骤4:将摄像头获取的连续帧视频节点图像识别出的相同的节点编号结果作为最终的定位节点编号,根据导航路径对应的电子地图进行实现机器人的自主定位。

作为本实施例一种可能的实现方式,所述自定位方法还包括以下步骤:

步骤5:根据规划的最短路径,通过左拐、右拐、直行和刹车指令指导机器人下一步的动作。

作为本实施例一种可能的实现方式,在步骤3中,如图2所示,采用上述所述二维码的识别方法对设置在交叉路口处二维码进行识别,图8(b)为二值化后的图像。

作为本实施例一种可能的实现方式,在步骤s4中,对九宫格编码区域进行横向与纵向九个区域的划分,确定每个区域黑白像素的比例,自上而下、从左到右对这九个分区解码出二进制数字,进而根据每个数值方格相应的二进制位数号转化为十进制数字,即为交叉路口的节点编号,图8(c)表示九宫格编码区域的划分区间。

作为本实施例一种可能的实现方式,在步骤s5中,在确定了九宫格编码顶角三个定位方格的位置后,判断出机器人在交叉路径节点的来向以决定九宫格编码各个分区对应的二进制位数号,用以保证不同方向识别该九宫格节点编码图案的结果都是相同的。

本实施例在利用迪杰斯特拉算法进行路径规划后,机器人采用视觉导航方式,利用比例微分模糊控制规则沿地面导航线平稳行走,在行走过程中采用人工编码标识、自动识别标识来实现自主定位;同时在交叉路口设置九宫格编码方式,通过对九宫格编码的识别,进而完成机器人的自主定位和按照规划路径行走;采用人工编码标识,即通过九宫格编码方案来标记不同的交叉路口,根据视觉识别的编码结果实现机器人自主定位,进而实现按照既定规划路径的自主行走,该方案成本低,简单可靠;同时,在九宫格编码区域的四个顶角中有三个设有定位方格,可以保证从交叉路口的不同方向识别编码图案时具有相同的结果。本实施例的技术方案既简单易用,准确可靠,又能辨识机器人来向,无需重复设置节点编码图案,更加具有实用性。

下面结合具体算例来对本发明进行说明。

如图1-图8所示,本发明是一种基于二维码识别原理的机器人视觉导航自定位方法,在利用迪杰斯特拉算法进行路径规划后,利用pd模糊控制规则指导机器人行走,在行走过程中采用人工编码标识、自动识别标识来实现自主定位。

首先,对机器人行走导航路径上的交叉路口作为节点进行编号,并根据每个节点编号所对应的二进制编码设计出相应九宫格编码图案,如图1(a)所示。其九宫格编码区域中,每一块区域代表二进制字符串的码字“0”或“1”,如果用黑表示“1”,则白色表示“0”,反之也行。图1(b)所示为九宫格各编码区域对应的二进制码字位置号,根据九宫格的黑白区域及对应的二进制码字位置号就可以确定二进制数字编码。为了精确定位九宫格编码区域,以及保证从交叉路口的不同方向识别九宫格编码的结果都是相同的,基于如图2所示的二维码识别原理在九宫格编码区域的四个顶角位置设计了三个定位方格,通过图像中三个方格不同的位置组合,可以判断出机器人的来向,进而确保了机器人从不同方向都能正确识别编码图案(如图3-图6所示)。

其次,机器人机身摄像头与上位机相连,系统实时获取行走路线上的导航图像;上位机利用与实际导航路径相一致的拓扑图并基于迪杰斯特拉算法规划出从当前位置到达目标点的最短路径,该路径包含了机器人所要依次经过的若干路径节点;机器人对从路径节点处获取的九宫格编码图案进行分析并识别出路径节点编号实现自主定位,并按规划的路径匹配机器人控制指令规则库,完成左拐、右拐、直行、刹车等动作,直到到达目标点。

由于九宫格编码区域的设计可以利用白纸黑区域进行设计的,而整个节点图像的背景颜色信息较为多样(如导航线就是红色),为了更好的凸显九宫格编码区域,系统利用背景和前景的差别,采用大津法获得阈值并对图像进行二值化(如图8中(b)所示)。

由于机器人机身安装的摄像头是在俯仰角为30°时获取的视频流图像,根据透视原理,获取的路径节点图像会存在一定的畸变(如图8中(a)所示),为了精确定位九宫格编码区域,首先确定三个定位方格的位置,然后对九宫格区域进行划分,最后进行不同区域的识别并转化为十进制数字作为最终九宫格编码识别结果。九宫格编码区域的具体识别步骤如下:

(1)在opencv类库中有自带找轮廓或孔的函数cvfindcontours(),快速找出图像中具有封闭区域的边界(分孔、轮廓两类),存入序列cvseq中,再通过cvseq->h_next找出孔,通过cvseq->v_next找出轮廓;

(2)在找出的所有孔中,通过cvboundingrect()可以得到孔边界外接矩形的左顶点坐标(xleft,yleft)、宽(width)和高(height),利用宽高之比大约为2(这里设置参数范围1.8~2.3)和孔的面积区域约为500(这里指像素个数,设参数范围为300~700)两个条件,可以很精确地找出定位方格孔的中心位置(xleft+width/2,yleft+height/2)所在,通过cvrectangle()在图中标记出来(如图3(b)中的小正方形框区域所示)。这样就确定了三个定位方格中心的位置分别为(x1,y1)、(x2,y2)、(x3,y3);

(3)分别比较并找出x1,x2,x3和y1,y2,y3中的最大值、中间值、最小值,即xmax、xmiddle、xmin和ymax、ymiddle、ymin。然后分别确定x和y中较大者和较小者的个数,以此来确定定位方格的位置组合,确定对应的是哪个模板(如图3-图6所示)。

(4)if(abs(ymiddle-ymin)>abs(ymax-ymiddle)),y较大者个数是2,y较小者的个数是1;否者的话,y较小者的个数是1,较大者个数是2;同理可确定x较大者和较小者的个数。这里y较小者个数可以确定上、下两个方向的定位方格的个数,x较小者个数可以确定左、右两个方向定位方格的个数。

(5)如果y较小者个数是1,可以确定定位方格是上面一个、下面两个,如果x较小者个数是1,可以确定定位方格左面一个、右面两个,那么最终确定为如图3所示的模板0;如果x较小者个数是2,可以确定定位方格右面两个、左面一个,那么最终确定为如图4所示的模板1。

(6)如果y较小者个数是2,可以确定定位方格上面两个、下面一个,如果x较小者个数是1,可以确定定位方格是左面一个、右面两个,最终确定为如图5所示的模板2;如果x较小者个数是2,可以确定定位方格左面两个、右面一个,最终确定为如图6所示的模板3。

(7)根据图8(b)所示的二值化图及上述步骤(1)~(6)的分析,可以确定该二值化图对应的为模板1,然后对其九宫格区域按左右((x0,x1)、(x1,x2)、(x2,x3))和上下((y0,y1)、(y1,y2)、(y2,y3))划分为纵横交错的九个区域如图8(c)所示,其中:

x0-xmin+xgap;(2)

x1=x0+2*xgap;(3)

x2=x1+2*xgap;(4)

x3=x2+2*xgap;(5)

这里,xmax,xmin分别为三个正方形定位方格质心坐标中的横坐标的最大值、最小值;xgap为列间隔;x0、x1、x2、x3为列划分区间坐标值;同理,关于行坐标方向y的相关参数确定亦如此。

(8)对于已确认的模板1,其节点编码顺序如图4(b)所示,这里具体划分区域,针对某一像素位置(x,y),编码区域编号用codeval表示,那么

if(x≥x0&&x≤x1&&y≥y0&&y≤y1)codeval=2;

if(x≥x1&&x≤x2&&y≥y0&&y≤y1)codeval=5;

if(x≥x2&&x≤x3&&y≥y0&&y≤y1)codeval=8;

if(x≥x0&&x<x1&&y≥y1&&y<y2)codeval=1;

if(x≥x1&&x≤x2&&y≥y1&&y≤y2)codeval=4;

if(x≥x2&&x≤x3&&y≥y1&&y≤y2)codeval=7;

if(x≥x0&&x≤x1&&y≥y2&&y≤y3)codeval=0;

if(x≥x1&&x≤x2&&y≥y2&&y≤y3)codeval=3;

if(x≥x2&&x≤x3&&y≥y2&&y≤y3)codeval=6;

按从上到下、从左到右顺序依次输出其编号:2,5,8,1,4,7,0,3,6。

(9)针对每一划分区域,都分别统计黑白像素个数,并求出黑像素所占比例,如果黑像素所占比例满足0.2~0.6,此区域标记为1;否则标记为0。按划分区域编号可知,针对图4(a)所示的二值化图,那么区域5、1、4、0和区域6标记为1,其他区域标记为0,输出其十进制数值为

23+21+24+20+20=115。

为了确保上述识别节点九宫格编码图的准确性,这里设置机器人获取连续帧节点图像的识别结果保持一致作为最终的识别结果。

此外,本发明的应用范围不局限于说明书中描述的特定实施例的工艺、机构、制造、物质组成、手段、方法及步骤。从本发明的公开内容,作为本领域的普通技术人员将容易地理解,对于目前已存在或者以后即将开发出的工艺、机构、制造、物质组成、手段、方法或步骤,其中它们执行与本发明描述的对应实施例大体相同的功能或者获得大体相同的结果,依照本发明可以对它们进行应用。因此,本发明所附权利要求旨在将这些工艺、机构、制造、物质组成、手段、方法或步骤包含在其保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1