一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

无序抓取系统中的包裹高度测量方法及装置

2022-09-02 20:35:50 来源:中国专利 TAG:


1.本技术涉及计算机机器视觉技术领域,特别是涉及一种无序抓取系统中的包裹高度测量方法及装置。


背景技术:

2.随着计算机技术与互联网产业的发展,网络购物给当前社会注入了新鲜活力。这一现象的出现,在方便卖家与买家的同时,也给物流行业带来了巨大的压力。为应对日益增长的物流包裹数量,以及出于包裹分拣效率方面的考虑,一些物流中转站已开始尝试使用机械臂来代替人工,对送入中转站的包裹进行分拣。
3.在当前的物流分拣机械臂系统中,各厂商主要着力于包裹的检测与位姿判断,即以判断机械臂“去哪儿抓”为主。相比之下,机械臂“到哪儿放”的问题似乎被普遍忽略或者简化。在机械臂完成抓取后,当前的解决方案大多选择将包裹移至固定点进行投放,或是传送带上的一点,或是包裹托盘上的一点。对于普通的包裹来说,这样的投放方式并无危害。但当投放的包裹中包含易碎易损物品时,如固定点投放这样的方式易摔坏或压坏包裹中的物品,给买家、卖家以及物流公司带来不必要的麻烦。
4.现有的对于无序抓取系统中的方法亦存在,如授权公告号为cn112070818b的发明专利文件中公开了一种基于机器视觉的机器人无序抓取方法及系统。通过搭建kinect相机及机器人的抓取系统,利用所述kinect相机采集目标物体表面的图像数据,并对该图像数据进行预处理获得三维点云数据;对采集到的所述三维点云数据进行目标检测、目标分割、目标聚类、关键点特征提取、特征配准,识别目标物体,获得目标物体的位姿信息;根据所述手眼系统的标定结果,对所述位姿信息进行坐标转换,向机器人发出控制指令实现所述目标物体的抓取。
5.虽然上述的专利文件中能够改进现有的算法,以适应机器人所处的复杂环境,以此提高了机器人的无序抓取的精确度以及机器人的柔性度,但是其不能够有效地在机械臂无序抓取系统中实现对包裹高度的测量,且需额外的相机标定等步骤,不能满足工业系统对实时性的要求。


技术实现要素:

