视觉

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

场景要求

拆麻袋场景采用 拆麻袋 模板,该场景适用于紧密摆放、纹理未知的麻袋识别,且托盘上的麻袋大小、种类、形状不确定,一般较为柔软。该场景要求如下:

  • 相机为3D相机。

  • 需要使用点云进行位姿计算。

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

基本配置

配置前,请使用 拆麻袋 模板新建项目,示例项目中已包含视觉服务。创建完成之后会在左上角生成节点树,如下图所示。

../../../_images/bag.png

提示

若使用空白项目,请依次完成 新建项目添加容器,并使用 拆麻袋 模板创建视觉服务,请参见 创建流图

根据需求,依次配置以下模块。

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

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

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

  1. 单击左侧节点树中的 去除料筐外点云 模块,然后在右侧配置点云切割参数。

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

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

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

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

    单击 :guilabel:`触发 ` 拍照后可获取点云。需要注意的是,这里设置的参数使得工作空间中完整包含工件点云即可,点云不是越多越好,点的数量过多会影响计算速度。

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

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

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

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

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

    ../../../_images/cloud31.png

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

  1. 单击左侧节点树中的 计算最高层高度 模块,然后在右侧配置计算参数。

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

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

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

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

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

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

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

    ../../../_images/heightresult.png

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

提示

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

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

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

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

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

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

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

    ../../../_images/learnout.png

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

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

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

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

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

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

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

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

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

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

    ../../../_images/poseout.png

步骤7. (可选)配置凸起优化模块

提示

该模块是可选模块,可针对凸起的麻袋或箱子进行抓取算法优化。若不配置该模块,则在视觉流图中将 计算实例工件pose 模块与 工件长宽一致性检查 模块直接相连即可。

  1. 单击左侧节点树中的 凸起优化 模块,然后在右侧参数区域配置参数。

    ../../../_images/convexpara.png
    • 平面拟合最小内点比例:少于此阈值说明工件表面不平整,若此时开启凸起优化功能,可优化抓取点位置。

    • 凸起抓取点优化模式:该模式控制了优化抓取点的算法逻辑,有PCA、convex_box和convex_bag三种。

      • PCA:基于PCA(主成分分析)的计算求取点云最优位姿,本项目采用该算法,另外两种算法根据项目实际情况选用。

      • convex_box:凸起箱子优化模式,使用内点的平均高度来优化抓取点z轴高度,常用于凸起箱子的优化。

      • convex_bag:凸起麻包优化模式,使用输入的夹具信息来优化抓取点xyz位置,常用于麻袋抓取点优化。

  2. 在预览区选择输入、输出,然后单击 运行,可查看优化结果。单击 保存 可以存储数据。

    ../../../_images/optimizeresult.png

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

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

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

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

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

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

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

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

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

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

    ../../../_images/checkreview.png

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

    ../../../_images/checkdetail.png

流图详解

视觉流图的配置是Max中的高级用法,对于一般用户而言,配置完节点树中的模块即可运行整个视觉流程,无需再配置视觉流图。视觉流图中包含了节点树中没有的模块,可以配置一些高级参数,如有需要可以按照以下内容操作。

单击“视图 > 节点视图”可查看创建成功的视觉流图,拆麻袋 场景的流图如下。

../../../_images/bagvision.png

拆麻袋场景的标准视觉流图配置如下。

  1. 获取待处理图像。

    1. 相机 模块获取彩色图和点云。

    2. 加载标定信息 模块完成相机和工作空间的标定。

  2. 对图像进行预处理。

    1. 使用 变换点云坐标系 模块,将点云从相机坐标系转换到工作空间坐标系。

    2. 使用 去除料筐外点云 模块,得到去除料筐以外的点云。

  3. 目标检测。

    1. 基于步骤2得到的点云,使用 计算最高层高度 模块,得到高度信息。

    2. 结合步骤1.b得到的彩色图和步骤3.a得到的数据,使用 加载料箱区域信息 模块计算得到2D图像中处在设定高度上的工作空间。

    3. 结合步骤1.b得到的彩色图和步骤3.b得到的数据,使用 目标检测 模块得到图片中所有待抓取目标,并计算麻袋表面适合抓取的区域。

  4. 计算实例工件位姿。

    1. 结合步骤2.b得到的点云和步骤3.c得到的2D位姿,配置 根据2D检测结果提取点云 模块,根据输入工件的图像掩膜和感兴趣区域提取点云。

    2. 结合步骤1.b得到的彩色图、步骤3.c得到的2D位姿、步骤4.a得到的点云,配置 计算实例工件pose 模块,得到3D工件位姿、点云和彩色图。可使用 可视化图像 模块显示彩色图。

  5. (可选)利用步骤4.b得到的3D工件位姿和点云,配置 凸起优化 模块,得到优化后的3D工件位姿。该步骤为可选步骤,如需跳过,只要将“计算实例工件pose”模块的输出和“工件长宽一致性检查”模块的输入相连即可。

  6. 基于步骤4.b或步骤5得到的3D工件位姿,配置 工件长宽一致性检查 模块,得到检查后的3D工件位姿。

  7. 针对步骤6的计算结果,配置 变换工件位姿3D 模块,将物体位姿从相机坐标系转换到世界坐标系。然后通过 发布3D位姿输出结果 模块,查看3D物体位姿。

  8. 重复上述步骤,完成其它托盘的视觉流图的设置。