机器人视觉梳理(上)

news2025/2/9 3:51:15

原创 | 文BFT机器人

01 机器人视觉的概念

在智能制造过程中,通过传统的编程来执行某一特定动作的机器人(机械手、机械手臂、机械臂等,未作特殊说明时,不作严格区分,统一称为机器人),将难以满足制造业向前发展的需求。

很多应用场合下,需要为工业机器人安装一双眼睛,即机器视觉成像感知系统,使机器人具备识别、分析、处理等更高级的功能。

这在高度自动化的大规模生产中非常重要,只有当工业机器人具有视觉成像感知系统,具备观察目标场景的能力时,才能正确地对目标场景的状态进行判断与分析,做到智能化灵活地自行解决发生的问题。

在工业应用领域,最具有代表性的机器人视觉系统就是机器人手眼系统。根据成像单元安装方式不同,机器人手眼系统分为两类:固定成像单元眼看手系统(Eye-to-Hand)和随动成像单元眼在手系统(Eye-in-Hand or Hand-Eye)。

在Eye-to-Hand系统中,视觉成像单元安装在机器人本体外的固定位置,在机器人工作过程中不随机器人一起运动,当机器人或目标运动到机械臂可操作的范围时,机械臂在视觉感知信息的反馈控制下,向目标移动,对目标进行精准操控。Eye-to-Hand系统的优点是具有全局视场,标定与控制简单、抗震性能好、姿态估计稳定等,但也存在分辨率低、容易产生遮挡问题等缺点。

在Eye-in-Hand系统中,成像单元安装在机器人手臂末端,随机器人一起运动。Eye-in-Hand系统常用在有限视场内操控目标,不会像 Eye-to-Hand系统那样产生机械臂遮挡成像视场问题,空间分辨率高,对于基于图像的视觉控制,成像单元模型参数的标定误差可以被有效地克服,对标定的精度要求不高。

图:两种机器人手眼系统的结构形式(a)眼在手机器人系统(b)眼看手机器人系统

有些应用场合,为了更好地发挥机器人手眼系统的性能,充分利用 Eye-to-Hand系统全局视场和Eye-in-Hand局部视场高分辨率和高精度的性能,可采用两者混合协同模式。

利用 Eye-to-Hand系统负责机器人的定位,利用Eye-in-Hand系统负责机器人的定向;或者利用 Eye-to-Hand计机器人相对目标的方位,利用 Eye-in-Hand负责目标姿态的高精度估计等。

图:机器人协同视觉系统原理

02 机器人视觉发展路径:从2D到3D

视觉成像最初是从二维(2D)图像处理与理解,即2D视觉成像发展起来的。

2D视觉技术主要根据灰度或彩色图像中的像素灰度特征获取目标中的有用信息,以及基于轮廓的图案匹配驱动,识别物体的纹理、形状、位置、尺寸和方向等。2D视觉技术距今已发展了30余年,在自动化和产品质量控制过程中得到广泛应用,目前技术较为成熟,主要用于字符与条码识读、标签验证、形状与位置测量、表面特征检测等。

2D视觉技术难以实现三维高精度测量与定位,二维形状测量的一致性和稳定性也较差,易受照明条件等影响。

尤其当前智能制造技术对机器人视觉性能的要求越来越高,2D机器视觉技术的局限性已经显现,机器人视觉系统集成商已经发现越来越难以通过2D机器视觉系统来增值,迫切需要发展三维(3D)视觉技术,因为3D视觉技术能够产生2D视觉无法产生的形状或深度信息,因此使用范围更广。

当前,机器人视觉成像技术及系统正越来越广泛地应用于视觉测量、检测、识别、引导和自动化装配领域中。

虽然很多机器人具备一定程度的智能化,但还远未达到人类所需的智能化程度,一个重要原因是机器人视觉感知系统中还有许多科学问题、关键应用技术问题等,仍亟待解决。如:

1)如何使机器人像人那样,对客观世界的三维场景进行感知、识别和理解;

