手眼标定眼在手上

news2024/9/21 20:23:00

1、为什么要用手眼标定(在贴片机上定位已调通)

参考手眼标定特别是眼在手上在网上的文章很多,但很多在实际中调试不通。在定位时候,往往希望相机能返回的是机械的世界坐标,而不是相机的的图像坐标。从而间接计算出相机坐标系与机械坐标世界坐标转换矩阵,以镜头中心为参考点。

2、手眼标定的实现

 stp1:移动模组3*3 ,3行3列,分别模组走一个点(Bx,By),相机拍照获取一张图片Mark的坐标(Ax,Ay)的坐标。

*已知模组的9个点
Ax:=[825.505,1116.06,1405.89,830.793,1121.89,1412.44,836.321,1127.35,1417.95]
Ay:=[1413.87,1419.22,1423.91,1122.52,1128.24,1133.46,830.913,836.734,842.063]

*相机Mark获取的坐标
Bx:=[-152.7289,-153.7289,-154.7289,-152.7289,-153.7289,-154.7289,-152.7289,-153.7289,-154.7289]
By:=[-92.8409,-92.8409,-92.8409,-93.8409,-93.8409,-93.8409,-94.8409,-94.8409,-94.8409]

stp2:仿射变换求出仿射矩阵HomMat2D

vector_to_hom_mat2d ( Ax, Ay, Bx, By,HomMat2D)

stp3:求世界坐标

手眼标定,以相机中心

1、求出base,以图像dqx1, dqy1(0,0)为参考点

affine_trans_point_2d (HomMat2D, 0, 0, dqx1, dqy1)

2、求出图像Mark坐标(pixx:=1417.95,pixy:=842.063)到图像中心点坐标的世界坐标(标定时候的)中心点(1024,1224)

dpix:=1024-pixx
dpiy:=1224-pixy

affine_trans_point_2d (HomMat2D, dpix, dpiy, dqx, dqy)

3、求出偏差Offset   dqx2,dqy2   

dqx2:=dqx-dqx1
dqy2:=dqy-dqy1

4、模组获取反馈的运动控制的坐标realx,raaly,求出镜头中心实际坐标realx3,realy3

realx3:=realx+dqx2
realy3:=raaly+dqy2

read_image(Image, 'printer_chip/printer_chip_01')
*已知A坐标系的9个点
Ax:=[825.505,1116.06,1405.89,830.793,1121.89,1412.44,836.321,1127.35,1417.95]
Ay:=[1413.87,1419.22,1423.91,1122.52,1128.24,1133.46,830.913,836.734,842.063]
 
*待识别的B坐标点,和上面的A坐标系点一一对应
Bx:=[-152.7289,-153.7289,-154.7289,-152.7289,-153.7289,-154.7289,-152.7289,-153.7289,-154.7289]
By:=[-92.8409,-92.8409,-92.8409,-93.8409,-93.8409,-93.8409,-94.8409,-94.8409,-94.8409]
* for Index := 1 to 9 by 1
*     dev_display (Image)
    * 以下过程为在B坐标系找A中的9个点
*     draw_rectangle1 (200000, Row1, Column1, Row2, Column2)
*     gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
*     reduce_domain (Image, Rectangle, ImageReduced)
*     binary_threshold (ImageReduced, Region, 'max_separability', 'light', UsedThreshold)
*     connection (Region, ConnectedRegions)
*     select_shape (ConnectedRegions, SelectedRegions, 'roundness', 'and', 0.7, 1)
*     select_shape (SelectedRegions, SelectedRegion2, 'rb', 'and', 32, 100)
*     fill_up (SelectedRegions, RegionFillUp)
    *找到了B坐标系的点(Row,Column)
*     area_center (RegionFillUp, Area, Row, Column)
*     Bx:=[Bx,Column]
*     By:=[By,Row]
* endfor
*得到目标变换矩阵HomMat2D
    
vector_to_hom_mat2d ( Ax, Ay, Bx, By,HomMat2D)
 vector_to_hom_mat2d ( Bx, By, Ax, Ay,HomMat2DINV)

********new realx raaly机械反馈的坐标
realx:=-154.7289
raaly:=-94.8409
pixx:=1417.95
pixy:=842.063
dpix:=1024-pixx
dpiy:=1224-pixy
affine_trans_point_2d (HomMat2D, dpix, dpiy, dqx, dqy)
affine_trans_point_2d (HomMat2D, 0, 0, dqx1, dqy1)

dqx2:=dqx-dqx1
dqy2:=dqy-dqy1

realx3:=realx+dqx2
realy3:=raaly+dqy2


















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

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

相关文章

JavaWeb三大组件 —— Servlet

