本发明涉及一种无序堆叠环境下药品盒子的自动分拣技术,具体涉及一种使用平面检测的自动分拣的方法。
背景技术:
自动分拣系统是先进配送中心所配备的重要设施之一。目前,国内外的大多数快递行业公司都配备有大型的自动分拣系统。这些自动分拣系统一般具有很高的分拣效率,自动分拣机是提高物流配送效率的一项关键因素。物流中心每天接收成百上千家供应商或货主通过各种运输工具送来的成千上万种商品,在最短的时间内将这些商品卸下并按商品品种、货主、储位或发送地点进行快速准确地分类,将这些商品运送到指定地点。自动分拣系统不受气候、时间、人的体力等限制,可以连续运行。同时,自动分拣系统每小时能处理的包装商品远远多于人工的处理量,而且分拣人员也不能在这种劳动强度下连续工作。因此,自动分拣系统的使用将会越来越广阔。
在一些小型的分拣现场,如普通的快递点、药品分配公司等,通常没有必要采用大型的自动分拣系统。一是地方小,不适合布置大型的分拣流水线;二是大型自动分拣系统造价十分昂贵。因此,这些分拣现场当前普遍采用人工分拣的方式,或者雇佣大量工人在一个小流水线旁进行分拣工作。近年来,随着居民消费水平的提高,人们网上购物越来越普遍,不断增长的包裹量对传统的人工分拣方式构成了严峻挑战。为了解决这些问题,迫切需要设计小型化的自动分拣系统。但是,不同于传统大型分拣设备识别传送带上一个个的物品的方式,小型自动分拣系统是分拣一个个堆叠在箱子里的物品。物体在箱中的位置、物体的姿态以及物体条码位置都是不确定的,这是设计堆叠环境下小型自动分拣系统的难点所在。
小型自动分拣系统一般由图像识别、抓取规划及检测分类等部分组成。
图像识别方面,有许多成熟的算法可以用来识别图像中物体的位置和姿态。第一种是基于霍夫变换的方法,这种方法由于需要匹配任意两点,因此时间复杂度较高,不能满足分拣系统的速度要求。第二种是基于模板匹配的方法,该方法预先得到物品图像的匹配模板,再对实际图像做匹配,可以得到物体的位置和姿态。但是这种方法存在两个问题,一个是对尺度变化敏感,一个是在遮挡情况下匹配效果变差。因此,在有堆叠环境下不能使用这种方法。第三种是是使用霍夫森林的办法,在第二种方法的基础上将模板分为多个部分,再通过随机森林来训练。该方法的匹配效果好,但是算法比较复杂。第四种是采用神经网络,其思路是输入图片,经过网络的学习,输出抓取点的位置和姿态。然而,使用该方法时,网络模型需要提前训练,而且该方法对电脑的配置要求较高。针对实际的应用场景,这些识别方法因为过于复杂而难以胜任,有些方法还要做前期工作,例如需要提前获取模板或者训练神经网络。因此,找到一种简单的识别方法应用于分拣场景是非常重要的。这种方法要求不用提前准备工作,而且要实现简单,准确率高,速度快。
抓取规划方面,针对包裹盒子状的物品,通常采用吸盘式的抓取方式。由于物品的位置和姿态都是不固定的,因此需要规划抓取时的机械手姿态。在这方面不同的机械手规划的方式不一样,但是都要调整姿态使得吸盘的朝向对准抓取面。这就需要用到旋转矩阵与欧拉角的计算,这方面的研究均已成熟。但是仅仅抓取物品是不够的,由于条码扫码的需要,在抓取之后还需要根据物品的轮廓信息对姿态进行矫正。
检测分类方面,目前大多数物品的商品信息采用条形码或者二维码来记录,而条码识别技术已经很成熟,例如超市收银台的扫码枪、高速收费口的嵌入式扫码器等。然而,在分拣的场景下,物品的条码位置是不确定的,有可能在任意面上,甚至可能被抓取的装置所遮挡,这对扫码条码的工作造成了一定的难度。之前的一些做法是扫描物体的一些面,如果没有扫到则重新抓取已扫过的面,对剩余的面再做一次扫描。另外一些做法则是将物品交给专门扫描条码的装置,再根据识别的信息重新抓取物品并进行后续的分类工作。这些做法普遍降低了条码识别和分类的效率,因此需要考虑对这些做法进行改进。
近年来,在堆叠环境下进行分拣这块领域取得了一定的发展。binpicking是机器人操作中的一类经典问题,也是本文中要解决的问题。把箱子中无序摆放的物体取出来分类,这对人类来说非常简单的一件事,但对于机器人自动化却是极具挑战性。箱子里的物体之间,物体和箱子之间存在大量的遮挡,这些遮挡一方面妨碍了对物体的感知,另一方面让机器人运动的碰撞检测变得很复杂。直到近几年来,伴随着计算机视觉和运动规划等学术界方面的进展,部分binpicking问题才开始出现稳定可靠的解决方案和商业化的可能,于是越来越多的机器人研究以binpicking作为背景,开始探索这方面技术落地的可能。一种实际的应用场景是在一些工厂的生产车间里,采用多摄像头系统来检测分拣箱中的物体,并且设计了专用的抓取装置来抓取零件。而零件的规格是统一的,只是散乱地堆叠在分拣箱中,因此不需要用到条码扫描系统。另一种应用场景比较简单,抓取一些规则形状的物品,依据颜色或者大小来分类。这些应用还比较简单,不能胜任更加复杂的堆叠情况。此外,在一项关于箱中物体分拣的亚马逊工业机器人挑战赛中,一些团队贡献了他们独特的分拣方案,例如使用多个相机捕捉物体并使用复杂的神经网络来得到物体的位置和姿态,再用机械手抓取并分类。这些都对自动分拣系统的进步起到了推动的作用,不过由于他们单次分拣的处理时间较长,而且分拣需要前期大量的建模训练等工作,因此还未能达到工业落地的需求。
本发明提出了一种使用平面检测的自动分拣的方法,其应用场景以盒状物体为主,例如快递包裹、药品、产品包装盒等。使用一个工业深度相机提取分拣箱中的物体的深度图像和点云,用于计算抓取点的位置和姿态。根据计算得到的抓取位置和姿态规划工业机器人的运动路径以及末端吸盘的姿态。当机械手抓取盒子后,使用全方位扫描条码的办法以快速识别物体并分类。由于该方法所需的分拣系统仅仅使用一个相机、一个机械手以及一套扫描条码的设备进行分拣,整套设备的成本低而且系统配置简单。
技术实现要素:
为了解决上述现有技术所存在的问题,本发明提供一种使用平面检测的自动分拣的方法。
本发明的目的至少通过如下技术方案之一实现。
一种使用平面检测的自动分拣的方法,包括以下步骤:
s1、使用工业深度相机获取当前待分拣区域即分拣箱中待分拣盒子的图像信息然后根据平面检测算法计算出抓取点的位置和姿态;
s2、根据抓取点位置和姿态对工业机器人做运动姿态规划;
s3、利用盒子的轮廓信息对抓取后的盒子的姿态做矫正,然后通过工业机器人末端的吸盘抓取盒子,将盒子放入扫码设备中进行扫码;
s4、使用全方位条码扫描的策略来对待扫描的盒子进行扫码,最终根据条码信息分类。
进一步地,步骤s1的具体步骤如下:
s1.1、使用工业深度相机获取分拣箱中的盒子图像,利用工业深度相机提供的接口,获得彩色图像、深度图像、点云图像;
s1.2、采用平面检测算法将点云图像图像进行网格划分,计算出每个网格是否为一个平面,将相互靠近而且平面参数接近的网格聚合在一起组成一个平面;
s1.3、计算出所有的聚合后的平面的中点,并将其视为抓取点,得到抓取点离分拣箱底部的高度h,比较各个抓取点的优先级,得出最佳的抓取点的位置和姿态即法向量。
进一步地,在步骤s2中,需要根据最佳的抓取点的位置及法向量计算工业机器人即机械手的运动轨迹和末端姿态,具体步骤如下:
s2.1、根据从相机坐标系到机械手坐标系的旋转矩阵和平移矩阵,将相机坐标系下的抓取点的坐标和法向量转化为机械手坐标系下的抓取点坐标和法向量。相机坐标系的原点设置在工业深度相机的中心,x轴沿着工业深度相机的长边方向,z轴取工业深度相机的视觉光轴。机械手坐标系的原点设置在工业机器人的基座底面的中心,x轴取底面的任意一边的方向,z轴垂直于底面,方向向上。旋转矩阵u和平移矩阵t是通过事先完成的标定步骤得到的。所述标定步骤为:获取一系列点分别在相机坐标系的坐标p和在机械手坐标系下的坐标q,通过奇异值分解求解方程q=u*p+t,得到旋转矩阵u和平移矩阵t。
从相机坐标系下的抓取点的坐标pcamera和法向量vcamera转换到机械手坐标系下的抓取点的坐标probot和法向量vrobot的公式为:
probot=u*pcamera+t
vrobot=u*vcamera
s2.2、根据机械手坐标系下的抓取点坐标规划机械手末端的运动轨迹;所述规划的机械手末端的运动轨迹为:首先,机械手末端到达抓取点上方的安全高度;然后,机械手末端下降,达到抓取点时停止;机械手末端的吸盘吸取物体后,机械手末端上升到安全高度;最后,机械手末端移动到扫码设备处;
s2.3、根据机械手坐标系下的法向量规划机械手的末端姿态。
进一步地,步骤s3的具体步骤如下:
s3.1、用最小外接矩形的算法,对聚合后所有的平面网格点用最小矩形进行包络,得到的矩形视为盒子的轮廓。
s3.2、取所得轮廓的一条边的方向向量作为矫正用的向量,并视为机械手末端坐标系的x轴或y轴;机械手末端坐标系的原点设置在机械手末端的吸盘处;步骤2中的机械手坐标系下的法向量视为机械手末端坐标系的z轴。
s3.3、抓取盒子时,机械手末端坐标系的x轴或y轴与盒子的一边朝向相同,达到姿态矫正的目的。
进一步地,在步骤s4中,需要对待扫描的盒子进行条码扫描得到盒子的信息,从而根据盒子的信息对盒子进行分类;为了提高条码扫描的效率,避免机械手末端做旋转或者重新抓取的动作,提出了全方位扫描条码的策略,这种策略是在待扫描条码的盒子的四周、下方以及斜上方分别用扫码器扫描,扫码器安装在扫码设备上。
进一步地,所述平面检测算法是将点云图像做网格划分,在每个网格中取三个以上的拟合点采用最小二乘法来拟合平面;再取3个及以上的检验点代入平面方程来检验误差。根据误差大小来判断网格是否为一个平面,并记录下该网格拟合的平面方程的参数。然后将相互靠近以及平面参数相近的网格采用并查的方法聚合成一个平面,由此得到一系列聚合后的平面及各平面的面积s,每个平面由一系列网格组成。
进一步地,判断抓取点的优先级时同时考虑了抓取点的位置高度以及抓取面的大小,公式如下:
其中σ表示抓取的优先级,其值越大表示越优先抓取;h表示抓取点离分拣箱底部的高度,hm表示深度相机到分拣箱底部的高度,s表示抓取点所在平面的面积,sm表示分拣箱底部的面积;ω1、ω2分别表示高度和面积的权重值,并且ω1+ω2=1,其中高度的权重ω1的取值区间为(0.8,1)。
进一步地,根据法向量求机械手末端姿态的方法是将法向量视为末端坐标系的z轴,同时再任取一条与法向量垂直的向量作为末端坐标系的x轴或y轴,即可得到末端坐标系在机械手坐标系下的表示,从而得到机械手坐标系到末端坐标系的旋转矩阵r:
其中[r11r21r31]t为步骤3所得的矫正用的向量的单位向量,[r13r23r33]t为步骤2所得的最佳抓取点所在的平面的单位法向量,剩下的[r12r22r32]t由[r11r21r31]t和[r13r23r33]t两个向量叉乘得到;
机械手的末端姿态表示为[rx,ry,rz],其中rx,ry,rz称为欧拉角,表示由机械手的坐标系分别绕其x轴、y轴、z轴旋转对应的角度得到机械手末端的坐标系,欧拉角的计算公式为:
此处的atan2(a,b)表示反正切函数,返回以弧度表示的a/b的反正切,a、b为参变量。
进一步地,当出现条码扫描失败的情况时,选择以下两种解决方案中的一种:第一种,将盒子重新放入分拣箱,重新抓取盒子的另一个面再进行条码扫描;第二种,统一将不能识别的盒子放入一个箱子,等待人工处理或者倒入分拣箱重新分拣。
进一步地,平面方程表示为ax+by+cz+d=0,其中a2+b2+c2=1,(a,b,c)为平面的单位法向量,d为相机坐标系原点到平面的距离。
本发明与现有技术相比,具有如下优点和有益效果:
1、本方法所需要的设备简单,主要由工业深度相机、机械臂和扫码设备组成,配置简单,成本低,适用于小型分拣场景。
2、本方法能提高分拣的处理速度以及条码的扫描识别效果。
附图说明
图1是使用一种使用平面检测的自动分拣的方法的自动分拣系统的示意图;
图2是一种使用平面检测的自动分拣的方法的流程图;
图3是平面检测算法的示意图;
图4是使用全方位条码扫描策略的扫码设备的结构示意图。
图中:工业深度相机1,分拣箱2,盒子3,吸盘4,工业机器人5,扫码设备6,扫码器的固定支架7,机械手末端8,扫码器9。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合附图和实施例,对本发明的具体实施进行详细说明。
实施例:
如图1所示,使用一种使用平面检测的自动分拣的方法的自动分拣系统包括工业深度相机1、分拣箱2、工业机器人5和扫码设备6,工业机器人的机械手末端8安装有吸盘4,扫码设备6包括扫码器的固定支架7和扫码器9。
一种使用平面检测的自动分拣的方法,如图2所示,包括以下步骤:
s1、使用工业深度相机1获取当前待分拣区域即分拣箱2中待分拣盒子3的图像信息然后根据平面检测算法计算出抓取点的位置和姿态,包括以下步骤:
s1.1、使用工业深度相机1获取分拣箱中2的盒子图像,利用工业深度相机1提供的接口,获得彩色图像、深度图像、点云图像;
s1.2、采用平面检测算法,如图3a所示,将点云图像图像进行网格划分,计算出每个网格是否为一个平面,将相互靠近而且平面参数接近的网格聚合在一起组成一个平面。所述平面检测算法是将点云图像做网格划分,在每个网格中取三个以上的拟合点采用最小二乘法来拟合平面,平面方程表示为ax+by+cz+d=0,其中a2+b2+c2=1,(a,b,c)为平面的单位法向量,d为相机坐标系原点到平面的距离。如图3b所示,再取3个及以上的检验点代入平面方程来检验误差。根据误差大小来判断网格是否为一个平面,并记录下该网格拟合的平面方程的参数。然后将相互靠近以及平面参数相近的网格采用并查的方法聚合成一个平面,由此得到一系列聚合后的平面及各平面的面积s,每个平面由一系列网格组成。
s1.3、计算出所有的聚合后的平面的中点,并将其视为抓取点,得到抓取点离分拣箱2底部的高度h,比较各个抓取点的优先级,得出最佳的抓取点的位置和姿态即法向量。
判断抓取点的优先级时同时考虑了抓取点的位置高度以及抓取面的大小,公式如下:
其中σ表示抓取的优先级,其值越大表示越优先抓取;h表示抓取点离分拣箱2底部的高度,hm表示深度相机到分拣箱2底部的高度,s表示抓取点所在平面的面积,sm表示分拣箱2底部的面积;ω1、ω2分别表示高度和面积的权重值,并且ω1+ω2=1,其中高度的权重ω1的取值区间为(0.8,1)。
s2、根据抓取点位置和姿态对工业机器人5做运动姿态规划,即根据最佳的抓取点的位置及法向量计算工业机器人5即机械手的运动轨迹和末端姿态,具体步骤如下:
s2.1、根据从相机坐标系到机械手坐标系的旋转矩阵和平移矩阵,将相机坐标系下的抓取点的坐标和法向量转化为机械手坐标系下的抓取点坐标和法向量。相机坐标系的原点设置在工业深度相机1的中心,x轴沿着工业深度相机1的长边方向,z轴取工业深度相机1的视觉光轴。机械手坐标系的原点设置在工业机器人5的基座底面的中心,x轴取底面的任意一边的方向,z轴垂直于底面,方向向上。旋转矩阵u和平移矩阵t是通过事先完成的标定步骤得到的。在本实施例中,所述事先完成的标定步骤为“基于奇异值分解的机器人工具坐标系标定”,所述标定步骤为:获取一系列点分别在相机坐标系的坐标p和机械手坐标系下的坐标q,通过奇异值分解求解方程q=u*p+t,得到旋转矩阵u和平移矩阵t。
从相机坐标系下的抓取点的坐标pcamera和法向量vcamera转换到机械手坐标系下的抓取点的坐标probot和法向量vrobot的公式为:
probot=u*pcamera+t
vrobot=u*vcamera
s2.2、根据机械手坐标系下的抓取点坐标规划机械手末端的运动轨迹;所述规划的机械手末端8的运动轨迹为:首先,机械手末端8到达抓取点上方的安全高度;然后,机械手末端8下降,达到抓取点时停止;机械手末端8的吸盘4吸取物体3后,机械手末端8上升到安全高度;最后,机械手末端8移动到扫码设备6处;
s2.3、根据机械手坐标系下的法向量规划机械手的末端姿态。根据法向量求机械手末端姿态的方法是将法向量视为末端坐标系的z轴,同时再任取一条与法向量垂直的向量作为末端坐标系的x轴或y轴,即可得到末端坐标系在机械手坐标系下的表示,从而得到机械手坐标系到末端坐标系的旋转矩阵r:
其中[r11r21r31]t为步骤3所得的矫正用的向量的单位向量,[r13r23r33]t为步骤2所得的最佳抓取点所在的平面的单位法向量,剩下的[r12r22r32]t由[r11r21r31]t和[r13r23r33]t两个向量叉乘得到;
机械手的末端姿态表示为[rx,ry,rz],其中rx,ry,rz称为欧拉角,表示由机械手坐标系分别绕其x轴、y轴、z轴旋转对应的角度得到机械手末端的坐标系,欧拉角的计算公式为:
此处的atan2(a,b)表示反正切函数,返回以弧度表示的a/b的反正切,a、b为参变量。
s3、利用盒子3的轮廓信息对抓取后的盒子3的姿态做矫正,然后通过工业机器人机械手末端8的吸盘4抓取盒子3,将盒子3放入扫码设备中进行扫码,具体步骤如下:
s3.1、用最小外接矩形的算法,对聚合后所有的平面网格点用最小矩形进行包络,得到的矩形视为盒子3的轮廓,本实施例中,所述最小外接矩形的算法为“利用重心原理的图像目标最小外接矩形快速算法”。
s3.2、取所得轮廓的一条边的方向向量作为矫正用的向量,并视为机械手末端坐标系的x轴或y轴;机械手末端坐标系的原点设置在机械手末端8的吸盘4处;步骤2中的机械手坐标系下的法向量视为机械手末端坐标系的z轴。
s3.3、抓取盒子3时,机械手末端坐标系的x轴或y轴与盒子的一边朝向相同,达到姿态矫正的目的。
s4、使用全方位条码扫描的策略来对待扫描的盒子3进行扫码,最终根据条码信息分类;待分拣的盒子3需要进行条码扫描得到盒子3的信息,从而根据盒子3的信息对盒子3进行分类;为了提高条码扫描的效率,避免机械手末端8做旋转或者重新抓取的动作,提出了全方位扫描条码的策略,这种策略是在待扫描条码的盒子的四周、下方以及斜上方分别用扫码器9扫描。
如图4所示,扫码器的固定支架7的底部设置为十字架状,十字架状底部的4条支段等长,在底部中心点处设置有一个扫码器9,底部十字架的4条支段的四个端点处接有等高的竖直立方柱,各竖直立方柱与连接的支段成90度,4条竖直立方柱的中点处各设置有一个扫码器9,4条竖直立方柱顶端接有等长的向内屈的平行立方柱,平行立方柱与其对应的竖直立方柱所连接的支段平行,在4个平行立方柱的末端设置有方向为斜向下的扫码器9。9个扫码器9和扫码器的固定支架7组成扫码设备6。
在进行条码扫描时,由机械手末端8处安装的吸盘4抓取待分拣的盒子3放入扫码设备6中,使待分拣的盒子3的四周正对着4条竖直立方柱中间的扫码器9。
当出现条码扫描失败的情况时,选择以下两种解决方案中的一种:第一种,将盒子3重新放入分拣箱2,重新抓取盒子3的另一个面再进行条码扫描;第二种,统一将不能识别的盒子3放入一个箱子,等待人工处理或者倒入分拣箱2重新分拣。