视觉工程配置
在使用本教程前,你已经在机器人通信配置章节中使用案例工程“无序工件上料”创建了方案。
在本教程中,你将先了解工程思路,然后通过调节步骤参数完成工程的部署,从而识别工件的位姿并输出视觉结果。
在本教程中,你将会需要将工件的CAD模型文件转化为点云匹配模板。因为准备CAD模型文件可能会花费较长时间,因此推荐在使用本教程前准备好工件的CAD模型文件,可单击此处下载。 |
工程思路介绍
在本教程中,你需要使用Mech-Vision软件和Mech-Viz软件进行视觉工程配置。视觉工程配置的流程如下图所示。
视觉工程配置流程各个阶段说明如下。
阶段 | 使用软件 | 说明 |
---|---|---|
连接相机并采集图像 |
Mech-Vision |
通过Mech-Vision软件的“从相机获取图像”步骤连接相机,以实现图像采集目的。 |
识别工件 |
Mech-Vision |
通过Mech-Vision软件的“3D工件识别”步骤对图像数据进行一系列视觉处理(点云预处理、3D匹配、深度学习推理等),实现工件的快速识别。 |
调整位姿 |
Mech-Vision |
通过Mech-Vision软件的“调整位姿V2”步骤对“3D工件识别”步骤输出的位姿进行坐标系转换、位姿调整、位姿排序,或位姿过滤等。 |
定位料筐 |
Mech-Vision |
通过Mech-Vision软件的“标准料筐定位”自定义步骤组合对料筐进行识别。识别后的料筐位姿将发送给Mech-Viz软件,用于更新料筐模型位置。 |
规划机器人路径 |
Mech-Vision & Mech-Viz |
通过Mech-Vision软件的“输出”步骤,将视觉结果(物体中心点、预处理后的点云、料筐场景模型名称、料筐中心位姿等信息)发送给Mech-Viz。 Mech-Viz工程将基于视觉结果,动态规划出无碰撞的机器人移动路径。 |
输出规划路径 |
Mech-Viz |
当接收到机器人(本教程使用)或PLC发送的标准接口指令,Mech-Viz返回规划的无碰撞的机器人移动路径。 在完成机器人通信配置以及Mech-Vision工程和Mech-Viz工程的配置后,Mech-Viz在每次运行后即可以输出规划的路径。 你需要机器人侧编写机器人程序,实现发送触发Mech-Viz工程运行以及获取Mech-Viz输出的规划路径的标准接口指令。具体请参考“实现抓放”章节中的说明。 |
步骤参数调节
在本节,你将通过调节各个步骤的参数来完成工程的部署。
本节中操作的工程为“无序工件上料”方案中的“Vis_Target_Objects_Recognition”工程。 |
从相机获取图像
步骤名称 |
从相机获取图像 |
---|---|
所属阶段 |
连接相机并采集图像 |
图示 |
|
说明 |
需要连接真实相机,并配置相关参数,确保相机可以正常采集图像。 |
-
在Mech-Vision工程编辑区,选中从相机获取图像步骤,在界面右下角步骤参数选项卡中单击选择相机按钮。
-
在弹出的选择相机及其标定参数组窗口中单击相机编号右侧的 图标。当该图标将变为 图标时,表明相机连接成功。
连接相机后,单击选择参数组按钮,选择标定好的、带有ETH/EIH和日期的标定参数组。
此处选择的标定参数组为完成手眼标定后生成的标定参数组。 -
连接相机并设置标定参数组后,相机标定参数组、IP地址和端口等参数将自动获取。请确认配置参数组已设置为“螺柱”。
-
单击从相机获取图像步骤的单步运行按钮触发图像采集,双击步骤的“相机深度图”和“相机彩色图”数据流连线,并在调试输出窗口查看是否成功从相机获取到图像。
-
如果在调试输出窗口可以看到正常的深度图和彩色图,则表明Mech-Vision软件已成功连接真实相机,并可以正常采集图像。
3D工件识别
步骤名称 |
3D工件识别 |
---|---|
所属阶段 |
识别工件 |
图示 |
|
说明 |
需要设置点云预处理参数、在工件库中制作工件模板并选择工件、设置深度学习参数和识别参数、配置输出端口。 |
3D工件识别步骤提供了内置的可视化3D工件识别工具,通过配置向导,只需三步即可轻松实现工件位姿的识别。
你可以通过以下任一方法打开3D工件识别工具界面,开始参数调节。
-
在工程编辑区单击步骤上的配置向导按钮。
-
在步骤参数选项卡中单击配置向导按钮。
点云预处理
点云预处理将采集到的图像数据转换为点云,进而设置有效的点云识别区,检测边缘点云,并过滤掉不符合规则的点云,提升后续的识别效率。
在本步骤,你需要设置有效的识别区,从而将干扰因素屏蔽在区域外,以提升识别效率。设置识别区域时,应覆盖料筐及其内工件,并适当向外扩展20至30毫米,以容纳料筐位置小幅变动带来的影响。
通常,保留其他预处理参数的默认值即可。如果场景中存在较多杂点,可以尝试调整相关参数。详情请参考点云预处理。
在完成参数调节后,可以在预览预处理结果区域单击运行步骤按钮,在可视化区域确认预处理效果满足预期。 |
工件选择与识别
|
制作工件模板
本教程中,使用工件CAD模型文件(.stl格式)生成工件的点云模板。你可以单击此处下载。
请参考 通过导入STL文件生成点云模板,并手动配置抓取点制作工件的点云匹配模板。
注意事项:
-
当使用相机采集螺栓工件的点云数据时,可能会出现点云过度平滑的现象,这会导致螺纹的细节特征丢失。因此,本教程通过导入STL文件来生成点云模板。本教程提供的STL模型文件经过了简化处理,如下图所示。
-
在“配置STL文件”步骤,请根据实际长度设置单位,设置视角处应选择所有视角。
-
在“设置抓取点”步骤,根据实际情况为点云模板设置抓取点。详细操作请参考设置抓取点。此方案中使用夹指型夹具夹取螺杆部位,所以工件抓取点设置在螺杆中间。
抓取工件使用的末端工具相关配置可以暂不配置,待配置Mech-Viz工程时再进行配置。 |
工件模板创建完成后,关闭工件库窗口返回3D工件识别工具界面,点击更新工件按钮。如果该方案工件库中只有一个工件模板,工具将自动选择该工件模板。如果该方案工件库中有多个工件模板,请选择需要使用的工件模板。
设置深度学习参数
-
在使用深度学习区域,开启使用深度学习辅助识别选项。
-
使用模型包管理工具导入本教程提供的深度学习模型包,或者你使用Mech-DLK自行训练的深度学习模型包。详细操作请参考导入深度学习模型包。
-
在使用深度学习区域,从模型包下拉选择列表选择导入的模型。
首次加载深度学习模型需要一些时间,请耐心等待。 -
单击ROI设置按钮设置2D ROI。详细操作请参考设置2D ROI的操作流程。
-
调整深度学习参数:为避免深度学习模型输出的掩膜在图像边缘处出现信息丢失,需要对掩膜图像进行了5个像素的膨胀处理,以获取更完整的工件点云数据。
调整位姿V2
步骤名称 |
调整位姿V2 |
---|---|
所属阶段 |
调整位姿 |
图示 |
|
说明 |
需要配置参数实现位姿变换、位姿调整、位姿排序以及位姿过滤。 |
得到工件位姿后,需要对位姿进行调整,处理流程如下。
Mech-Vision内置位姿调整工具,你可使用该工具轻松实现物体位姿的调整及抓取顺序的优化。你可以通过以下任一方法打开位姿调整工具界面,开始参数调节。
-
在工程编辑区单击步骤上的配置向导按钮。
-
在步骤参数选项卡中单击配置向导按钮。
请按照如下步骤调节参数:
-
位姿变换:在位姿调整选项卡中,将位姿从相机坐标系转换至机器人坐标系。
-
位姿调整:在位姿调整选项卡中,将位姿Z轴指向料筐正上方的参考位姿。
-
位姿排序:在位姿规则选项卡中,按照机器人坐标系下的位姿的Z值,以降序方式进行排序。
-
角度过滤:在位姿规则选项卡中,根据位姿Z轴方向过滤明显不可抓取的位姿,减少Mech-Viz软件路径规划的耗时。
-
过滤感兴趣区域外的位姿:在位姿规则选项卡中,设置目标区域(感兴趣区域),判断位姿是否在感兴趣区域内,并只保留感兴趣区域内的位姿。
此处的目标区域(3d_roi)在机器人坐标系下。为避免出现错误过滤的问题,必须根据实际外参重新设置目标区域。
标准料筐定位
步骤名称 |
标准料筐定位(自定义步骤组合) |
---|---|
所属阶段 |
定位料筐 |
图示 |
|
说明 |
需要设置料筐在Mech-Viz工程中做为场景物体的名称以及料筐位姿的偏移量。 |
-
在Mech-Vision工程编辑区,选中标准料筐定位步骤组合,在界面右下角步骤参数选项卡中,设置字符串列表参数。
字符串列表参数值将作为Mech-Viz工程中料筐场景物体的名称。在配置Mech-Viz工程的料筐场景物体时,必须使用该参数值作为名称。 -
将移动距离参数设置为料筐高度的一半。
当前识别的料筐位姿在料筐上表面,为了确保识别的料筐姿态能正确对应到料筐的中心位置,需要识别位姿进行调整。本步骤组合是沿料筐坐标系Z轴移动,因此需要减去一个特定的偏移量,所以此处设置为负数。
输出
步骤名称 |
输出 |
---|---|
所属阶段 |
规划机器人路径(前提条件) |
图示 |
|
说明 |
需要确认路径规划和碰撞检测需要的信息都能够输出。 |
根据路径规划和碰撞检测的要求,需要将下列信息输出给Mech-Viz软件:
-
物体中心点(PoseList)
-
工件名称(StringList)
-
带法向的点云(Cloud(XYZ-Normal)):预处理后的点云
-
场景物体名称(StringList):料筐场景模型的名称
-
场景物体位姿(PoseList):料筐中心位姿
请确保上述端口都有数据流连接,然后单击运行按钮,确认工程可以成功运行,并输出视觉结果。你可以在Mech-Vision软件日志栏的视觉选项下查看是否有含视觉结果的日志。