履带板¶
本文提供履带板工程的使用指导,该工程概览如下。
工件 |
正反扣摆放的履带板,无明显反光,无混料 |
载具 |
托盘 |
工作距离 |
1200~3000mm |
技术指标 |
识别定位精度:±5mm |
识别成功率:大于 99.9% |
|
视觉系统耗时:6s 以内 |
注解
本帮助文档在对工程进行相关介绍时,以带筋的一面朝上为正面朝上,不带筋、光滑的一面朝上为反面朝上。
工程介绍¶
下文将从适用场景、技术指标方面介绍履带板工程。
工程规划¶
布局¶
工作站布局¶
工作站布局如下图所示。
该工作站内的工作流程如下:
履带板由人工叉车输送到上料位置。
机器人向视觉系统发送拍照指令,对履带板进行拍照识别,然后视觉系统将履带板的位置信息发送给机器人。
机器人根据视觉系统给出的履带板位置信息对履带板进行抓取,并将履带板放置在二次定位台。
重复以上步骤,直至上料完成。
视觉系统硬件组成¶
推荐型号 |
说明 |
|
相机 |
LSR L |
推荐安装方式:Eye-to-Hand;工作距离:1200~3000mm |
工控机 |
标准机型,有 GPU (K-Q37MV-Q370) |
处理器:CPU I7-9700 |
内存:16G |
||
硬盘:256G SSD |
||
显卡:1050 TI |
||
WIFI 模块 |
机器人夹具¶
履带板工程常用夹具如下图所示。
夹具说明:
履带板工程常用夹具一般为磁吸式夹具。如果是刚性连接,对位姿识别的精度要求太高。磁吸式夹具在抓取方向存在缓冲,不仅可以允许抓取方向上存在一定的抓取偏差,同时可以在识别工件过程中,允许存在一些小角度的识别偏差。同时增大磁吸也可以降低对识别精度的要求。
夹具优点:
夹具在抓取方向存在缓存,可提升抓取成功率。
视觉相关¶
通信方式¶
推荐使用标准接口通信方式。
一、切换 Mech-Vision 配方 |
|||
机器人 -> 工控机 |
请求指令 |
Mech-Vision 工程编号 |
配方编号 |
103 |
Mech-Vision 工程列表中工程名左侧的数字 |
1~99 |
|
示例 |
103, 1, 2 |
||
工控机 -> 机器人 |
返回指令 |
状态码 |
|
103 |
1107:配方切换成功 1012:Mech-Vision 配方编号不存在 |
||
示例 |
103, 1107 |
二、启动 Mech-Viz 工程 |
|||
机器人 -> 工控机 |
请求指令 |
位姿类型 |
机器人位姿 |
201 |
0:不发送位姿 1:传入 Mech-Viz 的位姿为关节角及法兰位姿形式 2:机器人端自定义的关节角 |
机器人当前关节角及法兰位姿(若“位姿类型”为 1) |
|
示例 |
201, 1, 0, -20.632, -107.812, 0, -92.818, 0.003 |
||
工控机 -> 机器人 |
返回指令 |
状态码 |
|
201 |
2103:执行正常 2008:工程运行错误 …… |
||
示例 |
201, 2103 |
三、选择 Mech-Viz 分支 |
|||
机器人 -> 工控机 |
请求指令 |
分支步骤编号 |
出口号 |
203 |
该参数应为正整数,用于指定分支选择将在哪个步骤上进行 |
该参数为正整数,该参数用于指定工程将沿消息分支步骤的哪个出口运行。 |
|
示例 |
203, 1, 1 |
||
工控机 -> 机器人 |
返回指令 |
状态码 |
|
203 |
2105:执行正常 2018:无效的分支出口号 …… |
||
示例 |
203, 2105 |
四、获取规划路径(推荐) |
||||||
机器人 -> 工控机 |
请求指令 |
路径点类型 |
||||
205 |
1:路径点将以机器人关节角形式返回 2:路径点将以机器人工具位姿形式返回 |
|||||
示例 |
205, 1 |
|||||
工控机 -> 机器人 |
返回指令 |
状态码 |
是否发送完成 |
路径点数量 |
“视觉移动”位置 |
路径点 |
205 |
2100:执行正常 2007:路径规划失败 …… |
0:未发送完路径中的全部路径点 1:已发送完路径中的全部路径点 |
默认范围:0~20 若路径中含有 20 个以上个路径点,请多次执行该指令。 |
“视觉移动”步骤路径点在整个路径中的位置 |
物体位姿 标签 速度 |
|
示例 |
205, 2100, 1, 2, 2, 8.307, 15.163, -142.177, -2.775, -31.440, -96.949, 0, 64 |
五、获取视觉目标点(无 Mech-Viz 时使用,不推荐) |
||||||
机器人 -> 工控机 |
请求指令 |
Mech-Vision 工程编号 |
||||
102 |
Mech-Vision 工程列表中工程名左侧的数字 |
|||||
示例 |
102, 1 |
|||||
工控机 -> 机器人 |
返回指令 |
状态码 |
是否发送完成 |
TCP 数量 |
保留字段 |
视觉目标点 |
102 |
1100:执行正常 1102:无视觉结果 …… |
0:未完全发送 1:已完全发送 |
默认范围:0~20 |
该字段未使用,默认值为 0 |
物体位姿 标签 速度 |
|
示例 |
102, 1100, 1, 1, 0, 95.780, 644.567, 401.101, 91.120, -171.130, 180.0, 0, 0 |
关于标准接口通信的详细内容,可参考 标准接口通信 。
工程说明¶
该工程采用深度学习与多模板匹配相结合的方法,总体思路如下图所示。
采集图像: 用于获取履带板的彩色图、深度图。
实例分割: 通过深度学习算法,识别出图像中的履带板,并获得其像素级掩膜。
提取掩膜对应的点云并处理: 用于提取履带板掩膜所对应的点云,并进行点过滤、点云聚类、合并点云等处理。
3D 多模板匹配: 利用点云处理获得的履带板正、反两面的边缘点云模板,与原始点云进行匹配,获得更准确的抓取位姿。
位姿处理及排序: 用于对抓取位姿进行变换、排序。
输出结果: 将当前工程的结果发送给后台服务。
工程难点¶
该工程需要识别履带板的正反面。
履带板相互压叠,部分履带板点云缺失。
该工程对履带板的抓取顺序要求严格。
方案优点¶
该工程采用边缘匹配,可提升点云模板匹配的准确度。
该工程可准确识别出最上层无压叠的履带板。
该工程使用的夹具,可在抓取方向上设置缓冲,极大提升抓取成功率。
工程部署¶
注意事项¶
深度学习:
该工程自带的深度学习模型为 GPU 模型,如需在工程现场直接运行,需要选用带 GPU 的工控机。
现场运行该工程时,需要采集数据,重新训练深度学习模型。
特殊说明:
本工程适用于工件“正反扣”来料的场景。
如果来料场景只有反面朝上,可将多模板匹配替换为单模板匹配,并调整抓取位姿的排序逻辑。
参数调节建议¶
提取掩膜对应点云并处理¶
获取最高层点云 :需要保证能获取到最高层履带板的点云,同时减少下层非必要点云的输出。
2D 方法估计点云边缘 :工件垛高不同时,需设置不同的 2D 线宽像素(默认值为 15px)。当工件垛高较低(700mm 以下)时,基本不影响匹配效果;如果工件垛高较高,提取点云边缘宽度变化较大,有可能影响匹配效果,可以尝试不同高度设置不同的2D线宽像素解决。
如下图所示,左图为待提取边缘的点云,右图为提取的点云边缘。
3D 多模板匹配¶
3D 精匹配(多模板) :当履带板带筋一侧朝上为正面朝上,不带筋一侧朝上为反面朝上时,3D 多模板匹配过程中需注意如下事项:
需设置对应的 模板标签文件 ,对称性旋转轴选择 ROTATE_BY_Z 轴,对称角度步长设置为 180.0° 。
需优先保证抓取最上层未被遮挡工件时无偏差。对于被压叠较多的下层工件,由于点云缺失,所以允许存在抓取偏差。
需为正、反两面分别设置边缘点云模板。用 2D 方法提取带线宽的边缘模板的目的是保证履带板长边方向精度,而使用全模板匹配可能导致长边方向存在偏差。
若粗匹配偏差较大,无法通过精匹配做进一步优化时,建议优先调整粗匹配参数,使粗匹配偏差较小。粗匹配主要调整的参数有 体素长度 和 模板点云采样间隔 ,如示例工件,当模板点云采样间隔为 20mm 时,初始体素长度建议设置成 10 mm,然后可根据匹配效果上下微调,确定最终的体素长度。如果体素长度设置较小,很有可能会导致匹配偏差。
去除被压叠的物体 : 重叠比例阈值 不能设置太小,建议设置为 0.04。阈值太小会导致点云重叠的工件同时被滤除,如总共有两个工件,但两个工件存在点云交错,会导致两个工件位姿都会被过滤掉,无输出结果。
如下图所示,右图中白色点云为被过滤掉的存在压叠的工件。
位姿处理及排序¶
获取最高层位姿 :若最高层工件和下层工件(第二层、第三层等)同时存在正面工件,则只需保留较高的那一层的正面工件位姿,反面工件同理。主要原因是如果第一层、第二层均存在正面工件,同时对两层工件的位姿进行抓取排序会造成排序混乱。
正、反面工件根据位姿朝向排序:该步骤组合可通过输入较高一层工件反面的位姿,输出这一层工件里面需要优先抓取的工件。
因为工件摆放是有固定规律的,同层相邻工件之间为压叠状态,如同层有四个工件,左右方向为垛的长边方向,从左向右,第一个工件压叠第二个工件,第二个工件压叠第三个工件…… 所以左边第一个工件应该优先被抓取。
但是如果来料时工件的垛旋转了 180°,曾经在左边的第一个工件变成了右边的第一个工件,则此时右边第一个工件将被优先抓取。所以获取到同层反面工件后,只需根据工件朝向就可判断出应该按照哪个方向进行抓取排序。
正面和反面工件位姿合并后只输出最高无压叠的工件位姿:如果正、反面工件位姿合并后,只有一个位姿,直接输出即可;如果正、反面工件位姿合并后,有两个位姿,即正、反各一个工件,如果反面工件是最上层工件,按照压叠逻辑,反面工件位姿应该高于正面工件位姿,且超出一个筋的高度,否则正面工件应该在最上层。同时还需注意一些异常情况,如垛是倾斜状态,即一端高一端低时,可能导致抓取位姿排序出错。
数值运算 :反面工件的 Z 值减去近似的筋的高度。