纸箱单拆

纸箱单拆是对托盘上单一种类的物体进行拆垛的场景,视觉功能实现对托盘物体信息的感知,辅助机械臂定位 SKU 的位姿、尺寸等信息。

场景要求

  • 纸箱紧密摆放

  • 纸箱表面纹理未知

  • 纸箱尺寸大小相同

该场景需要使用3D相机得到的彩色图进行深度学习识别,同时使用3D相机得到的点云进行位姿计算。

流图配置

纸箱单拆场景的视觉标准流图如下。

../../../_images/case.png
  1. 创建工作空间,使用 纸箱单拆 模板创建流图,具体方法请参见 模块结构

  2. 配置 相机 模块,获取彩色图、深度图及点云。详细设置请参考 连接相机

  3. 配置 加载标定信息 模块,加载env文件中的标定信息。详细设置请参考 标定

  4. 配置 变换点云坐标系去除料筐外点云 模块,将点云从相机坐标系转换到料筐坐标系,并去除料筐以外的点云。在进行点云切割时,需要测量料筐的实际尺寸,并输入Max。

    ../../../_images/cloudcut.png
  5. 配置 计算最高层高度 模块,根据层厚对点云进行分层,计算出最高层点云的高度,再结合步骤3输出的彩色图,配置 加载料箱区域信息 模块,计算2D图像中给定高度上的工作空间。

  6. 通过 输入信息 模块输入客户端提供的2D primitive,结合步骤3输出的彩色图和步骤5输出的矩形图像,配置 目标检测 模块以检测目标物体,并输出物体的2D Primitive计算结果。

  7. 计算实例物体位姿。

    1. 结合步骤5中 计算最高层高度 模块输出的点云和步骤6输出的2D primitive计算结果,使用 根据2D检测结果提取点云 模块输出点云。

    2. 利用该点云,再结合步骤3输出的彩色图和步骤6输出的2D primitive,配置 计算实例物体pose 模块,使用深度学习结果计算位姿,并输出3D primitive计算结果,如下图所示。

      ../../../_images/calculatepose.png
  8. 检查并输出结果。

    • 结合步骤4输出的点云和步骤7输出的3D primitive,配置 顶层点云覆盖度检测 模块,对物体进行检测。

    • 使用 变换点云坐标系 模块,将步骤7输出的3D primitive计算结果由料筐坐标系转换到世界坐标系,并结合步骤6输出的2D Primitive,在 输出结果 模块查看输出。

    • 使用 保存图像可视化图像 模块,保存或查看步骤7 计算实例物体pose 模块输出的彩色图。

  9. 通过 输入信息 模块输入客户端提供的3D primitive,结合步骤4输出的点云,通过 计算3D尺寸 模块计算物体尺寸,然后使用 变换物体位姿3D 模块将计算结果由料筐坐标系转换到世界坐标系,最后通过 输出结果 模块查看处理后的3D primitive。