6.基于此,有必要针对上述技术问题,提供一种能够有效地在机械臂无序抓取系统中实现对包裹高度的测量,且无需额外的相机标定等步骤,便于部署,且可满足工业系统对实时性的要求的无序抓取系统中的包裹高度测量方法及装置。
7.本发明技术方案如下:
8.一种无序抓取系统中的包裹高度测量方法,所述方法包括:
9.步骤s100:获取深度相机和机械臂按照特定设定位置排布后的工作状态时的深度图;
10.步骤s200:基于预设的矩形区域对所述深度图作分割处理,并保留所述矩形区域
内的图像;
11.步骤s300:遍历所述矩形区域内的像素,并基于深度相机的特性去除所述矩形区域内的无效像素和背景像素;
12.步骤s400:对所述深度图作轮廓提取处理,并在作最大轮廓筛选后获取最大轮廓的外接矩形;
13.步骤s500:遍历所述外接矩形中的像素并计算所述外接矩形中属于包裹的包裹区域;
14.步骤s600:根据计算得到的所述包裹区域计算包裹高度,并将计算得到的所述包裹高度发送给所述机械臂,所述机械臂根据所述包裹高度放置包裹。
15.具体地,步骤s500:遍历所述外接矩形中的像素并计算所述外接矩形中属于包裹的包裹区域;具体包括:
16.步骤s510:自所述外接矩形的最左下开始遍历所述外接矩形中的像素,并将遍历到的第一个有效像素压入遍历栈与包裹区域保存栈中;
17.步骤s520:不断弹出遍历栈的栈顶像素,并对所述栈顶像素作是否压栈判断,若判断为是,则将对应的所述栈顶像素压入遍历栈与包裹区域保存栈中;其中,所述是否压栈判断为:判断栈顶像素在矩阵m2中对应位置的元素是否为0,以跳过已被遍历过的邻元素;
18.判断所述栈顶像素的所处位置是否超出外接矩形区域r1的范围,以跳过不在r1内的邻元素;
19.判断所述栈顶像素在深度图中对应的像素值与当前弹出的栈顶元素在深度图中对应的像素值之差的绝对值是否小于一个指定的阈值,以跳过在欧式空间中与当前遍历元素距离过大的邻元素;当三者均判断为是时,则判断栈顶像素可作压栈;
20.其中,矩阵m2为与所述深度图大小一致的矩阵,矩阵m2中的元素均赋值为0。
21.具体地,步骤s600:根据计算得到的所述包裹区域计算包裹高度,并将计算得到的所述包裹高度发送给所述机械臂,所述机械臂根据所述包裹高度放置包裹;具体包括:
22.步骤s610:不断弹出所述包裹区域保存栈中的像素,并基于深度相机内参恢复每个弹出的像素对应的空间点在相机坐标系中的坐标;
23.步骤s620:根据每个弹出的像素对应的空间点在相机坐标系中的坐标计算包裹区域内所有空间点坐标的三阶特征矩阵,并计算得到三阶特征矩阵特征的三个特征向量,并基于向量乘法筛选获取与相机坐标系y轴平行度最高的特征向量;
24.步骤s630:根据获取的与相机坐标系y轴平行度最高的特征向量计算得到的所述包裹区域计算包裹高度,并将计算得到的所述包裹高度发送给所述机械臂,所述机械臂根据所述包裹高度放置包裹。
25.具体地,步骤s610:不断弹出所述包裹区域保存栈中的像素,并基于深度相机内参恢复每个弹出的像素对应的空间点在相机坐标系中的坐标;具体包括:
26.步骤s611:基于包裹区域保存栈中的像素,判断包裹区域保存栈是否为空;
27.步骤s611:若判断为是,则弹出所述包裹区域保存栈中的像素;
28.步骤s611:基于深度相机内参按照以下公式恢复每个弹出的像素对应的空间点在相机坐标系中的坐标:
[0029][0030]
其中,f
x
与fy为相机的焦距,p
x
与py为相机原点在成像平面上的坐标。
[0031]
具体地,步骤s620:根据每个弹出的像素对应的空间点在相机坐标系中的坐标计算包裹区域内所有空间点坐标的三阶特征矩阵,并计算得到三阶特征矩阵特征的三个特征向量,并基于向量乘法筛选获取与相机坐标系y轴平行度最高的特征向量;具体包括:
[0032]
步骤s621:根据每个弹出的像素获取弹出的像素的坐标与弹出的像素对应的空间点之间的关系,关系如下:
[0033][0034]
其中,c为像素,t为像素c在相机坐标系中对应的空间点;
[0035]
步骤s622:恢复得到当前弹出的栈顶元素i所对应空间点的坐标(xi,yi,zi)后,将其加入整个包裹区域的特征矩阵中,并基于以下公式计算三阶特征矩阵m3:
[0036][0037]
其中,xx为栈中所有元素的x轴坐标平方之和,yy为栈中所有元素的y轴坐标平方之和,zz为栈中所有元素的z轴坐标平方之和,xy为栈中所有元素的x轴坐标与y轴坐标乘积之和,xz为栈中所有元素的x轴坐标与z轴坐标乘积之和,yz为栈中所有元素的y轴坐标与z轴坐标乘积之和,x为栈中所有元素的x轴坐标之和,y为栈中所有元素的y轴坐标之和,z为栈中所有元素的z轴坐标之和,n为栈中元素个数之和;
[0038]
步骤s623:计算得到三阶特征矩阵特征的三个特征向量,并基于向量乘法筛选获取与相机坐标系y轴平行度最高的特征向量。
[0039]
具体地,一种无序抓取系统中的包裹高度测量装置,所述装置包括:
[0040]
深度图获取模块,用于获取深度相机和机械臂按照特定设定位置排布后的工作状态时的深度图;
[0041]
分割处理模块,用于基于预设的矩形区域对所述深度图作分割处理,并保留所述矩形区域内的图像;
[0042]
像素遍历模块,用于遍历所述矩形区域内的像素,并基于深度相机的特性去除所述矩形区域内的无效像素和背景像素;
[0043]
提取处理模块,用于对所述深度图作轮廓提取处理,并在作最大轮廓筛选后获取最大轮廓的外接矩形;
[0044]
像素计算模块,用于遍历所述外接矩形中的像素并计算所述外接矩形中属于包裹的包裹区域;
[0045]
包裹高度计算模块,用于根据计算得到的所述包裹区域计算包裹高度,并将计算得到的所述包裹高度发送给所述机械臂,所述机械臂根据所述包裹高度放置包裹。
[0046]
具体地,所述像素计算模块包括:
[0047]
区域保存模块,用于自所述外接矩形的最左下开始遍历所述外接矩形中的像素,并将遍历到的第一个有效像素压入遍历栈与包裹区域保存栈中;
[0048]
像素弹出模块,用于不断弹出遍历栈的栈顶像素,并对所述栈顶像素作是否压栈判断,若判断为是,则将对应的所述栈顶像素压入遍历栈与包裹区域保存栈中;其中,所述是否压栈判断为:判断栈顶像素在矩阵m2中对应位置的元素是否为0,以跳过已被遍历过的邻元素;
[0049]
判断所述栈顶像素的所处位置是否超出外接矩形区域r1的范围,以跳过不在r1内的邻元素;
[0050]
判断所述栈顶像素在深度图中对应的像素值与当前弹出的栈顶元素在深度图中对应的像素值之差的绝对值是否小于一个指定的阈值,以跳过在欧式空间中与当前遍历元素距离过大的邻元素;当三者均判断为是时,则判断栈顶像素可作压栈;
[0051]
其中,矩阵m2为与所述深度图大小一致的矩阵,矩阵m2中的元素均赋值为0。
[0052]
具体地,所述包裹高度计算模块包括:
[0053]
空间点获取模块,用于不断弹出所述包裹区域保存栈中的像素,并基于深度相机内参恢复每个弹出的像素对应的空间点在相机坐标系中的坐标;
[0054]
特征矩阵计算模块,用于根据每个弹出的像素对应的空间点在相机坐标系中的坐标计算包裹区域内所有空间点坐标的三阶特征矩阵,并计算得到三阶特征矩阵特征的三个特征向量,并基于向量乘法筛选获取与相机坐标系y轴平行度最高的特征向量;
[0055]
包裹放置模块,用于根据获取的与相机坐标系y轴平行度最高的特征向量计算得到的所述包裹区域计算包裹高度,并将计算得到的所述包裹高度发送给所述机械臂,所述机械臂根据所述包裹高度放置包裹;其中,所述空间点获取模块包括:
[0056]
判断模块,用于基于包裹区域保存栈中的像素,判断包裹区域保存栈是否为空;
[0057]
结果生成模块,用于若判断为是,则弹出所述包裹区域保存栈中的像素;
[0058]
第一公式计算模块,用于基于深度相机内参按照以下公式恢复每个弹出的像素对应的空间点在相机坐标系中的坐标:
[0059][0060]
其中,f
x
与fy为相机的焦距,p
x
与py为相机原点在成像平面上的坐标;其中,所述特征矩阵计算模块包括:
[0061]
第二公式计算模块,用于根据每个弹出的像素获取弹出的像素的坐标与弹出的像素对应的空间点之间的关系,关系如下:
[0062][0063]
其中,c为像素,t为像素c在相机坐标系中对应的空间点;
[0064]
第三公式计算模块,用于恢复得到当前弹出的栈顶元素i所对应空间点的坐标(xi,yi,zi)后,将其加入整个包裹区域的特征矩阵中,并基于以下公式计算三阶特征矩阵m3:
[0065][0066]
其中,xx为栈中所有元素的x轴坐标平方之和,yy为栈中所有元素的y轴坐标平方之和,zz为栈中所有元素的z轴坐标平方之和,xy为栈中所有元素的x轴坐标与y轴坐标乘积之和,xz为栈中所有元素的x轴坐标与z轴坐标乘积之和,yz为栈中所有元素的y轴坐标与z轴坐标乘积之和,x为栈中所有元素的x轴坐标之和,y为栈中所有元素的y轴坐标之和,z为栈中所有元素的z轴坐标之和,n为栈中元素个数之和;
[0067]
特征向量计算模块,用于计算得到三阶特征矩阵特征的三个特征向量,并基于向量乘法筛选获取与相机坐标系y轴平行度最高的特征向量。
[0068]
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述无序抓取系统中的包裹高度测量方法所述的步骤。
[0069]
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述无序抓取系统中的包裹高度测量方法所述的步骤。
[0070]
本发明实现技术效果如下:
[0071]
上述无序抓取系统中的包裹高度测量方法及装置,依次通过获取深度相机和机械臂按照特定设定位置排布后的工作状态时的深度图;基于预设的矩形区域对所述深度图作分割处理,并保留所述矩形区域内的图像;遍历所述矩形区域内的像素,并基于深度相机的特性去除所述矩形区域内的无效像素和背景像素;对所述深度图作轮廓提取处理,并在作最大轮廓筛选后获取最大轮廓的外接矩形;遍历所述外接矩形中的像素并计算所述外接矩形中属于包裹的包裹区域;根据计算得到的所述包裹区域计算包裹高度,并将计算得到的所述包裹高度发送给所述机械臂,所述机械臂根据所述包裹高度放置包裹,进而能够有效地在机械臂无序抓取系统中实现对包裹高度的测量,且无需额外的相机标定等步骤,便于部署,且可满足工业系统对实时性的要求。
附图说明
[0072]
图1为一个实施例中无序抓取系统中的包裹高度测量方法的流程示意图;
[0073]
图2为一个实施例中无序抓取系统中深度相机和机械臂按照特定设定位置排布后的结构示意图;
[0074]
图3为一个实施例中无序抓取系统中深度相机的相机坐标系的结构示意图;
[0075]
图4为一个实施例中无序抓取系统中深度相机的相机坐标系中包裹高度计算示意图;
[0076]
图5为一个实施例中无序抓取系统中的包裹高度测量装置的结构框图;
[0077]
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
[0078]
为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
[0079]
在一个实施例中,如图1所示,提供一种无序抓取系统中的包裹高度测量方法,所述方法包括:
[0080]
步骤s100:获取深度相机和机械臂按照特定设定位置排布后的工作状态时的深度图;
[0081]
具体地,如图2所示,深度相机和机械臂按照特定设定位置排布后,意为:将深度相机安装在机械臂侧边的框架上,拍摄方向平行于机械臂安装平面,指向机械臂。工作状态时的深度图获取方式为:在深度相机启动后,以视频流的形式使其保持拍摄状态,以供在需要时从中抽取一帧。在机械臂进行无序抓取的过程中,当机械臂工具前端到达指定路径点附近时,系统发送指令给深度相机,深度相机便向系统返回其视频流中的当前一帧,即为获取所述深度图。
[0082]
步骤s200:基于预设的矩形区域对所述深度图作分割处理,并保留所述矩形区域内的图像;
[0083]
本发明中利用各硬件摆放位置固定的特点,预设一个矩形的区域,大致地对深度图进行分割。保留区域内的像素值,舍弃区域外的像素值,方便后续处理。
[0084]
步骤s300:遍历所述矩形区域内的像素,并基于深度相机的特性去除所述矩形区域内的无效像素和背景像素;
[0085]
本步骤中,根据所用深度相机的特性,创建一个大小与原深度图相等的矩阵m1,将其中的值均赋为0。逐行遍历预设矩形区域内的像素,跳过值为0(无效像素)以及值为65535(背景像素)的像素,将剩余像素在矩阵m1中对应位置的元素赋值为255。
[0086]
步骤s400:对所述深度图作轮廓提取处理,并在作最大轮廓筛选后获取最大轮廓的外接矩形;
[0087]
对于步骤s300中赋值完成的矩阵m1,本步骤中作轮廓提取处理。提取的轮廓均为外轮廓。将提取到的轮廓进行排序,得到其中最大的轮廓。求取该轮廓的外接矩形r1,用于下一步处理。
[0088]
步骤s500:遍历所述外接矩形中的像素并计算所述外接矩形中属于包裹的包裹区域;
[0089]
具体地,通过计算所述外接矩形中属于包裹的包裹区域,方便后续计算包裹高度。
[0090]
步骤s600:根据计算得到的所述包裹区域计算包裹高度,并将计算得到的所述包裹高度发送给所述机械臂,所述机械臂根据所述包裹高度放置包裹。
[0091]
本发明依次通过获取深度相机和机械臂按照特定设定位置排布后的工作状态时的深度图;基于预设的矩形区域对所述深度图作分割处理,并保留所述矩形区域内的图像;遍历所述矩形区域内的像素,并基于深度相机的特性去除所述矩形区域内的无效像素和背景像素;对所述深度图作轮廓提取处理,并在作最大轮廓筛选后获取最大轮廓的外接矩形;遍历所述外接矩形中的像素并计算所述外接矩形中属于包裹的包裹区域;根据计算得到的所述包裹区域计算包裹高度,并将计算得到的所述包裹高度发送给所述机械臂,所述机械臂根据所述包裹高度放置包裹,进而能够有效地在机械臂无序抓取系统中实现对包裹高度的测量,且无需额外的相机标定等步骤,便于部署,且可满足工业系统对实时性的要求。
[0092]
在一个实施例中,步骤s500:遍历所述外接矩形中的像素并计算所述外接矩形中属于包裹的包裹区域;具体包括:
[0093]
步骤s510:自所述外接矩形的最左下开始遍历所述外接矩形中的像素,并将遍历到的第一个有效像素压入遍历栈与包裹区域保存栈中;
[0094]
本步骤中,先开始该处理流程,然后构建一个用于遍历求取深度图中属于包裹的像素的栈。
[0095]
接着,在外接矩形范围内自下而上、自左向右地遍历矩阵m1,直至找到第一个值为255的元素,该元素即为第一个有效像素。故将该元素以行号,列号的形式压入遍历栈中,以便在深度图以及创建的各矩阵中找到对应位置的元素。
[0096]
同时构建与原深度图大小一致的矩阵m2,其中的元素均赋值为0。将此时栈顶的元素在m2中对应位置的元素置1。
[0097]
步骤s520:不断弹出遍历栈的栈顶像素,并对所述栈顶像素作是否压栈判断,若判断为是,则将对应的所述栈顶像素压入遍历栈与包裹区域保存栈中;其中,所述是否压栈判断为:判断栈顶像素在矩阵m2中对应位置的元素是否为0,以跳过已被遍历过的邻元素;
[0098]
判断所述栈顶像素的所处位置是否超出外接矩形区域r1的范围,以跳过不在r1内的邻元素;
[0099]
判断所述栈顶像素在深度图中对应的像素值与当前弹出的栈顶元素在深度图中对应的像素值之差的绝对值是否小于一个指定的阈值,以跳过在欧式空间中与当前遍历元素距离过大的邻元素;当三者均判断为是时,则判断栈顶像素可作压栈;
[0100]
其中,矩阵m2为与所述深度图大小一致的矩阵,矩阵m2中的元素均赋值为0。
[0101]
由于获取的深度图中可能会出现机械臂抓手与包裹粘连的情况,故需将深度图中属于包裹的区域与属于机械臂的区域进行分离。
[0102]
进一步地,当三者均判断为是时,则判断栈顶像素可作压栈,即将对应的所述栈顶像素压入遍历栈与包裹区域保存栈中,以供接下来对它们的邻元素进行判断。同时,将满足条件的邻元素压入一个用于记录包裹区域的栈中,以记录属于包裹区域的像素,供后续处理。同时,返回步骤s520中的不断弹出遍历栈的栈顶像素。
[0103]
在一个实施例中,步骤s520:不断弹出遍历栈的栈顶像素,并对所述栈顶像素作是否压栈判断,具体包括:
[0104]
首先,开始处理遍历栈中的元素,接着,判断遍历栈是否为空,若遍历栈非空,则弹
出遍历栈的栈顶元素,对该元素在深度图中的上邻、左邻以及右邻元素进行判断,该判断即为上述是否压栈判断。
[0105]
在一个实施例中,步骤s600:根据计算得到的所述包裹区域计算包裹高度,并将计算得到的所述包裹高度发送给所述机械臂,所述机械臂根据所述包裹高度放置包裹;具体包括:
[0106]
步骤s610:不断弹出所述包裹区域保存栈中的像素,并基于深度相机内参恢复每个弹出的像素对应的空间点在相机坐标系中的坐标;
[0107]
具体地,通过基于深度相机内参恢复每个弹出的像素对应的空间点在相机坐标系中的坐标,方便后续计算三阶特征矩阵,进而计算包裹高度。
[0108]
步骤s620:根据每个弹出的像素对应的空间点在相机坐标系中的坐标计算包裹区域内所有空间点坐标的三阶特征矩阵,并计算得到三阶特征矩阵特征的三个特征向量,并基于向量乘法筛选获取与相机坐标系y轴平行度最高的特征向量;
[0109]
步骤s630:根据获取的与相机坐标系y轴平行度最高的特征向量计算得到的所述包裹区域计算包裹高度,并将计算得到的所述包裹高度发送给所述机械臂,所述机械臂根据所述包裹高度放置包裹。
[0110]
在一个实施例中,步骤s610:不断弹出所述包裹区域保存栈中的像素,并基于深度相机内参恢复每个弹出的像素对应的空间点在相机坐标系中的坐标;具体包括:
[0111]
步骤s611:基于包裹区域保存栈中的像素,判断包裹区域保存栈是否为空;
[0112]
步骤s611:若判断为是,则弹出所述包裹区域保存栈中的像素;
[0113]
具体地,判断为是,为判断包裹区域保存栈是为空,则弹出所述包裹区域保存栈中的像素。
[0114]
步骤s611:基于深度相机内参按照以下公式恢复每个弹出的像素对应的空间点在相机坐标系中的坐标:
[0115][0116]
其中,f
x
与fy为相机的焦距,p
x
与py为相机原点在成像平面上的坐标。
[0117]
在一个实施例中,步骤s620:根据每个弹出的像素对应的空间点在相机坐标系中的坐标计算包裹区域内所有空间点坐标的三阶特征矩阵,并计算得到三阶特征矩阵特征的三个特征向量,并基于向量乘法筛选获取与相机坐标系y轴平行度最高的特征向量;具体包括:
[0118]
步骤s621:根据每个弹出的像素获取弹出的像素的坐标与弹出的像素对应的空间点之间的关系,关系如下:
[0119]
其中,c为像素,t为像素c在相机坐标系中对应的空间点;
[0120]
具体地,如图3所示,本步骤中,对于图像中的一个像素c,其在相机坐标系中对应
的空间点为t。
[0121]
根据深度相机内参矩阵k,可得像素c的坐标与其对应的空间点t的坐标之间的关系,即为上述公式。
[0122]
步骤s622:恢复得到当前弹出的栈顶元素i所对应空间点的坐标(xi,yi,zi)后,将其加入整个包裹区域的特征矩阵中,并基于以下公式计算三阶特征矩阵m3:
[0123]
恢复得到当前弹出的栈顶元素i所对应空间点的坐标(xi,yi,zi)后,将其加入整个包裹区域的特征矩阵中。
[0124][0125]
其中,xx为栈中所有元素的x轴坐标平方之和,yy为栈中所有元素的y轴坐标平方之和,zz为栈中所有元素的z轴坐标平方之和,xy为栈中所有元素的x轴坐标与y轴坐标乘积之和,xz为栈中所有元素的x轴坐标与z轴坐标乘积之和,yz为栈中所有元素的y轴坐标与z轴坐标乘积之和,x为栈中所有元素的x轴坐标之和,y为栈中所有元素的y轴坐标之和,z为栈中所有元素的z轴坐标之和,n为栈中元素个数之和;
[0126]
步骤s623:计算得到三阶特征矩阵特征的三个特征向量,并基于向量乘法筛选获取与相机坐标系y轴平行度最高的特征向量。
[0127]
在一个实施例中,步骤s623:计算得到三阶特征矩阵特征的三个特征向量,并基于向量乘法筛选获取与相机坐标系y轴平行度最高的特征向量,具体包括:
[0128]
首先,判断当前弹出的栈顶元素是否为深度图中包裹区域内最上最左的像素p
top_left
或最下最右的像素p
bottom righ t

