类料箱拆垛(高精度) ========================================== 类料箱是指形似料箱的物体,例如料箱、圆桶、轮胎等等。类料箱拆垛是将托盘上的该类物体拆放到指定位置。与普通类料箱拆垛场景相比,类料箱拆垛(高精度)场景需要装备高精度相机(如结构光相机),且支持混拆。 **场景要求** - 类料箱物体平铺,且紧密摆放 - 物体为同种已知型号的类料箱物体 该场景需要使用3D相机得到的彩色图进行2D模板匹配,同时使用3D相机得到的点云和物体CAD模型进行点云匹配。 **流图配置** 类料箱拆垛(高精度)场景的视觉标准流图如下。 .. image:: img/similarcasehigh.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. 配置 **计算最高层高度** 模块,根据层厚对点云进行分层,使用步骤4得出的点云计算出最高层点云的高度。如有需要,可通过 **输出结果** 模块查看计算结果。 6. 配置 **生成高度图** 模块,使用步骤5得到的点云,生成可视化高度彩色图和高度图点云。 7. 将步骤6得到的点云输入 **拟合平面** 模块,通过拟合计算得到平面向量。 8. 将步骤6得到的彩色图输入 **2D形状匹配** 和 **生成图像掩模** 模块,得到新的彩色图像和2D primitive计算结果。 9. 将步骤8得到的彩色图和2D primitive计算结果,以及步骤7得到的平面向量,输入到 **投影2D位姿到平面** 模块,计算得到3D primitive和彩色图像。若有需要,可使用 **可视化图像** 模块查看处理后的彩色图。 10. 将步骤9得到的3D primitive计算结果输入 **加载点云** 模块,生成点云。 11. 将步骤6得到的点云输入 **根据2D检测结果提取点云** 模块,再结合步骤8生成的2D primitive图像掩模,将输入点云提取成和物体一一对应的点云数组。 12. 将步骤11得到的点云(作为场景点云)、步骤9得到的3D primitive计算结果、步骤10得到的点云(作为模型点云)输入 **3D ICP匹配** ,模块会将模型点云对齐到场景点云,并计算得到3D primitive和可视化点云。该点云由 **发布点云** 模块发布。 13. 将步骤12得到的3D primitive计算结果,通过 **变换物体位姿3D** 模块,从料筐坐标系转换到世界坐标系,并通过 **输出结果** 模块查看最终结果。