视觉

本章节将针对具体场景详细介绍视觉服务的配置过程。在进行视觉配置前,请先参见 连接机械臂,完成机械臂连接。

场景要求

纸箱单拆的场景采用 纸箱单拆 模板,该流图适用于紧密摆放、纹理未知、大小相同的纸箱识别,并码放到托盘上。

  • 使用3D相机的彩色图进行深度学习识别

  • 使用3D相机的点云图进行位姿计算

本章节描述的相关配置仅供参考,具体操作请以实际项目为准。

基本配置

配置前,请依次完成 新建项目添加容器,并使用拆码垛模板分类下的 纸箱单拆 模板创建视觉服务,请参见 创建流图。创建完成之后会在左上角生成节点树,如下图所示。

../../../_images/boxsindep.png

根据需求,依次配置这些模块。

步骤1. 配置相机模块 (请参见 连接相机。)

步骤2. 配置加载标定信息模块 (请参见 手眼标定。)

步骤3. 配置去除料筐外点云模块

  1. 单击左侧节点树中的 去除料框外点云 模块,然后在右侧配置点云切割参数,然后单击预览窗口中的 触发

    ../../../_images/toteout2.png
    • X方向收缩长度:料筐沿X方向的收缩长度,负值则意味着扩张。

    • Y方向收缩长度:料筐沿Y方向的收缩长度,负值则意味着扩张。

    • 底部抬升高度:料筐底部抬升高度,负值则意味着下降。

    • 顶部下降高度:料筐顶部下降高度,负值则意味着抬升。

  2. 在预览视图中移动料筐模型,使之与点云中的料筐位置吻合。

  3. 可视化显示 区域选择需要查看的图像。

    • 未切割点云图:仅显示未去除料筐外点云的图像。

    ../../../_images/cloud12.png
    • 切割对比图:对比显示切割前后的图像,被切割的点云用白色显示。

    ../../../_images/cloud22.png
    • 切割完点云图:仅显示去除料筐外点云的图像。

    ../../../_images/cloud32.png

步骤4. 配置计算最高层高度模块

  1. 单击左侧节点树中的 计算最高层高度 模块,然后在右侧配置计算参数。该模块用于计算抓取后,输入工件所在区域的高度,然后通过抓取前后高度差获取工件高度。

    ../../../_images/height1.png
    • 顶层最少点数:最高层的最少点云数量,可根据麻袋大小进行调整。

    • 输出高度的坐标系:输出的高度所在坐标系。Tote表示工作空间坐标系,World表示将高度转换到世界坐标系。

    • 降采样栅格大小:增大该值会使点云更稀疏,仅用于减少噪点。单位:米。

    • 层厚:点云划分每一层的厚度,该值建议经验丰富的工程师使用,一般使用者不建议使用。单位:米。

    • 提取点云范围:提取最高层上下该值范围内的点云,为后续模块过滤非最高层麻袋点云,以防止误识别。单位:米。

    • 输出点云的类型:Dense模式表示点云线性存储,不存在无效点;Organized模式表示点云存储在2D结构中,包含无效点。

  2. 在预览区选择输入、输出,再单击 运行重新拍照后运行,查看处理后的输出结果。

    ../../../_images/heightresult1.png

步骤5. 配置计算3D尺寸模块

  1. 单击左侧节点树中的 计算3D尺寸 模块,然后在右侧配置计算参数。该模块用于计算抓取后,输入工件所在区域的高度,然后通过抓取前后高度差获取工件高度。

    ../../../_images/cal3dsize.png
    • 收缩比例:工件目标区域收缩比例。

    • 最少点数:3D尺寸有效的最少点数。

    • 高度模式:plane(平面模式)表示通过点云拟合平面,然后用工件顶部所处高度和平面高度之差作为工件高度。top_height(点云高度模式)表示用工件顶部所处高度和点云平均高度之差作为工件高度。

    • 平面

      • 距离阈值:平面拟合距离阈值。

      • 工件下平面最小内点比例:如果工件下平面内点比例不满足此阈值,则触发二次抓取。

    • 点云高度

      • z切片值:使用该值对min_z(最小z值) - max_z(最大z值)切片

  2. 在预览区选择输入、输出,再单击 运行重新拍照后运行,查看处理后的输出结果。

    ../../../_images/cal3dresult.png

步骤6. 配置目标检测模块

提示