2)哪些三维视觉感知原理可以对场景目标进行快速和高精度的三维测量,并且基于该原理的三维视觉传感器具有小体积、低成本,方便嵌入到机器人系统中;

3)基于三维视觉系统获得的三维场景目标信息,如何有效地自组织自身的识别算法,准确、实时地识别出目标;

4)如何通过视觉感知和自学习算法,使机器人像人那样具有自主适应环境的能力,自动地完成人类赋予的任务等。

03 机器人3D视觉方案

3D视觉是机器人感知的最先进、最重要的方法,可以分为光学和非光学成像方法。目前应用最多的方法是光学方法,包括:飞行时间法、结构光法、激光扫描法、莫尔条纹法、激光散斑法、干涉法、照相测量法、激光跟踪法、从运动获得形状、从阴影获得形状,以及其他的 Shape from X等。本次介绍几种典型方案。

1.飞行时间3D成像

飞行时间(TOF)相机的每个像素利用光飞行的时间差来获取物体的深度。

直接TOF(D-TOF)是经典的TOF测量方法,探测器系统在发射光脉冲的同时启动探测接收单元进行计时,当探测器接收到目标发出的光回波时,探测器直接存储往返时间,目标距离可以通过简单公式计算:z=0.5*c*t,c是光速,t是光飞行时间。D-TOF通常用于单点测距系统,为了实现面积范围3D成像,通常需要采用扫描技术。无扫描 TOF三维成像技术直到近几年才实现,因为在像素级实现亚纳秒电子计时是非常困难的。

间接TOF(I-TOF)与D-TOF不同,时间往返行程是从光强度的时间选通测量中间接外推获得的。I-TOF不需要精确的计时,而是采用时间选通光子计数器或电荷积分器,它们可以在像素级实现。I-TOF是目前基于 TOF相机的电子和光混合器的商用化解决方案。

图:TOF成像原理

TOF成像可用于大视野、远距离、低精度、低成本的3D图像采集。其特点是:检测速度快、视野范围较大、工作距离远、价格便宜,但精度低,易受环境光的干扰。

2.扫描3D成像

扫描3D成像方法可分为扫描测距、主动三角法、色散共焦法等。

扫描测距是利用一条准直光束通过一维测距扫描整个目标表面实现3D测量。典型扫描测距方法有:

1)单点飞行时间法,如连续波频率调制(FM-CW)测距、脉冲测距(激光雷达)等;

2)激光散射干涉法,如基于多波长干涉、全息干涉、白光干涉、散斑干涉等原理的干涉仪;

3)共焦法,如色散共焦、自聚焦等。单点测距扫描3D方法中,单点飞行时间法适合远距离扫描,测量精度较低,一般在毫米量级。

其他几种单点扫描方法有:单点激光干涉法、共焦法和单点激光主动三角法,测量精度较高,但前者对环境要求高;线扫描精度适中,效率高。比较适合于机械手臂末端执行3D测量的应是主动激光三角法和色散共焦法。

主动三角法是基于三角测量原理,利用准直光束、一条或多条平面光束扫描目标表面完成3D测量的。光束常采用以下方式获得:激光准直、圆柱或二次曲面柱形棱角扩束,非相干光(如白光、LED光源)通过小孔、狭缝(光栅)投影或相干光衍射等。主动三角法可分为三种类型:单点扫描、单线扫描和多线扫描。如图,从左至右依次是单点扫描、单线扫描和多线扫描。

图:主动三角法扫描成像

色散共焦法可以扫描测量粗糙和光滑的不透明和透明物体,如反射镜面、透明玻璃面等,目前在手机盖板三维检测等领域广受欢迎。色散共焦扫描有三种类型:单点一维绝对测距扫描、多点阵列扫描和连续线扫描,下图分别列出了绝对测距和连续线扫描两类示例,其中连续线扫描也是一种阵列扫描,只是阵列的点阵更多、更密集。

图:两种色散共焦单点测距方法(a)基于小孔和分光镜的结构;(b)基于Y型光纤分光的结构

图:两种色散共焦线扫描成像方案(a)色散共焦显微镜;(b)色散共焦三角法

