工业现场使用视觉时一般需要相机坐标系和机械手臂坐标系的转化,这里介绍一种比较简单的标定方案。没有使用到标定板。经过几个项目的测试,精度还算可以,如果要求高精度的场合,就用标定板标定吧!【可以购买专用的标定板,或者自己制作(像我这种穷逼),哈哈,可以阅读这个文章下这个软件自己做一个标定板嘿!】

如上图所示:OXY为机械手坐标系,O'X'Y'为相机坐标系。theta为两个坐标系之间的夹角。假设P点在图像上的位置如图,则P在机械手坐标系有一个坐标,在图像坐标系也有一个坐标。我们要做的工作就是图像上的任意一点都可以转化为机械手坐标系上的坐标点:P(Machine) = f(P(Image))。接下来介绍如何找到这个关系。

OXY为机械手坐标系 O'X'Y'为相机坐标系从上图可以看出坐标转化关系:

x = x' * r * cos(theta) - y' * r * sin(theta) + x0;

y = x' * r * sin(theta) + y' * r * cos(theta) + y0;

其中r是毫米像素比、(mm/pixel)就是一个毫米有几个像素,theta为两个坐标系之间的夹角,(x0,y0)为图像坐标原点到机械坐标原点的距离。

简化抽象公式,假设:

a = r * cos(theta);

b = r * sin(theta);

c = x0;

d = y0;

得到:

x = x' * a - y' * b + c;

y = x' * b + y' * a + d;

很显然,要解出这个方程,需要两组对应关系,就是两组对应的坐标点。设两组坐标点,如下:

第一组:图像坐标点:(xImage1,yImage1) 对应的机械坐标点:(xMachine1,yMachine1)

第二组:图像坐标点:(xImage2,yImage2) 对应的机械坐标点:(xMachine2,yMachine2)

则可以解出a ,b, c, d。如下:

a = ((xMachine1 - xMachine2)*(xImage1- xImage2) + (yMachine1 - yMachine2)*(yImage1 - yImage2))   / ((xImage1 - xImage2)*(xImage1 - xImage2) + (yImage1 - yImage2)*(yImage1 - yImage2));
b = ((yMachine1 - yMachine2)*(xImage1 - xImage2) - (xMachine1 - xMachine2)*(yImage1 - yImage2))   / ((xImage1 - xImage2)*(xImage1 - xImage2) + (yImage1 - yImage2)*(yImage1 - yImage2));
c = xMachine1 - a*xImage1 + b*yImage1;
d = yMachine1 - b*xImage1 - a*yImage1;

所以,就得出了图像上任意一点的像素坐标转成机械手坐标的关系。

以下是我写的一个求解a ,b, c, d软件:需要的点这里下载。下面是软件截图:

下面举个栗子说明一下操作吧!这是我实际项目中的机械手和相机布局情况,画图真T``M`累!,如下图:

首先将产品上的目标点搞到机械手的Z轴的中心,然后移动到相机事业范围内,让识别产品上的目标点,这时,你会读到一组机械手坐标(也就是上面所说的(xMachine1,yMachine1)),和一组相机坐标(也就是上面所说的(xImage1,yImage1)),再在相机视野范围内移动机械手,就可以得到第二组数据(xMachine2,yMachine2)和(xImage2,yImage2),写入标定软件就可以求出a, b, c, d。就求出了图像上任意一点对应的机械坐标,然后你下次移动第二个产品到相机视野时,首先识别目标点的像素坐标,经过对应的转换就可以得出机械坐标,然后进行相应的偏移即可实现你想要的操作!

当然,有些时候,实际现场并没有如你所愿,现在出现一种情况就是以机械手自带的Z轴无法移动到视野中去,这样就无法进行上面的操作了,系不系!这也是我遇到的情况,SO,我的解决方案如下:先上示意图:

如图,就是在机械手Z轴的横杆上加上一个横条,使得产品可以移动到视野范围内。然后进行上面的操作,虽然现在可以将产品移动到视野范围内了,但是你会发现此时机械手的坐标并不是产品的坐标,因为他们之间隔着一个横条,那我们要怎么换算过来呢!

首先,我们可以这么假定的认为,他们是机械手的坐标就是产品的坐标,然后就可以用上面取两组对应点的方法求出图像上每个点的机械坐标了,但是,此时的机械坐标并不是真正的机械坐标,但是,我们可以利用这些坐标找出机械手U轴的旋转中心就是Z轴(就是实际机械坐标所在的位置)在我们所建立的不是真正的机械坐标系中的坐标。是不是有点不好理解,我也不大清楚怎么描述!求U轴的旋转中心的过程如下:上图:

如图:将产品的目标点绕机械手的U轴的旋转中心旋转得到3的目标点的不是真正的机械坐标系的坐标P1,P2,P3,必须让每次旋转的目标点在视野范围内,然后通过圆弧上的3点就可以求得圆心。此时的圆心坐标为不是真正的机械坐标系的坐标。然后我们就可以求出产品中心和机械手U轴旋转中心的deltaX,deltaY,然后就可以结合真正的机械坐标系建立工件坐标系,要对机械手有些了解才比较好理解这些拗口的话!然后对于每一个新的产品都可以建立合适的工件坐标系,然后进行补正和一些操作!(上面那个软件也有三点求圆心的工具)

        或者,最近我制作了一个更加强大一点的软件(并且修复上面的哪个软件不能输入负数的缺陷),也可以直接算出这边第二种情况的对应关系(详细细节见该软件的帮助信息),看下这篇文章的介绍,里面有提供下载地址。略贵!哈哈,不过毕竟是辛辛苦苦做出来哒!

相机绑定在机械手上的标定方法参考这里工业现场相机坐标系和机械手坐标系的标定(2)-相机和机械手绑定的情况,以上是我最近总结的心得体会,希望对大家有所帮助!如果帮助到您,点个赞!^-^

工业现场相机坐标系和机械手坐标系的标定(1)-相机和机械手分离的情况相关推荐

  1. 工业现场相机坐标系和机械手坐标系的标定

    原文:https://blog.csdn.net/kaychangeek/article/details/73878994 参考:https://blog.csdn.net/qq_16481211/a ...

  2. 相机光心在世界坐标系下的坐标(相机坐标系原点在世界坐标系下的坐标与c2w的关系)

    例子 如下图所示,右边的坐标系是相机坐标系,左边的是世界坐标系. 假设他们只有 x 轴方向上的平移. 相机坐标系原点在相机坐标系下的坐标是 (0,0,0), 假设相机坐标系在世界坐标系沿 x 轴正方向 ...

  3. 【自动驾驶】16.计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换

    本篇博客为转载,我对其中的细节添加了一些说明. 原文链接:https://blog.csdn.net/chentravelling/article/details/53558096 0.前言 最近整理 ...

  4. 世界坐标系,相机坐标系和图像坐标系的转换(Python)

    世界坐标系,相机坐标系和图像坐标系的转换(Python) 相机内参外参说明:相机内参外参_pan_jinquan的博客-CSDN博客_相机内参 计算机视觉:相机成像原理:世界坐标系.相机坐标系.图像坐 ...

  5. 单目视觉标定:世界坐标系、相机坐标系、图像坐标系、像素坐标系——简单粗暴,粗暴

    转:https://blog.csdn.net/chentravelling/article/details/53558096 1.正文 图像处理.立体视觉等等方向常常涉及到四个坐标系:世界坐标系.相 ...

  6. 计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换(转载)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chentravelling/article/details/53558096 0.前言 最近整理了& ...

  7. 三维视觉基础之世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的转换关系

    三维视觉基础之世界坐标系.相机坐标系.图像坐标系和像素坐标系之间的转换关系 一.各坐标系介绍 二.世界坐标系和相机坐标系之间的转换 三.相机坐标系和图像坐标系之间的转换 四.图像坐标系和像素坐标系之间 ...

  8. 浅析相机相关坐标系的相互转换(世界坐标系、相机坐标系、图像坐标系、像素坐标系、内参矩阵、外参矩阵、扭转因子)【相机标定计算机视觉】

    最近在网上看到了很多关于坐标系转换的帖子,但是其内容很多都是相互转载(甚至还有一部分是错误的),同时大部分的文章内容都是告诉你四种坐标系间的相互转化的数学公式,看完之后很多时候还是不知所云,本文意在深 ...

  9. 像素坐标系、图像坐标系、相机坐标系、世界坐标系

    像素坐标系.图像坐标系.相机坐标系.世界坐标系 文章目录 像素坐标系.图像坐标系.相机坐标系.世界坐标系 1.图像坐标系 → \rightarrow →​像素坐标系 2.图像坐标系 → \righta ...

最新文章

  1. JAVA的两个FTP包的比较
  2. 用时间换才华:李开复给创业者的7条时间管理建议 【转载】
  3. Spring中获取bean
  4. SAP ABAP常用正则表达式大全
  5. 震惊!评审专家将论文拒稿后修改发表
  6. Java学习路线,你值得了解
  7. python自动爬取更新电影网站_python爬取电影网站信息
  8. 学以致用二十二-----写一个基本环境设置的脚本
  9. zabbix server和client的快速部署
  10. python 不定参数_人生苦短,我学不会Python。——函数中不定长参数的写法
  11. 基于SSM的单点登陆01
  12. 27.3. Directory and File System Related
  13. Qimage像素级操作
  14. 【源码】高精度31波段音频均衡器
  15. Python最吃香的5个就业方向,薪资收入也非常可观!
  16. # pyton基础 1
  17. HTML中怎么改变一条线的粗细
  18. 如何在微信中做好微信h5棋牌下载类推广防封防屏蔽?
  19. u9搜索引擎推送破解版
  20. 协处理器CP15操作指令

热门文章

  1. ie css动画,ie不支持css3动画吗
  2. FANSMI音乐下载器原理
  3. python游戏开发实战:梦幻西游背包系统
  4. 额温枪准确性取决于红外传感器的稳定性
  5. 害怕WiFi辐射?新技术可将辐射降至万分之一
  6. 微信文章底部增加淘宝入口;Google 推出 ChatGPT 竞品 Bard;苹果或推出无接口设计iPhone|极客头条
  7. macosx86 Broadcom NetXtreme Gigabit Ethernet 网卡
  8. python 绘制花球_巧手匠心——手作课堂-中国大学mooc-题库零氪
  9. nginx php 403 js,Nginx 跨域 add_header 403状态下无效
  10. oracle集群+默认什么组,Oracle RAC 建设过程中必须应知、应做(上)