检测模型可在Max菜单栏中单击“工具 > 下载模型”,然后在弹出的窗口中单击 下载所有导入本地模型,下载完成后单击 确定。使用该模块前,请先联系星猿哲工程师注册工控机,并准备好检测模型、分割模型。

  1. 单击左侧节点树中的 目标检测 模块,然后在右侧“深度学习”区域配置参数。

    ../../../_images/deeplearn1.png
    • 检测模型:事先准备好的检测模型文件,请向星猿哲工程师获取。可单击 检查更新,查看是否有最新的检测模型文件。

    • 分割模型:事先准备好的分割模型文件,请向星猿哲工程师获取。

    • 检测阈值:默认值为0.5,可根据实际情况调整。阈值越大,检测越准确,但是可能出现漏检测;阈值越小,检出越多,但是可能出现误检测。

    • 分割阈值:分割置信度低于阈值的会被过滤掉,一般保持默认值0.5即可。

  2. 依次单击 运行并获取输入数据运行模块,然后在预览区域选择 Output Image - RGB,可查看检测结果。

步骤7. 配置计算实例工件pose模块

  1. 单击左侧节点树中的 计算实例工件pose 模块,然后在右侧“使用深度学习结果计算位姿”区域配置参数。

    ../../../_images/calpose1.png
    • 工件内最少点云个数:默认2000个点。

    • 工件顶面最小z向倾斜角度:默认15°,可根据实际情况修改。

    • 平面拟合距离阈值:默认0.010m,可根据实际情况修改。

    • 聚类分割过滤:如果开启,则会对单个麻袋点云进行聚类,如果聚类簇结果大于1,则说明检测出错,忽略此检测结果。

    • 聚类距离阈值:默认为0。

    • 点云聚类最大允许点数:单个点云簇最大允许点数

    • 点云聚类最小允许点数:单个点云簇最小允许点数。

  2. 在预览区域选择 输出图像 - RGB,再依次单击 运行并获取输入数据运行模块,可查看计算结果,每个识别到的纸箱及其坐标系显示在预览区域。

步骤8. 配置工件长宽一致性检查模块

  1. 单击左侧节点树中的 工件长宽一致性检查 模块,然后在右侧“物体长宽一致性检查”区域选择开启检测功能,然后配置参数。

    ../../../_images/consistency1.png
    • 长宽模式:use_mean模式下每个麻袋会与长宽均值比较,use_real模式下每个麻袋会与输入的长宽进行比较。

    • 阈值模式:absolute模式使用尺寸阈值直接作为尺寸比较的阈值,relative模式使用“L * 相对比例”作为阈值。

    • 尺寸阈值:只有当阈值模式为absolute时生效。

    • 相对比例:只有当阈值模式为relative时生效。

    • 长度:输入的工件长度,只有当长宽模式为use_real时生效。

    • 宽度:输入的工件宽度,只有当长宽模式为use_real时生效。

  2. 依次单击 运行并获取输入数据检测,检测成功后弹窗提示检测成功,单击 确定

    ../../../_images/checkok1.png
  3. 在预览区查看检测结果。

    ../../../_images/checkreview1.png

    单击某一块检测区域,可以查看该区域的位姿和尺寸。

    ../../../_images/checkdetail1.png

步骤9. 配置顶层点云覆盖度检查模块

  1. 单击左侧节点树中的 顶层点云覆盖度检查 模块,然后在右侧“顶层点云覆盖度检查”区域选择开启检测功能,然后配置参数。该模块通过最高层的点云和已经检测到的物体,来检查最高层点云是否已经被完全覆盖,若没有覆盖则说明漏检。

    ../../../_images/topcover.png
    • 长宽模式:use_mean模式下每个麻袋会与长宽均值比较,use_real模式下每个麻袋会与输入的长宽进行比较。

    • 阈值模式:absolute模式使用尺寸阈值直接作为尺寸比较的阈值,relative模式使用“L * 相对比例”作为阈值。

    • 尺寸阈值:只有当阈值模式为absolute时生效。

    • 相对比例:只有当阈值模式为relative时生效。

    • 长度:输入的工件长度,只有当长宽模式为use_real时生效。

    • 宽度:输入的工件宽度,只有当长宽模式为use_real时生效。

提示

请尽可能保证输入点云没有除工件之外的其他扰乱点,比如地面点云。

  1. 依次单击 运行并获取输入数据检测,检测成功后弹窗提示检测成功,单击 确定

  2. 在预览区查看检测结果。

    单击某一块检测区域,可以查看该区域的位姿和尺寸。