扫描3D成像的最大优点是测量精度高,其中色散共焦法还有其他方法难以比拟的优点,即非常适合测量透明物体、高反与光滑表面的物体。

但缺点是速度慢、效率低;当用于机械手臂末端时,可实现高精度3D测量,但不适合机械手臂实时3D引导与定位,因此应用场合有限;另外主动三角扫描在测量复杂结构形貌时容易产生遮挡,需要通过合理规划末端路径与姿态来解决。

3.结构光投影3D成像

结构光投影三维成像目前是机器人3D视觉感知的主要方式,结构光成像系统是由若干个投影仪和相机组成,常用的结构形式有:单投影仪-单相机、单投影仪-双相机、单投影仪-多相机、单相机-双投影仪和单相机-多投影仪等典型结构形式。

结构光投影三维成像的基本工作原理是:投影仪向目标物体投射特定的结构光照明图案,由相机摄取被目标调制后的图像,再通过图像处理和视觉模型求出目标物体的三维信息。根据结构光投影次数划分,结构光投影三维成像可以分成单次投影3D和多次投影3D方法。

单次投影结构光主要采用空间复用编码和频率复用编码形式实现,目前在机器人手眼系统应用中,对于三维测量精度要求不高的场合,如码垛、拆垛、三维抓取等,比较受欢迎的是投射伪随机斑点获得目标三维信息,其3D成像原理如图。

图:单次投影结构光3D成像原理

多次投影结构光主要采用时间复用编码方式实现。条纹投影3D成像基本原理如图,利用计算机生成结构光图案或用特殊的光学装置产生结构光,经过光学投影系统投射至被测物体表面,然后采用图像获取设备(如CCD或 CMOS相机)采集被物体表面调制后发生变形的结构光图像,利用图像处理算法计算图像中每个像素点与物体轮廓上点的一一对应关系;最后通过系统结构模型及其标定技术,计算得到被测物体的三维轮廓信息。在实际应用中,常采用格雷码投影、正弦相移条纹投影或格雷码+正弦相移混合投影3D技术。

图:多次投影3D成像(a)多次投影3D系统机构示意图;(b)二进制格雷码投影3D基本原理;(c)二进制格雷码+正弦相移混合编码投影3D

偏折法成像:对于粗糙表面,结构光可以直接投射到物体表面进行视觉成像测量;但对于大反射率光滑表面和镜面物体3D测量,结构光投影不能直接投射到被测表面,3D测量还需要借助镜面偏折技术。

图:偏折法成像原理

4.立体视觉3D成像

立体视觉字面意思是用一只眼睛或两只眼睛感知三维结构,一般情况下是指从不同的视点获取两幅或多幅图像重构目标物体3D结构或深度信息。

目前立体视觉3D可以通过单目视觉、双目视觉、多(目)视觉、光场3D成像(电子复眼或阵列相机)实现。

单目视觉深度感知线索通常有:透视、焦距差异、多视觉成像、覆盖、阴影、运动视差等。在机器人视觉里还可以用镜像,以及其他shape from X等方法实现。

双目视觉深度感知视觉线索有:眼睛的收敛位置和双目视差。在机器视觉里利用两个相机从两个视点对同一个目标场景获取两个视点图像,再计算两个视点图像中同名点的视差获得目标场景的3D深度信息。典型的双目立体视觉计算过程包含下面四个步骤:图像畸变矫正、立体图像对校正、图像配准和三角法重投影视差图计算。

图:双目立体视觉系统与计算过程示意图

多(目)视觉成像,也称多视点立体成像,用单个或多个相机从多个视点获取同一个目标场景的多幅图像,重构目标场景的三维信息。多视点立体成像主要用于下列几种场景:

1)使用多个相机从不同视点,获取同一个目标场景多幅图像,然后基于特征的立体重构等算法求取场景深度和空间结构信息;

2)从运动恢复形状的技术。使用同一相机在其内参数不变的条件下,从不同视点获取多幅图像,重构目标场景的三维信息。该技术常用于跟踪目标场景中大量的控制点,连续恢复场景的3D结构信息、相机的姿态和位置。

