CN113731857B - 小包装药袋自动分拣系统及其控制方法 - Google Patents

小包装药袋自动分拣系统及其控制方法 Download PDF

Info

Publication number
CN113731857B
CN113731857B CN202111082712.9A CN202111082712A CN113731857B CN 113731857 B CN113731857 B CN 113731857B CN 202111082712 A CN202111082712 A CN 202111082712A CN 113731857 B CN113731857 B CN 113731857B
Authority
CN
China
Prior art keywords
point
points
polygon
vertex
grabbing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111082712.9A
Other languages
English (en)
Other versions
CN113731857A (zh
Inventor
沈志熙
汪知林
陈宇栋
徐赞林
王小清
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing University
Original Assignee
Chongqing University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chongqing University filed Critical Chongqing University
Priority to CN202111082712.9A priority Critical patent/CN113731857B/zh
Publication of CN113731857A publication Critical patent/CN113731857A/zh
Application granted granted Critical
Publication of CN113731857B publication Critical patent/CN113731857B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B07SEPARATING SOLIDS FROM SOLIDS; SORTING
    • B07CPOSTAL SORTING; SORTING INDIVIDUAL ARTICLES, OR BULK MATERIAL FIT TO BE SORTED PIECE-MEAL, e.g. BY PICKING
    • B07C5/00Sorting according to a characteristic or feature of the articles or material being sorted, e.g. by control effected by devices which detect or measure such characteristic or feature; Sorting by manually actuated devices, e.g. switches
    • B07C5/34Sorting according to other particular properties
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B07SEPARATING SOLIDS FROM SOLIDS; SORTING
    • B07CPOSTAL SORTING; SORTING INDIVIDUAL ARTICLES, OR BULK MATERIAL FIT TO BE SORTED PIECE-MEAL, e.g. BY PICKING
    • B07C5/00Sorting according to a characteristic or feature of the articles or material being sorted, e.g. by control effected by devices which detect or measure such characteristic or feature; Sorting by manually actuated devices, e.g. switches
    • B07C5/36Sorting apparatus characterised by the means used for distribution
    • B07C5/363Sorting apparatus characterised by the means used for distribution by means of air
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • G06T7/0004Industrial image inspection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/136Segmentation; Edge detection involving thresholding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10004Still image; Photographic image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30108Industrial image inspection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了一种小包装药袋自动分拣系统,包括XYZ三轴机械臂及其末端执行器系统、工业相机、上位机和控制单元,所述上位机中装载有图像处理程序,控制单元中编写有控制XYZ三轴机械臂及末端执行器系统的机械手控制程序;图像处理程序和机械手控制程序通信连接,图像处理程序将抓取点坐标发送给机械手控制程序,机械手执行相应的动作后将结果传送给图像处理程序。本发明小包装药袋自动分拣系统及其控制方法,其能快速准确的识别药袋轮廓并进行轮廓分割,并找到当前最适合抓取的药袋及抓取点位置,同时能准确抓放药袋并对每次抓放成功与否进行判断,保证了药袋抓取效率并杜绝了分拣错误。

Description

小包装药袋自动分拣系统及其控制方法
技术领域
本发明涉及自动化设备技术领域,特别涉及一种用于中药房的药包自动分拣系统及其控制方法。
背景技术
近年来小包装中药的市场占有率不断提高,但多数药房仍采用传统的人工方式对其进行调剂。造成这种矛盾的原因主要有两点:一是药品的特殊性导致;二是市场上小包装中药自动出配药产品达不到医院要求。小包装中药的调剂工作直接关乎患者的生命健康安全,不容半点差错;现有的小包装中药自动调剂产品,要么必须使用定制的药袋、添药环节繁琐,要么是半自动设备只能起到辅助作用,不能自主完成识别定位药袋及准确抓放药袋的工作。
发明内容
有鉴于此,本发明的目的是提供一种小包装药袋自动分拣系统及其控制方法,以解决小包装中药调剂中快速准确识别定位药袋及准确抓放药袋的技术问题。
本发明小包装药袋自动分拣系统,包括XYZ三轴机械臂和用于拍摄药袋图像的工业相机,
所述XYZ三轴机械臂的X轴和Y轴均为同步带直线模组,所述XYZ三轴机械臂的Z轴为活塞杆朝下的气缸;
所述小包装药袋自动分拣系统还包括用于取放药袋的末端执行器系统,所述末端执行器系统包括气流负压吸盘、真空发生器、第一电磁阀、第二电磁阀、正压气源和压力开关,所述气流负压吸盘设置在气缸的活塞杆上,气流负压吸盘、真空发生器、第一电磁阀和正压气源依次串联,所述气缸、第二电磁阀和正压气源依次串联,所述压力开关设置在连接气流负压吸盘和真空发生器的管路上;
所述小包装药袋自动分拣系统还包括与工业相机连接的上位机,所述上位机中装载有图像处理程序;
所述小包装药袋自动分拣系统还包括控制单元,控制单元中编写有控制XYZ三轴机械臂及末端执行器系统的机械手控制程序;
所述图像处理程序和机械手控制程序通信连接,图像处理程序将抓取点坐标发送给机械手控制程序,机械手执行相应的动作后将结果传送给图像处理程序。
进一步,所述图像处理程序在被执行时实现以下步骤:
1)对工业相机输入的图像进行预处理;
2)对预处理后的图像进行轮廓提取;
3)对提取的轮廓进行拟合得到多边形轮廓;
4)判断多边形轮廓的面积是否大于设定的阈值,若比阈值小则代表分拣平台上无药袋,处理结束;若比阈值大则对多边形轮廓各顶点的凹凸性进行判断;
5)根据多边形轮廓顶点的凹凸性分割药袋,在两相邻凹顶点之间分割出的一个药袋;
6)计算药袋轮廓的边长得到当前最适合抓取的药袋;
7)获取当前最适合抓取药袋的抓取点在像素坐标系中的坐标;
8)将抓取点在像素坐标系中的坐标转换为在机械手坐标系中的坐标,并将转换后的坐标发送给机械手控制程序。
进一步,所述步骤1)对工业相机输入的图像进行预处理包括对工业相机采集的图像依次进行灰度化、中值滤波、二值化处理、闭操作和开操作;
所述步骤2)对预处理后的图像进行轮廓提取包括确定轮廓的边界点和寻找下一个轮廓点;
所述确定轮廓的边界点包括以下步骤:
a)将二值图像中灰度值为0和1的像素分别称为0像素点和1像素点,第i行、j列的像素点记为(i,j),用f[i][j]表示该点的灰度值则有:
Figure BDA0003264379500000031
b)逐行扫描二值图像,扫描过程中遇到1像素时统计该点在其8连通方向和4连通方向上1像素点的个数,分别用num_8和num_4表示,则有:
Figure BDA0003264379500000032
c)判断边界点情况:
(1)若1<num_8[i][j]<4,则该点为边界点,令f[i][j]=1;
(2)若3<num_8[i][j]<8,继续判断num_4[i][j]的值,若num_4[i][j]≠4则该点为边界点,令f[i][j]=1;
(3)情况(1)和情况(2)外的其它情况,该点不是边界点,令f[i][j]=0;
d)去除步骤c)获得的图像边界点中的干扰点:首先定义以下变量
Figure BDA0003264379500000033
Figure BDA0003264379500000034
Figure BDA0003264379500000035
Figure BDA0003264379500000036
Figure BDA0003264379500000037
Figure BDA0003264379500000038
接着按以下步骤排除干扰点:
Step1:逐行扫描过程遇到num_a[i][j]=4的像素点执行Step2,否则执行Step6;
Step2:若num_b[i][j]=num_down[i][j],则该点的上一行两点是伪边界点,令f[i][j]=0,f[i][j+1]=0;
Step3:若num_b[i][j]=num_up[i][j],则该点的下一行两点是伪边界点,令f[i+1][j]=0,f[i+1][j+1]=0;
Step4:若num_b[i][j]=num_left[i][j],则该点的右侧一行两点是伪边界点,令f[i+1][j]=0,f[i+1][j+1]=0;
Step5:若num_b[i][j]=num_right[i][j],则该点的左侧一行两点是伪边界点,令f[i][j]=0,f[i][j+1]=0;
Step6:该点处理结束,继续处理下一个点;
所述寻找下一个轮廓点包括以下步骤:
Step1:按逐行扫描方式对图像进行扫描,将找到的第一个轮廓点记为p0,按设定的扫描方向dir在该轮廓点的8邻域中寻找下一个边界点;当f[i][j]=1时记录扫描方向,令pre_dir=dir,f[i][j]=0,并且将该点的位置记作p_next;
Step2:在p_next点处,按照相同的扫描方向dir扫描其8邻域,权重wei为某点8邻域中1像素点的个数,当某点满足f[i][j]=1并且wei[i][j]=2,则该点为下一个选择点,否则继续;当dir=pre_dir并且f[i][j]=1,则该点是下一个选择点,否则选择第一个f[i][j]=1的点,记录该点的位置p_now和方向dir,并且令f[i][j]=0;
Step3:若p_now=p0,轮廓扫描结束,转到Step1,继续扫描另一个区域,将找到的第一个边界点记为p1
Step4:若p_now≠p0,令p_next=p_now,pre_dir=dir继续执行第二步;
Step5:如果二值图像中找不到任何1像素点,则轮廓跟踪结束;
所述步骤3)对提取的轮廓进行拟合得到多边形轮廓包括以下步骤:
Step1:获取轮廓曲线上曲率最大的点,该点将曲线分成两段,两段都有对应的点序列,分别对每一段进行处理;
Step2:记Li为第一段曲线上的点,下标i=1,2,……,n-1,输入第一段曲线上的n点的坐标;
Step3:设A=L0,B=Ln-1,连接AB生成栈S,将B点入栈;
Step4:在AB之间寻找距离两点连线最远的点,记为C,该点到AB连线的距离记为d;
Step5:判断d与阈值的大小关系,若比阈值大,则B=C,并将C加入特征点序列入栈,重新连接AB,回到Step4;反之,则执行Step6;
Step6:判断B是否与栈顶元素Sn-1相等,若不相等,则A=C、B=Sn-1,重新连接AB,回到Step4;反之,则执行Step7;
Step7:判断B的坐标是否与Ln-1相等,若相等,则A=B、B=Sn-2,重新连接AB,S执行一次出栈动作,回到Step4;
Step8:若栈为空,代表第一段曲线处理完成,对第二段线重复以上操作;
所述步骤4)判断多边形轮廓顶点的凹凸性包括以下步骤:
①判断多边形的方向:
先将多边形轮廓的n个顶点依次记为P1,P2,…,Pn,下标1至n为顶点的顺序号,其中的最左极点记为PL,最右极点记为PR,最上极点记为PU,最下极点记为PD,若某方向上存在多个极点,则按顶点顺序中第一个出现的点作为此方向上的极点,其中下标L、R、U和D分别为对应极点的顺序号;定义沿着顶点顺序行走在多边形轮廓上时,多边形轮廓所围成的有界区域总在左手侧,则称该多边形的方向为逆时针方向;定义沿着顶点顺序行走在多边形轮廓上时,多边形轮廓所围成的有界区域总在右手侧,则称该多边形的方向为顺时针方向;
然后由四个极点的顺序号中大小顺序判断多边形的方向,判断方法如下:
第一种情况,当PL,PR,PU和PD中不存在重叠点时,判断规则为:若L<U<R或者R<D<L,则多边形的方向为顺时针;若L<D<R或者R<U<L,则多边形的方向为逆时针;
第二种情况,当PL,PR,PU和PD中仅有两个点重叠时,判断规则为:若D<L<R或者L<R<D或者L<U<R,则多边形的方向为顺时针;若L>R>U或者U>L>R或者L>D>R,则多边形的方向也为顺时针;若U<L<R或者L<R<U或者L<D<R,则多边形的方向为逆时针,若L>R>D或者D>L>R或者R<U<L,则多边形的方向也为逆时针;
第三种情况,当PL,PR,PU和PD中仅有两对点重叠时,则去掉多边形的一个极点去掉,并将该极点后的顶点顺序号减1,然后再按照PL,PR,PU和PD中仅有两个点重叠的情况判断多边形的方向;
②定义交于某顶点的相邻两条边所形成的内角为小于180°,则称该顶点为凸顶点;定义交于某顶点的相邻两条边所形成的内角为大于180°,则称该顶点为凹顶点;所述的内角是指位于多边形轮廓所围成的有界区域内的角;
对于一个有n个顶点的多边形,判断其中顶点Pi的凹凸性的方法是:先将顶点Pi与其前一个顶点Pi-1、后一个顶点Pi+1组成一个三角形,再判断该三角形的方向,判断三角形方向的方法为:
当该三角形可视为仅有两个极点重叠时的多边形时,三角形方向的判定方法与判断多边形方向的第二种情况相同;
当该三角形可视为有两对极点重叠时的多边形时,先用直线连接着两对重叠极点,并将直线的中点视为PL或PR,然后再按照判断多边形方向的第二种情况判断该三角形的方向;
如果三角形方向与多边形的方向一致,则顶点Pi为凸顶点,是反之则是凹顶点;
所述步骤5)根据多边形轮廓顶点的凹凸性分割药袋:
记堆叠药包轮廓拟合后得到的多边形顶点依次为P1,P2,P3,…,PN;从P1点出发依次对各顶点的凹凸性进行判断,在两相邻凹顶点之间分割出的一个药袋;
所述步骤6)计算药袋轮廓的边长得到当前最适合抓取的药袋包括计算拟合得到多边形轮廓中分割后各药袋的边长和,将边长和最大的药袋视为与其它药袋的重叠面积最小,也就是当前最适合抓取的药袋;
所述步骤7)获取当前最适合抓取药袋的抓取点坐标包括先将当前最适合抓取的药袋还原成矩形,然后再找出药袋在拟合图像中的最长边的中点,再将该中点沿垂直于最长边方向向药袋内平移,平移距离为药袋宽度的五分之二,平移后的点为最终抓取点。
进一步,所述机械手控制程序在被执行时实现以下步骤:
1)在接收到图像处理程序发送的抓取点坐标时,控制XYZ三轴机械臂的X轴和Y轴将气流负压吸盘移动至抓取点的上方;
2)控制XYZ三轴机械臂的Z轴将气流负压吸盘下降至抓取点坐标上,并控制第一电磁阀接通真空气源;
3)等待设定长度时间段后,控制XYZ三轴机械臂的Z轴将气流负压吸盘上升,并控制X轴和Y轴将气流负压吸盘移动至放药点的上方;
4)通过检测压力开关的状态判断气流负压吸盘上是否吸附有药袋,若有则控制第一电磁阀断开与真空发生器连通的气路,使药包掉落到指定位置,本次分拣任务结束;若经判断气流负压吸盘上没有药袋,则向图像处理程序发送失败信息,等待接收新坐标继续抓取。
本发明的有益效果:
本发明小包装药袋自动分拣系统及其控制方法,其能快速准确的的识别药袋轮廓并进行轮廓分割,并找到当前最适合抓取的药袋及抓取点位置,同时能准确抓放药袋并对每次抓放成功与否进行判断,保证了药袋抓取效率并杜绝了分拣错误。
附图说明
图1为XYZ三轴机械臂和工业相机组合示意图;
图2为末端执行器系统的组成示意图;
图3为当前抓取药袋检测过程图;
图4为轮廓提取效果图;
图5为改进的道格拉斯普克-算法流程图;
图6为多边形极点的三种情况,图6(a)中四个极点互补重叠,图6(b)中只有两个极点重叠,图6(c)中有两对极点重叠;
图7为堆叠药袋分割效果图;
图8为单次图像处理过程图;
图9为单次抓取任务机械臂控制过程图。
具体实施方式
下面结合附图和实施例对本发明作进一步描述。
本实施例小包装药袋自动分拣系统包括XYZ三轴机械臂和用于拍摄药袋图像的工业相机。
所述XYZ三轴机械臂的X轴1和Y轴2均为同步带直线模组,所述XYZ三轴机械臂的Z轴3为活塞杆朝下的气缸,所述工业相机4设置在气缸的缸体上。
所述小包装药袋自动分拣系统还包括用于取放药袋的末端执行器系统,所述末端执行器系统包括气流负压吸盘5、真空发生器6、第一电磁阀7、第二电磁阀8、正压气源9和压力开关10,本实施例中正压气压具体为空气压缩机,所述气流负压吸盘设置在气缸的活塞杆上,气流负压吸盘、真空发生器、第一电磁阀和正压气源依次串联,所述气缸、第二电磁阀和正压气源依次串联,所述压力开关设置在连接气流负压吸盘和真空发生器的管路上。所述XYZ三轴机械臂用于驱动气流负压吸盘移动。
所述小包装药袋自动分拣系统还包括与工业相机连接的上位机,所述上位机中装载有图像处理程序。
所述小包装药袋自动分拣系统还包括控制单元,控制单元中编写有控制XYZ三轴机械臂及末端执行器系统的机械手控制程序。
所述图像处理程序和机械手控制程序通信连接,图像处理程序将抓取点坐标发送给机械手控制程序,机械手执行相应的动作后将结果传送给图像处理程序。
本实施例中,所述图像处理程序在被执行时实现以下步骤:
1)对工业相机输入的图像进行预处理;
2)对预处理后的图像进行轮廓提取;
3)对提取的轮廓进行拟合得到多边形轮廓;
4)判断多边形轮廓的面积是否大于设定的阈值,若比阈值小则代表分拣平台上无药袋,处理结束;若比阈值大则对多边形轮廓各顶点的凹凸性进行判断;
5)根据多边形轮廓顶点的凹凸性分割药袋,在两相邻凹顶点之间分割出的一个药袋;
6)计算药袋轮廓的边长得到当前最适合抓取的药袋;
7)获取当前最适合抓取药袋的抓取点在像素坐标系中的坐标;
8)将抓取点在像素坐标系中的坐标转换为在机械手坐标系中的坐标,并将转换后的坐标发送给机械手控制程序。
所述步骤1)对工业相机输入的图像进行预处理包括对工业相机采集的图像依次进行灰度化、中值滤波、二值化处理、闭操作和开操作。
所述步骤2)对预处理后的图像进行轮廓提取包括确定轮廓的边界点和寻找下一个轮廓点;
所述确定轮廓的边界点包括以下步骤:
a)将二值图像中灰度值为0和1的像素分别称为0像素点和1像素点,第i行、j列的像素点记为(i,j),用f[i][j]表示该点的灰度值则有:
Figure BDA0003264379500000091
b)逐行扫描二值图像,扫描过程中遇到1像素时统计该点在其8连通方向和4连通方向上1像素点的个数,分别用num_8和num_4表示,则有:
Figure BDA0003264379500000092
c)判断边界点情况:
(1)若1<num_8[i][j]<4,则该点为边界点,令f[i][j]=1;
(2)若3<num_8[i][j]<8,继续判断num_4[i][j]的值,若num_4[i][j]≠4则该点为边界点,令f[i][j]=1;
(3)情况(1)和情况(2)外的其它情况,该点不是边界点,令f[i][j]=0;
d)去除步骤c)获得的图像边界点中的干扰点:首先定义以下变量
Figure BDA0003264379500000101
Figure BDA0003264379500000102
Figure BDA0003264379500000103
Figure BDA0003264379500000104
Figure BDA0003264379500000105
Figure BDA0003264379500000106
接着按以下步骤排除干扰点:
Step1:逐行扫描过程遇到num_a[i][j]=4的像素点执行Step2,否则执行Step6;
Step2:若num_b[i][j]=num_down[i][j],则该点的上一行两点是伪边界点,令f[i][j]=0,f[i][j+1]=0;
Step3:若num_b[i][j]=num_up[i][j],则该点的下一行两点是伪边界点,令f[i+1][j]=0,f[i+1][j+1]=0;
Step4:若num_b[i][j]=num_left[i][j],则该点的右侧一行两点是伪边界点,令f[i+1][j]=0,f[i+1][j+1]=0;
Step5:若num_b[i][j]=num_right[i][j],则该点的左侧一行两点是伪边界点,令f[i][j]=0,f[i][j+1]=0;
Step6:该点处理结束,继续处理下一个点。
所述寻找下一个轮廓点包括以下步骤:
Step1:按逐行扫描方式对图像进行扫描,将找到的第一个轮廓点记为p0,按设定的扫描方向dir在该轮廓点的8邻域中寻找下一个边界点;当f[i][j]=1时记录扫描方向,令pre_dir=dir,f[i][j]=0,并且将该点的位置记作p_next;
Step2:在p_next点处,按照相同的扫描方向dir扫描其8邻域,权重wei为某点8邻域中1像素点的个数,当某点满足f[i][j]=1并且wei[i][j]=2,则该点为下一个选择点,否则继续;当dir=pre_dir并且f[i][j]=1,则该点是下一个选择点,否则选择第一个f[i][j]=1的点,记录该点的位置p_now和方向dir,并且令f[i][j]=0;
Step3:若p_now=p0,轮廓扫描结束,转到Step1,继续扫描另一个区域,将找到的第一个边界点记为p1
Step4:若p_now≠p0,令p_next=p_now,pre_dir=dir继续执行第二步;
Step5:如果二值图像中找不到任何1像素点,则轮廓跟踪结束。
在药袋堆叠情况下,采取由外而内的方式抓取,可将内轮廓舍去;并且在外围药袋抓取后,内部堆叠药袋的轮廓会逐渐显露出来,如此有利于提高抓取准确率,并降低图像轮廓跟踪难度。
所述步骤3)对提取的轮廓进行拟合得到多边形轮廓包括以下步骤:
Step1:获取轮廓曲线上曲率最大的点,该点将曲线分成两段,两段都有对应的点序列,分别对每一段进行处理;
Step2:记Li为第一段曲线上的点,下标i=1,2,……,n-1,输入第一段曲线上的n点的坐标;
Step3:设A=L0,B=Ln-1,连接AB生成栈S,将B点入栈;
Step4:在AB之间寻找距离两点连线最远的点,记为C,该点到AB连线的距离记为d;
Step5:判断d与阈值的大小关系,若比阈值大,则B=C,并将C加入特征点序列入栈,重新连接AB,回到Step4;反之,则执行Step6;
Step6:判断B是否与栈顶元素Sn-1相等,若不相等,则A=C、B=Sn-1,重新连接AB,回到Step4;反之,则执行Step7;
Step7:判断B的坐标是否与Ln-1相等,若相等,则A=B、B=Sn-2,重新连接AB,S执行一次出栈动作,回到Step4;
Step8:若栈为空,代表第一段曲线处理完成,对第二段线重复以上操作。
传统的D-P算法用递归实现耗时长,而且如果递归层次太深可能造成栈溢出。本实施例中使用改进的D-P算法能实现轮廓的快速拟合,获取目标物的多边形近似轮廓,借助栈数据结构实现D-P算法的分段处理,该算法以曲线的一端为起始点,将第一个点和最后一个点作改进的D-P算法处理范围,接下来比较最远点的距离与阈值的关系,以此简化线要素。但在拟合的过程如果阈值过大关键信息会丢失,导致抓取点定位不精准;如果阈值过小,则会导致后续处理的信息增加。本实施例采用的是迭代阈值法,即先设一个原始阈值,计算拟合各点之间的距离,如果存在距离较小的点则将阈值增大,继续进行拟合。
所述步骤4)判断多边形轮廓顶点的凹凸性包括以下步骤:
①判断多边形的方向:
先将多边形轮廓的n个顶点依次记为P1,P2,…,Pn,下标1至n为顶点的顺序号,其中的最左极点记为PL,最右极点记为PR,最上极点记为PU,最下极点记为PD,若某方向上存在多个极点,则按顶点顺序中第一个出现的点作为此方向上的极点,其中下标L、R、U和D分别为对应极点的顺序号;定义沿着顶点顺序行走在多边形轮廓上时,多边形轮廓所围成的有界区域总在左手侧,则称该多边形的方向为逆时针方向;定义沿着顶点顺序行走在多边形轮廓上时,多边形轮廓所围成的有界区域总在右手侧,则称该多边形的方向为顺时针方向;
然后由四个极点的顺序号中大小顺序判断多边形的方向,判断方法如下:
第一种情况,当PL,PR,PU和PD中不存在重叠点时,判断规则为:若L<U<R或者R<D<L,则多边形的方向为顺时针;若L<D<R或者R<U<L,则多边形的方向为逆时针;
第二种情况,当PL,PR,PU和PD中仅有两个点重叠时,判断规则为:若D<L<R或者L<R<D或者L<U<R,则多边形的方向为顺时针;若L>R>U或者U>L>R或者L>D>R,则多边形的方向也为顺时针;若U<L<R或者L<R<U或者L<D<R,则多边形的方向为逆时针,若L>R>D或者D>L>R或者R<U<L,则多边形的方向也为逆时针;
第三种情况,当PL,PR,PU和PD中仅有两对点重叠时,则去掉多边形的一个极点去掉,并将该极点后的顶点顺序号减1,然后再按照PL,PR,PU和PD中仅有两个点重叠的情况判断多边形的方向;
②定义交于某顶点的相邻两条边所形成的内角为小于180°,则称该顶点为凸顶点;定义交于某顶点的相邻两条边所形成的内角为大于180°,则称该顶点为凹顶点;所述的内角是指位于多边形轮廓所围成的有界区域内的角;
对于一个有n个顶点的多边形,判断其中顶点Pi的凹凸性的方法是:先将顶点Pi与其前一个顶点Pi-1、后一个顶点Pi+1组成一个三角形,再判断该三角形的方向,判断三角形方向的方法为:
当该三角形可视为仅有两个极点重叠时的多边形时,三角形方向的判定方法与判断多边形方向的第二种情况相同;
当该三角形可视为有两对极点重叠时的多边形时,先用直线连接着两对重叠极点,并将直线的中点视为PL或PR,然后再按照判断多边形方向的第二种情况判断该三角形的方向;
如果三角形方向与多边形的方向一致,则顶点Pi为凸顶点,是反之则是凹顶点。
所述步骤5)根据多边形轮廓顶点的凹凸性分割药袋:
从顶点P1出发依次对多边形轮廓的各顶点的凹凸性进行判断,在两相邻凹顶点之间分割出的一个药袋;
所述步骤6)计算药袋轮廓的边长得到当前最适合抓取的药袋包括计算拟合得到多边形轮廓中分割后各药袋的边长和,将边长和最大的药袋视为与其它药袋的重叠面积最小,也就是当前最适合抓取的药袋;
所述步骤7)获取当前最适合抓取药袋的抓取点坐标包括先将当前最适合抓取的药袋还原成矩形,然后再找出药袋在拟合图像中的最长边的中点,再将该中点沿垂直于最长边方向向药袋内平移,平移距离为药袋宽度的五分之二,平移后的点为最终抓取点。本步骤利用多边形轮廓顶点的凹凸性,巧妙的实现了对药袋进行分割,为准确的获得最终抓取点奠定了基础。
本实施例中所述机械手控制程序在被执行时实现以下步骤:
1)在接收到图像处理程序发送的抓取点坐标时,控制XYZ三轴机械臂的X轴和Y轴将气流负压吸盘移动至抓取点的上方;
2)控制XYZ三轴机械臂的Z轴将气流负压吸盘下降至抓取点坐标上,并控制第一电磁阀接通真空气源;
3)等待设定长度时间段后,控制XYZ三轴机械臂的Z轴将气流负压吸盘上升,并控制X轴和Y轴将气流负压吸盘移动至放药点的上方;
4)通过检测压力开关的状态判断气流负压吸盘上是否吸附有药袋,若有则控制第一电磁阀断开与真空发生器连通的气路,使药包掉落到指定位置,本次分拣任务结束;若经判断气流负压吸盘上没有药袋,则向图像处理程序发送失败信息,等待接收新坐标继续抓取。
通过设置压力开关对每次抓放药袋成功与否进行判断,保证了药袋分拣的正确性,杜绝了中药调剂出错的问题。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (2)

