手机拍照转机器人末端坐标(九点标定法)

news2025/1/23 13:55:45

1.打印标定纸,随机九个点

2.让UR机器人末端分别走到P1-P9九个点

在图示位置读取九个点的X,Y坐标

3.手机拍照(固定点)

测试可以随机拍一张,实用的话需要固定手机的拍照位置,得到的图片如下:

4.OpenCV取值这九个点的像素坐标

 实用如下代码显示这个图片,用鼠标悬停取抄写坐标

import cv2
import numpy as np

input_img='/home/cheni/Downloads/xyz.jpeg'
image = cv2.imread(input_img)
#让图片可以缩写拉伸
cv2.namedWindow('Harris', cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO)
cv2.imshow('Harris',image)

if cv2.waitKey(0) & 0xff == 27:
    cv2.destroyAllWindows()

效果如下:

鼠标悬停在P1上,在左下角就可以读取这个像素坐标值了。

5.标定矩阵计算加验证

验证算法如下:

import numpy as np
import cv2
robot_end_xy=np.array([
    [-316,-611.4],
    [-359.7,-589.3],
    [-296.4,-573.2],
    [-372.3,-558.7],
    [-293.8,-530],
    [-343.4,-522.7],
    [-222.8,-510],
    [-329.6,-486.6],
    [-288.1,-472.4],
])
phone_image_xy=np.array([
    [1371,923],
    [1912,965],
    [1367,1479],
    [1764,1423],
    [1555,1890],
    [2115,1702],
    [930,2490],
    [2150,2175],
    [1799,2520],
 ])
#计算两组坐标之间的仿射矩阵
m, _ = cv2.estimateAffine2D(phone_image_xy, robot_end_xy)
print (m)
def get_points_robot(x_camera, y_camera):
    robot_x = (m[0][0] * x_camera) + (m[0][1] * y_camera) + m[0][2]
    robot_y = (m[1][0] * x_camera) + (m[1][1] * y_camera) + m[1][2]
    return robot_x, robot_y
#验证其中一个点,倒数第三个(930,2490)像素坐标转换机器人坐标
x,y= get_points_robot(930,2490)
print(x,y)

运行后结果分析:

cheni@yuchen:~$ /bin/python3 /home/cheni/Desktop/suanfa.py
[[-7.71668805e-02  3.77840943e-02 -2.45046408e+02]
 [ 3.92542458e-02  7.59681698e-02 -7.35221624e+02]]
-222.7292116274272 -509.55443216333356
cheni@yuchen:~$ ^C

1是计算的仿射矩阵,2是验证倒数第三个点,可以看到误差不是太大。 

6.参考文章

 Python-opencv 手眼标定(九点定位)_opencv设置视觉抓取点怎么确定-CSDN博客

基于OpenCv的机器人手眼标定(九点标定法)《转载》_qt opencv 九点标定_hehedadaq的博客-CSDN博客

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

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

相关文章

21.1 stm32使用LTDC驱动LCD--配置说明

本文讲解如何配置LTDC驱动LCD的参数配置,以及CubeMx参数配置说明 本文使用的是淘宝买的一块带电容触摸的液晶显示屏:5寸TFT液晶显示屏高清800*480免驱40P通用RGBIPS全视角彩屏GT911 说实话,价格还是相对挺便宜的,值得入手&#xf…

爱胜品YPS-1133DN系列打印机与奔图P3301DN打印机耗材更换的简单对比说明

速印机(理想、荣大等)、复印机(夏普、理光、佳能、震旦等全系列)、打印机、扫描仪、传真机、多媒体教学一体机、交互式电子白板、报警器材、监控、监考设备、特种安防设备维护及维修。吴中函 某用户的爱胜品YPS-1133DN Pro、爱胜品…

多货币一件铺货跨境电商商城开发

无论你身处世界的哪个角落,都能够畅享全球购物的便利。多货币一件铺货跨境电商商城是为了满足每个消费者的购物需求而精心打造的。无论你喜欢的是日本的时尚潮品、韩国的美妆产品,还是欧美的奢侈品和家居用品,我们都可以为你提供一站式购物服…

通讯录的实现(增删查改排序)

本课题模拟通讯录的实现,包括: 1.增加联系人的信息 2.删除联系人 3.查找联系人 4.修改联系人信息 5.对联系人进行排序 本节目录: 通讯录的实现样貌展示:这就算通讯录的菜单 下面对每个功能进行模块性讲解。 一、通讯录变量…

领英如何注册?2023超全面详细教程

领英是一家面向商业用户的全球最大的职业社交网站,据统计,Linkedln用户每月与网页的交互次数超过10亿次。对于跨境人来说,他更是作为一个开发客户、广告营销的工具,被称为跨境的“风口”。 一、领英被封原因 1、IP、设备问题 1&…

QT中使用QVTKOpenGLNativeWidget的简单教程以及案例,利用PCLVisualizer显示点云

