日期
09/17
2020
咨询
  • QQ扫一扫

  • Vision小助手
    (CMVU)

微链机器人视觉认知-了解3D机器人视觉系统的原理
收藏
2020-09-17 10:02:16来源: 中国视觉网

   传统工业机器视觉中,2D指的是X方向加Y方向,那么3D视觉自然就是加了一个Z方向。目前我接触到的公司产品是3D激光轮廓仪,也叫3D激光传感器,线激光传感器,采用的是激光三角测距法。

1.3D相机的工作原理

   在传统的2D视觉中,一套详细的解决方案最基础的是相机、镜头、和光源。根据客户的需求以及现场的生产环境,通过一些公式计算出符合要求的相机和镜头,最后根据客户的成本需求来选出最合适的相机加镜头。最后的光源是整套解决方案中比较难的一个点,要根据客户所测物件的不同来选择合适的光源,保证能够清晰的成像。大家可以看出来,2D视觉对于工程师的要求比较高,要拥有丰富的项目经验,有一定的光学和软件知识,而3D相机相对来说就要简单一些。

   在3D相机中,取代光源的是激光发射器,通过复杂的光学系统设计,激光发射器发出的激光会形成一条直线,激光投射到物体表面就会形成反射,在光学系统的设计下,反射光会被镜头捕捉到,最后通过镜头反射到感光芯片上。因此,3D相机内部最重要的三个部件分别为激光发射器,镜头和感光芯片,同时还会加一些FPGA或者ARM用于图形处理,比如图像算法以及图像滤波。一般情况下,激光发射器需要优秀的光学工程师进行设计,比如不同的透镜反射出来的激光也会有不同的效果;镜头基本上也都是正常我们看见的镜头,感光芯片一般会选择高精度的CMOS芯片。

   一般我们把激光线方向称为X方向,也就是激光照射出来的那条线定义为X轴,高度为Z方向,通过一次静态拍照,我们可以得到X和Z两个方向的数据,那么Y方向呢,我们一般把运动方向记为Y方向,也就是说。我们可以通过移动相机或者移动物体,并且让相机持续不断的拍照,就形成了连续的Y方向数据,最后组合在一起,就是我们所需要的3D数据了。

2. 3D相机的测量原理

   下面我们来了解一下3D激光相机的测距原理,我司采用的是激光三角测距法,一般工业领域都是普遍采用这个方法,因为激光三角测距法的精度比较高,抗干扰能力也很强,此外,还有很多的测距方法,主要分为两个大类,分别是被动测量类和主动测量类。被动测量类分为单目视觉、双目视觉和多目视觉;主动测量类分为结构光法,TOF飞行时间法,激光三角测距法。TOF飞行时间法也是一种比较常见的3D光学测距方法,主要用于手机领域,比如手机的人脸识别,因为TOF飞行时间的测量范围比较大,可以达到20米到30米,比较适合手机领域进行一些AR/VR交互。

3.  3D相机中主要使用到的一些技术参数

   在2D视觉中,会有许多专业的术语名词,比如视场,分辨率,重复精度等,3D视觉中也是如此。

   在3D视觉中大致以以下术语:

●视野范围/视场(FOV)

  是指在某一工作距离下传感器激光线方向能扫到的最大宽度。在2D视觉中,视场一般是两个值,即X方向*Y方向,而3D视觉只有一个值。一般情况下就是在传感器最佳工作距离下激光线的长度,注意是在工作距离下的长度,毕竟激光发射出来形成一个光面,如果没有遮挡理论上是无限长的。

  此外,3D相机还分为近视场,中视场,远视场。

●测量范围

  传感器的近视场到远视场的距离。这个概念有点像2D视觉中的景深,即Z轴可清晰成像的范围。

●工作距离

  传感器下表面到被测物表面的距离。这里的传感器指的就是相机,每台相机的工作距离是不一样的,一定要记住工作距离,不然选好了相机发现客户现场的安装高度达不到相机的工作距离要求,那么你前期的准备工作就全部浪费掉了。

●分辨率

  传感器可以识别的最小尺寸。跟图像传感器一般是CMOS芯片的晶圆尺寸也就是感光元件有关系。

●线性度

  也叫准确度,直线度。一般指的是Z线性度,为偏差值(参考值与测量值的差值)与测量范围的比值。

●重复精度

  也叫做重复性。是指将被测物重复扫描4100次后的最大偏差值。

●垂直分辨率

  能够测量出的最小高度

●水平分辨率

  能够测量的最小宽度

●运动方向

在运动方向还有几个术语如下:

   1.线间距:反映传感器接收到的触发信号间隔。这个参数跟编码器信号或者外部信号频率有关系。比如假设一万个脉冲走10毫米,那么信号间隔就为1微米。

   2.扫描频率(HZ):单位时间内传感器能够获取的3D轮廓线数目,反映传感器当前配置下的处理极限。比如2K那就是一秒最多可以跑两千条线。这个参数也是客户经常会问到的一个参数。一般情况下,扫描范围越大,曝光时间越长,扫描频率越低。这个参数还分为全幅扫描频率和ROI扫描频率。

   3.公式:最大扫描速度=扫描频率*线间距。假设我这里有一个相机扫描频率为1000,线间距为1um,那么1秒他最快只能扫1mm,如果被测物体长1cm,那么我需要扫描至少10秒钟才能将这个物体的长度扫出来。一般情况下,相机的最大扫描频率是固定的,所以只能改动线间距,线间距和编码器或者外部信号有关,也就是说,如果想加快扫描速度,那么只能加大编码器的信号,也就是让物体或者相机的移动速度变快。但是速度过快也可能导致缺少数据细节,导致某些缺陷没有捕捉到。

   目前3D视觉有着2D视觉无法比拟的优势,但3D视觉同样也有一些重难点需要解决。

   比如如何知道一个物体能否被准确的扫描出来呢,测量是否成功取决于有多长时间可以用于测量。被测物体通过探头光束的速度越慢,越多时间可以被用于测量。因此,不能简单的认为一个静态测量可行,就一定意味着动态测量也是可行的。测量的结果也取决于被测物体表面的反光特性。也就是说被测物体表面的反光性或吸光性的强弱,会决定是否可以测得有效信号。被测材料本身也会影响测量结果。举例来讲,如果半透明被测物体的透明度过高,测量信号可能完全失真了。最后一个应该考虑的因素是被测物体的轮廓缺陷,可能产生阴影的轮廓以及多次反射的表面影响。以上这些基本因素都可能明显影响测量信号质量以及测量结果。

   除去上面提到的这些影响因素,一个清晰可识别的轮廓表面反射的持续信号仍然可能是难以使用的缺损信号。如果想避免这种情况,轮廓仪的每一个独立参数都必须正确设置并适合被测物体。使用正确的滤波器以及曝光时间的设定,往往能够改善不良信号,经过不断尝试最终可以完成测试。举例来讲,测量一个快速移动的黑色橡胶被测物体,较短的曝光时间和被测物体的高吸光性都会更容易导致一个不良的测量结果。而与之相反,如果黑色被测物体不移动或较慢移动,较长的曝光时间可能更有助于获得完整的轮廓信息。但是这样就会影响到检测速度,各有利弊。

   目前3D视觉在扫描透明物体比如玻璃的时候效果往往不佳,因为玻璃是可以直接让激光透射过去的,导致CMOS芯片上难以成像,还有一个就是多重反射的问题,也会造成成像错误。

   此外,3D视觉还会遇到一个视觉阴影问题,也就是处于相机扫描角度的原因,会出现视野盲区。