1.小包装药袋自动分拣系统,包括XYZ三轴机械臂和用于拍摄药袋图像的工业相机,其特征在于:
所述XYZ三轴机械臂的X轴和Y轴均为同步带直线模组,所述XYZ三轴机械臂的Z轴为活塞杆朝下的气缸;
所述小包装药袋自动分拣系统还包括用于取放药袋的末端执行器系统,所述末端执行器系统包括气流负压吸盘、真空发生器、第一电磁阀、第二电磁阀、正压气源和压力开关,所述气流负压吸盘设置在气缸的活塞杆上,气流负压吸盘、真空发生器、第一电磁阀和正压气源依次串联,所述气缸、第二电磁阀和正压气源依次串联,所述压力开关设置在连接气流负压吸盘和真空发生器的管路上;
所述小包装药袋自动分拣系统还包括与工业相机连接的上位机,所述上位机中装载有图像处理程序;
所述小包装药袋自动分拣系统还包括控制单元,控制单元中编写有控制XYZ三轴机械臂及末端执行器系统的机械手控制程序;
所述图像处理程序和机械手控制程序通信连接,图像处理程序将抓取点坐标发送给机械手控制程序,机械臂执行相应的动作后将结果传送给图像处理程序;
所述图像处理程序在被执行时实现以下步骤:
1)对工业相机输入的图像进行预处理;
2)对预处理后的图像进行轮廓提取;
3)对提取的外轮廓进行拟合得到多边形轮廓;
4)判断多边形轮廓的面积是否大于设定的阈值,若比阈值小则代表分拣平台上无药袋,处理结束;若比阈值大则对多边形轮廓各顶点的凹凸性进行判断;
5)根据多边形轮廓顶点的凹凸性分割药袋,在两相邻凹顶点之间分割出的一个药袋;
6)计算药袋轮廓的边长得到当前最适合抓取的药袋;
7)获取当前最适合抓取药袋的抓取点在像素坐标系中的坐标;
8)将抓取点在像素坐标系中的坐标转换为在机械臂坐标系中的坐标,并将转换后的坐标发送给机械手控制程序;
所述步骤1)对工业相机输入的图像进行预处理包括对工业相机采集的图像依次进行灰度化、中值滤波、二值化处理、闭操作和开操作;
所述步骤2)对预处理后的图像进行轮廓提取包括确定轮廓的边界点和寻找下一个轮廓点;
所述确定轮廓的边界点包括以下步骤:
a)将二值图像中灰度值为0和1的像素分别称为0像素点和1像素点,第i行、j列的像素点记为(i,j),用f[i][j]表示该点的灰度值则有:
Figure FDA0004086069920000021
b)逐行扫描二值图像,扫描过程中遇到1像素时统计该点在其8连通方向和4连通方向上1像素点的个数,分别用num_8和num_4表示,则有:
Figure FDA0004086069920000022
c)判断边界点情况:
(1)若1<num_8[i][j]<4,则该点为边界点,令f[i][j]=1;
(2)若3<num_8[i][j]<8,继续判断num_4[i][j]的值,若num_4[i][j]≠4则该点为边界点,令f[i][j]=1;
(3)情况(1)和情况(2)外的其它情况,该点不是边界点,令f[i][j]=0;
d)去除步骤c)获得的图像边界点中的干扰点:首先定义以下变量
Figure FDA0004086069920000023
Figure FDA0004086069920000031
Figure FDA0004086069920000032
Figure FDA0004086069920000033
Figure FDA0004086069920000034
Figure FDA0004086069920000035
接着按以下步骤排除干扰点:
Step1:逐行扫描过程遇到num_a[i][j]=4的像素点执行Step2,否则执行Step6;
Step2:若num_b[i][j]=num_down[i][j],则该点的上一行两点是伪边界点,令f[i][j]=0,f[i][j+1]=0;
Step3:若num_b[i][j]=num_up[i][j],则该点的下一行两点是伪边界点,令f[i+1][j]=0,f[i+1][j+1]=0;
Step4:若num_b[i][j]=num_left[i][j],则该点的右侧一行两点是伪边界点,令f[i+1][j]=0,f[i+1][j+1]=0;
Step5:若num_b[i][j]=num_right[i][j],则该点的左侧一行两点是伪边界点,令f[i][j]=0,f[i][j+1]=0;
Step6:该点处理结束,继续处理下一个点;
所述寻找下一个轮廓点包括以下步骤:
Step1:按逐行扫描方式对图像进行扫描,将找到的第一个轮廓点记为p0,按设定的扫描方向dir在该轮廓点的8邻域中寻找下一个边界点;当f[i][j]=1时记录扫描方向,令pre_dir=dir,f[i][j]=0,并且将该点的位置记作p_next;
Step2:在p_next点处,按照相同的扫描方向dir扫描其8邻域,权重wei为某点8邻域中1像素点的个数,当某点满足f[i][j]=1并且wei[i][j]=2,则该点为下一个选择点,否则继续;当dir=pre_dir并且f[i][j]=1,则该点是下一个选择点,否则选择第一个f[i][j]=1的点,记录该点的位置p_now和方向dir,并且令f[i][j]=0;
Step3:若p_now=p0,轮廓扫描结束,转到Step1,继续扫描另一个区域,将找到的第一个边界点记为p1
Step4:若p_now≠p0,令p_next=p_now,pre_dir=dir继续执行第二步;
Step5:如果二值图像中找不到任何1像素点,则轮廓跟踪结束;
所述步骤3)对提取的轮廓进行拟合得到多边形轮廓包括以下步骤:
Step1:获取轮廓曲线上曲率最大的点,该点将曲线分成两段,两段都有对应的点序列,分别对每一段进行处理;
Step2:记Li为第一段曲线上的点,下标i=0,1,2,……,n-1,输入第一段曲线上的n点的坐标;
Step3:设A=L0,B=Ln-1,连接AB生成栈S,将B点入栈;
Step4:在AB之间寻找距离两点连线最远的点,记为C,该点到AB连线的距离记为d;
Step5:判断d与阈值的大小关系,若比阈值大,则B=C,并将C加入特征点序列入栈,重新连接AB,回到Step4;反之,则执行Step6;
Step6:判断B是否与栈顶元素Sn-1相等,若不相等,则A=C、B=Sn-1,重新连接AB,回到Step4;反之,则执行Step7;
Step7:判断B的坐标是否与Ln-1相等,若相等,则A=B、B=Sn-2,重新连接AB,S执行一次出栈动作,回到Step4;
Step8:若栈为空,代表第一段曲线处理完成,对第二段线重复以上操作;
所述步骤4)中若比阈值大则对多边形轮廓各顶点的凹凸性进行判断,判断多边形轮廓顶点的凹凸性包括以下步骤:
①判断多边形的方向:
先将多边形轮廓的n个顶点依次记为P1,P2,…,Pn,下标1至n为顶点的顺序号,其中的最左极点记为PL,最右极点记为PR,最上极点记为PU,最下极点记为PD,若某方向上存在多个极点,则按顶点顺序中第一个出现的点作为此方向上的极点,其中下标L、R、U和D分别为对应极点的顺序号;定义沿着顶点顺序行走在多边形轮廓上时,多边形轮廓所围成的有界区域总在左手侧,则称该多边形的方向为逆时针方向;定义沿着顶点顺序行走在多边形轮廓上时,多边形轮廓所围成的有界区域总在右手侧,则称该多边形的方向为顺时针方向;
然后由四个极点的顺序号中大小顺序判断多边形的方向,判断方法如下:
第一种情况,当PL,PR,PU和PD中不存在重叠点时,判断规则为:若L<U<R或者R<D<L,则多边形的方向为顺时针;若L<D<R或者R<U<L,则多边形的方向为逆时针;
第二种情况,当PL,PR,PU和PD中仅有两个点重叠时,判断规则为:若D<L<R或者L<R<D或者L<U<R,则多边形的方向为顺时针;若L>R>U或者U>L>R或者L>D>R,则多边形的方向也为顺时针;若U<L<R或者L<R<U或者L<D<R,则多边形的方向为逆时针,若L>R>D或者D>L>R或者R<U<L,则多边形的方向也为逆时针;
第三种情况,当PL,PR,PU和PD中仅有两对点重叠时,则去掉多边形的一个极点,并将该极点后的顶点顺序号减1,然后再按照PL,PR,PU和PD中仅有两个点重叠的情况判断多边形的方向;
②定义交于某顶点的相邻两条边所形成的内角为小于180°,则称该顶点为凸顶点;定义交于某顶点的相邻两条边所形成的内角为大于180°,则称该顶点为凹顶点;所述的内角是指位于多边形轮廓所围成的有界区域内的角;
对于一个有n个顶点的多边形,判断其中顶点Pi的凹凸性的方法是:先将顶点Pi与其前一个顶点Pi-1、后一个顶点Pi+1组成一个三角形,再判断该三角形的方向,判断三角形方向的方法为:
当该三角形可视为仅有两个极点重叠时的多边形时,三角形方向的判定方法与判断多边形方向的第二种情况相同;
当该三角形可视为有两对极点重叠时的多边形时,先用直线连接着两对重叠极点,并将直线的中点视为PL或PR,然后再按照判断多边形方向的第二种情况判断该三角形的方向;
如果三角形方向与多边形的方向一致,则顶点Pi为凸顶点,反之则是凹顶点;
所述步骤6)计算药袋轮廓的边长得到当前最适合抓取的药袋包括计算拟合得到多边形轮廓中分割后各药袋的边长和,将边长和最大的药袋视为与其它药袋的重叠面积最小,也就是当前最适合抓取的药袋;
所述步骤7)获取当前最适合抓取药袋的抓取点在像素坐标系中的坐标包括先将当前最适合抓取的药袋还原成矩形,然后再找出药袋在拟合图像中的最长边的中点,再将该中点沿垂直于最长边方向向药袋内平移,平移距离为药袋宽度的五分之二,平移后的点为最终抓取点。
2.根据权利要求1所述的小包装药袋自动分拣系统,其特征在于:所述机械手控制程序在被执行时实现以下步骤:
1)在接收到图像处理程序发送的抓取点坐标时,控制XYZ三轴机械臂的X轴和Y轴将气流负压吸盘移动至抓取点的上方;
2)控制XYZ三轴机械臂的Z轴将气流负压吸盘下降至抓取点坐标上,并控制第一电磁阀接通真空气源;
3)等待设定长度时间段后,控制XYZ三轴机械臂的Z轴将气流负压吸盘上升,并控制X轴和Y轴将气流负压吸盘移动至放药点的上方;
4)通过检测压力开关的状态判断气流负压吸盘上是否吸附有药袋,若有则控制第一电磁阀断开与真空发生器连通的气路,使药包掉落到指定位置,本次分拣任务结束;若经判断气流负压吸盘上没有药袋,则向图像处理程序发送失败信息,等待接收新坐标继续抓取。
CN202111082712.9A 2021-09-15 2021-09-15 小包装药袋自动分拣系统及其控制方法 Active CN113731857B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111082712.9A CN113731857B (zh) 2021-09-15 2021-09-15 小包装药袋自动分拣系统及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111082712.9A CN113731857B (zh) 2021-09-15 2021-09-15 小包装药袋自动分拣系统及其控制方法