目录 servlet 注册servlet 父pom pom文件 1、通过注解注册 2、使用ServletRegistrationBean注册 API三生三世 第一生Servlet 第二生SpringMVC 今生SpringBoot servlet Servlet的作用: 接受请求参数、处理请求,响应结果,(就…

Qlik Sense 移动端安装配置

在之前的文章中,我们了解到Qlik Sense是一款数据分析可视化的应用,使人们能够轻松地组合来自许多不同来源的数据,并自由探索,而不受基于查询的工具的限制。不仅支持Web端访问,还有配套的Windows Desktop使用&#xff0…

最新2024届【海康威视】内推码【GTK3B6】

最新2024届【海康威视】内推码【GTK3B6】 【内推码使用方法】 1.请学弟学妹们登录校招官网,选择岗位投递简历; 2.投递过程中填写内推码完成内推步骤,即可获得内推特权。 内推码:GTK3B6 内推码:GTK3B6 内推码&…

边写代码边学习之RNN

1. 什么是 RNN 循环神经网络(Recurrent Neural Network,RNN)是一种以序列数据为输入来进行建模的深度学习模型,它是 NLP 中最常用的模型。其结构如下图: x是输入,h是隐层单元,o为输出&#xff…

有哪些好用的AI绘画网站?

随着人工智能技术的发展,人工智能绘画工具逐渐成为数字艺术领域的热门话题。人工智能绘画工具是利用深度学习和其他技术来模拟绘画过程和效果的工具,可以帮助用户快速创作高质量的艺术作品。除了Midjourney、除了openai等流行的AI绘画工具外,…

Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述

Flutter游戏引擎Flame系列笔记 1.Flame引擎概述 - 文章信息 - Author: 李俊才(jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/132119035 【介绍】…

【微信小程序创作之路】- 小程序远程数据请求、获取个人信息

【微信小程序创作之路】- 小程序远程数据请求、获取个人信息 第七章 小程序远程数据请求、获取个人信息 文章目录 【微信小程序创作之路】- 小程序远程数据请求、获取个人信息前言一、远程数据请求1.本地环境2.正式域名 二、获取用户个人信息1.展示当前用户的身份信息2.获取用…

Vue电商项目--导航守卫

导航守卫理解 导航 守卫 导航:表示路由正在发送改变,进行路由跳转 守卫:你把它当中‘紫禁城守卫’ 全局守卫:你项目中,只要路由变化,守卫就能监听到。 举例:紫禁城【皇帝,太子】…

sk_buff操作函数学习

一. 前言 内核提供了大量实用的操作sk_buff的函数,在开发网络设备驱动程序和修改网络协议栈代码时需要用到。这些函数从功能上可以分为三类:创建,释放和复制socket buffer;操作sk_buff结构中的参数和指针;管理socket b…

XML 学习笔记 7:XSD

本文章内容参考自: W3school XSD 教程 Extensible Markup Language (XML) 1.0 (Second Edition) XML Schema 2001 XML Schema Part 2: Datatypes Second Edition 文章目录 1、XSD 是什么2、XSD 内置数据类型 - built-in datatypes2.1、基本数据类型 19 种2.1.1、基本…

从0到1自学网络安全(黑客)【附学习路线图+配套搭建资源】

前言 网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的…

【STM32】小电流FOC驱控一体板(开源)

FOC驱控一体板 主控芯片stm32f103c8t6 驱动芯片drv8313 三相电流采样 根据B站一个UP主的改的(【【自制】年轻人的第一块FOC驱动器】),大多数元器件是0805,实验室具备且便于自己动手焊接 。 晶振用的是无源晶振,体…

Bias Tee理论到实践

Bias Tees是将直流电压施加到必须传递RF/微波信号的任何组件的必不可少的组件,最常见的是需要DC电源的RF放大器。 对于窄带应用,bias tee设计和结构是简单的,只需要注意组件的自谐振频率。 然而,对于宽带应用,bias t…

基于瑞萨RA6M5的环境监测系统设计

基于瑞萨RA6M5的环境监测系统设计 1. 设计简介 本项目初步设计思路是打算以瑞萨单片机作为控制和数据处理的单元,使用温湿度,光照传感器去监测周围的环境参数,在屏幕上完成传感器数据和相关信息的显示。同时,使用WIFI无线模组与…

用于大型图像模型的 CNN 内核的最新内容

一、说明 由于OpenAI的ChatGPT的巨大成功引发了大语言模型的繁荣,许多人预见到大图像模型的下一个突破。在这个领域,可以提示视觉模型分析甚至生成图像和视频,其方式类似于我们目前提示 ChatGPT 的方式。 用于大型图像模型的最新深度学习方法…

Pytohn将matplotlib嵌入到tkinter中

文章目录 matplotlib窗口组成tkinter布局嵌入图像 matplotlib窗口组成 tkinter是Python标准库中自带的GUI工具,使用十分方便,如能将matplotlib嵌入到tkinter中,就可以做出相对专业的数据展示系统,很有竞争力。 在具体实现之前&a…

FTP使用教程

FTP使用教程 目录 一.FTP简介二.FTP搭建三.FTP使用 一.FTP简介 FTP中文为文件传输协议,简称为文传协议。它也是一个应用程序,不同的操作系统有不同的FTP应用程序,这些应用程序都遵守同一种协议以…

六寸相纸打印拼图 - opencv

准备自己打印一些照片,三寸相纸性价比低,只好买六寸来拼四张然后裁剪,不过并没有搜到提供了这个功能的工具,想想代码应该很简单,所以就造轮子了。可能其实有但是我没搜到。 轮子在这里: https://github.co…

ArraySetter

简介​ 用来展示属性类型为数组的 setter 展示​ 配置示例​ "setter": {"componentName": "ArraySetter","props": {"itemSetter": {"componentName": "ObjectSetter","props": {"c…

React 论文《ReAct: Synergizing Reasoning and Acting in Language Models》阅读笔记

文章目录 1. 简介论文摘要翻译动机和主要贡献 2. REACT : SYNERGIZING *RE*ASONING *ACT*ING3. KNOWLEDGE-INTENSIVE REASONING TASKS3.1 设置3.2 方法3.3 结果和观察 4. 决策任务5. 参考资料 1. 简介 论文摘要翻译 虽然大型语言模型(LLM)在自然语言理…