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

平常我在做手眼标定时,一般都是通过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.mzph.cn/pingmian/76559.shtml

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

相关文章

华为数字芯片机考2025合集2已校正

单选 1. 题目内容 关于亚稳态的描述错误的是( )。 1. 解题步骤 1.1 理解亚稳态(Metastability)的核心特性 亚稳态是指触发器无法在指定时间内稳定输出有效逻辑电平(0或1)的状态,其关键特点…

T-Box车载系统介绍及其应用

定义 T-Box汽车系统,全称为Telematics - BOX,也常简称为车载T - BOX,是汽车智能系统及车联网系统中的核心组成部分,是安装在车辆上的一种高科技远程信息处理器。 工作原理 T-Box的核心功能主要通过MPU和MCU实现。MPU负责应用程序功…

[redis进阶一]redis的持久化(1)RDB篇章

目录 一 认识持久化 (1)先看总结图 (2)什么是持久化? (3)redis是怎么进行持久化的呢 (4)简单分析一下RDB持久化和AOF持久化的不同 二 RDB持久化 (1)RDB的触发机制 (2)RDB的bgsave执行流程 (3)RDB文件的处理 (4)RDB的优缺点 (5)RDB效果演示板书 三 温习Linux文件…

uniapp日常总结--uniapp页面跳转方式

uniapp日常总结--uniapp页面跳转方式_uniapp 跳转-CSDN博客

《汽车电器与电子技术》实验报告

SRS系统结构原理与故障检测诊断 车辆上为什么要配安全气囊?——解析汽车被动安全的关键防线 一、安全气囊的核心作用:应对高速碰撞的“救命缓冲垫” 车辆在高速碰撞时(如正面碰撞、侧面碰撞),人体会因惯性以极高速度…

ffmpeg编解码器相关函数

文章目录 🎯 你需要理解的核心结构体:📦 常用函数及使用顺序(以解码为例)1️⃣ avcodec_find_decoder() / avcodec_find_encoder()2️⃣ avcodec_alloc_context3()3️⃣ avcodec_parameters_to_context()4️⃣ avcodec…

尚硅谷2019版Java网络编程笔记

第14章 网络编程 网络编程概述 什么是网络编程? 网络编程是通过网络协议实现计算机之间的数据交换。Java提供了强大的网络编程支持,隐藏了底层细节,开发者可以轻松实现网络通信。 网络编程的核心问题 如何定位网络上的主机:通…

解决【远程主机可能不符合 glibc 和 libstdc++ Vs code 服务器的先决条件】

可能是因为vscode不支持远程操作系统的版本,要么升级操作系统要么回退vscode版本 vscode回退1.97版本下载地址: 1.97版本VSCODE

forms+windows添加激活水印

formswindows添加激活水印 多语言水印文本,根据系统语言自动切换。水印显示在每个屏幕的右下角,位置动态调整。半透明灰色文字,微软雅黑字体。窗口无边框、置顶、透明背景,不干扰用户操作。支持多显示器。高DPI适配。 效果图&am…

LeetCode --- 444 周赛

题目列表 3507. 移除最小数对使数组有序 I 3508. 设计路由器 3509. 最大化交错和为 K 的子序列乘积 3510. 移除最小数对使数组有序 II 一、移除最小数对使数组有序 I & II 由于数组是给定的,所以本题的操作步骤是固定的,我们只要能快速模拟操作的过…

限流、降级、熔断、隔离?

在微服务架构中,服务限流、降级、熔断和隔离是保障系统高可用性的核心手段,但它们解决的问题和应用场景不同。以下是它们的区别、解决方案和实际案例的详细说明: 一、服务限流(Rate Limiting) 定义:通过限…

Day22 -php开发01--留言板+知识点(超全局变量 文件包含 数据库操作 第三方插件)

环境要求:php7.0.9 小皮 navicat phpstorm24.1 知识点:会写(留言板 留言板后台) 超全局变量 三方插件的使用 文件包含 1、开启小皮并利用navicat新建一个数据库 注意:本地的服务mysql关闭后 才可打开小皮。属…

制造一只电子喵 (qwen2.5:0.5b 微调 LoRA 使用 llama-factory)

AI (神经网络模型) 可以认为是计算机的一种新的 “编程” 方式. 为了充分利用计算机, 只学习传统的编程 (编程语言/代码) 是不够的, 我们还要掌握 AI. 本文以 qwen2.5 和 llama-factory 举栗, 介绍语言模型 (LLM) 的微调 (LoRA SFT). 为了方便上手, 此处选择使用小模型 (qwen2…

LeetCode 解题思路 37(Hot 100)

解题思路: 初始化: 初始化最大举行 max 和栈 stack。左右补零: 考虑柱子递增的边界情况, 初始化填充柱状图 newHeights。遍历处理: 对于每一根遍历到的柱子 newHeights[i],若柱子高度小于栈口索引&#xf…

HTML — 过渡与动画

HTML过渡与动画是提升网页交互体验的核心技术,主要通过CSS实现动态效果。 过渡 CSS过渡(Transition)介绍 适用于元素属性变化时的平滑渐变效果,如悬停变色、尺寸调整。通过定义transition-property(过渡属性&#xf…

跨站请求是什么?

介绍 跨站请求(Cross-Site Request)通常是指浏览器在访问一个网站时,向另一个域名的网站发送请求的行为。这个概念在 Web 安全中非常重要,尤其是在涉及到“跨站请求伪造(CSRF)”和“跨域资源共享&#xff…

Web攻防—SSRF服务端请求伪造Gopher伪协议无回显利用

前言 重学Top10的第二篇,希望各位大佬不要见笑。 SSRF原理 SSRF又叫服务端请求伪造,是一种由服务端发起的恶意请求,SSRF发生在应用程序允许攻击者诱使服务器向任意域或资源发送未经授权的请求时。服务器充当代理,执行攻击者构造…

Hibernate:让对象与数据库无缝对话的全自动ORM框架

一、为什么需要全自动ORM? 在手动编写SQL的时代,开发者需要在Java代码和数据库表之间来回切换: // Java对象 public class User {private Long id;private String name;// getters and setters }// SQL语句 SELECT * FROM user WHERE id ?…

C语言超详细指针知识(一)

通过前面一段时间C语言的学习,我们了解了数组,函数,操作符等的相关知识,今天我们将要开始进行指针的学习,这是C语言中较难掌握的一个部分,一定要认真学习!!! 1.内存与地址…

程序化广告行业(70/89):ABTester系统助力落地页优化实践

程序化广告行业(70/89):ABTester系统助力落地页优化实践 在程序化广告领域摸爬滚打多年,深知持续学习和知识共享的重要性。写这篇博客,就是希望能和大家一起深入探索程序化广告行业,共同学习、共同进步。今…