视觉

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

场景要求

橡胶圆环抓取采用 2D单层平面多物体抓取 模板,该场景适用于多种已知物体,需要注意的是物体种类越多速度越慢,场景要求如下。

  • 物体在同一平面稳定摆放。

  • 使用工业2D相机,相机平行于平面拍照。

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

基本配置

配置前,请依次完成 新建项目添加容器,并使用 2D单层平面多物体抓取 模板创建视觉服务,请参见 创建流图。创建完成之后会在左上角生成节点树,如下图所示。

../../../_images/2dscene.png

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

步骤1. 配置相机模块

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

  2. 相机参数 区域单击 验证相机精度 ,开始2D相机的标定。

../../../_images/camconfig.png
  1. 依次选择标定板、标定内参数、验证标定结果等步骤,请参见 内参标定

../../../_images/intrcali.png

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

  1. 单击左侧节点树中的 加载标定信息 模块,软件界面右侧出现 3D标定设置 区域,在该区域依次标定相机和工作空间。

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

../../../_images/excali1.png
  1. 完成数据标定(标定数据时,有8个点采集成功即可)并计算标定结果,单击 下一步 进入 检查标定结果 页签。

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

    ../../../_images/excali31.png
  2. 标定工作空间,请参见 工作空间标定。2D相机使用角触碰或者边缘触碰的方式标定工作空间。

步骤3. 配置2D形状匹配模块

  1. 创建模板。

    1. (可选,该步骤仅对 眼在手上 的场景生效,眼在手外的场景请跳过此步骤。)单击Max右上角的 设置拍照位姿,在弹出的窗口中设置视觉服务、相机ID,单击 获取机械臂位姿,然后单击 设置拍照位姿 即可获取最新的拍照位姿。

    ../../../_images/train8.png
    1. 单击左侧节点树中的 2D形状匹配 模块,在 检测物体 页签下单击 创建模板 开始训练工件模板。如果有已训练好的模板,可以直接选择模板检测物体。

    ../../../_images/train0.png
    1. 训练工件模板 页签单击 创建工件类型 并给工件类型命名,工件模板名称默认与工件类型名称相同,用户可自行修改。测量工件尺寸,并输入工件长、宽、高。然后根据需求设置基础参数,开始训练工件模板。

    ../../../_images/train1.png
  2. 训练模板。

    1. 在预览窗口单击 单次拍照 获取图像,然后设置检测区域,检测区域尽量贴合工件边缘。如下图所示,是设置好检测区域的结果。

      在选中 rangeselect 时,可单击并拖动图中的白色圆点,修改矩形框的尺寸和位置。如果不满意,可单击预览区左侧的 2drange,重新设置检测区域。

    ../../../_images/train2.png
    1. 设置物体中心,对于圆环形工件,尽量贴近圆心。

    ../../../_images/train3.png
    1. 单击 extract,根据需要调整对比度,然后单击 extract once 获取特征点。

      ../../../_images/extract2.png

      自动提取的特征点如下图所示。

      ../../../_images/extract3.png
    2. 使用自定义图形遮盖非物体特征点,仅保留物体轮廓的特征点。

    ../../../_images/extract4.png

    提示

    • Max提供三种注册物体特征的方式:圆形、矩形、自定义图形。对于不规则工件,用户可选择自定义图形,手动勾画特征点并连接成线,尽量与工件边缘保持贴合以更好地注册物体特征。

    • 对于圆环形工件,也可使用圆形勾画出工件的轮廓,且圆心尽量与物体中心重合。

    • 在训练模板时,注意打光方式,使得工件的阴影区域越小越好。

    1. 单击 保存并训练 Max自动完成工件模板训练,然后单击 完成 可使用训练好的模板。

  3. 检测物体。

    1. 检测物体 页签选择已训练完成的工件模板。

    ../../../_images/train5.png
    1. 设置显示参数,用户可根据需要选择是否显示匹配点、分数和边缘。

    2. 设置检测参数,各参数含义如下。

      • 最小检测分数:最大为100,分数越高匹配越准确,但匹配的数量可能减少。

      • 有效检测数量:检测物体的最大数量,最小值为1。

      • 检测对比度:数值越小,边缘越多,检测速度越慢,精度不一定提升。

      • 弱检测对比度:处于该值与对比度之间的点会根据连接性进行选择,可增加边缘点连续性。

      • 非极大值抑制分数:检测出来的两个物体的交并比(重叠区域面积/两物体总面积)大于该值时,检测分数低的物体会被略去。

      • 启用所有物体非极大值抑制:是否启用所有类型物体的非极大值抑制。

      • 扩增像素和金字塔:图像金字塔梯度扩增像素数。

    3. 单击 运行检测,开始检测物体,根据显示参数的设置会在图像预览区显示结果。

    ../../../_images/train6.png

流图详解

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

单击“视图 > 节点视图”可查看创建成功的视觉流图,2D单层平面多物体抓取 场景的流图如下。

../../../_images/multitype.png

2D单层平面多物体抓取场景的流图可大致分成三个功能组:图像获取、图像计算处理和图像输出,各模块的配置及使用流程如下。

  1. 获取待处理图像。

    1. 相机 模块完成内参标定,并获取彩色图。

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

  2. 对图像进行计算处理。

    1. 2D形状匹配 模块,训练工件模板供2D匹配使用。

    2. 投影2D位姿到平面 模块将输入的2D位姿投影到平面上,生成3D位姿。

  3. 输出图像处理结果。

    1. 通过 保存图像 模块保存 投影2D位姿到平面 模块的输出结果。

    2. 变换工件位姿3D 模块将物体位姿从相机坐标系转换到世界坐标系。然后通过 发布3D位姿输出结果 模块输出3D物体。