Publications (2)

Publication Number Publication Date
CN113731857A CN113731857A (zh) 2021-12-03
CN113731857B true CN113731857B (zh) 2023-04-25

Family

ID=78739191

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111082712.9A Active CN113731857B (zh) 2021-09-15 2021-09-15 小包装药袋自动分拣系统及其控制方法

Country Status (1)

Country Link
CN (1) CN113731857B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114310900B (zh) * 2022-01-11 2023-05-09 重庆智能机器人研究院 一种工业机器人视觉在线写绘和视觉涂胶算法
CN114952871B (zh) * 2022-08-01 2022-11-08 天津美腾科技股份有限公司 物块分拣系统及方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101987448B1 (ko) * 2018-11-27 2019-06-12 삼영플랜트주식회사 골재 이미지 분리 시스템 및 방법
CN111862244A (zh) * 2020-07-16 2020-10-30 安徽慧视金瞳科技有限公司 一种基于图像处理的塑料片智能色选方法
CN212238247U (zh) * 2020-08-25 2020-12-29 星猿哲科技(上海)有限公司 一种带柔性供料机构的机器人分拣系统
US10906188B1 (en) * 2019-10-25 2021-02-02 Dexterity, Inc. Singulation of arbitrary mixed items
CN112718585A (zh) * 2021-02-08 2021-04-30 重庆大学 一种废弃口罩智能识别分拣装置
CN112750107A (zh) * 2021-01-11 2021-05-04 齐鲁工业大学 基于轮廓边数拟合与凸包处理的球形工件识别方法及系统
CN112784717A (zh) * 2021-01-13 2021-05-11 中北大学 一种基于深度学习的管件自动分拣方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004160567A (ja) * 2002-11-11 2004-06-10 Fanuc Ltd 物品取出し装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101987448B1 (ko) * 2018-11-27 2019-06-12 삼영플랜트주식회사 골재 이미지 분리 시스템 및 방법
US10906188B1 (en) * 2019-10-25 2021-02-02 Dexterity, Inc. Singulation of arbitrary mixed items
CN111862244A (zh) * 2020-07-16 2020-10-30 安徽慧视金瞳科技有限公司 一种基于图像处理的塑料片智能色选方法
CN212238247U (zh) * 2020-08-25 2020-12-29 星猿哲科技(上海)有限公司 一种带柔性供料机构的机器人分拣系统
CN112750107A (zh) * 2021-01-11 2021-05-04 齐鲁工业大学 基于轮廓边数拟合与凸包处理的球形工件识别方法及系统
CN112784717A (zh) * 2021-01-13 2021-05-11 中北大学 一种基于深度学习的管件自动分拣方法
CN112718585A (zh) * 2021-02-08 2021-04-30 重庆大学 一种废弃口罩智能识别分拣装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
章林 ; 李雨 ; 秦博东 ; 商德勇 ; .基于视觉的并联机器人药袋分拣系统设计.机床与液压.2019,(第09期),第68-71页. *

