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

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

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

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

3.手机拍照(固定点)

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

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

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

import cv2
import numpy as npinput_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.rhkb.cn/news/167300.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用AI编写测试用例——详细教程

随着今年chatGPT的大热,每个行业都试图从这项新技术当中获得一些收益我之前也写过一篇测试领域在AI技术中的探索:软件测试中的AI——运用AI编写测试用例现阶段AI还不能完全替代人工测试用例编写,但是如果把AI当做一个提高效率的工具&#xff…

基于单片机设计的家用自来水水质监测装置

一、前言 本文介绍基于单片机设计的家用自来水水质监测装置。利用STM32F103ZET6作为主控芯片,结合水质传感器和ADC模块,实现对自来水水质的检测和监测功能。通过0.96寸OLED显示屏,将采集到的水质数据以直观的方式展示给用户。 随着人们对健…

图论01-【无权无向】-图的基本表示-邻接矩阵/邻接表

文章目录 1. 代码仓库2. 图的基本表示的比较3. 邻接矩阵:Array和TreeSet3.1 图示3.2 Array主要代码解析3.3 测试输出3.4 使用TreeSet的代码 4. 邻接表:LinkedList4.1 图示4.2 LinkedList主要代码解析4.3 测试输出 5. 完整代码5.1 邻接表 - Array5.2 邻接…

深入理解C++红黑树的底层实现及应用

文章目录 1、红黑树简介1.1 、概述:介绍红黑树的定义、特点和用途。 2、红黑树节点的定义3、红黑树结构3.1、红黑树的插入操作 4、红黑树的验证4.1、红黑树的删除4.2、红黑树与AVL树的比较4.3、红黑树的应用 5、总结 1、红黑树简介 1.1 、概述:介绍红黑…

Linux | 深入浅出冯诺依曼

前言 但凡是科班出生的小伙伴多多稍稍应该都听过冯诺依曼体系吧,这似乎已成为入门计算机的必备知识了,本章就带着大家一起去理解冯诺依曼体系; 一、体系构成 冯诺依曼体系主张计算机由五大部件组成,如下所示; 输入设备…

Java设计模式 | 基于订单批量支付场景,对策略模式和简单工厂模式进行简单实现

基于订单批量支付场景,对策略模式和简单工厂模式进行简单实现 文章目录 策略模式介绍实现抽象策略具体策略1.AliPayStrategy2.WeChatPayStrategy 环境 使用简单工厂来获取具体策略对象支付方式枚举策略工厂接口策略工厂实现 测试使用订单实体类对订单进行批量支付结…

Stable Diffusion WebUI报错RuntimeError: Torch is not able to use GPU解决办法

新手在安装玩Stable Diffusion WebUI之后会遇到各种问题, 接下来会慢慢和你讲解如何解决这些问题。 在我们打开Stable Diffusion WebUI时会报错如下: RuntimeError: Torch is not able to use GPU;add --skip-torch-cuda-test to COMMANDL…

操作系统——吸烟者问题(王道视频p34、课本ch6)

1.问题分析:这个问题可以看作是 可以生产多种产品的 单生产者-多消费者问题 2.代码——这里就是由于同步信号量的初值都是1,所以没有使用mutex互斥信号, 总共4个同步信号量,其中一个是 finish信号量

在Lichee RV Dock上的不成功的烧录尝试

最近在学基于risc-v的简单操作系统,刚好手里有块Lichee RV Dock 的板子,所以在学了基础的"hello, world"程序后,想着能不能把这个程序烧录到板子上,简单的做个实验。 要完成这个任务,需要将程序烧录到sd卡上…

专访 Web3Go 新产品 Reiki:培育 AI 原生数字资产与创意新土壤

从 DeFi 到 NFTFi、SocialFi,web3 从业者在尝试 crypto 与区块链技术能为我们的生活、创作、娱乐和文化带来何种新体验,而生成式人工智能的突破性发展则为我们与链上世界的交互、社区内容创作等带来了新的体验,改变互动、交易和价值创造方式。…

容器技术基础

1. Linux Namespace和Cgroups 对于 Docker 等大多数 Linux 容器来说,Cgroups 技术是用来制造约束的主要手段,而 Namespace 技术则是用来修改进程视图的主要方法。 1.1 PID Namespace //Linux 系统正常创建线程 int pid clone(main_function, stack_s…

Docker数据管理、端口映射、容器互联

目录 一、Docker 的数据管理: 1.数据卷: 1.1 宿主机目录/var/www/html 挂载到容器中的/data1: 1.2 测试: 2.数据卷容器: 2.1 创建一个容器作为数据卷容器: 2.2 挂载a1容器中的数据卷…

《数据结构与算法之美》读书笔记1

Java的学习 方法参数多态(向上和向下转型) 向上转型: class Text{public static void main(String[] args) {Animals people1 new NiuMa();people1.eat1();//调用继承后公共部分的方法,没重写调用没重写的,重写了调…

Mysql数据库 2.SQL语言 数据类型与字段约束

Mysql数据类型 数据类型:指的是数据表中的列文件支持存放的数据类型 1.数值类型 Mysql当中有多种数据类型可以存放数值,不同的类型存放的数值的范围或者形式是不同的 注:前三种数字类型我们在实际研发中用的很少,一般整数类型…

【C++】:类和对象(中)之拷贝构造函数+赋值运算符重载

拷贝构造函数 概念 在现实生活中,可能存在一个与你一样的自己,我们称其为双胞胎 那在创建对象时,可否创建一个与已存在对象一某一样的新对象呢? 拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用…

OpenP2P实现内网穿透远程办公

OpenP2P是一个开源、免费、轻量级的P2P共享网络。你的设备将组成一个私有P2P网络,里面的设备可以直接访问其它成员,或者通过其它成员转发数据间接访问。如果私有网络无法完成通信,将会到公有P2P网络寻找共享节点协助通信。 相比BT网络用来共享…

【C++】哈希的应用 -- 布隆过滤器

文章目录 一、布隆过滤器提出二、布隆过滤器概念三、布隆过滤器哈希函数个数的选择四、布隆过滤器的实现1.布隆过滤器的插入2.布隆过滤器的查找3.布隆过滤器删除4.完整代码实现 五、布隆过滤器总结1.布隆过滤器优点2.布隆过滤器缺陷3.布隆过滤器的应用4.布隆过滤器相关面试题 一…

华为云HECS云服务器docker环境下安装nacos

华为云HECS云服务器,安装docker环境,查看如下文章。 华为云HECS安装docker-CSDN博客 一、拉取镜像 docker pull nacos/nacos-server二、宿主机创建挂载目录 执行如下命令: mkdir -p /usr/local/nacos/logs mkdir -p /usr/local/nacos/con…

【iOS】UITableView总结(Cell的复用原理、自定义Cell、UITableViewCell协议方法)

UITableView 列表的特点: 数据量大样式较为统一通常需要分组垂直滚动通常可视区只有一个 -> 视图的复用 UITableViewDataSource UITableView作为视图,只负责展示,协助管理,不管理数据 需要开发者为UITableView提供展示所需…

基于springboot实现java学习平台项目【项目源码+论文说明】计算机毕业设计

基于springboot实现java学习平台演示 摘要 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括学习平台的网络应用,在外国学习平台已经是很普遍的方式,不过国内的管理平台可能还处于起步阶段。学习平台具…