基于Halcon 3D的手眼标定方法

发布于:2025-08-07 ⋅ 阅读:(13) ⋅ 点赞:(0)

一、手眼标定的任务

将目标基于相机的坐标系变换到机器人坐标系,两个相对固定的坐标系存在刚性的齐次变换矩阵,对其求解就是标定任务的目的。如下图所示:

3D相机知道的是点云坐标机械手是空间坐标系,分为基础(底座)坐标系工具(末端)坐标系,手眼标定目的就是将相机的图像坐标系的坐标和机械手的基础坐标系的坐标进行相互转化即求机器人相对于相机之间的空间齐次变换矩阵

工具中心是机器人末端执行器接触物体的点;

二、手眼标定的工作原理 (眼在手外)  

在工程实际控制中,3D相机对场景中的物体扫描,首先人工分割出机械手上的3D目标作为3D表面匹配的目标,并进行三后维匹配,获取到物体再3D相机坐标系下的位姿Pose后,以3D点云的形式交给机械臂,通过标定好的坐标转换矩阵将相机获取到的3D点云坐标变换到机械手的基础坐标系中,然后根据机械手坐标系计算出各个电机安装设定的轨迹规划控制其如何运动,从而控制机械手到达指定位置,执行物体抓取、装配、打磨、或按设定的轨迹进行运动控制等工作。

三、标定过程(眼在手外)  

1、标定物

可采用随处可得的矿泉水瓶盖乒乓球

2、通过模型匹配的方式,求解目标物的位姿;

3求解变换矩阵

4利用变换矩阵

四、标定注意事项

1.标定的时候,机器人的姿态差异尽量大一点,能提高标定精度。点数多些可也可减小随机误差,建议8个点。

数据存放格式如下:

RobX表示机器人标定点1,2,3,4的X坐标,同理RobY,RobZ为机器人标定点1,2,3,4的Y坐标和Z坐标;

CamX,CamYCamZ为相机与机器人标定点1、2、3、4对应的点云X,Y,Z的坐标。

RobX:=[-364.69,-268.13,-75.69,-196.88]  
RobY:=[1211.79,1295.05,1242.50,1114.73]
RobZ:=[1706.72,1754.10,1729.72,1672.31]

CamX:=[-368.06,-250.08,-60.58,-181.04]
CamY:=[193.47,274.21,232.62,94.89]
CamZ:=[1742.6,1705.80,1732.70,1791.50]

三、常用函数  

1、vector_to_hom_mat3d

vector_to_hom_mat3d是一个用于将3D向量转换为齐次矩阵的函数。齐次矩阵是一种特殊的矩阵,它可以表示平移、旋转和缩放等仿射变换。

vector_to_hom_mat3d( : : TransformationType, Px, Py, Pz, Qx, Qy, Qz : HomMat3D)

Px、Py、Pz表示源点集的 3D 坐标(X, Y, Z)。表示变换前的原始点位置。

Qx、Qy、Qz标点集的 3D 坐标(X, Y, Z)。表示变换后期望达到的点位置。

注意:点集数量 n≥4n≥4(仿射变换)或 n≥3n≥3(刚体变换)

2、sample_object_model_3d 是 Halcon 中用于对 3D 对象模型进行采样处理的关键函数,主要用于简化点云数据,减少点数以提升后续处理效率,同时保持几何特征。该函数通过指定采样距离和方法,生成一个简化后的 3D 模型。在工业视觉中,常用于点云预处理、减少噪声和提高算法性能

sample_object_model_3d( : : ObjectModel3D, Method, SampleDistance, GenParamName, GenParamValue : SampledObjectModel3D)

Method:

  • 'accurate':高精度模式,生成均匀采样点,但计算较慢,适合对细节要求高的场景。

  • 'fast':快速模式,使用近似算法加速采样,但可能牺牲部分精度,适合实时处理或大数据集。

  • SampleDistance(输入参数)含义:采样距离,即输出点云中点与点之间的最小距离(单位与模型坐标一致)。较小的值(如 d<1.0d<1.0)保留更多点,细节丰富但计算量大;较大的值(如 d>5.0d>5.0)显著减少点数,提升效率。

3

低级的欲望放纵即可获得,高级的欲望克制才能达成。


网站公告

今日签到

点亮在社区的每一天
去签到