视觉 ========================================== 本章节将针对具体场景详细介绍视觉服务的配置过程。在进行视觉配置前,请先参见 :doc:`../../../basic_operation/robot`,完成机械臂连接。 场景要求 ++++++++++ 橡胶圆环抓取采用 **3D平铺抓取** 模板,该场景适用于工作空间内同种物体平铺有序摆放,且拥有物体 STL 模型的情况。目前广泛应用于汽车零件、机加工件等多种场景,场景要求如下。 - 相机为结构光相机 - 已知工件的三维模型 本章节描述的相关配置仅供参考,具体操作请以实际项目为准。 基本配置 ++++++++++ 配置前,请依次完成 :doc:`../../../basic_operation/newproject`、 :doc:`../../../basic_operation/motion_operation/add_ws`,并使用 **3D平铺抓取** 模板创建视觉服务,请参见 :doc:`../../../basic_operation/vision_operation/flow`。创建完成之后会在左上角生成节点树,如下图所示。 .. image:: img/deep_flat.png :align: center 根据需求,依次配置这四个模块。 **步骤1\. 配置相机模块** (请参见 :doc:`../../../basic_operation/vision_operation/camera_connect`。) **步骤2\. 配置加载标定信息模块** (请参见 :doc:`../../../basic_operation/vision_operation/calibration/handeye`。) .. hint:: 对3D相机进行标定时,推荐进行点云标定。 **步骤3\. 配置去除料筐外点云模块** 1. 单击左侧节点树中的 **去除料筐外点云** 模块,然后在右侧配置点云切割参数。 .. image:: img/toteout.png :align: center :width: 350px - X方向收缩长度:料筐沿X方向的收缩长度,负值则意味着扩张。 - Y方向收缩长度:料筐沿Y方向的收缩长度,负值则意味着扩张。 - 底部抬升高度:料筐底部抬升高度,负值则意味着下降。 - 顶部下降高度:料筐顶部下降高度,负值则意味着抬升。 单击 **触发** 拍照后可获取点云。需要注意的是,这里设置的参数使得工作空间中完整包含工件点云即可,点云不是越多越好,点的数量过多会影响计算速度。 2. 在预览视图中移动料框模型,使之与点云中的料筐位置吻合。 3. 在 **可视化显示** 区域选择需要查看的图像。 - 未切割点云图:仅显示未去除料筐外点云的图像。 .. image:: img/cloud1.png :align: center :width: 350px - 切割对比图:对比显示切割前后的图像,被切割的点云用白色显示。 .. image:: img/cloud2.png :align: center :width: 350px - 切割完点云图:仅显示去除料筐外点云的图像。 .. image:: img/cloud3.png :align: center :width: 350px **步骤4\. 配置3D模板匹配模块** 1. 单击 :guilabel:`创建模板`,在弹出窗口单击 :guilabel:`选择模板`,选择模板文件,并输入模板名称。工件类型必须和注册抓取时使用的工件名称一致。 .. image:: img/3dmatch.png :align: center :width: 350px .. hint:: 在右下角 :guilabel:`属性` 页签下,将 **是否使用已创建的模板** 设置为true,再次打开Max时会自动读取已创建的模板,不必重新创建。 2. 根据需要设置模板参数,单击 :guilabel:`确认`,完成参数设置。 .. hint:: 根据需要选择 :guilabel:`特征类型`,如果模型表面有棱有角或者整体较扁平,建议尝试edge-I/edge-II模式。:guilabel:`限制物体朝向` 建议使用no_limit。 3. 根据需要设置检测参数。模板匹配时,小于 :guilabel:`最小分数` 的结果将被过滤。 4. 设置不同检测阶段的参数,系统会根据物体模型在点云中寻找匹配结果,单击 :guilabel:`执行检测`,然后在左侧查看检测结果。如下图所示,检测出的工件上有分数显示则表明检测成功。 .. image:: img/deepresult.png :align: center :width: 700px 流图详解 ++++++++++ 视觉流图的配置是Max中的高级用法,对于一般用户而言,配置完节点树中的模块即可运行整个视觉流程,无需再配置视觉流图。视觉流图中包含了节点树中没有的模块,可以配置一些高级参数,如有需要可以按照以下内容操作。 单击“视图 > 节点视图”可查看创建成功的视觉流图,**3D平铺抓取** 场景的流图如下。 .. image:: img/flat.png :align: center :width: 700px 3D平铺抓取场景的流图可大致分成四个功能组:图像获取、图像预处理、图像计算处理和图像输出,各模块的配置及使用流程如下。 1. 获取待处理图像。 a. **相机** 模块获取彩色图和点云。 b. **加载标定信息** 模块完成相机和工作空间的标定。 2. 对图像进行预处理。 a. 使用 **变换点云坐标系** 和 **去除料筐外点云** 模块,将点云从相机坐标系转换到工作空间坐标系,并去除料筐以外的点云。 b. 基于上一步得到的料筐内点云,配置 **变换点云坐标系** 模块,将点云从工作空间坐标系转换到相机坐标系。 3. 对图像进行计算处理,结合步骤1.b得到的彩色图和步骤2.b得到的点云,配置 **3D模板匹配** 模块,根据物体模型在点云中寻找匹配结果。 4. 针对步骤3的计算结果,输出或保存图像。 a. 配置 **变换工件位姿3D** 模块,将物体位姿从相机坐标系转换到世界坐标系。然后配置 **输出结果** 模块,查看3D物体位姿。 b. 也可使用 **保存图像** 模块保存结果,或使用 **可视化图像** 模块查看可视化彩色图。 5. 重复上述步骤,完成其它料筐的视觉流图的设置。