机器人手眼标定
机器人手眼标定
- 一、机器人手眼标定
- 1. 眼在手上标定基本原理
- 2. 眼在手外标定基本原理
- 二、眼在手外标定实验
- 三、标定精度分析
一、机器人手眼标定
要实现由图像目标点到实际物体上抓取点之间的坐标转换,就必须拥有准确的相机内外参信息。其中内参是相机内部的基本参数,包括镜头焦距、畸变等。一般相机出厂时内参已标定完成,保存在相机内部。
相机外参表示的是机器人与相机之间的位姿转换关系(即手眼关系,因此相机外参的标定称之为机器人手眼标定)。机器人与相机在不同的使用场景下其相对位姿不固定,需要在工作现场进行标定才能获得相机与机器人之间的手眼关系。
由于机器人手眼标定会使用相机的内参,所以具有准确的内参是标定外参的前提。
机器人手眼标定的分类方式各不相同,根据相机相对于机器人的安装方式,将手眼标定分为两种:
- 相机独立于机器人固定在支架上,称为ETH(Eye to hand) 方式。
- 相机固定于机器人末端法兰上,称为EIH(Eye in hand) 方式。
同时,可使用多个随机标定板位姿或TCP 尖点触碰的方法添加标定点。
两者的主要区别在于:
- 多个随机标定板位姿:使用软件自动生成的轨迹点或手动添加的多个位姿,在每个位姿拍照并识别标定板角点,建立标定板、相机及机器人三者间的关系,其过程简单,标定精度高。
- TCP 尖点触碰:利用三点法确定标定板位姿后,建立标定板、相机及机器人三者间的关系。适用于机器人活动空间局促、无法使用上位机来控制和标定板无法安装等情况。
分类方式如下图:

1. 眼在手上标定基本原理
机器人末端通过固定架将相机固定,此时机器人末端法兰中心与相机光心之间的位姿相对固定,即下图中的未知变量X;机器人末端法兰中心相对于机器人基坐标系(Base)的位姿为已知量B;相机通过对标定板(calibration grid)进行拍照,获得相机光心和标定板上每个圆点之间的位姿关系,可得已知量C;标定板平放在相机视野可达区域,其相对于机器人基坐标之间的位姿关系为一固定值A;这样变量A、B、C、X 构成闭环关系。下列等式中,由于A 为固定值,将前两个等式合并,得到的新等式中只有X 为未知待求量。变换机器人末端位姿进行不同角度拍照,得到多组A、B、C 的值,利用这些数值进行拟合计算,得到最优的X 的值。
在这里插入图片描述:

当使用TCP 触碰法标定时,标定板或者其它标定物放置在工作平面,机器人末端加装已知尺寸的TCP 尖点,触碰标定标定物,其中A、B、C 已知,则X 的值也可求得。

EIH 标定的是相机光心和机器人末端法兰中心之间的位姿关系。如果相机相对于机器人末端法兰中心坐标发生移动,对应的外参就会相应发生变化,此时需要重新标定外参。
2. 眼在手外标定基本原理
机器人末端通过法兰连接已知尺寸的标定板,可以得到标定板(calibration grid)上的每个标志点相对于机器人基坐标Base 的坐标A;通过相机拍照获得标定板上每个圆点的图像,可以得到相机光心相对于标定板上每个标志点的坐标B;相机光心和机器人基坐标(Base)之间的位姿关系X 为待求量。A、B 和X构成闭环,形成等式,可以在等式中求解未知数X。通过移动机器人,变换标定板相对于相机的位姿,可以得到多组等式,对这些等式的值进行拟合优化计算,最终得到最优的X 的值。位姿关系如下图所示。

