纸箱单拆 ========================================== 纸箱单拆是对托盘上单一种类的物体进行拆垛的场景,视觉功能实现对托盘物体信息的感知,辅助机械臂定位 :term:`SKU` 的位姿、尺寸等信息。 **场景要求** - 纸箱紧密摆放 - 纸箱表面纹理未知 - 纸箱尺寸大小相同 该场景需要使用3D相机得到的彩色图进行深度学习识别,同时使用3D相机得到的点云进行位姿计算。 **流图配置** 纸箱单拆场景的视觉标准流图如下。 .. image:: img/case.png :align: center :width: 700px 1. 创建工作空间,使用 **纸箱单拆** 模板创建流图,具体方法请参见 :doc:`../../../basic_operation/vision_operation/module`。 2. 配置 **相机** 模块,获取彩色图、深度图及点云。详细设置请参考 :doc:`../../../basic_operation/vision_operation/camera_connect`。 3. 配置 **加载标定信息** 模块,加载env文件中的标定信息。详细设置请参考 :doc:`../../../basic_operation/vision_operation/calibrate`。 4. 配置 **变换点云坐标系** 和 **去除料筐外点云** 模块,将点云从相机坐标系转换到料筐坐标系,并去除料筐以外的点云。在进行点云切割时,需要测量料筐的实际尺寸,并输入Max。 .. image:: img/cloudcut.png :align: center 5. 配置 **计算最高层高度** 模块,根据层厚对点云进行分层,计算出最高层点云的高度,再结合步骤3输出的彩色图,配置 **加载料箱区域信息** 模块,计算2D图像中给定高度上的工作空间。 6. 通过 **输入信息** 模块输入客户端提供的2D primitive,结合步骤3输出的彩色图和步骤5输出的矩形图像,配置 **目标检测** 模块以检测目标物体,并输出物体的2D Primitive计算结果。 7. 计算实例物体位姿。 a. 结合步骤5中 **计算最高层高度** 模块输出的点云和步骤6输出的2D primitive计算结果,使用 **根据2D检测结果提取点云** 模块输出点云。 b. 利用该点云,再结合步骤3输出的彩色图和步骤6输出的2D primitive,配置 **计算实例物体pose** 模块,使用深度学习结果计算位姿,并输出3D primitive计算结果,如下图所示。 .. image:: img/calculatepose.png :align: center 8. 检查并输出结果。 - 结合步骤4输出的点云和步骤7输出的3D primitive,配置 **顶层点云覆盖度检测** 模块,对物体进行检测。 - 使用 **变换点云坐标系** 模块,将步骤7输出的3D primitive计算结果由料筐坐标系转换到世界坐标系,并结合步骤6输出的2D Primitive,在 **输出结果** 模块查看输出。 - 使用 **保存图像** 和 **可视化图像** 模块,保存或查看步骤7 **计算实例物体pose** 模块输出的彩色图。 9. 通过 **输入信息** 模块输入客户端提供的3D primitive,结合步骤4输出的点云,通过 **计算3D尺寸** 模块计算物体尺寸,然后使用 **变换物体位姿3D** 模块将计算结果由料筐坐标系转换到世界坐标系,最后通过 **输出结果** 模块查看处理后的3D primitive。