Also Published As

Publication number Publication date
CN113731857A (zh) 2021-12-03

Similar Documents

Publication Publication Date Title
CN113731857B (zh) 小包装药袋自动分拣系统及其控制方法
CN111633633B (zh) 具有自动化物体检测机构的机器人系统及其操作方法
US10933527B2 (en) Robotic system with enhanced scanning mechanism
CN110580725A (zh) 一种基于rgb-d相机的箱体分拣方法及系统
US20230108488A1 (en) Method and system for grasping an object
Eppner et al. Grasping unknown objects by exploiting shape adaptability and environmental constraints
EP3866113A1 (en) Image segmentation methods and apparatus
CN116494253B (zh) 目标物体抓取位姿获取方法及机器人抓取系统
US20230039581A1 (en) Systems and methods for object detection
CN116061187B (zh) 一种复合机器人对货架商品识别、定位和抓取方法
CN111428815A (zh) 一种基于Anchor angle机制的机械臂抓取检测方法
CN114694134A (zh) 一种基于深度相机点云数据的托盘识别和定位方法
CN112907668A (zh) 垛型中组垛箱体的识别方法、装置及机器人
JP7408107B2 (ja) 物体取り扱いを伴うロボットシステムのためのシステム及び方法
JP7398763B2 (ja) 重なり処理機構を備えたロボットシステム及びその操作方法
CN115463845B (zh) 一种基于动态包裹下的识别抓取方法
CN112818930B (zh) 一种堆垛箱体的识别方法及抓取位姿的确定方法
CN110103230B (zh) 抓取电子组件的方法及装置
CN116652974A (zh) 用于控制机器人抓取对象的控制单元和方法
CN114419126A (zh) 一种未知数量线状变形体拓扑状态识别和解缠方法
CN116551672A (zh) 用于具有物体处置能力的机器人系统的系统和方法
CN118015362A (zh) 一种适用于采摘机器人的水果识别方法和系统
CN115533895A (zh) 一种基于视觉的二指机械手工件抓取方法及系统
CN113989380A (zh) 基于eobl-ssa算法的多相机标定优化方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant