机械臂只有位置信息是否可以进行手眼标定?

news2025/4/15 11:52:03

平常我在做手眼标定时,一般都是通过OpenCV的cv::calibrateHandEye函数进行求解,需要输入多组不同的机械臂位姿。今天遇到了一款舵机机器人,只能获取位置,得不到姿态信息,想着那就把姿态都设为0,结果求不出来。。。

目录

  • 1.cv::calibrateHandEye函数说明
  • 2.只给出位置信息的测试结果
  • 3.问题原因排查

1.cv::calibrateHandEye函数说明

CV_EXPORTS_W void calibrateHandEye( InputArrayOfArrays R_gripper2base, InputArrayOfArrays t_gripper2base,
                                    InputArrayOfArrays R_target2cam, InputArrayOfArrays t_target2cam,
                                    OutputArray R_cam2gripper, OutputArray t_cam2gripper,
                                    HandEyeCalibrationMethod method=CALIB_HAND_EYE_TSAI );
  • 输入参数:
    R_gripper2base:从将夹爪坐标系下的点转换到机器人基坐标系(robot base frame)的齐次矩阵中提取的旋转部分,是一个vector类型,包含所有从夹爪坐标系到机器人基坐标系变换的(3x3)旋转矩阵或(3x1)旋转向量。
    t_gripper2base:从上述齐次矩阵中提取的平移部分,是vector类型,包含所有从夹爪坐标系到机器人基坐标系变换的(3x1)平移向量。
    R_target2cam:从将目标坐标系(target frame)下的点转换到相机坐标系的齐次矩阵中提取的旋转部分,是vector类型,包含所有从标定目标坐标系到相机坐标系变换的(3x3)旋转矩阵或(3x1)旋转向量。
    t_target2cam:从上述齐次矩阵中提取的平移部分,是vector类型,包含所有从标定目标坐标系到相机坐标系变换的(3x1)平移向量。
    method:指定使用的手眼标定方法,可选择的方法包括先估计旋转再估计平移的可分离解法(如 Tsai 和 Lenz 的方法、Park 和 Martin 的方法、Horaud 和 Dornaika 的方法),以及同时估计旋转和平移的联立解法(如 Andreff、Horaud 和 Espiau 的在线手眼标定方法,Daniilidis 使用对偶四元数的手眼标定方法)。
  • 输出参数:
    R_cam2gripper:估计得到的从相机坐标系到夹爪坐标系的齐次变换矩阵中的(3x3)旋转部分。
    t_cam2gripper:估计得到的从相机坐标系到夹爪坐标系的齐次变换矩阵中的(3x1)平移部分。

2.只给出位置信息的测试结果

  • 1.因为cv::calibrateHandEye函数需要R_gripper2baseR_target2cam,考虑到只有机械臂的位置信息,最终需要求得的也是t_cam2gripper,那就默认旋转矩阵都是单位矩阵,即没有姿态偏差,欧拉角都是0(rx,ry,ry都是0)。
  • 2.结果输入实际得到的R_cam2grippert_cam2gripper如下:
    在这里插入图片描述

3.问题原因排查

主要与手眼标定的原理和算法的数学特性有关,下面详细分析其原因:

  • 手眼标定的原理:
    在这里插入图片描述

  • 1. 缺乏运动信息
    在这里插入图片描述

  • 2. 方程求解的奇异性
    在这里插入图片描述
    矩阵的奇异性通常是指矩阵不可逆的性质,也就是说矩阵没有逆矩阵。

