示例8:学习平面标定工具进行图像坐标到空间平面坐标转换

2022-11-24 16:36:59 admin 368

示例8中,我们将讲解如何通过“平面标定”工具,建立图像平面坐标系到机器人平面坐标系的映射关系,然后通过“坐标转换”工具,利用“平面标定”工具的标定数据,获取图像上任意一个点的像素坐标(x,y)所对应的机器人平面坐标系的物理坐标(x’,y’),这是在机器人定位抓取应用中比较关键的一步。我们这里给定的应用场景是相机安装在机器人末端,每次在定位抓取前相机在固定的位置进行拍照,通过定位工具找到物体在图像上的像素位置,再通过转换关系得到机器人抓取空间XY平面上的实际坐标。

 运行效果 

凯视佳机器视觉智能解决方案

  编辑工程文件 

8.1:平面标定

8.1.1:准备一个棋盘格标定板

实际项目中,如果精度有很高要求,我们需要购买高精度的标定板。本示例为了学习方便,我们提供了一个棋盘格标定板的图像文件,您可以根据采集视场的实际大小打印一张棋盘格标定板,将打印的标定板放置在视场内,为图像的采集做准备,如图所示是一张11x7的棋盘格标定板:

凯视佳机器视觉智能解决方案

棋盘格的行列数我们一般按照黑白格交界的点数来确定,如上图为11x7,而不是12x8;

确认相机的拍摄高度和采集的视场大小,选择合适的镜头及光源,保证采集视场照明均匀;

棋盘格标定板需要根视场的实际大小进行打印,打印的棋盘格标定板四周留白要大于半个棋盘格的大小。

8.1.2:采集棋盘格标定板图像 | 添加“U3相机1”工具

需在“全局区”添加“U3相机1”工具。

点击工具箱“获取图像”,选择“U3相机”工具,双击并设置参数,调整参数以至白色棋盘格图像的RGB值为255即可,命名为:U3相机1,如图所示:

凯视佳机器视觉智能解决方案

凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案

放置在视场内的棋盘格标定板,要保证黑色01方格置于图像左上角,棋盘格尽量充满相机视场,这样标定的结果精度会更高;

由于“平面标定”工具只是平面的标定,不考虑Z轴的位置,所以标定板的放置平面与机器人XY平面必须平行,并且标定板的放置平面与被检测物体的特征平面的高度必须一致。例如:定位一个水杯,以水杯口作为定位的特征平面,标定板要放置在与杯口高度一致的平面上,而不是放置于水杯的底部平面;

相机安装在机器人的末端,务必要记住机器人拍摄标定板图像时的位姿,当标定完成后需要保证每次定位检测前的拍照位姿不发生变化,即每次拍照时机器人的坐标和角度不变;

“全局区”添加的工具在工程文件运行时,该区域工具不参与运行,但我们可以在编辑“全局区”的工具列表时运行。我们将“U3相机1”添加到全局区的目的是前期在“全局区”产生一个不变的“平面标定”工具输出结果,它是一个3x3的矩阵,这个结果可以共享给其他流程中需要“平面标定”结果数据的工具使用,其他工具可以通过这个矩阵将图像上的一个坐标点(x,y)转换为空间平面上的实际坐标(x’,y’);

鼠标放置在“图像信息显示窗口”上任意一点,可以通过左下角的状态栏,查看该点图像的RGB值信息;

直到8.1标定完成之前,标定板的位置不可以移动。

8.1.3:自动提取图像标定点 | 添加“平面标定1”工具

需要在“全局区”添加“平面标定”工具。

    点击工具箱“定位工具”,选择“平面标定”工具,双击并设置参数值,调整参数提取坐标点,命名为:“平面标定1”,如图所示:

凯视佳机器视觉智能解决方案

凯视佳机器视觉智能解决方案

“平面标定”工具的参数设置界面棋盘格“尺寸”,必须根据棋盘格的实际行、列数进行手动输入,否则会提取失败;

点击自动提取”按钮后,工具会自动检测出棋盘格标定板上黑白格交界的坐标点信息,即本示例中显示77个点在图像上以像素为单位的x,y位置信息,这些点在下一步将作为标定点使用。我们可以在坐标点列表中点击相应的坐标点,在“图像信息窗口”上可以实时查看其在图像上的实际位置。