[0129]
初始时,设p
top_left
的行号深度图最下一行,列号为深度图最右一列;设p
bottom riah t
p
rioh t bottom
的行号为深度图最上一行,列号为最左一列。
[0130]
每次弹出栈顶元素时,都将弹出的元素与p
top_left
和p
bottom nrih t
进行比较,动态地修改这两个值,以求得包裹区域内最上最左像素的坐标以及最下最右像素的坐标。
[0131]
接着,返回步骤步骤s611。
[0132]
若包裹区域栈中的元素均已被弹出,则开始计算特征矩阵m3的特征向量。将求得的三个特征向量分别与代表相机坐标系y轴的向量(0,1,0)
t
相乘,筛选得到乘积绝对值最大的特征向量v1。得到乘积绝对值最大的特征向量v1即为与相机坐标系y轴平行度最高的特征向量,进而以这样的方法来确定特征向量中与相机坐标系y轴最平行的一个。
[0133]
在一个实施例中,步骤s630:根据获取的与相机坐标系y轴平行度最高的特征向量计算得到的所述包裹区域计算包裹高度,并将计算得到的所述包裹高度发送给所述机械臂,所述机械臂根据所述包裹高度放置包裹;具体包括以下步骤:
[0134]
首先,如图4所示,其中va、vb和vc为所求m3的三个特征向量。对于这三个向量中的每一个向量,都进行如下操作:
[0135][0136]
其中abs为绝对值计算,xv、yv和zv为当前使用特征向量中的3个元素。
[0137]
以图4为例,求得n值最大的向量为vb,记vb为v1。
[0138]
接着,通过步骤s623中描述的方法恢复pto
p_left
与p
bottom rih t
对应空间点的坐标,求得这两个空间点在相机坐标系中连接构成的向量v2。
[0139]
进一步地,p
top_left
对应图4中的p1,p
top-left
对应图4中的p2,所求向量v2即为图4中连接p1与p2的虚线。
[0140]
然后,依据空间几何的规律,v2在v1上的投影长度即为所需的包裹高度。求取v1与v2的内积,取绝对值,即求得包裹高度h:
[0141]
h=abs(v1·
v2)#(3-5)
[0142]
将求得的包裹高度h返回给机械臂系统,以指引机械臂精确放置包裹。
[0143]
在一个实施例中,如图5所示,一种无序抓取系统中的包裹高度测量装置,所述装置包括:
[0144]
深度图获取模块,用于获取深度相机和机械臂按照特定设定位置排布后的工作状态时的深度图;
[0145]
分割处理模块,用于基于预设的矩形区域对所述深度图作分割处理,并保留所述矩形区域内的图像;
[0146]
像素遍历模块,用于遍历所述矩形区域内的像素,并基于深度相机的特性去除所述矩形区域内的无效像素和背景像素;
[0147]
提取处理模块,用于对所述深度图作轮廓提取处理,并在作最大轮廓筛选后获取最大轮廓的外接矩形;
[0148]
像素计算模块,用于遍历所述外接矩形中的像素并计算所述外接矩形中属于包裹的包裹区域;
[0149]
包裹高度计算模块,用于根据计算得到的所述包裹区域计算包裹高度,并将计算得到的所述包裹高度发送给所述机械臂,所述机械臂根据所述包裹高度放置包裹。
[0150]
在一个实施例中,所述像素计算模块包括:
[0151]
区域保存模块,用于自所述外接矩形的最左下开始遍历所述外接矩形中的像素,并将遍历到的第一个有效像素压入遍历栈与包裹区域保存栈中;
[0152]
像素弹出模块,用于不断弹出遍历栈的栈顶像素,并对所述栈顶像素作是否压栈判断,若判断为是,则将对应的所述栈顶像素压入遍历栈与包裹区域保存栈中;其中,所述是否压栈判断为:判断栈顶像素在矩阵m2中对应位置的元素是否为0,以跳过已被遍历过的邻元素;
[0153]
判断所述栈顶像素的所处位置是否超出外接矩形区域r1的范围,以跳过不在r1内的邻元素;
[0154]
判断所述栈顶像素在深度图中对应的像素值与当前弹出的栈顶元素在深度图中对应的像素值之差的绝对值是否小于一个指定的阈值,以跳过在欧式空间中与当前遍历元素距离过大的邻元素;当三者均判断为是时,则判断栈顶像素可作压栈;
[0155]
其中,矩阵m2为与所述深度图大小一致的矩阵,矩阵m2中的元素均赋值为0。
[0156]
在一个实施例中,所述包裹高度计算模块包括:
[0157]
空间点获取模块,用于不断弹出所述包裹区域保存栈中的像素,并基于深度相机内参恢复每个弹出的像素对应的空间点在相机坐标系中的坐标;
[0158]
特征矩阵计算模块,用于根据每个弹出的像素对应的空间点在相机坐标系中的坐标计算包裹区域内所有空间点坐标的三阶特征矩阵,并计算得到三阶特征矩阵特征的三个特征向量,并基于向量乘法筛选获取与相机坐标系y轴平行度最高的特征向量;
[0159]
包裹放置模块,用于根据获取的与相机坐标系y轴平行度最高的特征向量计算得到的所述包裹区域计算包裹高度,并将计算得到的所述包裹高度发送给所述机械臂,所述机械臂根据所述包裹高度放置包裹;其中,所述空间点获取模块包括:
[0160]
判断模块,用于基于包裹区域保存栈中的像素,判断包裹区域保存栈是否为空;
[0161]
结果生成模块,用于若判断为是,则弹出所述包裹区域保存栈中的像素;
[0162]
第一公式计算模块,用于基于深度相机内参按照以下公式恢复每个弹出的像素对应的空间点在相机坐标系中的坐标:
[0163][0164]
其中,fx与fy为相机的焦距,px与py为相机原点在成像平面上的坐标;其中,所述特征矩阵计算模块包括:
[0165]
第二公式计算模块,用于根据每个弹出的像素获取弹出的像素的坐标与弹出的像素对应的空间点之间的关系,关系如下:
[0166][0167]
其中,c为像素,t为像素c在相机坐标系中对应的空间点;
[0168]
第三公式计算模块,用于恢复得到当前弹出的栈顶元素i所对应空间点的坐标(xi,yi,zi)后,将其加入整个包裹区域的特征矩阵中,并基于以下公式计算三阶特征矩阵m3:
[0169][0170]
其中,xx为栈中所有元素的x轴坐标平方之和,yy为栈中所有元素的y轴坐标平方之和,zz为栈中所有元素的z轴坐标平方之和,xy为栈中所有元素的x轴坐标与y轴坐标乘积之和,xz为栈中所有元素的x轴坐标与z轴坐标乘积之和,yz为栈中所有元素的y轴坐标与z
轴坐标乘积之和,x为栈中所有元素的x轴坐标之和,y为栈中所有元素的y轴坐标之和,z为栈中所有元素的z轴坐标之和,n为栈中元素个数之和;
[0171]
特征向量计算模块,用于计算得到三阶特征矩阵特征的三个特征向量,并基于向量乘法筛选获取与相机坐标系y轴平行度最高的特征向量。
[0172]
在一个实施例中,如图3所示,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述无序抓取系统中的包裹高度测量方法所述的步骤。
[0173]
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述无序抓取系统中的包裹高度测量方法所述的步骤。
[0174]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0175]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0176]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献