当前位置:网站首页>[贴装专题] 基于多目视觉的手眼标定
[贴装专题] 基于多目视觉的手眼标定
2022-08-09 10:00:00 【丶布布】
- 博客主页:https://blog.csdn.net/weixin_43197380
- 欢迎点赞 收藏 留言 如有错误敬请指正!
- 本文由 Loewen丶原创,首发于 CSDN
- 现在的付出,都会是一种沉淀,只为让你成为更好的人
一.为什么要进行手眼标定
因为相机知道的是像素坐标,吸嘴是空间坐标系,所以手眼标定目的就是将像素坐标系的坐标和空间机械手坐标系的坐标进行相互转化。在实际控制中,相机检测到目标在图像中的像素位置后,通过标定好的坐标转换矩阵将相机的像素坐标变换到机械手的空间坐标系中,然后根据机械手坐标系计算出各个电机该如何运动,从而控制机械手到达指定位置。
根据相机的装载位置分为两种情况:eye-in-hand(相机安装在机械手上,随着机械手一起移动)和eye-to-hand(相机固定在一个地方,机械手的运动不会带着相机一起移动)。
二.手眼标定中涉及的坐标系
手眼标定涉及到的坐标系有四个:机器人基坐标系base、法兰上的工具坐标系tool、相机坐标系camera和标定板坐标系cal;此外,涉及到了四个关键的4x4齐次转换矩阵,对于眼在手和眼在手外分别进行说明,下面是两种配置方式的坐标转换过程:


每一种配置方式,都是两个移动的坐标系和两个静止的坐标系,并且这四个坐标系构成了一个闭环。
三.Eye-in-hand 标定原理与方法
对于moving camera方式(相机随着吸嘴一起移动),如图所示,机械臂基础坐标系和标定板坐标系是静止的,两者之间存在一个固定的转换矩阵;法兰上的工具坐标系和相机坐标系是移动的,两者之间存在一个固定的转换矩阵;需要求的是法兰上的工具坐标系与相机坐标系之间的转换矩阵。其中,M1可以从机器人示教器或者控制读出,Mx是需要求取的未知矩阵,M2可以从拍摄照片计算出来,M3未知,但是是一个固定的转换矩阵,利用坐标转换,有如下的等式关系:Mx=M2*M3^(-1)*M1,如果我有许多个这样的等式,利用M3不变,可以构建关于Mx的方程组,解方程组,求得Mx中各个元素的值,在这个过程中我们不必去求M3具体是多少,只是利用了其固定不变这个特性而已。

四.Eye-to-hand 标定原理与方法
对于stationary camera方式(相机静止,吸嘴移动),如下图所示,机械臂基坐标系和相机坐标系是静止的,两者之间存在一个固定的转换矩阵;法兰上的工具坐标系和标定板坐标系是移动的,两者之间存在一个固定的转换矩阵;需要求的是相机坐标系和机械臂基坐标系之间的转换矩阵。其中,M1可以从机器人示教器或者控制读出,Mx是需要求取的未知矩阵,M3可以从拍摄照片计算出来,M2未知,但是是一个固定的转换矩阵,利用坐标转换,有如下的等式关系:Mx=M1M2M3^(-1),如果我有许多个这样的等式,利用M2不变,可以构建关于Mx的方程组,解方程组,求得Mx中各个元素的值,在这个过程中我们不必去求M2具体是多少,只是利用了其固定不变这个特性而已。

| 戳戳小手帮忙点个免费的赞吧,嘿嘿。 |
边栏推荐
- 【ASM】字节码操作 MethodVisitor 案例实战 生成对象
- 6. The File types
- Tom Morgan | Twenty-One Rules of Life
- Quick sort eight sorts (3) 】 【 (dynamic figure deduction Hoare, digging holes, front and rear pointer method)
- IDEA见过就会爱上的超实用快捷键,一键十行!
- 3D printed this DuPont cable management artifact, and the desktop is no longer messy
- 6.Map interface and implementation class
- Go-接口的那些事
- cannot import name ‘load_offloaded_weights‘ from ‘accelerate.utils‘ (/home/huhao/anaconda3/envs/huha
- 梦笔记0809
猜你喜欢

在anaconda环境中配置cuda和cudnn

LeetCode148:排序链表 归并排序,思路清晰,C语言练习看过来!

Sweet alert

Demand side power load forecasting (Matlab code implementation)

快速解决MySQL插入中文数据时报错或乱码问题

基于信号量与环形队列实现读写异步缓存队列

搭建Tigase进行二次开发

EndNote使用指南
![[Machine Learning] Detailed explanation of web crawler combat](/img/ac/f00f0c81e66ba526ac39ee60fad72b.png)
[Machine Learning] Detailed explanation of web crawler combat
![[Machine Learning] Basics of Data Science - Basic Practice of Machine Learning (2)](/img/9f/5afabec1b9ab1871130c8bf1bae472.png)
[Machine Learning] Basics of Data Science - Basic Practice of Machine Learning (2)
随机推荐
STM32F103实现IAP在线升级应用程序
集合与函数
try catch 对性能影响
Go-控制语句那些事
【 size_t is unsigned integer (1 > 10) - > 1.
LeetCode148:排序链表 归并排序,思路清晰,C语言练习看过来!
喜迎排名18
MySQL全文索引
mysql简单安装
LeetCode(剑指 Offer)- 25. 合并两个排序的链表
Arrays类、冒泡排序、选择排序、插入排序、稀疏数组!
KMP& sunday
免费下载天地图全国基础地理信息矢量数据的一种方法
JDBC中的增删改查操作
Firebase+Facebook 授权 web 登录提示域名验证或跳转错误
慕课网-简易扑克牌游戏 思路清晰 简易版
KeyBERT和labse提取字符串中的关键词
1. The concept of flow
EndNote User Guide
function two