类料箱拆垛
类料箱是指形似料箱的物体,例如料箱、圆桶、轮胎等等。类料箱拆垛是将托盘上的该类物体拆放到指定位置。
场景要求
类料箱物体平铺,且紧密摆放
物体为同种已知型号的类料箱物体
该场景需要使用3D相机得到的彩色图进行2D模板匹配,同时使用3D相机得到的点云和物体CAD模型进行点云匹配。
流图配置
类料箱拆垛场景的视觉标准流图如下。
创建工作空间,使用 类料箱拆垛 模板创建流图,具体方法请参见 模块结构。
配置 相机 模块,获取彩色图、深度图及点云。详细设置请参考 连接相机。
配置 加载标定信息 模块,加载env文件中的标定信息。详细设置请参考 标定。
配置 2D形状匹配 和 生成图像掩模 模块,对步骤3得到的彩色图像进行处理,得到新的彩色图像和2D primitive计算结果。若有需要,可使用 可视化图像 查看处理后的彩色图。
基于步骤3得到的标定后点云,配置 变换点云坐标系 和 去除料筐外点云 模块,将点云从相机坐标系转换到料筐坐标系,并去除料筐以外的点云。在进行点云切割时,需要测量料筐的实际尺寸,并输入Max,如下图所示。
配置 计算最高层高度 模块,根据层厚对点云进行分层,计算出最高层点云的高度。如有需要,可通过 输出结果 模块查看计算结果。
将步骤6得到的计算结果,输入 变换点云坐标系,将点云从料筐坐标系转换到相机坐标系。然后将点云输入到 根据2D检测结果提取点云 模块,再结合步骤4生成的2D primitive图像掩模,将输入点云提取成和物体一一对应的点云数组。
将步骤7得到的点云输入 拟合平面 模块,通过拟合计算得到平面向量。
将步骤4得到的彩色图和2D primitive计算结果,以及步骤8得到的平面向量,输入到 投影2D位姿到平面 模块,计算得到3D primitive和彩色图像。若有需要,可使用 可视化图像 和 保存图像 模块查看或保存处理后的彩色图。
过滤并输出检测结果。
将步骤9得到的3D primitive计算结果输入 加载点云 模块,生成点云。
将步骤7得到的点云(作为场景点云)、步骤9得到的3D primitive计算结果、上一步 加载点云 模块得到的点云(作为模型点云)输入 3D ICP匹配 ,模块会将模型点云对齐到场景点云,并计算得到3D primitive。
配置 变换点云坐标系,将上一步 3D ICP匹配 模块得到的3D primitive从相机坐标系转换到世界坐标系,然后通过 输出结果 模块查看最终结果。