方案使用进阶
本节将对纸箱识别和纸箱抓取过程中的调试技巧和常见问题处理进行介绍。
纸箱识别
步骤详解
点云预处理并获取最高层纸箱
在彩色图中,下层纸箱会被显示出来,可能会导致最上层单个纸箱在整体图像中所占的像素比例过小,不利于深度学习分割单个纸箱,所以利用该步骤组合提取最高层纸箱的点云,并仅保留该层纸箱所在的彩色图区域。
处理流程如下图所示。
处理流程中各步骤组合包含的步骤如下表所示,下文将对重点步骤进行介绍。
步骤组合 | 步骤 |
---|---|
点云预处理 |
将深度图转换为点云、点云将采样、提取3D ROI内点云 |
获取最高层点云 |
点过滤、点云聚类、获取最高层彩色图 |
获取最高层点云对应的彩色图 |
将深度图转换为点云
从相机获取图像步骤输出的图像包括深度图和彩色图,在深度图中,每个像素都包含了场景内物体与相机的距离信息。为了方便对图像数据进行处理,首先需要将获取到的深度图转换为点云,点云将提供更加丰富和准确的几何信息,有利于视觉处理。
转换结果如下图所示,左图为获取到的纸箱深度图,右图为转换得到的点云。
点云降采样
由于相机采集到的原始点云点数较多,所以需将原始点云的密度降低,减少后续运算时间,提高视觉处理效率。
点云的降采样结果如下图所示,左图为原始点云(点云点数为 981601),右图为降采样后的点云(点云点数为 195087)。
提取3D ROI内点云
该步骤用于去除干扰点云,并判断 3D 感兴趣区域内纸箱点云点数是否为空。
-
去除干扰点云。
相机采集图像时,可能会采集除纸箱外的其他物体点云。为了提高处理效率,需设置感兴趣区域,其他物体点云去除,只保留纸箱点云,如下图所示。
-
判断感兴趣区域内纸箱点云点数是否为空。
设置感兴趣区域后,需统计被保留的点云点数,判断是否小于感兴趣区域内的最小点数。当点云点数小于最小点数时,Mech-Viz工程中的检查视觉结果步骤的触发无点云出口,代表拆垛完成。
当参数设置有误时,将导致以下问题。
问题 | 可能的原因 | 解决方法 |
---|---|---|
纸箱漏识别 |
ROI 范围过小,未获取到纸箱点云。 |
调整 ROI 的范围和位置。 |
纸箱吸取位置不正确 |
ROI 范围过小,获取纸箱点云不全。 |
增大 ROI 范围。 |
纸箱尺寸计算错误 |
ROI 范围过小,获取纸箱点云不全。 |
增大 ROI 范围。 |
未发送“拆垛完成”信号 |
ROI 范围过大。 |
ROI 内不应该包含除纸箱以外的其他物体点云,需重新调整 ROI。 |
点过滤、点云聚类
视觉处理过程中,点云会存在杂点,需使用点过滤和点云聚类步骤去除杂点,同时利用点云聚类步骤根据点云距离将点云进行分组,带颜色的点云为被保留的点云,相同颜色的点云划分为为同一组,其他杂点被滤除。
处理结果如下图所示,左图为去除杂点之前的点云,右图为去除杂点且聚类后的点云。
当参数设置有误时,将导致以下问题。
问题 | 可能的原因 | 解决方法 | 相关参数解释 |
---|---|---|---|
不同层纸箱分组错误 |
相机不是垂直安装,点过滤步骤未正确删除纸箱侧面点云。 |
需勾选使用机器人Z轴。 |
使用机器人 Z 轴:勾选该参数后,将使用机器人坐标系的 Z 轴正方向作为参考方向,计算点云法向与参考方向之间的角度差,并删除角度差超过限定值的点云。该功能适用于相机非垂直向下拍摄,并且需去除物体侧面点云的场景。 |
纸箱漏识别 |
点云聚类步骤中类的最小点数参数设置过大。 |
类的最小点数需略小于现场最小纸箱的点云点数。 |
类的最小点数:保留点云点数的下限,需小于最小物体点云点数;类的最大点数为保留点云点数的上限,需大于最大物体点云点数。 |
点云聚类步骤无输出结果 |
点云聚类步骤中的输出类中相邻点最大距离参数设置过小。 |
输出类中相邻点最大距离应大于点云采样的距离。 |
输出类中相邻点最大距离:接近该参数值的点将被划分为同一类,其他点则可能被分为不同的类别。通过调大该参数值,可增加点云之间的分组间隔;通过调小该参数值,会将距离相近的点分为不同的类别。 |
获取最高层点云、获取最高层点云对应的彩色图
-
获取最高层点云。
由于下层纸箱有可能被上层纸箱遮挡,存在纸箱误识别的可能,此处需通过获取最高层点云步骤根据纸箱的高度保留顶层纸箱,对顶层纸箱进行优先识别。
获取的最高层纸箱点云如下图(黄色部分)所示。
-
获取最高层点云对应的彩色图。
获取最高层纸箱点云后,还需获取最高层纸箱点云对应的彩色图。如下图所示,左图为原始彩色图,右图为获取的最高层彩色图。
当参数设置有误时,将导致以下问题。
问题 | 可能的原因 | 解决方法 | 相关参数解释 |
---|---|---|---|
获取到被压叠的纸箱 |
获取最高层点云步骤中层高参数设置过大。 |
层高需小于最高纸箱的高度。 |
距离最高层一定范围(层高)内的点云将被作为做高层纸箱点云。增大该参数,可提取到被压叠的纸箱;减小该参数,可能导致未被压叠的纸箱被漏识别。 |
未被压叠纸箱被漏识别 |
获取最高层点云步骤中层高参数设置过小。 |
层高需小于最低纸箱的高度。 |
同上 |
通过深度学习分割单个纸箱掩模
在视觉处理过程中,由于纸箱通常是紧密贴合的,难以准确地分割出单个纸箱,所以利用深度学习作为辅助,对紧密贴合的纸箱进行分割,从而更好的进行纸箱识别。处理流程如下图所示。
深度学习处理结果如下图所示。
计算纸箱位姿
使用深度学习获取单个纸箱掩膜后,即可计算纸箱位姿。
处理流程如下图所示。
该步骤组合中包含的步骤如下表所示,下文将对重点步骤进行介绍。
处理过程 | 步骤 |
---|---|
计算纸箱位姿前处理 |
验证箱型目标物体掩膜、提取掩膜中对应的点云、点云聚类并输出符合条件的点云 |
计算箱子尺寸和抓取点并进行结果验证 |
计算平面点云的位姿和尺寸、验证箱子尺寸是否有效 |
优化对称性,便于机器人抓取 |
正方形矩形校验 |
验证箱形目标物体掩膜
-
漏识别判断。
为了保证深度学习的准确性,需要对深度学习输出的掩膜进行验证,检查是否正确识别出所有的纸箱。
在该步骤中,需勾选所有箱子必须识别到,并设置剩余面积占标准箱子尺寸面积的百分比,计算未识别的掩膜面积占标准箱子表面积的百分比,以判断是否有纸箱未被识别。如果百分比小于 50%,则认为存在未被识别的纸箱,此时将不会输出掩膜。
-
矩形度校验。
在判断纸箱掩膜是否正确时,需要检查其是否为矩形形状。如果纸箱掩膜为非矩形,可能为纸箱破损或深度学习识别错误。为了避免后续位姿计算出现较大偏差,需删除矩形相似度较小的掩膜,确保后续处理过程的准确性和可靠性。
在该步骤中,需勾选所有箱子必须识别到,并根据实际情况设置最小矩形度阈值,用于校验矩形度。
纸箱抓取
步骤详解
初始化
在程序启动时,需要对视觉程序和机器人信号进行初始化,将吸盘的吹气和吸气信号停止,同时将抓取和放置任务的状态重置为空。
该步骤组合工作流程如下图所示。
-
重置抓取任务的目的:在Mech-Viz中,机器人抓取纸箱时会进入抓取状态,并禁止再次抓取。然而在实际生产中,机器人可能会在抓取纸箱时出现停止或恢复的情况。因此,在程序初始化时,需将抓取任务重置为空,以确保工程正常运行。
-
重置放置任务的目的:在Mech-Viz中,需将放置点设置为放置状态,与抓取状态形成抓放循环。同时,执行纸箱放置任务时,会在软件中生成纸箱模型,在程序初始化时,需清空纸箱模型,确保准确执行下一次抓取。