光场3D成像的原理与传统CCD和CMOS相机成像原理在结构原理上有所差异,传统相机成像是光线穿过镜头在后续的成像平面上直接成像,一般是2D图像。光场相机的优点是:单个相机可以进行3D成像,横向和深度方向的空间分辨率可以达到20μm到mm 量级,景深比普通相机大好几倍,比较适合Eye-in-Hand系统3D测量与引导,但目前精度适中的商业化光场相机价格昂贵。

图:光场相机成像与传统相机成像对比(a)传统相机成像原理;(b)光场相机结构与成像原理

编辑:BFT机器人

更多精彩内容请关注公众号:BFT机器人

本文为原创文章,版权归BFT机器人所有,如需转载请与我们联系。若您对该文章内容有任何疑问,请与我们联系,将及时回应。 

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

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

相关文章

【CV大模型SAM(Segment-Anything)】如何保存分割后的对象mask?并提取mask对应的图片区域?

上一篇文章【CV大模型SAM(Segment-Anything)】真是太强大了,分割一切的SAM大模型使用方法:可通过不同的提示得到想要的分割目标中详细介绍了大模型SAM(Segment-Anything)的不同使用方法,后面有很多小伙伴给…

【JVM 监控工具】使用JConsole监控进程、线程、内存、cpu、类情况

文章目录 前言一、如何启动JConsole二、如何设置JAVA程序运行时可以被JConsolse连接分析三、JConsole如何连接远程机器的JAVA程序(举例说明)四、性能分析概述内存线程类VM摘要MBean 五、使用Jconsole监控某方法的性能总结 前言 Jconsole是JDK自带的监控…

网络工程师必备,华为/思科/华三交换机命令对比

本期对华为/思科/华三交换机配置命令对比,来看下他们的区别在哪里,这里对命令做了个汇总,平时对命令不熟的朋友这次可以看下。 另外我们来看下华为与H3C的命令情况,方便大家进行对比。 一、华为交换机基础配置命令 1、创建vlan: …

Unity基础1——3D数学

一、Mathf (一)Mathf 和 Math ​ Math 是 C# 中封装好的用于数学计算的工具类 —— 位于 System 命名空间中 ​ Mathf 是 Unity 中封装好的用于数学计算的工具结构体 —— 位于 UnityEngine 命名空间中 ​ 他们都是提供来用于进行数学相关计算的 ​…

机器学习 day18(用Tensorflow搭建一个神经网络)

之前搭建神经网络的方法 先初始化输入数据X,创建layer 1并计算激活值a1,创建layer 2并计算激活值a2,这是前向传播代码的显式形式。 另一种简单些的创建神经网络的方法 创建layer 1和layer 2与前一种方法相同,但我们不需要手动…

JUC并发编程学习笔记

1:回顾多线程 进程和线程是什么 进程是操作系统分配资源的最小单元,而线程是cpu调度的最小单元。 java默认有几个线程 2个,main线程和GC线程(GC垃圾回收机制) java可以开启线程么 不能 并发和并行 并发,多线程操作同一个资源,cp…

纯电驱动车辆动力总成的优化与比较研究

摘要: 不同动力总成拓扑结构的对比分析 前言 纯电驱动的电动汽车因为集成有大容量电池组,可以存储取自公共电网的电能,用来驱动车辆的行驶。相比于传统的混合动力汽车,具有更加优越的节能减排效果和潜力。因此,近年来…

cpp文件编译过程 makefile cmake

这里写目录标题 argc argv参数头文件编译过程静态链接&#xff0c;动态链接&#xff0c;静态库&#xff0c;动态库 -shared制作使用动态库libxxx。so冲突 静态库预处理编译汇编链接目录选项-Idir 大写Iinclude<> 与 " "-I -I- 与 -I- -I ld/objdump/objcopy 选…

内网渗透—隧道搭建Ngrok与Frp内网穿透