8.1.4:对图像标定点进行标定 | 输入对应的实际x’、y’信息

“图像信息显示窗口”上选取5个以上的坐标点作为标定点进行标定,我们选取第1、11、39、67、77共5个点作为标定点,将机器人的抓取末端依次移动到每个标定点,读取并记录机器人在每个点的实际x’、y’坐标值,这个x’、y’就是机器人坐标系下XY平面上的实际坐标,然后将每个实际x'、y'手动输入到每个对应的标定点,如图所示:

凯视佳机器视觉智能解决方案

以第1这个坐标点为例,我们先将机器人末端移动到棋盘格标定板第一个黑白交界点的位置,(注意移动时尽可能准确,保证末端垂直向下对准标定点,否则会影响精度,并且棋盘格标定板不能有任何移动,一旦移动,就需要重新采集图像和提取坐标点),然后读取机器人当前位置,当前位置x'、y'信息就是图像上1这个点所对应的机器人坐标系下的实际坐标。

凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案

凯视佳机器视觉智能解决方案

在图像上至少选取4个以上的点进行标定,且选取的所有点不能在同一条直线上,尽量分散开;

实际x’、y’的单位和机器人运动控制的单位一致即可。

8.2: 坐标转换

我们在8.1过程中完成了平面标定,现在我们可以开始对流程0进行编辑,流程0是我们工作运行的流程,它将实现对一个检测目标进行定位,然后将定位工具输出的定位点图像坐标(x,y)通过“坐标转换”工具转换为机器人坐标系XY平面上的实际坐标(x’,y’)。

每次定位检测前相机的拍照位姿需要与拍摄标定板进行标定时的位姿一致。

8.2.1:采集图像 | 添加“U3相机1”工具

点击工具箱“获取图像”,选择“U3相机”工具,双击并设置参数值,调整参数以获得采集的目标图像,命名为“U3相机1”,如图所示: 

凯视佳机器视觉智能解决方案

凯视佳机器视觉智能解决方案

8.2.2:定位目标 | 添加“特征模板匹配”工具

点击工具箱“定位工具”,选择“特征模板匹配”工具,双击并设置参数,建立模板,提取模板特征点,命名为:特征模板匹配1,如图所示:

凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案

关于“特征模板匹配”工具的使用请参考示例6。

8.2.3:将定位点的图像坐标(x,y)转换为实际坐标(x’,y’) | 添加“坐标转换”工具

点击工具箱“测量工具”,选择“坐标转换”工具,双击并设置参数值,调整工具参数设置“标定矩阵”,选择 Global Area (全局区)中的“平面标定1”的输出H [0]:Convert Matrix,“图像X”设置为“特征模板匹配1”的输出Point.X[0],“图像Y”设置为“特征模板匹配1”的输出Point.Y[0],命名为:坐标转换1,如图所示:

凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案

8.2.4:输出图像坐标(x,y)和实际坐标(x’,y’)信息 | 添加“显示字符”工具

点击工具箱“其他工具”,选择“显示字符”,双击并设置参数值,调整工具参数以在图像的左上角输出(图像坐标x,图像坐标y),(实际坐标x',实际坐标y')样式的字符串信息,命名为:显示字符1,如图所示:

凯视佳机器视觉智能解决方案凯视佳机器视觉智能解决方案

“显示字符1”完整“格式”内容为:“({特征模版匹配1.Point.X[0]},{特征模版匹配1.Point.Y[0]}),({坐标转换1.Point.X[0]},{坐标转换1.Point.Y[0]})”。

8.2.5:显示结果 | 添加“立即显示”工具

点击工具箱“其他工具”,选择“立即显示”,双击并设置参数值,勾选“显示字符1”的结果输出,命名为:立即显示1,如图所示:

凯视佳机器视觉智能解决方案

8.3:运行工程文件

点击“运行”查看工程文件运行结果。

我们需要先在“流程列表”中选择“流程0”,然后在“工具列表”的工具栏点击运行按钮。另外通过“操作”主菜单或主窗口工具栏上的运行按钮,可以自动按照流程列表中的流程运行方式运行。