机器视觉【1】-机械臂视觉

文章目录

  • Eye-to-Hand
  • Eye-in-Hand
  • 基于Eye-in-Hand型机械臂单目视觉定位
    • 单目相机标定
      • 针孔相机模型
      • 畸变
      • 标定方法
    • 机械臂手眼标定
      • 手眼标定求解
    • 图像预处理
      • 图像灰度化与二值化
      • 图像滤波
      • 图像特征匹配
    • 机械臂单目视觉定位
      • 目标物体图像深度信息
      • 目标物体中心定位
  • 参考文献

根据机械臂与相机所处的相对位置关系,一般分为 Eye-to-Hand 与 Eye-in-Hand 两种视觉系统。
在这里插入图片描述

Eye-to-Hand

Eye-to-Hand 型机械臂视觉系统指的是相机固定安装于机械臂外,不随机械臂运动,与机械臂的基坐标系相对位置关系不变。

Eye-to-Hand 型机械臂视觉系统较为简单,其只需要对相机进行标定,即能确定相机坐标系与机械臂坐标系之间的变换关系,且因相机安装于机械臂外,不受机械臂振动等因素影响,精度能得到较好的保证。但其受限于安装位置,若要进行多次定位目标,则需要安装多台相机进行定位,大大增加了成本,若定位目标处空间狭小,无合适位置安装相机,同样也不适用。

Eye-in-Hand

Eye-in-Hand 型机械臂视觉系统则指的是相机安装在机械臂的末端执行器上,跟随末端执行器一起运动。

Eye-in-Hand 型机械臂视觉系统标定时,需要先对相机进行标定,再确定相机与机械臂末端的变换关系(即手眼标定),同时还需要对机械臂进行运动学分析,以确定相机坐标系在机械臂运动过程中的变换关系,较为复杂,但能较好地应对复杂多变的定位目标需求。

基于Eye-in-Hand型机械臂单目视觉定位

  • 进行图像采集;以标定板图像通过相机标定与手眼标定,确定视觉系统的相机内外参数以及机械臂手眼矩阵;
  • 对目标图像进行图像灰度化与图像滤波,去除图像的噪声,得到质量更高的处理图片;
  • 对预处理后的一组图像进行图像匹配,基于三角测量原理,求取图像中特征点的深度信息;
  • 对预处理后的图像进行图像轮廓提取,获取目标在图像中的位姿;
  • 经坐标变换后确定目标在机械臂坐标系下的位姿。
    在这里插入图片描述

单目相机标定

相机标定:根据相机成像模型求取相机的内部参数和外部参数。

针孔相机模型

  • 相机内参矩阵

在理想的情况下,相机成像可简化为针孔成像:
在这里插入图片描述
O O O是相机的光心,为相机坐标系的原点;点 O 1 O_1 O1是相机光轴与图像平面的交点,为图像平面的中心;空间中某点 Q Q Q在相机坐标系与世界坐标系的坐标分别为 ( X c , Y c , Z c ) (X_c,Y_c,Z_c) (Xc,Yc,Zc) ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw,Yw,Zw);点 q q q Q Q Q经成像投影后所得,在图像坐标系下的坐标为 ( X u , Y u ) (X_u,Y_u) (Xu,Yu) f f f为相机焦距,表示光心 O O O到图像平面的距离。

