六轴机器人手眼标定
当您获得本文档时,可点击下载 HandEyeCalibration.zip 压缩包。解压后其内容应包括:
-
Elite_RobotData
:Elite 机器人 EC66 机器人模型文件。 -
EyeInHand_Data
:眼在手上标准数据录制的案例。 -
EyeToHand_Data
:眼在手外标准数据录制的案例。 -
HandEyeCalibration.xml
:被动控制手眼标定 xml。HandEyeCalibration.dashboard.xml 为相应的交互面板配置。
-
Elite_HandEyeCalibration.xml
:主动控制手眼标定 xml(案例代码中为 Elite 品牌机器人)。Elite_HandEyeCalibration.dashboard.xml 为相应的交互面板配置。
-
HandEyeCalibration_offline.xml
:离线数据标定 xml。HandEyeCalibration_offline.dashboard.xml 为相应的交互面板配置。
手眼标定介绍
手眼标定是指在相机安装完成后,计算出相机同机器人的坐标转换矩阵,目的是根据这个坐标转换矩阵将相机坐标系下拍摄的点云转换到机器人坐标系下。根据相机安装方式,手眼标定分为两种情形:
-
眼在手上(EyeInHand):相机安装在机械臂末端,标定板固定位置不动,标定相机和机械臂末端的转换矩阵。手眼组合体变换姿态拍摄标定板。
-
眼在手外(EyeToHand):相机(吊顶)固定安装,标定板固定在机械臂上,标定相机和基底坐标系的关系矩阵。机械臂变换姿态,相机拍摄不同姿态的标定板。
手眼标定准备
在开始标定前,需要做以下5项准备工作:
棋盘格标定板
准备棋盘格标定板时,需要确认以下内容:
-
棋盘格的行列数应为一奇一偶
-
确认棋盘格的尺寸
-
确保棋盘格的面积符合相机的视野范围
以下是 RVS 手眼标定支持的标定板的示例图片。
相机安装方式
相机的安装方式分为两种,不同安装方式需要准备不同的支架。
-
眼在手上(Eye-in-Hand)
:相机安装在机器人的六轴法兰上,准备好可固定相机在六轴法兰上的支架。 -
眼在手外(Eye-to-Hand)
:相机(通常是吊顶安装)固定在特定位置,标定板固定在机器人的六轴法兰上,准备好可固定棋盘格标定在六轴法兰上的支架。
机器人的控制方式
-
主动控制
:RVS 支持 AUBO、Elite、Jaka、UR 机器人主动控制,添加相应资源算子,配合 RobotOperator 即可获取机器人 TCP 和关节值。 -
被动控制
:-
确定 TCP/IP 通讯协议。机器人作为客户端可以发送字符串:
ROBOT_TCP X Y Z RX RY RZ \n ROBOT_JOINTS J1 J2 J3 J4 J5 J6 \n CAPTURE \n
说明
命令分隔符和结束符可以在通讯算子中选择。手眼标定案例中使用 HandEyeTCPServer 算子,请参考算子文档进行调整。
RVS 默认单位为米和弧度,可在机器人端转换或者 RVS 中添加 ScalePose与 ScaleJoint算子进行单位转换。
-
机器人旋转方式
RVS 默认机器人旋转方式为不定轴 Z-Y-X
。若机器人与 RVS
默认旋转顺序不一致,可在机器人端进行顺序转换或在 RVS 中添加 ConvertPose 算子中 EulerToPose
类型进行转换。
相机设置
-
相机是否正常连接,若连接失败,请参考 RVS 连接不上相机怎么办?
-
相机采图是否正常,可通过调整参数进行调整,如曝光。
-
相机深度、彩色图标定文件是否正常。
眼在手上(被动控制)操作
打开 HandEyeCalibration.xml。
参数设置
在交互面板中输入棋盘格行数、棋盘格列数、棋盘格边长(毫米)、标定的模式选择眼在手上
。
连接相机
点击 RVS 运行按钮启动工程, 点击交互面板中打开相机
连接相机资源。相机资源变为蓝色,则表示连接成功,同时在日志视图中显示连接的相机信息。
若连接失败,请参考 RVS 连接不上相机怎么办?
若遇到红色报错:
-
通道为 rvs_tycamera ,消息为 no TyCamera avaliable ,这意味着您上次关闭没有将循环显示功能关闭就保存退出,请点击
循环采集
先关闭循环显示,再打开打开相机
后重新点击循环采集
循环显示。 -
通道为 rvs_tycamera,消息为 tycam 还未准备好,请点击 TyCameraResource 算子将
相机型号
和相机ID
清空。
采集标定板图像
点击循环采集
实时刷新图像。
眼在手上拍摄标定板时需确保:
-
确认标定板的角点清晰,不能有重叠或者间隙,行列一奇一偶。
-
标定板在标定过程中位置始终固定,不能有任何的旋转移动,并且保证它可以完整的出现在画面内。
-
注意灯光对于标定板的影响,角点处不能有过曝的情况,也不需要特别暗。
-
位置姿态多进行变动,姿态一定要丰富,高度有多层次的变化,可以使标定板出现在图幅的 4 个边角处,有多种姿态的旋转。
-
尽可能多地核对每一组文件夹下的 tcp、joints 数据,是否与发送数据时机器人控制面板上的数字一致。
-
组数一般在 18 组以上,20-25 组为宜。
采集机器人 TCP
在保证标定板完整的出现在 2D 视图的视野中后,控制机器人连续发送 ROBOT_TCP、ROBOT_JOINTS、CAPTURE 字符触发保存数据功能(此处需机器人工程师协助完成)。请参考 HandEyeTCPSever 通讯算子文档。
保存数据
右击 HandEyeCalibration 算子,打开手眼标定面板
。点击保存
,成功保存后,将在日志中看到保存成功的提示,并且手眼标定面板会新增一条数据。包含机器人TCP、标定板坐标和图像,若保存有误可点击删除
按钮进行删除。重复上述步骤,采集 18-25 组。
计算结果
数据采集完成后,在手眼标定面板中点击计算
,此时,在日志视图中可以查看结果坐标和误差。
在手眼标定面板中,可双击查看手眼标定结果重投影到每张图像上的像素误差。
导出结果
点击手眼标定面板中导出
,将数据与结果导出。
导出文件包含采集的数据,结果坐标和彩色相机信息。文件夹显示如下:
眼在手外(被动控制)操作
打开 HandEyeCalibration.xml。
参数设置
在交互面板中输入棋盘格行数、棋盘格列数、棋盘格边长(毫米)、标定的模式选择眼在手外
。
连接相机
点击 RVS 运行按钮启动工程, 点击交互面板中打开相机
连接相机资源。相机资源变为蓝色,则表示连接成功,同时在日志视图中显示连接的相机信息。
若连接失败,请参考 RVS 连接不上相机怎么办?
若遇到红色报错:
-
若遇到红色报错:
-
通道为 rvs_tycamera ,消息为 no TyCamera avaliable ,这意味着您上次关闭没有将循环显示功能关闭就保存退出,请点击
循环采集
先关闭循环显示,再打开打开相机
后重新点击循环采集
循环显示。 -
通道为 rvs_tycamera,消息为 tycam 还未准备好,请点击 TyCameraResource 算子将
相机型号
和相机ID
清空。
-
采集标定板图像
点击循环采集
实时刷新图像。
眼在手外拍摄标定板时需确保:
-
确认标定板的角点清晰,不能有重叠或者间隙,行列一奇一偶。
-
相机在标定过程中位置始终固定,不能有任何的旋转移动,并确保能完整拍摄到标定板。
-
注意灯光对于标定板的影响,角点处不能有过曝的情况,也不需要特别暗。
-
位置姿态多进行变动,姿态一定要丰富,高度有多层次的变化,可以使标定板出现在图幅的 4 个边角处,有多种姿态的旋转。
-
尽可能多地核对每一组文件夹下的 tcp、joints 数据,是否与发送数据时机器人控制面板上的数字一致。
-
组数一般在 18 组以上,20-25 组为宜。
采集机器人 TCP
在保证标定板完整的出现在 2D 视图的视野中后,控制机器人连续发送 ROBOT_TCP、ROBOT_JOINTS、CAPTURE 字符触发保存数据功能(此处需机器人工程师协助完成)。请参考 HandEyeTCPSever 通讯算子文档。
成功触发手眼标定
算子后,打开手眼标定
算子的图像
参数,可以在 2D 视图中查看标定板角点。
保存数据
右击 HandEyeCalibration 算子,打开手眼标定面板
。点击保存
,成功保存后,将在日志中看到保存成功的提示,并且手眼标定面板会新增一条数据。包含机器人TCP、标定板坐标和图像,若保存有误可点击删除
按钮进行删除。重复上述步骤,采集 18-25 组。
计算结果
数据采集完成后,在手眼标定面板中点击计算
,此时,在日志视图中可以查看结果坐标和误差。
在手眼标定面板中,可双击查看手眼标定结果重投影到每张图像上的像素误差。
导出结果
点击手眼标定面板中导出
,将数据与结果导出。
导出文件包含采集的数据,结果坐标和彩色相机信息。文件夹显示如下:
眼在手上(主动控制)操作
打开 Elite_HandEyeCalibration.xml
参数设置
在交互面板中输入棋盘格行数、棋盘格列数、棋盘格边长(毫米)、标定的模式选择眼在手上
。
连接相机
点击 RVS 运行按钮启动工程, 点击交互面板中启动相机
连接相机资源。相机资源变为蓝色,则表示连接成功,同时在日志视图中显示连接的相机信息。
若连接失败,请参考 RVS 连接不上相机怎么办?
若遇到红色报错:
-
通道为 rvs_tycamera ,消息为 no TyCamera avaliable ,这意味着您上次关闭没有将循环显示功能关闭就保存退出,请点击
实时采集
先关闭循环显示,再打开启动相机
后重新点击实时采集
循环显示。 -
通道为 rvs_tycamera,消息为 tycam 还未准备好,请点击 TyCameraResource 算子将
相机型号
和相机ID
清空。
连接机器人
点击 EliteRobotResource
算子,填写机器人名称、机器人模型文件、机器人IP、机器人端口。
点击交互面板中启动机器人
,机器人资源变为蓝色后,表示机器人启动成功,同时在
3D 视图中显示当前机器人姿态。
采集标定板和机器人TCP
点击实时采集
,在 2D 视图中实时刷新图像。
眼在手上拍摄标定板时需确保:
-
确认标定板的角点清晰,不能有重叠或者间隙,行列一奇一偶。
-
标定板在标定过程中位置始终固定,不能有任何的旋转移动,并确保标定板能完整的出现在画面内。
-
注意灯光对于标定板的影响,角点处不能有过曝的情况,也不需要特别暗。
-
位置姿态多进行变动,姿态一定要丰富,高度有多层次的变化,可以使标定板出现在图幅的 4 个边角处,有多种姿态的旋转。
-
尽可能多地核对每一组文件夹下的 tcp、joints 数据,是否与发送数据时机器人控制面板上的数字一致。
-
组数一般在 18 组以上,20-25 组为宜。
点击标定采集
完成一组数据采集。
保存/计算/导出结果
保存/计算/导出结果与眼在手上(被动控制)操作一致,请参考该章节继续操作。
眼在手外(主动控制)操作
打开Elite_HandEyeCalibration.xml
参数设置
在交互面板中输入棋盘格行数、棋盘格列数、棋盘格边长(毫米)、标定的模式选择眼在手外
。
连接相机
点击 RVS 运行按钮启动工程, 点击交互面板中启动相机
连接相机资源。相机资源变为蓝色,则表示连接成功,同时在日志视图中显示连接的相机信息。
若连接失败,请参考 RVS 连接不上相机怎么办?
若遇到红色报错:
-
通道为 rvs_tycamera ,消息为 no TyCamera avaliable ,这意味着您上次关闭没有将循环显示功能关闭就保存退出,请点击
实时采集
先关闭循环显示,再打开启动相机
后重新点击实时采集
循环显示。 -
通道为 rvs_tycamera,消息为 tycam 还未准备好,请点击 TyCameraResource 算子将
相机型号
和相机ID
清空。
连接机器人
点击 EliteRobotResource
算子,填写机器人名称、机器人模型文件、机器人IP、机器人端口。
点击交互面板中启动机器人
,机器人资源变为蓝色后,表示机器人启动成功,同时在
3D 视图中显示当前机器人姿态。
采集标定板和机器人TCP
点击实时采集
,在 2D 视图中实时刷新图像。
眼在手外拍摄标定板时需确保:
-
确认标定板的角点清晰,不能有重叠或者间隙,行列一奇一偶。
-
相机在标定过程中位置始终固定,不能有任何的旋转移动,并确保能完整拍摄到标定板。
-
注意灯光对于标定板的影响,角点处不能有过曝的情况,也不需要特别暗。
-
位置姿态多进行变动,姿态一定要丰富,高度有多层次的变化,可以使标定板出现在图幅的 4 个边角处,有多种姿态的旋转。
-
尽可能多地核对每一组文件夹下的 tcp、joints 数据,是否与发送数据时机器人控制面板上的数字一致。
-
组数一般在 18 组以上,20-25 组为宜。
点击标定采集
完成一组数据采集。
成功触发手眼标定
算子后,打开手眼标定
算子的图像
参数,可以在 2D 视图中查看标定板角点。
保存数据/计算/导出结果
保存/计算/导出结果与眼在手外(被动控制)操作一致,请参考该章节继续操作。
手眼标定误差分析
不同机器人配合不同的相机类型会有不同的精度表现,如果标定结果不太理想,可参考下述几个部分进行检查。
硬件问题
-
棋盘格标定板尺寸不准确,可使用游标卡尺进行测量。
-
棋盘格标定板有污损。
-
棋盘格拍摄角点不清晰,不可以过曝或过暗。
-
机器人本身的精度误差较大。
数据问题
-
保存数据错乱,即拍照位和保存的 TCP 不对应。
-
数据单位未与 RVS 同步。
-
机器人欧拉角旋转顺序未与 RVS 同步。
操作问题
-
机器人位姿改变过小。
-
改变机器人位姿后,机械臂未稳定就进行数据采集。
离线数据标定
打开 HandEyeCalibration_offline.xml。
参数设置
在交互面板中选择手眼标定时导出标定数据的目录和彩色图标定文件。填写棋盘格行数、棋盘格列数、棋盘格边长(毫米)、选择标定的模式。
操作流程
参数填写完成后,点击 RVS 运行按钮,点击交互面板中遍历
。在 2D
视图中输出一组数据中彩色图和标定板角点。
右击手眼标定
算子,在菜单栏中选择手眼标定面板
,点击保存
,即保存一组离线数据。
再次点击遍历
,点击手眼标定
面板中保存
,保存第二组数据,重复操作。当保存多组数据后,点击计算
,在日志视图中显示标定结果和标定误差。