奇异矩阵是行列式为零的矩阵,即不可逆矩阵。
奇异矩阵不能用于求解唯一解的线性方程组,会导致数值不稳定性。

  • 3. 平移部分的影响
    对于平移部分,由于旋转部分无法正确求解,导致整个变换矩阵的求解缺乏有效的约束。在没有足够旋转信息的情况下,算法无法准确地确定相机和夹爪之间的相对平移关系,因此通常会将平移部分的解置为 0。

  • 总结
    手眼标定需要机械臂的不同姿态来提供足够的运动信息,以确保方程有唯一解,当R_gripper2base全为单位矩阵时,缺乏旋转运动信息,导致方程求解出现奇异性,无法得到有效的旋转和平移变换矩阵,最终得到R_cam2gripper为nan,t_cam2gripper为 0 的结果。为了得到准确的手眼标定结果,需要确保机械臂有足够的不同姿态变化。

根据上面总结可知如果通过OpenCV的cv::calibrateHandEye函数进行求解,需要机械臂的不同姿态来提供足够的运动信息,以确保方程有唯一解。


在这里插入图片描述

那对于只有位置信息的机械臂,还有别的方法标定相机和机械臂的位置关系吗?
如有大佬知道请指导解答。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2334313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 数据分析01 环境搭建教程

Python 数据分析01 环境搭建教程 一、安装 Python 环境 访问 Python 官方网站 Python 官网,选择适合你操作系统的 Python 版本进行下载。下载完成后,运行安装程序。在安装过程中,建议选择“Add Python to PATH”选项,这样可以在…

使用 Visual Studio 2022 (VS2022) 编译 FreeCAD 1.0.0 的详细教程

一、环境准备 官方教程:在 Windows 上编译 - FreeCAD Documentation Windows 10/11(推荐) git vs2022 cmake 3.26.4 Doxygen1.12 二、获取源码与依赖 版本关系 打开Git Bash或CMD,执行以下命令 git clone --recurse-sub…

蓝桥杯单片机频率

long int Freq; unsigned int Timer_1000Ms; 加上 TMOD | 0x05; void Timer0Init(void) //0毫秒12.000MHz {AUXR & 0x7F; //定时器时钟12T模式TMOD & 0xF0; //设置定时器模式TMOD | 0x05;TL0 0x00; //设置定时初值TH0 0x00; //设置定时初值TF0 0; //清除TF0标…

遵循IEC 62304:构建安全可靠的医疗器械软件

目录 一、IEC 62304 标准概述 1. 标准定位与适用范围 二、核心内容与要求 1. 软件安全等级(Software Safety Classification) (1)分级标准 (2)分级依据 (3)验证要求 2. 软件…

互联网三高-数据库高并发之分库分表

1 数据库概述 1.1 数据库本身的瓶颈 ① 连接数 MySQL默认最大连接数为100,允许的最大连接数为16384 ② 单表海量数据查询性能 单表最好500w左右,最大警戒线800w ③ 单数据库并发压力问题 MySQL QPS:1500左右/秒 ④ 系统磁盘IO、CPU瓶颈 1.2 数…

UE5 在UE中创建骨骼动画

文章目录 创建动画的三种方式修改骨骼动画 创建动画的三种方式 方法一 打开一个已有的动画,左上角“创建资产/创建动画/参考姿势” 这将创建一个默认的A字形的骨骼,不建议这么做 方法二 打开一个已有的动画,左上角“创建资产/创建动画/当前…

[ctfshow web入门] web38

信息收集 过滤多了php和file if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/flag|php|file/i", $c)){include($c);echo $flag;}}else{highlight_file(__FILE__); }解题 更多解法参考 [ctfshow web入门] web37 我们选个最简单的。但是因为php被过滤了我们改用…

汽车CAN总线采样点和采样率详解

写在前面 本篇文章主要讲解在汽车电子中CAN总线采样率的相关知识点,内容涉及CAN波特率、采样点、时间份额、同步跳转宽度以及采样率的计算。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 1、CAN波特率 CAN波特率常规分为250kbps和500kbps,本文章主要以这两个波特率为…

Maven error:Could not transfer artifact

