手眼标定眼在手上

这篇具有很好参考价值的文章主要介绍了手眼标定眼在手上。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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文章来源地址https://www.toymoban.com/news/detail-634147.html

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


















到了这里,关于手眼标定眼在手上的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机械臂手眼标定ZED相机——眼在手外python、matlab

    目录 1.眼在手外原理 2.附上眼在手外求得手眼矩阵的python代码 3.眼在手外标定步骤 1)打印棋盘格 2)得到hand数据 3)得到camera数据 4.运行python得到手眼矩阵   眼在手外所求的手眼矩阵是基坐标到相机的转换矩阵 其中:         hand为基坐标系下抓夹的位姿,一般从示教器

    2024年02月11日
    浏览(33)
  • 机器人手眼标定快速精度验证方法

    一、原理及流程         机器人的手眼标定原理在本文中不再过多描述,基本流程都是先标定相机的内外参数,然后标定两台相机之间的位置关系,如果相机是可以转动的话,还要标定转台与机械臂之间的关系。         在手眼标定完成后,怎么确定标定结果是否准确呢

    2024年02月02日
    浏览(46)
  • 机器人手眼标定原理与python实现

    机器人手眼标定分为eye in hand与eye to hand两种。介绍之前进行变量定义说明: {b}: base基坐标系 {g}: gripper夹具坐标系 {t}: target标定板坐标系 {c}: camera相机坐标系 1、眼在手上(eye in hand) 眼在手上,相机固定在机器人上。 图1. eye in hand示意图 由以上两公式得: 经变换得: 可得:

    2024年02月02日
    浏览(38)
  • 利用ROS做机器人手眼标定和Qt+rviz+图片话题显示的UI设计

            博主是在上一篇博文的基础上作的研究和总结,希望这篇文章可以对诸君有用,同时博主也对鱼香ROS、小鱼大佬、以及其他相关创作者的支持表示由衷的感谢,本文章内容也将继续公开且代码开源。         文章将讲述usb_cam(usb相机内参标定)、handeye-calib(手眼标

    2024年02月21日
    浏览(51)
  • python 手眼标定OpenCV手眼标定(calibrateHandeye())一

    以下代码来源 本篇博客通过该代码,附上记录的公式与查找连接,方面以后调用能弄懂各个参数的意思 本篇看完看第二篇代码踩坑部分python 手眼标定OpenCV手眼标定(calibrateHandeye())二 相机标定原理视频介绍 calibrateHandeye() 参数描述如下:R_gripper2base,t_gripper2base是机械臂抓手

    2024年02月15日
    浏览(45)
  • python 手眼标定OpenCV手眼标定(calibrateHandeye())二

    这一章我们来根据上一章的分析,为手眼标定函数calibrateHandEye 准备他那些麻烦的参数 更详细的参数参考链接 即R_all_end_to_base_1,T_all_end_to_base_1, 我们可用通过输入的机械臂提供的6组参数得到,3个位姿与3个欧拉角 示例代码 这里是关系是 通过 cv2.findChessboardCorners 角点查找函数

    2024年02月01日
    浏览(36)
  • 机器视觉旋转中心的标定

    首先呢,今天要聊聊工业视觉领域应用中抓取物料要用到“旋转中心”,我们先思考一下以下两个问题:  1、为什么要标定旋转中心?  2、旋转中心的标定步鄹分为哪些? 一、为什么要标定旋转中心? 在我们现在工业视觉应用的过程中,存在这样的案例:机械手要抓取物料

    2024年02月09日
    浏览(46)
  • 机器视觉——旋转中心的标定

    在机器视觉实际应用过程中,有这样的案例:机械手要抓取物料,物料每次的角度不一样,机械手的末端工具中心与其自身的旋转中心不重合,如果想完成这个抓取的工作,有两种解决方案: TCP标定 (Tool Center Point) 一般机械手都会有建立新工具坐标系的功能,比如EPSON。

    2023年04月08日
    浏览(36)
  • 手眼标定,9点标定过程及其运算

    在工业领域常常会遇到将相机安装在机器手中,由相机快速引导机器手进行工作的方式。其中9点标定的作用是将图像的坐标转化为机器手的坐标。 不同标定文件的区别:不同标定的区别在于:图像坐标系与机器人坐标系是否匹配,单像素精度是否匹配。影响单像素精度是,

    2023年04月24日
    浏览(38)
  • 相机标定-机器视觉基础(理论推导、Halcon和OpenCV相机标定)

             相机标定是获得目标工件精准坐标信息的基础。首先,必须进行相机内参标定,构建一个模型消除图像畸变;其次,需要对相机和机器人的映射关系进行手眼标定,构建一个模型将图像坐标系上的点映射到世界坐标系。主要分为背景知识、相机内外参模型推导、

    2023年04月21日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包