当前位置: 首页 > news >正文

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

一、手眼标定的任务

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

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

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

http://www.dtcms.com/a/315619.html

相关文章:

  • Kafka自动消费消息软件(自动化测试Kafka)
  • OneCode 3.0 前端架构全面研究
  • xxl-job配置相同,执行顺序
  • Android WiFi图标显示感叹号解决方法
  • Linux 线程同步与互斥
  • 链表之leetcode19:删除链表的倒数第N个结点
  • LeetCode 71~90题解
  • 危化品运输误检率↓83%!陌讯多模态融合算法在油罐车识别的工程实践
  • 机器学习③【模型训练、K近邻算法(KNN)、贝叶斯算法(Navie Bayes)、模型调优】
  • 基于 Ubuntu 的 Linux 系统中 Vivado 2020.1 下载安装教程
  • Linux操作系统从入门到实战(十三)版本控制器Git基础概念讲解
  • Qwen Image:开源中文渲染SOTA,重塑文生图技术边界
  • Spring Boot 整合 Web 开发全攻略
  • 机器学习Adaboost算法----SAMME算法和SAMME.R算法
  • AI+OA原生应用 麦当秀AIPPT
  • Day34 GPU训练及类的call方法
  • 【ESP32学习笔记】环境搭建和HelloEsp32
  • GPS信号捕获尝试
  • C++ - 基于多设计模式下的同步异步日志系统(11w字)
  • 深入 Java 性能调优:一场没有枪声的实战旅程
  • 自然语言处理×第三卷:文本数据分析——她不再只是贴着你听,而开始学会分析你语言的结构
  • css3属性总结和浏览器私有属性
  • GPT-5的诞生之痛:AI帝国的现实危机
  • Dubbo-Go调Bug记录-泛化调用调不通
  • 软件测试中,pytest 框架如何运行上传失败的测试用例?
  • AWS EKS节点扩容时NLB与Ingress的故障处理与优化方案
  • Linux 系统启动原理2
  • 基于Hadoop的成都市二手房数据分析与房价预测系统的设计与实现
  • C++(线程)
  • 小米最新ASR音频大模型MiDashengLM