由相似三角形原理,可以得到:
{ X u f = X c Z c ⇒ X u = f X c Z c Y u f = Y c Z c ⇒ Y u = f Y c Z c \begin{cases}\dfrac{X_u}{f}=\dfrac{X_c}{Z_c}\Rightarrow X_u=f\dfrac{X_c}{Z_c}\\\dfrac{Y_u}{f}=\dfrac{Y_c}{Z_c}\Rightarrow Y_u=f\dfrac{Y_c}{Z_c}\end{cases} fXu=ZcXcXu=fZcXcfYu=ZcYcYu=fZcYc

通常,图像坐标系的原点不是相机光轴与图像平面的交点 O 1 O_1 O1,而是在图像的右上角,且与成像平面还存在一个缩放变换。

O 1 O_1 O1与图像坐标系原点的偏移量为 ( X 0 , Y 0 ) (X_0,Y_0) X0Y0,图像坐标系与成像平面在 X 轴与 Y 轴方向的缩放倍数分别为 f x f_x fx f y f_y fy:
{ X u = f x X c Z c + X 0 Y u = f y Y c Z c + Y 0 \begin{cases}X_u=f_x \dfrac{X_c}{Z_c}+X_0\\\\Y_u=f_y \dfrac{Y_c}{Z_c}+Y_0\end{cases}

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

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

相关文章

深圳南玻集团(二面)

不得不说这家公司的办事效率是真的高。我昨天下午3点面试的,4点结束。然后4点45分就跟我说面试通过了,叫我明天早上10点进行二面。二面聊了大概20分钟左右吧,那个面试官是信息部的,好像是个总监还是总经理,反正叫沈总。…

详解人证合一API接口背后的身份信息认证

人证合一API接口是一种高级的身份验证解决方案,它将姓名、身份证号码、头像照片等多种生物特征和身份标识信息相结合,通过云端智能分析并与公安部门权威数据库进行实时比对,以确定用户身份的真实性。这个过程不仅仅停留在表面文字信息的匹配&…

基于PyAutoGUI图片定位的自动化截图工具--完成了

1、计划 压测完成后需要编写性能测试报告,报告中所需数据截图较多,使用自动化操作方便快捷,就编写一个界面工具以便后续复用。 基于PyAutoGUI图片定位的自动化截图工具–jmeter部分 基于PyAutoGUI图片定位的自动化截图工具–jmeter部分&#…

jenkins从节点配置说明

目的 打包构建时使用从节点,从节点所在服务器配置4C8G5000G(服务器2) 前提 首先在服务器1上部署jenkins服务,即主节点,默认节点名称为master 步骤 1)登录进入jenkins平台,在系统设置中&…

AJAX 入门到实战 第1天 2024 笔记

1.1-AJAX入门与axios使用 1.2-认识URL 1.3-查询参数 1.4-案例_地区查询 <script src"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script>/*获取地区列表: http://hmajax.itheima.net/api/area查询参数:pname: 省份或直辖市…

基于adb操作安卓手机封装的python库

import re import shlex import subprocessclass ADBClient:def __init__(self, ip, port):"""初始化ADBClient实例。:param ip: 远程设备的IP地址。:param port: 远程设备的端口号。"""self.ip ipself.port portdef is_app_running(self, pac…

李沐53_语言模型——自学笔记

语言模型 1.预测文本序列出现的概率 2.应用在做预训练模型 3.生成文本&#xff0c;给定前面几个词&#xff0c;不断生成后续文本 4.判断多个序列中哪个更常见 真实数据集的统计 《时光机器》数据集构建词表&#xff0c; 并打印前10个最常用的&#xff08;频率最高的&…

1942年苏军反攻哈尔科夫失败

1942年5月&#xff0c;苏军计划夺回哈尔科夫&#xff0c;消灭城内的德国南方集团军群第6集团军。苏军为这次战役投入了西南方面军和南方面军&#xff0c;苏军元帅铁木辛哥制定了作战计划&#xff0c;非常凑巧的是&#xff0c;德军也于大致相同的时间制定了进攻计划。5月12日&am…

C语言 | 动态内存管理

目录&#xff1a; 1. 为什么要有动态内存分配 2. malloc和free 3. calloc和realloc 4. 常见的动态内存的错误 5. 动态内存经典笔试题分析 6. 柔性数组 1. 为什么要有动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int val 20; //在栈空间上开辟四个字节 cha…

一篇文章搞定Jenkins自动化部署JDK17+SpringBoot3.X+新版AlibabaCloud打包Docker镜像推送私有镜像仓库

&#x1f680; 作者 &#xff1a;“二当家-小D” &#x1f680; 博主简介&#xff1a;⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人&#xff0c;8年开发架构经验&#xff0c;精通java,擅长分布式高并发架构,自动化压力测试&#xff0c;微服务容器化k…

-内核编译-01

挂载根文件系统 1搭建【nfs】 1.1PC端配置 nfs&#xff1a;网络服务器 【sudo /etc/init.d/nfs-kernel-server restart】 【sudo /etc/init.d/nfs-kernel-server status】 【sudo netstat -anp|less】 1重启【nfs】网络服务方法2&#xff1a;查看日志 修改配置文件 进入…

无线通信基本原理笔记

通信&#xff1a;人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递。 通信模型&#xff1a;信源→发送设备→信道&#xff08;↑噪声&#xff09;→接收设备→信宿 调制&#xff1a;把基带信号变换成适合在信道中传输的信号的技术。通过改变高频载波的幅度、相位…

计算机网络基础1--基础概念

1. IP地址 1.1 IPv4地址 分为网络号和主机号 地址块的第一个地址和最后一个地址通常不使用。 广播地址为主机号全取1的情况。 2. 常用报文格式 2.0 ethernet协议 2.1 arp协议 2.2 ip协议 2.3 tcp协议 2.4 udp协议 2.5 icmp协议

LeetCode-2007. 从双倍数组中还原原数组【贪心 数组 哈希表 排序】

LeetCode-2007. 从双倍数组中还原原数组【贪心 数组 哈希表 排序】 题目描述&#xff1a;解题思路一&#xff1a;排序 哈希表解题思路二&#xff1a;排序 队列解题思路三&#xff1a;消消乐 题目描述&#xff1a; 一个整数数组 original 可以转变成一个 双倍 数组 changed &…

2024年150道高频Java面试题(三十二)

63. 线程的 run() 和 start() 有什么区别&#xff1f; 在Java中&#xff0c;run()方法和start()方法是线程操作中的两个核心方法&#xff0c;它们来自于Thread类。 run()方法&#xff1a; run()方法是一个线程的实际执行代码所在的方法。它是一个由Runnable接口定义的抽象方…

java文件夹文件比较工具

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.HashSet; import java.util.Set;public class FolderFileNames {public static void main(String[] args) {// 假设您要读取的文件夹路径是 &q…

35. 搜索插入位置 C++

今天开始刷力扣hot100&#xff0c;还是那句话&#xff0c;把时间投资在自己身上绝对是最最值最最赚的&#xff0c;我相信我自己&#xff0c;我也相信坚持付出的力量&#xff0c;力扣这边刷题我准备主打C&#xff0c;加油&#xff0c;先从二分查找开始&#xff01; 给定一个排序…

ubuntu 配置 spacemouse以及通过python/robosuite使用spacemouse

一 前言 3dconnexion 早在2014年就不更新对linux系统的驱动&#xff0c;因此安装驱动需要参考另一个网站&#xff1a;https://spacenav.sourceforge.net/ 二 安装步骤 1 安装 spacenavd 先安装依赖库 sudo apt install libxext-dev libxrender-dev libxmu-dev libxmuu-dev…

maridb双数据源联查解决方案:联合存储引擎(Federated Storage Engine)

本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现. 有点类似Oracle中的数据库链接(DBLINK)。使用FEDERATED存储引擎的表,本地只存储表的结构信息,数据都存放在远程数据库上,查询时通过建表时指定的连接符去获取远程库的数据返回到本地。操作…

PCA(Principal Component Analysis,主成分分析)与矩阵X的协方差矩阵之间的联系

PCA&#xff08;Principal Component Analysis&#xff0c;主成分分析&#xff09;是一种常用的降维技术&#xff0c;用于将高维数据集投影到低维空间中。在PCA中&#xff0c;投影方程将原始特征向量 ( x 1 , x 2 , … , x p ) (x_1, x_2, \ldots, x_p) (x1​,x2​,…,xp​)映射…