当使用TCP 触碰法标定时,标定板放置在工作平面,机器人末端加装已知TCP 的尖点,触碰标定板圆点,其中A、B 已知,求解X 的值。
实际操作中,坐标A的获取有以下三种方式:
- 标定板到法兰末端位置关系已知(三点法或是已知连接件尺寸计算得到),则A 可以直接计算得到;
- 标定板到法兰末端位置关系未知,则通过标定板在标定过程中的一系列相对移动,通过数值方法计算得到标定板到法兰末端的位置关系,进而计算得到A;
- 标定板与机器人末端不固定,则可以通过已知tcp 坐标的尖点对标定板标志点进行触碰的方式计算得到A的数值。以上三种方式对应三种不同获取标定数据的方式。
ETH 方式标定的是相机光心和机器人基坐标之间的位姿关系。如果机器人基坐标或者相机发生移动,对应的外参就会相应发生变化,此时需要重新标定手眼关系。
二、眼在手外标定实验
下图为相机从上至下拍摄标定板,且计算出标定板圆心实验过程图片。

代码不便拿出来展示。其余实验过程此处省略。
三、标定精度分析
本人分别进行了采用多个随机标定板位姿的眼在手外标定和TCP尖点触碰进行标定实验。
多个随机标定板位姿标定方法:集成了3D相机采集数据、机器人轨迹规划、数据处理算法,自动化程度较高,但标定精度较低,平均在2.5mm左右。
TCP尖点触碰方法:需要人工实时指导调整位置,但标定精度较高,1mm以内。
经过多次相机引导机器人进行标定实验,总结下来 机械臂的运动重复性、光照条件、反射和阴影等环境因素、相机的内参、用于提取特征点的算法的准确性都会是影响标定精度的因素。
相关文章:
机器人手眼标定
机器人手眼标定 一、机器人手眼标定1. 眼在手上标定基本原理2. 眼在手外标定基本原理 二、眼在手外标定实验三、标定精度分析 一、机器人手眼标定 要实现由图像目标点到实际物体上抓取点之间的坐标转换,就必须拥有准确的相机内外参信息。其中内参是相机内部的基本参…...
基于Springboot + vue实现的校园失物招领系统
🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…...
关于C语言初步的一些基础知识整理(2)
“本篇是对于C语言初步中一些基础知识的简单整理,内容较为琐碎,但实用” 在C语言中,格式控制符是用于指定数据输出格式的特殊字符,不同的数据类型有着其对应的格式控制符。具体的: %f 用于输出浮点型数据(…...
Linux驱动开发:深入理解I2C时序(二)
在Linux驱动开发中,I2C时序的理解和正确处理是保证I2C设备正常工作和通信的关键。I2C协议的时序特性决定了数据的有效传输和设备间的协作。因此,掌握I2C的时序细节,以及如何在Linux内核中进行时序处理,能够让开发者更好地处理设备通信问题。 本文将继续深入探讨I2C通信协议…...
逆向安卓抓包
打开Mumu网易,打开设置,打开其他,开启root权限 打开Mumu网易,找到apk安装藏航准备网.apk charles配置:proxy setting 端口9888 查看当地IP:help--->local IP address SSL Proxying Setting--->Add---->IP…...
Spring源码分析之事件机制——观察者模式(一)
目录 事件基类定义 事件监听器接口 事件发布者接口及实现 事件广播器实现 小小总结 Spring源码分析之事件机制——观察者模式(一)-CSDN博客 Spring源码分析之事件机制——观察者模式(二)-CSDN博客 Spring源码分析之事件机制…...
QT实现 端口扫描暂停和继续功能 3
上篇QT给端口扫描工程增加线程2-CSDN博客 为按钮pushButton_Stop添加clicked事件,功能为暂停扫描,并在暂停后显示继续按钮,点击继续按钮之后继续扫描 1.更新UI 添加继续按钮 点击转到槽则会自动声明 2. 更新 MainWindow.h 需要新增的部分…...
SHViT模型详解
模型简介 SHViT是一种创新的 单头视觉Transformer ,旨在优化计算效率和内存使用。它的核心设计理念围绕着消除传统视觉Transformer架构中的冗余元素,特别关注宏观和微观设计层面的问题。 SHViT采用了 1616的大跨度patchify stem 和 3阶段结构 ,这种独特的设计不仅有效减少…...
QGIS Server安装部署教程
一、QGIS 安装部署 1、下载安装QGIS链接如下图,选择最新的安装包文件QGIS-OSGeo4W-3.34.14-1.msi,下载完成后运行安装。 2、安装时选择QGIS安装路径不要带空格,此处会影响QGIS Server安装运行。 3、安装过程省略,安装完成后打…...
基于 Apache Commons Pool 实现的 gRPC 连接池管理类 GrpcChannelPool 性能分析与优化
基于 Apache Commons Pool 实现的 gRPC 连接池管理类 GrpcChannelPool 性能分析与优化 1. 输出关键信息的代码示例 日志记录方法 使用以下代码记录连接池的关键信息,帮助分析连接池的状态和性能瓶颈: import org.apache.commons.pool2.impl.GenericO…...
【C语言】
目录 第一个C语言程序题目实际应用程序要求输入描述输出描述示例 程序实现三级目录 第一个C语言程序 打开VS创建项目(视图-解决方案管理器)创建源文件(后缀.c).c会按照C的语言编译代码 c #include <stdio.h> //std-标准 //…...
标题:利用Spring Boot构建JWT刷新令牌应用
标题:利用Spring Boot构建JWT刷新令牌应用 去发现同类优质开源项目:https://gitcode.com/ 一、项目介绍 在Java开发中,Spring Boot以其简洁的配置和强大的功能深受开发者喜爱。Spring Boot Refresh Token with JWT 是一个开源示例项目,它展…...
性能测试工具的原理与架构解析
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 在软件开发与运维领域,性能测试是确保系统稳定、高效运行的关键环节。性能测试工具作为实现这一目标的重要工具,通过模拟真实用户行为和负载…...
基于STM32的自动水满报警系统设计
目录 引言系统设计 硬件设计软件设计系统功能模块 水位检测模块报警模块自动控制模块控制算法 水位检测逻辑报警触发逻辑代码实现 水位检测模块报警控制模块自动控制逻辑系统调试与优化结论与展望 1. 引言 水满报警系统在家庭、农业、工业等领域广泛应用,通过实时…...
C语言 数组编程练习
1.将数组A的内容和数组B中的内容进行交换。(数组一样大) 2.创建一个整形数组,完成对数组的操作 实现函数Init()初始化数组全为0 实现print()打印数组的每个元素 实现reverse()函数完成数组元素的逆置 //2.创建一个整形数组,完…...
Windows 远程桌面连接Ubuntu操作 可以自由相互复制文件 粘贴板等
1.windows不用动,用IP和用户密码直接连 Ubuntu设置 详细参考:https://blog.csdn.net/qq_22370409/article/details/88914093 新建的用户需要加入sudo 使有权限。 效果 可以自由相互复制文件 粘贴板等。...
链表OJ题(一)
(一)轮转数组 . - 力扣(LeetCode) 题目描述:给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例一: 方法一:暴力求解 先用一个变量存储数组中的最后…...
C/C++中new/delete与malloc/free的区别及对象管理
C/C++中new/delete与malloc/free的区别及对象管理 在C/C++编程中,动态内存管理是一个核心且复杂的话题,其中new、delete、malloc和free是四个经常用于此目的的工具。尽管它们都涉及到内存的分配和释放,但它们在处理对象时的方式和效果却大相径庭。本文将通过示例来说明这些工…...
我的nvim的init.lua配置
nvim的配置文件路径在~/.config/nvim路径下: 一、目录如下: coc-settings.json文件是配置代码片段路径的文件init.lua配置文件的启动脚本lua/config.lua 全局配置文件lua/keymaps.lua 快捷键映射键文件lua/plugins.lua 插件的安装和配置文件…...
2025第1周 | JavaScript中的正则表达式
目录 1. 正则表达式是个什么东东?1.1 怎么定义正则1.2 对象字面量方式1.3 类创建方式 2. 怎么使用2.1 实例方法2.1.1 exec方法2.1.2 test方法 2.2 字符串中的方法2.2.1 match/matchAll2.2.2 replace/replaceAll2.2.3 split2.2.4 search 3. 规则3.1 修饰符3.2 字符类…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...
OCR MLLM Evaluation
为什么需要评测体系?——背景与矛盾 能干的事: 看清楚发票、身份证上的字(准确率>90%),速度飞快(眨眼间完成)。干不了的事: 碰到复杂表格(合并单元…...
