视觉

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

场景要求

控序混码场景根据来料不同,输送线来料时采用 流水线拆垛 模板,托盘来料时采用 纸箱单拆 模板。

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

基本配置(输送线来料)

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

../../../_images/boxsinpal1.png

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

步骤1. 配置相机模块

  1. 单击左侧节点树中的 相机 模块,然后在右侧单击 相机资源管理器 以连接相机,接着在 相机配置 区域设置相机基本信息,请参见 连接相机

  2. 相机参数 区域单击 验证相机精度

../../../_images/camconfig2.png
  1. 依次选择标定板、标定内参数、验证标定结果等步骤,以验证相机精度。

../../../_images/intrcali2.png

步骤2. 配置加载标定信息模块

  1. 单击左侧节点树中的 加载标定信息 模块,然后在右侧依次标定相机和工作空间。

../../../_images/caliconfig2.png
  1. 单击 相机标定 区域中的 新建标定数据,设置标定数据名称,然后在 相机标定 页签设置标定方法和其它标定信息,请参见 手眼标定

../../../_images/excali5.png
  1. 依此单击 开始计算标定结果 完成数据标定,然后单击 下一步 进入 检查标定结果 页签。

../../../_images/excali23.png
  1. 检查并根据界面提示确认标定误差后,单击 完成,即可完成相机标定。

    ../../../_images/excali33.png
  2. 若要提高精度,则勾选 点云标定,完成点云标定,请参见 手眼标定 中的步骤5点云标定的相关内容。

  3. 标定工作空间,请参见 工作空间标定。3D相机使用3D拖拽的方式标定工作空间。

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

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

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

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

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

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

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

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

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

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

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

    ../../../_images/cloud34.png

步骤4. 配置降采样点云模块

  1. 单击左侧节点树中的 降采样点云 模块,然后在右侧配置降采样参数。

    ../../../_images/desample4.png
    • 栅格边长:将点云中的点划分到指定大小的三维栅格(即正方体)中,栅格边长越大,输出的点云越稀疏。

    • 输出点云尺寸上限值:如果该值大于0,将会进行两次采样,第二次降采样操作将会基于第一次进行。

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

    • 降采样点云前:仅显示降采样前的图像。

    ../../../_images/desample11.png
    • 降采样点云对比图:对比显示降采样前后的图像,被去除的点云部分用白色显示。

    ../../../_images/desample21.png
    • 降采样点云后:仅显示降采样后的图像。

    ../../../_images/desample31.png

基本配置(托盘来料)

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

scenario/logistics/csmpal/img/boxsindep.png

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ../../../_images/cloud34.png

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

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

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

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

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

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

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

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

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

    scenario/logistics/csmpal/img/heightresult.png

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

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

    scenario/logistics/csmpal/img/cal3dsize.png
    • 收缩比例:工件目标区域收缩比例。

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

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

    • 平面

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

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

    • 点云高度

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

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

    scenario/logistics/csmpal/img/cal3dresult.png

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

提示

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

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

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

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

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

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

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

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

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

    scenario/logistics/csmpal/img/calpose.png
    • 工件内最少点云个数:默认2000个点。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    scenario/logistics/csmpal/img/checkok.png
  3. 在预览区查看检测结果。

    scenario/logistics/csmpal/img/checkreview.png

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

    scenario/logistics/csmpal/img/checkdetail.png

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

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

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

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

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

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

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

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

提示

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

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

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

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