这里写目录标题 1. 前言1.1. 隧道技术介绍1.2. 代理技术介绍1.2.1. 正向代理1.2.2. 反向代理1.2.3. 透明代理1.2.4. 正向代理与透明代理区别 2. 内网穿透2.1. Ngrok2.1.1. 访问Ngrok2.1.2. 代理设置2.1.2.1. 开通代理2.1.2.2. 配置隧道2.1.2.3. 下载客户端 2.1.3. 配置客户端2.…

P20[6-8]编码器接口测速(软)

与外部中断编码器逻辑不同,此处编码器使用的是定时器方法 1.Encoder编码器部分: #include "stm32f10x.h" // Device header void Encoder_Init(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCm…

吐血整理,自动化测试场景处理(多场景覆盖)+解决方案

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、添加时间等待 …

53.最大子数组和

贪心算法 时间复杂度&#xff1a;代码中只有一个循环&#xff0c;循环次数为数组的长度&#xff0c;因此时间复杂度为 O(n)&#xff0c;其中 n 是数组的长度。空间复杂度&#xff1a;代码中只使用了常数级别的额外空间&#xff0c;因此空间复杂度为 O(1)。 这段代码使用贪心算…

QT C++入门学习(2) QT Creator写一个简单的上位机控制LED

上位机和下位机的概念 上位机&#xff1a;指的是可以直接发送操作指令的计算机或者单片机&#xff0c;一般提供用户操作交互界面并向用户展示反馈数据。 典型设备&#xff1a;电脑、平板、手机、面板、触摸屏 下位机&#xff1a;指的是与机器相连接的计算机或者单片机&#…

Studio 3T 2023.5 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端

Studio 3T 2023.5 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端 请访问原文链接&#xff1a;https://sysin.org/blog/studio-3t-2023/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Studio 3T&#xff0c;M…

黑客松必备|Bear Necessities Hackathon Office Hours汇总

由Moonbeam和AWS Startups联合主办的Bear Necessities Hackathon黑客松启动仪式已于5月30日举行。本次黑客松将历时约1个月的时间&#xff0c;包含6个挑战&#xff0c;分别由Moonbeam基金会、Chainlink、StellaSwap、SubQuery、Biconomy提供赞助&#xff0c;总奖池超过5万美金。…

面试软件测试时,面试官最想听到的答案是什么?

问题&#xff1a;面试软件测试时&#xff0c;面试官让你测一个软件&#xff0c;比如朋友圈&#xff0c;或者让你测试你的电脑为什么打不开网页&#xff0c;而QQ可以打开之类的&#xff0c;他最想听到的答案是什么&#xff1f; 如上所述&#xff0c;在实际面试中&#xff0c;面试…

懂点测试基础就敢要17k? 面试官:最多8K,多一分都没有...

公司前段缺人&#xff0c;也面了不少测试&#xff0c;结果竟然没有一个合适的。一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-25k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是3年工作经验&#xff0c;但面试…

Java泛型的使用

1.什么是泛型&#xff1f; 所谓泛型&#xff0c;就是允许在定义类、接口时通过 一个标识 表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时&#xff08;例如&#xff0c;继承或实现这个接口&#xff0c;用这个类型声明变量、创建对象时&#…

5.Opencv-图像滤波(均值,方框,高斯,中值,双边滤波)

常见的图像滤波操作有&#xff1a; 均值滤波&#xff08;cv2.blur&#xff09; 方框滤波&#xff08;cv2.boxFilter&#xff09; 高斯滤波&#xff08;cv2.GaussianBlur&#xff09; 中值滤波&#xff08;cv2.medianBlur&#xff09; 双边滤波&#xff08;cv2.bilateralFilter…

电脑小白不要错过这五款小众但强大的软件

电脑上的各类软件有很多&#xff0c;除了那些常见的大众化软件&#xff0c;还有很多不为人知的小众软件&#xff0c;专注于实用功能&#xff0c;简洁干净、功能强悍。 多语言翻译——QTranslate QTranslate是一款实用的多语言翻译工具。它可以在任何应用程序中选中文本&#…