本发明涉及物流机器人无轨视觉定位的技术领域,更具体地说是指用于无轨导航agv的视觉定位方法以及装置和系统。
背景技术:
自动导引车(英文全称:automaticguidedvehicle,英文简称:agv)系统已经发展成为生产物流系统中最大的专业分支之一。其导引技术主要可分为两个方面,即有轨式导引和无轨式导引。现阶段agv中最基本的自动导引技术主要包括电磁感应导引、磁带导引、视觉导引、激光导引、惯性导航导引和超声波导引等。其中视觉导引技术是近年来国内外agv行业的研究的热点之一,视觉传感器以光信号为基础,反应速度快,不易受电磁干扰和环境影响,适应能力强,因此视觉导引技术具有很大的发展潜力。
然而,在现有的视觉导引方法中,通常都是机器视觉进行定位,机器视觉的飞速发展为工业agv的自动导航提供了更多解决问题的思路。用于工业agv自动导航的机器视觉导航系统通常可以分为:图像采集部分、图像处理部分和运动控制部分。主要过程如下:相机按照指令实时采集图像,根据需要自动调节曝光参数;将采集到的数据采用arm或dsp转化为图像格式,并存放在处理器或计算机内存中;处理器采用大津算法、大津改进算法、局部大津算法对图像进行分析、识别、获取载体位姿信息和相关逻辑控制值;识别结果控制载体移动、停止、纠正运动误差等。
上述的采用arm或dsp将采集到的数据转化为图像格式的效率较低,上述的处理过程只能在传统的fpga或dsp处理,比较单一,不够灵活,处理器采用大津算法、大津改进算法、局部大津算法对图像进行分析、识别的处理的速度较低,导致定位不准确。
因此,有必要设计一种用于无轨导航agv的视觉定位方法,实现定位处理过程更加灵活,效率高,定位准确度高。
技术实现要素:
本发明的目的在于克服现有技术的缺陷,提供用于无轨导航agv的视觉定位方法以及装置和系统。
为实现上述目的,本发明采用以下技术方案:用于无轨导航agv的视觉定位方法,所述方法包括:
获取图像数据;
对所述图像数据进行实时自适应二值化处理,获取二值化图像;
矫正或扫描所述二值化图像,检测所述二值化图像内的轮廓,存储所述轮廓;
剔除存储的所述轮廓中不符合要求的轮廓;
提取符合要求的轮廓的特征以及质心;
获取具体的位置信息。
其进一步技术方案为:对所述图像数据进行实时自适应二值化处理的步骤,包括以下具体步骤:
统计所述图像数据的灰度值;
在本帧图像输出完毕后,获取平均阈值;
在下一帧图像到来时,采用本帧图像获取的所述平均阈值进行二值化处理。
其进一步技术方案为:矫正或扫描所述二值化图像,检测所述二值化图像内的轮廓,存储所述轮廓的步骤,包括以下具体步骤:
从二值化图像的左上角进行遍历;
判断是否检测到有0以及1跳变;
若检测到有0以及1跳变,记录跳变的像素点的坐标,以所述像素点逆时针旋转查找1像素点,对1像素点进行记录标记,并继续查找1像素点,直至所述像素的周围不存在大于1的像素点;
继续遍历像素点继续遍历,直到遍历完整幅二值化图像为止。
其进一步技术方案为:获取具体的位置信息的步骤,包括以下具体步骤:
根据质心和所述轮廓的顶点获取偏转角度;
提取所述轮廓内的二维码信息,对所述二维码进行译码处理,获取二维码的相对位置;
根据所述轮廓内的角点计算相对坐标;
输出译码信息、相对坐标信息以及相对偏转角度信息。
其进一步技术方案为:根据质心和所述轮廓的顶点获取偏转角度的步骤,包括以下具体步骤:
计算所述轮廓的左上角的角点以及其对角点,计算左上角的角点反正切值和右上角的角点反正切值;
根据所述质心以及左上角的角点反正切值和右上角的角点反正切值,获取偏转角度信息。
其进一步技术方案为:提取所述轮廓内的二维码信息,对所述二维码进行译码处理,获取二维码的相对位置的步骤,包括以下具体步骤:
获取二维码四个角点的坐标;
根据四个角点的坐标计算中心点的坐标;
对比所述中心点的坐标以及所述二值化图像的中心点的坐标,获取二维码相对位置信息;
对符合要求的轮廓范围内的图像进行提取采样,输出符合要求的轮廓内的码信息;
对所述码信息进行解码处理,根据码的大小规则把bit码转换为字节码;
对转换好的字节码进行rs译码操作,进行纠错。
其进一步技术方案为:所述对转换好的字节码进行rs译码操作,进行纠错的步骤之后,还包括:
判断提取的码信息是否存在错误;
若存在错误,则判断所述错误是否在纠错范围内;
若所述错误在纠错范围内,则输出纠错的码信息;
若所述错误不在纠错范围内,则输出报错信息,并返回所述对符合要求的轮廓范围内的图像进行提取采样步骤;
若不存在错误,则直接输出码信息。
本发明还提供了用于无轨导航agv的视觉定位装置,包括图像传感器、存储器以及处理器,所述图像传感器以及所述存储器分别与所述处理器连接,图像传感器获取图像数据后,传输至处理器进行处理,处理器将处理后的数据传输至存储器存储。
本发明还提供了用于无轨导航agv的视觉定位系统,包括图像获取单元、二值化单元、存储单元、剔除单元、提取单元以及位置获取单元;
所述图像获取单元,用于获取图像数据;
所述二值化单元,用于对所述图像数据进行实时自适应二值化处理,获取二值化图像;
所述存储单元,用于矫正或扫描所述二值化图像,检测所述二值化图像内的轮廓,存储所述轮廓;
所述剔除单元,用于剔除存储的所述轮廓中不符合要求的轮廓;
所述提取单元,用于提取符合要求的轮廓的特征以及质心;
所述位置获取单元,用于获取具体的位置信息。
其进一步技术方案为:所述二值化单元包括灰度值统计模块、平均阈值获取模块以及处理模块;
所述灰度值统计模块,用于统计所述图像数据的灰度值;
所述平均阈值获取模块,用于在本帧图像输出完毕后,获取平均阈值;
所述处理模块,用于在下一帧图像到来时,采用本帧图像获取的所述平均阈值进行二值化处理。
本发明与现有技术相比的有益效果是:本发明的用于无轨导航agv的视觉定位方法,通过图像传感器获取图像信息,提取标签信息,并输出给agv相应的坐标、角度、标签信息,agv通过提供的信息进行定位,采用二值化处理方法对图像进行二值化处理,在求平均阈值时采用全局求均值的方法,二值化后图像轮廓比较少,加快了后期处理轮廓的速度,通过逻辑方式处理二维码的解码,节省了反应时间,采用zynq作为处理的平台,处理更加灵活,性能速度更快,实现定位处理过程更加灵活,效率高,定位准确度高。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
图1为本发明具体实施例提供的用于无轨导航agv的视觉定位方法的流程图;
图2为本发明具体实施例提供的对图像数据进行实时自适应二值化处理的具体流程图;
图3为本发明具体实施例提供的检测二值化图像内的轮廓的具体流程图;
图4为本发明具体实施例提供的获取具体的位置信息的具体流程图;
图5为本发明具体实施例提供的根据质心和轮廓的顶点获取偏转角度的具体流程图;
图6为本发明具体实施例提供的获取二维码的相对位置的具体流程图;
图7为本发明具体实施例提供的用于无轨导航agv的视觉定位装置的结构框图;
图8为本发明具体实施例提供的用于无轨导航agv的视觉定位系统的结构框图;
图9为本发明具体实施例提供的二值化单元的结构框图;
图10为本发明具体实施例提供的存储单元的结构框图;
图11为本发明具体实施例提供的位置获取单元的结构框图;
图12为本发明具体实施例提供的偏转角度获取模块的结构框图;
图13为本发明具体实施例提供的二维码获取模块的结构框图。
具体实施方式
为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。
如图1~13所示的具体实施例,本实施例提供的用于无轨导航agv的视觉定位方法,可以运用在物流机器人无轨视觉定位过程中,实现定位处理过程更加灵活,效率高,定位准确度高。
如图1所示,是本实施例提供的用于无轨导航agv的视觉定位方法,该方法包括:
s1、获取图像数据;
s2、对所述图像数据进行实时自适应二值化处理,获取二值化图像;
s3、矫正或扫描所述二值化图像,检测所述二值化图像内的轮廓,存储所述轮廓;
s4、剔除存储的所述轮廓中不符合要求的轮廓;
s5、提取符合要求的轮廓的特征以及质心;
s6、获取具体的位置信息。
对于上述的s1步骤,在逻辑部分编写图像传感器驱动,配置相应寄存器,配置成符合图像条件的状态,利用图像传感器获取图像数据。
更进一步的,对于s2、对所述图像数据进行实时自适应二值化处理,获取二值化图像,具体包括以下步骤:
s21、统计所述图像数据的灰度值;
s22、在本帧图像输出完毕后,获取平均阈值;
s23、在下一帧图像到来时,采用本帧图像获取的所述平均阈值进行二值化处理。
图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。
二值化目的是把灰度图像转换为黑白两种颜色的图像,根据阈值求取。目前可用arm/dsp/fpga/pc等平台上实现,相比来说在fpga上实现相对较快,可以近似流水实现。在fpga上实现有很多种方法,有经典的大津算法、大津改进算法、局部大津算法等。采用平均阈值的二值化,实现流水操作,传感器采集的数据直接转换为二值化图像,不需要存储,而且实现动态阈值。可以运用在物流搬运机器人(agv)上,应用环境比较固定,主要是在机器人底部用于标签识别,顶部用于物料识别,而且图像传感器周围有光源照射,所以环境变动比较慢。在这个前提下提出实时动态阀值,将上一帧的阈值当作本次的阈值进行二值化处理。
对于s22步骤,在求平均阈值时采用全局求均值的方法,这种求阈值的方法相对局部算法和大津算法相比,二值化后图像轮廓比较少,加快了后期处理轮廓的速度。
更进一步的,s3步骤,矫正或扫描所述二值化图像,检测所述二值化图像内的轮廓,存储所述轮廓的步骤,包括以下具体步骤:
s31、从二值化图像的左上角进行遍历;
s32、判断是否检测到有0以及1跳变;
s33、若检测到有0以及1跳变,记录跳变的像素点的坐标,以所述像素点逆时针旋转查找1像素点,对1像素点进行记录标记,并继续查找1像素点,直至所述像素的周围不存在大于1的像素点;
s34、继续遍历像素点继续遍历,直到遍历完整幅二值化图像为止。
s35、若没有检测到有0以及1跳变,则进入结束步骤。
s31步骤,从二值化图像的左上角进行遍历,在本实施例中,是从左上角开始遍历,所谓遍历(traversal),是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问,另外,于其他实施例,还可以从右上角等其他角点开始遍历,直至整幅二值化图像都完成遍历。
对于s33步骤,于其他实施例,还可以以像素点顺时针旋转查找1像素点,根据具体实际情况而定。
s4步骤,剔除存储的所述轮廓中不符合要求的轮廓,主要是为了留下符合要求的轮廓,以便于提取符合要求的轮廓的特征和质心。
s5步骤,提取符合要求的轮廓的特征和质心,由于datamatrix码有两个直线边,剩下两个边是1、0交替出现的,可以通过测量质心和角点的距离确定距离最近的点为datamatrix码l边的角点。
更进一步的,s6步骤,获取具体的位置信息的步骤,包括以下具体步骤:
s61、根据质心和所述轮廓的顶点获取偏转角度;
s62、提取所述轮廓内的二维码信息,对所述二维码进行译码处理,获取二维码的相对位置;
s63、根据所述轮廓内的角点计算相对坐标;
s64、输出译码信息、相对坐标信息以及相对偏转角度信息。
对于上述s61步骤,根据质心和所述轮廓的顶点获取偏转角度的步骤,包括以下具体步骤:
s611、计算所述轮廓的左上角的角点以及其对角点,计算左上角的角点反正切值和右上角的角点反正切值;
s612、根据所述质心以及左上角的角点反正切值和右上角的角点反正切值,获取偏转角度信息。
对于s62步骤,提取所述轮廓内的二维码信息,对所述二维码进行译码处理,获取二维码的相对位置的步骤,包括以下具体步骤:
s621、获取二维码四个角点的坐标;
s622、根据四个角点的坐标计算中心点的坐标;
s623、对比所述中心点的坐标以及所述二值化图像的中心点的坐标,获取二维码相对位置信息;
s624、对符合要求的轮廓范围内的图像进行提取采样,输出符合要求的轮廓内的码信息;
s625、对所述码信息进行解码处理,根据码的大小规则把bit码转换为字节码;
s626、对转换好的字节码进行rs译码操作,进行纠错;
s627、判断提取的码信息是否存在错误;
s628、若存在错误,则判断所述错误是否在纠错范围内;
s629、若所述错误在纠错范围内,则输出纠错的码信息;
s630、若所述错误不在纠错范围内,则输出报错信息,并返回s624步骤;
s631、若不存在错误,则直接输出码信息。
对于s624步骤,对符合要求的轮廓范围内的图像进行提取采样,输出符合要求的轮廓内的码信息,获取的码信息会输送至fpga处理器的逻辑部分,fpga处理器的逻辑部分接收到码信息之后会进行解码处理。
上述的s621步骤至s631步骤的二维码解码放在fpga处理器的逻辑(pl)部分实现,通过逻辑方式实现比传统的通过arm或dsp实现更快,节省了反应时间。
另外,上述的用于无轨导航agv的视觉定位方法采用了可扩展处理平台zynq作为处理的平台,相对于传统的fpga或dsp处理更加灵活,性能速度更快。
上述的用于无轨导航agv的视觉定位方法,通过图像传感器获取图像信息,提取标签信息,并输出给agv相应的坐标、角度、标签信息,agv通过提供的信息进行定位,采用二值化处理方法对图像进行二值化处理,在求平均阈值时采用全局求均值的方法,二值化后图像轮廓比较少,加快了后期处理轮廓的速度,通过逻辑方式处理二维码的解码,节省了反应时间,采用zynq作为处理的平台,处理更加灵活,性能速度更快,实现定位处理过程更加灵活,效率高,定位准确度高。
如图7所示,本实施例还提供了用于无轨导航agv的视觉定位装置,包括图像传感器、存储器以及处理器,所述图像传感器以及所述存储器分别与所述处理器连接,图像传感器获取图像数据后,传输至处理器进行处理,处理器将处理后的数据传输至存储器存储。
上述的存储器为ddr存储器,处理器为fpga。
如图8所示,本实施例还提供了用于无轨导航agv的视觉定位系统,包括图像获取单元1、二值化单元2、存储单元3、剔除单元4、提取单元5以及位置获取单元6。
图像获取单元1,用于获取图像数据。
二值化单元2,用于对所述图像数据进行实时自适应二值化处理,获取二值化图像。
存储单元3,用于矫正或扫描所述二值化图像,检测所述二值化图像内的轮廓,存储所述轮廓。
剔除单元4,用于剔除存储的所述轮廓中不符合要求的轮廓。
提取单元5,用于提取符合要求的轮廓的特征以及质心。
位置获取单元6,用于获取具体的位置信息。
在逻辑部分编写图像传感器驱动,配置相应寄存器,配置成符合图像条件的状态,利用图像获取单元1(即图像传感器)获取图像数据。
更进一步的,上述的二值化单元2包括灰度值统计模块21、平均阈值获取模块22以及处理模块23。
灰度值统计模块21,用于统计所述图像数据的灰度值。
平均阈值获取模块22,用于在本帧图像输出完毕后,获取平均阈值。
处理模块23,用于在下一帧图像到来时,采用本帧图像获取的所述平均阈值进行二值化处理。
图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。
二值化单元2对图像进行二值化目的是把灰度图像转换为黑白两种颜色的图像,根据阈值求取。目前可用arm/dsp/fpga/pc等平台上实现,相比来说在fpga上实现相对较快,可以近似流水实现。在fpga上实现有很多种方法,有经典的大津算法、大津改进算法、局部大津算法等。采用平均阈值的二值化,实现流水操作,传感器采集的数据直接转换为二值化图像,不需要存储,而且实现动态阈值。可以运用在物流搬运机器人(agv)上,应用环境比较固定,主要是在机器人底部用于标签识别,顶部用于物料识别,而且图像传感器周围有光源照射,所以环境变动比较慢。在这个前提下提出实时动态阀值,将上一帧的阈值当作本次的阈值进行二值化处理。
平均阈值获取模块22在求平均阈值时采用全局求均值的方法,这种求阈值的方法相对局部算法和大津算法相比,二值化后图像轮廓比较少,加快了后期处理轮廓的速度。
上述的存储单元3包括遍历模块31以及判断模块32;其中,遍历模块31用于从二值化图像的左上角进行遍历;判断模块32用于判断是否检测到有0以及1跳变;若检测到有0以及1跳变,记录跳变的像素点的坐标,以所述像素点逆时针旋转查找1像素点,对1像素点进行记录标记,并继续查找1像素点,直至所述像素的周围不存在大于1的像素点;继续遍历像素点继续遍历,直到遍历完整幅二值化图像为止。若没有检测到有0以及1跳变,则进入结束步骤。
在本实施例中,遍历模块31是从左上角开始遍历,所谓遍历(traversal),是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问,另外,于其他实施例,还可以从右上角等其他角点开始遍历,直至整幅二值化图像都完成遍历。
剔除单元4剔除存储的所述轮廓中不符合要求的轮廓,主要是为了留下符合要求的轮廓,以便于提取符合要求的轮廓的特征和质心。
提取单元5提取符合要求的轮廓的特征和质心,由于datamatrix码有两个直线边,剩下两个边是1、0交替出现的,可以通过测量质心和角点的距离确定距离最近的点为datamatrix码l边的角点。
更进一步的,位置获取单元6包括偏转角度获取模块61、二维码获取模块62、角点计算模块63以及输出模块64。
偏转角度获取模块61,用于根据质心和所述轮廓的顶点获取偏转角度。
二维码获取模块62,用于提取所述轮廓内的二维码信息,对所述二维码进行译码处理,获取二维码的相对位置。
角点计算模块63,用于根据所述轮廓内的角点计算相对坐标。
输出模块64,用于输出译码信息、相对坐标信息以及相对偏转角度信息。
对于上述的偏转角度获取模块61,其包括计算子模块611以及信息获取子模块612。
计算子模块611,用于计算所述轮廓的左上角的角点以及其对角点,计算左上角的角点反正切值和右上角的角点反正切值;
信息获取子模块612,用于根据所述质心以及左上角的角点反正切值和右上角的角点反正切值,获取偏转角度信息。
对于二维码获取模块62包括角点坐标获取子模块621、中心点坐标计算子模块622、相对位置获取子模块623、码信息输出子模块624、解码处理子模块625、译码子模块626以及错误判断子模块627。
角点坐标获取子模块621,用于获取二维码四个角点的坐标。
中心点坐标计算子模块622,用于根据四个角点的坐标计算中心点的坐标。
相对位置获取子模块623,用于对比所述中心点的坐标以及所述二值化图像的中心点的坐标,获取二维码相对位置信息。
码信息输出子模块624,用于对符合要求的轮廓范围内的图像进行提取采样,输出符合要求的轮廓内的码信息。
解码处理子模块625,用于对所述码信息进行解码处理,根据码的大小规则把bit码转换为字节码。
译码子模块626,用于对转换好的字节码进行rs译码操作,进行纠错;
错误判断子模块627,用于判断提取的码信息是否存在错误;若存在错误,则判断所述错误是否在纠错范围内;若所述错误在纠错范围内,则输出纠错的码信息;若所述错误不在纠错范围内,则输出报错信息,并返回对符合要求的轮廓范围内的图像进行提取采样;若不存在错误,则直接输出码信息。
上述的码信息输出子模块624对符合要求的轮廓范围内的图像进行提取采样,输出符合要求的轮廓内的码信息,获取的码信息会输送至fpga处理器的逻辑部分,fpga处理器的逻辑部分接收到码信息之后会进行解码处理。
二维码获取模块62所做的操作,主要放在fpga处理器的逻辑(pl)部分实现,通过逻辑方式实现比传统的通过arm或dsp实现更快,节省了反应时间。
另外,上述的用于无轨导航agv的视觉定位系统采用了可扩展处理平台zynq作为处理的平台,相对于传统的fpga或dsp处理更加灵活,性能速度更快。
上述的用于无轨导航agv的视觉定位系统,通过图像获取单元1获取图像信息,提取标签信息,并输出给agv相应的坐标、角度、标签信息,agv通过提供的信息进行定位,二值话单元采用二值化处理方法对图像进行二值化处理,在求平均阈值时采用全局求均值的方法,二值化后图像轮廓比较少,加快了后期处理轮廓的速度,通过逻辑方式处理二维码的解码,节省了反应时间,采用zynq作为处理的平台,处理更加灵活,性能速度更快,实现定位处理过程更加灵活,效率高,定位准确度高。
上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。