手眼标定的两种方式

手眼标定的两种方式最近在学习手眼标定,做下笔记,和大家分享下学习经历:一手眼标定的两种情形首先讲一下在工业应用中,手和眼(摄像机)的两种位置关系,第一种是将摄像机(眼)固定在机械手(手)上面,眼随手移动;第二种是摄像机(眼)和机械手(手)分离,眼的位置相对于手是固定的,下面用网上的两张图来说明下:第一种情况:相机移动第二种情况:相机固定从上面两副示意图可以看出,第一种情况中我们

大家好,又见面了,我是你们的朋友全栈君。

最近在学习手眼标定,做下笔记,和大家分享下学习经历:

一 手眼标定的两种情形

首先讲一下在工业应用中,手和眼(摄像机)的两种位置关系,第一种是将摄像机(眼)固定在机械手(手)上面,眼随手移动;第二种是摄像机(眼)和机械手(手)分离,眼的位置相对于手是固定的,下面用网上的两张图来说明下:

手眼标定的两种方式手眼标定的两种方式

第一种情况:相机移动

手眼标定的两种方式手眼标定的两种方式

第二种情况:相机固定

从上面两副示意图可以看出,第一种情况中我们要求的是相机坐标系和机械手坐标系的转化关系;第二种情况中要求的是相机坐标系和基础坐标系的关系;下面分别阐述其求解过程。

二 相机移动时,标定求解过程

在推导过程中,我们会用到四个坐标系,分别是基础坐标系,机械手坐标系,相机坐标系,以及标定物坐标系,下面先给出示意图:

手眼标定的两种方式手眼标定的两种方式

坐标系示意图

其中baseHcal表示基础坐标系到标定物坐标系的转化关系,包括旋转矩阵和平移向量;camHtool表示相机坐标系到机械手坐标系的转化关系;这两个转化关系在机械手移动过程中是不变的;camHcal可以由相机标定求出;baseHtool可以由机器人系统中得出。

接下来控制机器手从位置 1 移动到位置 2:

base = baseHtool (1)* tool(1)

tool(1) = inv(camHtool)*cam(1)

cam(1) = camHcal(1)*obj

联合上面三个公式:

base = baseHtool (1)* inv(camHtool)* camHcal(1)*obj

移动到机械手臂到位置2后:

base = baseHtool (2)* inv(camHtool)* camHcal(2)*obj

因为base和obj是固定的所以:

baseHtool (1)* inv(camHtool)* camHcal(1)=baseHtool (2)* inv(camHtool)* camHcal(2)

其中只有camHtool是未知量,具体求解过程将放在下篇文章。

三 相机固定时,标定求解过程

手眼标定的两种方式

手眼标定的两种方式

坐标系示意图


对于固定相机的情况,还是控制机械手从位置1移动到位置2:


obj(1) = inv(camHcal(1)) *cam
cam = camHbase *base
base = baseHtool(1) * tool(1)
合并上面三个公式:
obj(1) = inv(camHcal(1))  * camHbase* baseHtool(1) *tool(1)

移动到位置2后:
obj(2) = inv(camHcal(2))  * camHbase* baseHtool(2) *tool(2)

因为obj和tool的相对位置是不变的,所以不管怎么移动:
inv(camHcal(1))  * camHbase* baseHtool(1)= inv(camHcal(2))  * camHbase* baseHtool(2)


其中变量只有camHbase,也就是我们要求的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131847.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab_matlab反归一化

    matlab_matlab反归一化最近在做神经网络,需要对训练数据进行归一化到[0.10.9]之间。虽然matlab有现成的归一化函数(mapminmax()premnmx),但归一化到特定的区间,上述函数并不方便使用。由此萌生了自己编写归一化函数的想法。(先说推导,matlab代码见后面)

    2022年10月11日
    1
  • 手机射频架构解析(zen2架构解析)

    一、射频电路组成和特点:普通手机射频电路由接收通路、发射通路、本振电路三大电路组成。其主要负责接收信号解调;发射信息调制。早期手机通过超外差变频(手机有一级、二级混频和一本、二本振电路),后才解调出接收基带信息;新型手机则直接解调出接收基带信息(零中频)。更有些手机则把频合、接收压控振荡器(RX…

    2022年4月12日
    62
  • Python学习手册之正则表达式示例–邮箱地址提取

    Python学习手册之正则表达式示例–邮箱地址提取Python学习手册之正则表达式示例–邮箱地址提取

    2022年4月21日
    30
  • 二叉树的五个性质「建议收藏」

    二叉树的五个性质「建议收藏」性质1:在二叉树的第i层上最多有2^(i-1)个结点(i≥1)。第一层是根结点,只有一个,所以2(1-1)=20=1。第二层有两个,2(2-1)=21=2。第三层有四个,2(3-1)=22=4。第四层有八个,2(4-1)=2^3=8。性质2:深度为k的二叉树至多有2^k-1个结点(k≥1)。注意这里一定要看清楚,是2k后再减去1,而不是2(k-1)。以前很多同学不能完全理解,这样去记忆,就容易把性质2与性质1给弄混淆了。深度为k意思就是有k层的二叉树,我们先来看看简单的。如果有一层,至多1=

    2022年5月31日
    41
  • UINT16_uint16是什么数据类型

    UINT16_uint16是什么数据类型记得之前在刷笔试题的时候就看见过这个问题,发现当时上网百度后又忘了。最近在看CryEngine3引擎代码的时候又晕了,趁现在赶紧记下来~在查看CE3的代码时我发现了这个变量,TFlowNodeIdm_flowNodeId;心想这是什么鬼?(请理解一个菜鸟没啥经验)然后果断在VS下按F12查看定义,连着按了几次我终于捋清其中的奥妙。所以我干脆把uint8,uint32

    2022年9月7日
    2
  • 树莓派4B安装64位系统 以及基础配置

    树莓派4B安装64位系统 以及基础配置最近在使用一个SDK时发现只提供了linux64版本的,而我用的树莓派系统是32位的。查了一下发现官方有提供64位版本的,开始了重装系统,总结了一下基础配置包括换源,远程连接,中文输入法,摄像头等配置。大纲准备工具*1.SD卡格式化*2.烧制工具*3.系统镜像烧制镜像*1.格式化sd卡*2.打开RaspberryPiImager进行烧制*3.chooseSD选择需要烧制到的SD卡启动前的配置*1.配置WiFi*2.打开ssh*3..

    2022年5月20日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号