先添加一个带有ui的QT应用程序。 一、在ui界面中添加QVTKOpenGLNativeWidget控件 先拖出来一个QOpenGLWidget控件 修改布局如下: 然后将QOpenGLWidget控件提升为QVTKOpenGLNativeWidget控件,步骤如下: 右击QOpenGLWidget窗口,选…

Linux系统下的shell外壳

往期回顾: ⭐Linux系统常用指令(一) ⭐Linux系统常用指令(二) ⭐Linux系统常用指令(三) ⭐Linux系统常用指令(完) 本篇文章我们来深挖Linux的知识! Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel) “ ,但我们一般用…

技术路线决定出海方向:中国车企的全球市场密码

摘要:面对全球化的挑战,中国汽车企业站在了一个十字路口:选择大众市场还是豪华市场?背后涉及的不仅是消费者的购车偏好,更有技术路线和产业链的深层次支撑。从丰田的Prius到宝马的驾驶乐趣,不同的市场策略背后隐藏着怎样的全球化密码? 随着全球化浪潮的…

网络库OKHTTP(3)拦截器扩展,一个好用的网络请求监控工具Chuck

序、慢慢来才是最快的方法。 场景一 明明是服务端的接口数据错误,而QA(测试)第一个找到的可能是客户端开发的你,为什么这个页面出现错误了? 而作为客户端开发的你,可能要拿出测试机连上电脑,打…

ftp服务开启——windows

一、打开服务 1、打开控制面板——》选中程序和功能 2、 选择启用或关闭windows功能 3、全选FTP服务器,web管理工具里面的IIS管理控制台,一个都不能漏 4、全选 万维网服务下面的安全性的所有选项,最后点击确定 二、 IIS 配置 1、windows的…

如何使用ai去水印?用这款就够了

AI在图像处理领域的不断成熟确实为我们提供了更多便利和高效率的工具,使得图像处理变得更加便捷,尤其是AI去水印技术,它可以轻松去除图片中的各种杂质,包括水印、文字、标志、物体、以及其他杂乱的干扰元素,有效提高了…

SSM - Springboot - MyBatis-Plus 全栈体系(三十一)

第七章 MyBatis-Plus 二、MyBatis-Plus 核心功能 1. 基于 Mapper 接口 CRUD 通用 CRUD 封装 BaseMapper (opens new window)接口, Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器! 内部包含常见的单表操作! 1.1 Insert 方…

LoongArch 指令集设计——单周期5条指令exp5

对应实验手册请参阅《LoongArch CPU设计实验》。 NOTE: minicpu_env/miniCPU/目录下的代码功能不全,是有意为之,无需提issue修正。mycpu_env/myCPU/目录下的代码有功能错误,亦是有意为之,无需提issue修正。 实验安排简介 // dc…

E053-web安全应用-Brute force暴力破解初级

课程分类: web安全应用 实验等级: 中级 任务场景: 【任务场景】 小王接到磐石公司的邀请,对该公司旗下的网站进行安全检测,经过一番检查发现该论坛的后台登录页面上可能存在万能密码漏洞,导致不知道账号密码也能登录后台&am…

Windows消息 队列

1、 Windows消息机制 Windows是一个消息驱动的操作系统,消息是用一个常量标识符来标记,并且有两个32Bit的消息附加信息。单击鼠标、敲击键盘,都会通过电脑外设向系统发送特定的中断信号,这个中断信息在操作系统中会转化为一个消息…

leetcode每日一题复盘(10.16~10.22)

leetcode 501 二叉搜素树中的众数 对二叉搜索树的性质还不是很熟悉,不懂得利用其性质,做题没有方法论,这是暴露出来的问题,明天重做一下98,530,501这三个题,再进行总结

33 机器学习(一):特征工程

文章目录 机器学习需要用到的包的介绍机器学习做什么深度学习做什么常见的概念 数据介绍数据类型数据的来源数据的构成 特征工程one-hot编码接口集特征提取DictVectorizerCountVectorizerTfidfVectorizer 特征处理归一化 MinMaxScaler标准化 StandardScaler标准化和归一化的对比…

mmdetection及mmengine源码结构

python中的装饰函数 所谓的函数修饰符,就是在函数外面再套一层函数, 装饰函数可以接受不同的参数类型的函数传入,对其进行装饰加工; 在需要装饰的函数前面装饰函数即可; 这样子做的好处在于代码的复用,比…

使用interrupt()中断线程

示例一 : public class Test01 extends Thread {Overridepublic void run() {while (true) {}}public static void main(String[] args) {Test01 t new Test01();t.start();try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}System.out.prin…

家用洗地机哪个牌子最好用?质量最好的洗地机推荐

提到家务清洁,相信应该是很多宝妈头疼的事儿,不仅工作量打,耗时又耗力,拥有一款完美的清洁工具,那讲大大的提升幸福指数,而洗地机便是当下的智能清洁神器之一。那么家用洗地机哪个牌子最好用,质…