问题描述 当项目从私有仓库下载依赖时,Maven 报错,无法从远程仓库下载指定的依赖包,错误信息如下: Could not transfer artifact com.ding.abcd:zabk-java:pom from/to releases (http://192.1122.101/repory/mavenleases/): 此…

pytorch 反向传播

文章目录 概念计算图自动求导的两种模式 自动求导-代码标量的反向传播非标量变量的反向传播将某些计算移动到计算图之外 概念 核心:链式法则 深度学习框架通过自动计算导数(自动微分)来加快求导。 实践中,根据涉及号的模型,系统会构建一个计…

WindowsPE文件格式入门06.手写最小PE

https://bpsend.net/thread-346-1-1.html 实现目标 实现目标:手写实现不大于 200 Byte大小的PE文件(又名:畸形PE/变形PE),要求MessageBox弹框显示一个字符串。实现要点:充分利用空间,在保证遵…

并发编程--互斥锁与读写锁

并发编程–互斥锁与读写锁 文章目录 并发编程--互斥锁与读写锁1. 基本概念2. 互斥锁2.1 基本逻辑2.2 函数接口2.3示例代码12.4示例代码2 3. 读写锁3.1 基本逻辑3.2示例代码 1. 基本概念 互斥与同步是最基本的逻辑概念: 互斥指的是控制两个进度使之互相排斥&#x…

记录第一次使用H5的WebBluetooth完成蓝牙标签打印机的(踩坑)过程

第1步 首先第一步,调试环境必须是https的,由于浏览器的强制安全策略,本地可以采用localhost 第2步 然后,如果打印需要服务UUID(Service UUID) 和 特征UUID(Characteristic UUID)&…

【WRF理论第十七期】单向/双向嵌套机制(含namelist.input详细介绍)

WRF运行的单向/双向嵌套机制 准备工作:WRF运行的基本流程namelist.input的详细设置&time_control 设置&domain 嵌套结构&bdy_control 配置部分 namelist 其他注意事项Registry.EM 运行 ARW 嵌套双向嵌套(two-way nesting)Moving …

React 学习 JSX

APP根组件被index.js渲染到public下的index.html下 JS中写 HTML 代码 渲染列表 条件渲染 复杂条件渲染 事件绑定 传递自定义参数 button标签中写箭头函数引用的格式 自定义参数和事件本身对象都想要的情况

大模型论文:Language Models are Few-Shot Learners(GPT3)

大模型论文:Language Models are Few-Shot Learners(GPT3) 文章地址:https://proceedings.neurips.cc/paper_files/paper/2020/file/1457c0d6bfcb4967418bfb8ac142f64a-Paper.pdf 一、摘要 我们证明了,扩大语言模型的规模在任务无关的 few…

一周学会Pandas2 Python数据处理与分析-Pandas2数据导出

锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 任何原始格式的数据载入DataFrame后,都可以使用类似 DataFrame.to_csv()的方法输出到相应格式的文件或者…

深入解析栈式虚拟机与反向波兰表示法

1.1 什么是虚拟机? 虚拟机(Virtual Machine, VM)是一种软件实现的计算机系统,提供与物理计算机相类似的环境,但在软件层面运行。虚拟机的存在简化了跨平台兼容性、资源管理以及安全隔离等问题。 1.2 栈式虚拟机的架构…

学习MySQL的第八天

海到无边天作岸 山登绝顶我为峰 一、数据库的创建、修改与删除 1.1 引言 在经过前面七天对于MySQL基本知识的学习之后,现在我们从基本的语句命令开始进入综合性的语句的编写来实现特定的需求,从这里开始需要我们有一个宏观的思想&…

AI识别与雾炮联动:工地尘雾治理新途径

利用视觉分析的AI识别用于设备联动雾炮方案 背景 在建筑工地场景中,人工操作、机械作业以及环境因素常常导致局部出现大量尘雾。传统监管方式存在诸多弊端,如效率低、资源分散、监控功能单一、人力效率低等,难以完美适配现代工程需求。例如…