参数补偿

当现场机器人和相机长时间运行,可能导致相机内外参轻微变化,影响抓取精度。如果现场此时没有条件对相机进行标定,可以采用参数补偿的方式修正相机内外参。

参数补偿原理大致和 机器人手眼标定使用指南 类似,可以理解为一个更轻量,快速的标定。也正由于此,其准确度不如相机标定高,当出现较严重(具体根据不同现场任务的要求)的相机定位问题时,应选择重新标定。

参数补偿功能在 相机助手 ‣ 参数补偿 中。点击 参数补偿 ,界面如下图所示。

参数补偿位置

制作参考观测值 是通过每次观测,对标记物识别并估计其在相机坐标下的位姿。比较场景中标记物的基准(初始)观测位姿及后续观测位姿的差异求得补偿。

误差分析 是对参数补偿的结果进行可视化分析。

补偿流程

整个补偿流程需要在正常的现场任务后增加一个检测标志物和补偿参数的流程,并且需要在现场固定标志物。工程方面,需要在原Viz工程中增加一些任务,以及添加一些Vision工程。需要增加的内容如下图所示。

参数补偿流程

并不是每次正常工程进行后都需要进行补偿,所以增加一个计数器和重置任务,按需求设定计数器值,当正常工程运行一定次数后再进行一次补偿。

增加的内容通过Mech-Vision中的 制作参考观测值 进行生成。下面将介绍此功能的用法。

制作参考观测值

设置相机曝光参数

在保证原有项目需求的情况下,在Mech-Eye Viewer中调整3D曝光参数至标记物表面白色区域有点云(最右图)为止。下图由差到好。

确保标记物在Mech-Eye相机的最佳视野范围内,以保证标记物表面点云平整。如因特殊原因无法保证,应优先保证标记物的关键点(圆形则为圆心,方形则为角点)附近点云平整。

参数补偿界面

连接相机

点击 参数补偿 ,选择 制作参考观测值 。界面如下图所示。

参数补偿界面

需要设置保存路径,并连接相机,选择已有的相机外参。连接后可以进行单次拍照,再次确认已经连接到相机。随后点击 下一步

设置标记物

目前标记物提供的选择并不多,不需要调整,用默认值即可。后续会新增标记物参数和种类以适用不同的场景。推荐使用CCTag 或者 STag。本文相机安装方式为EIH,采用CCtag作为标志物,标志物在机械臂外。具体设置如下图所示。设置确认无误后,点击确认进行下一步。

参数补偿界面

注解

如果相机安装方式是ETH,则需要将标志物放置在机械臂上,相机在机械臂外。

固定标记物

此时相机会连续采集图像,可以从软件中看到标志物的实时位置。

标志物的摆放规则如下:

  • 在工作区的合适位置或机器人手臂上,固定标记物。应保证标记物与被固定物(地面,机械臂)的相对位置不变。

  • 如果选择放置在工作区,推荐使用多个不同编号(ID)的标记物,放置位置应尽可能分散在相机视野各区域。

  • 如果选择使用多个标记物,尽可能保证任意三个标记物不在一条直线上。

放置好标志物后,点击 单次采集 ,需要等待几秒钟,软件会计算出估计结果。如下图所示。

固定标记物

确认无误后点击 确认 以及 下一步

记录标记物位姿(初始)

首先需要记录机器人初始观测位置(即法兰位姿)及在其观测位置,记录标记物位姿。

点击 记录当前法兰位姿及估计的标记物位姿 按钮,完成后会在下方显示 第一次观测 。如下图所示。

记录标记物位姿

通过Mech-Viz或者机器人控制器移动机器人到预想的观测位置上并点击 记录当前法兰位姿及估计的标记物位姿 ,观测结果列表会增加。

采集完成后,可逐一检查每一次观测是否满足需求,不满足则取消勾选,最后不会记录。检查通过后点击 确认 以及 下一步

确定并保存

界面如下图所示,可以修改输出文件的名称。确认后点击 保存

确认并保存

保存的内容一共有三项:

  • 参数补偿文件夹:ParamsCompensation。

    每一次参考基准会保存于以 “日期-trial” 命名的文件夹下,同一工程可存有多个参考基准,可以根据需求选择使用。

    flange_*.json 记录了单个法兰位姿,用于之后利用 读取位姿Step发给机器人运动路径点。

    flanges.json 记录了所有观测点法兰位姿。计划配合相应的Step发给机器人运动路径点,暂时没有用到。

    reference.json 记录了与参数补偿相关的所有信息及观测结果,配合 校验并计算相机补偿Step使用,与后续观察值对比,并计算补偿。

    observation_*.json 记录了后续观测的估计结果。

    offset.json 记录了校验并计算相机补偿Step生成的补偿数据,用于之后利用 读取位姿Step,对抓取点进行补偿。

    注意

    被补偿的抓取点要求必须是基于相机坐标系下的,若在机器人坐标系下,则需要先对抓取点进行坐标转换再进行补偿。

  • Vision工程————检测标志物:marker_detection。

    此Vision工程是通过Viz调用视觉服务检测标志物位姿,并保存文件 observation_*.json 记录观测标志物位置的估计结果。

  • Vision工程————误差补偿:error_compensation。

    此Vision工程是通过Viz调用视觉服务计算补偿值。通过读取 observation_*.json 文件中的标志物位姿,与初始标志物位姿进行对比并计算,得到补偿值,保存在 offset.json 文件中。

使用生成的工程及文件进行误差补偿

Vision工程

在原来工程的基础上,需要添加生成的marker_detection和error_compensation两个工程。

marker_detection工程需要设置相机IP以及相机参数、保存图像的路径。

在 检测标记物Step中需要设置参数补偿文件夹ParamsCompensation以及参考目标(即上述参数补偿文件夹中的参考基准)。

error_compensation工程同样需要设置 校验并计算相机补偿Step中的参数补偿文件夹ParamsCompensation以及参考目标(即上述参数补偿文件夹中的参考基准)。

以上Vision工程设置完毕。

Viz工程

Viz工程可以设置成如下图所示的形式,先将原工程放置到现场任务中。

Viz工程

后面加入计数器、重置任务以及检测并补偿。

计数器按照实际情况设定(即现场任务运行多少次后进行一次补偿)。

重置任务设定需要重置的任务为计数器。

检测并补偿内容如下图所示。有观测和补偿两个模块。

确认并保存

观测内容设置成如下图所示。

确认并保存

观测点(移动任务)设置为初始观测点时的Pose。Pose记录在上述 flange_*.json 文件中。观测点数量取决于标志物的数量。

视觉识别需要调用marker_detection视觉服务。其数量同样取决于标志物的数量。

补偿(视觉识别任务)需要调用error_compensation视觉服务。

以上,完成了相机参数补偿在工程的设置。运行Viz工程即可在工程中进行相机参数补偿。

误差分析

误差分析是将生成的相机参数补偿的参数进行可视化处理,可以通过图表看到误差的趋势及分布。选择参数补偿工具中的误差分析,即可进入误差分析界面。如下图所示。

误差分析

首先需要设置数据源,数据在参考基文件夹,即以 “日期-trial” 命名的文件夹。

  • 观测值趋势:观测标志物位姿的误差趋势。读取的数据是文件夹中的 observation_*.json 文件的数据。

  • 误差趋势:补偿值的趋势。读取文件夹内 offsets.json 里面的数据。