Vuser_764369
2022-01-17 14:13
VM算法平台

如何使用VM实现多相机对位组装?

如何使用VM实现汽车挡风玻璃的多相机对位组装?有类似案例吗?


  • 749
  • 3
  • 分享

全部回答1

1 功能需求

某汽车外饰零部件供应商需要实现如下图所示的汽车挡风玻璃的对位组装。

 


具体需求:汽车挡风玻璃放置在预定工装上(定位精度±2mm),汽车车身放置在夹具上(定位精度±2mm),挡风玻璃使用两个下相机进行定位,车身使用两个上相机进行定位。组装时,机械手抓取到挡风玻璃后,移动到固定的下相机上方,两个下相机分别拍摄机械手上挡风玻璃的两处特征(轮廓、定位销等),视觉计算出挡风玻璃与基准位置处的偏差A。机械手带着挡风玻璃移动到车身附近,机械手上的两个上相机分别拍摄车身处的两处特征(轮廓、定位销等),视觉计算出夹具上车身的偏差B。视觉计算出最终装配点的坐标、位置偏差(定位精度±0.2mm)。


2 场景分析


该场景可以分解为下相机玻璃处的纠偏与上相机车身处的放置两个场景。总偏差为挡风玻璃的偏差值与车身的偏差值之和。其中,两个下相机分别拍摄玻璃两个位置处的边缘角点,计算玻璃运行位置与基准位置的偏差值。两个上相机分别拍摄车身两个位置处的圆形特征点,计算车身运行位置与基准位置的偏差值。分别将上、下相机的两个特征点的中点与连线的角度作为各自偏差计算的特征点与特征角度。

3 标定

由于机械手法兰盘中心与机械手抓取中心不共轴,因此本场景下的标定均为平移旋转(12点)标定。本场景下需要做4次平移旋转(12点)标定:上相机两次+下相机两次。

4 通信协议设计

本项目采用TCP通信,通信协议的设计包含标定协议的设计以及生产协议的设计。

标定协议设计主要分为三个部分,开始标定(SC),标定(C),结束标定(EC)。其中,开始标定(SC)指令的作用为清空N点标定模块中的数据,确认通信正常,确认准备开始标定。标定(C)的作用为上位机每发送一次信号,机械手走一次,返回拍照状态。结束标定(EC)指令的作用为确认结束标定。

生产协议设计主要分为两个部分,基准拍照(B),运行拍照(R),其中基准拍照(B)指令的作用为获取基准位置特征点坐标。运行拍照(R)指令的作用为获取运行位置特征点坐标,在上相机车身处会计算总的偏差,并返回给上位机。

5 本场景下的对位算法原理说明(基准与运行时拍照位不变)

总偏差=下相机处挡风玻璃偏差+上相机处车身偏差


Offset=UpOffset+DownOffset

下相机处挡风玻璃的偏差为玻璃绕旋转中心旋转偏差角度DR后的坐标偏差量

RotateX=( DownrunWorldX–RotateCenterX)*Cos(DR)–(DownrunWorldY– RotateCenterY)*Sin(DR)+ RotateCenterX

RotateY =( DownrunWorldX– RotateCenterX)* Sin(DR) + (DownrunWorldY– RotateCenterY)*Cos(DR)+ RotateCenterY

DownOffset=DownmarkWorld-Rotate

上相机处车身偏差=平移偏差+旋转偏差

UpOffset=UpTransOffset+UpRotateOffset

UpTransOffset = UprunWorld – UpmarkWorld

上相机基准坐标=基准图像转物理坐标+第五点拍照位

UpBaseWorld= UpmarkWorld+Snap

旋转偏差量UpRotateOffset为机械手旋转偏差角度DR后带来的坐标偏差量,示教位为TeachWorld:

RotateX=(TeachWorldX-UpBaseWorldX)*Cos(DR)-(TeachWorldY- UpBaseWorldY)*Sin(DR)

RotateY=(TeachWorldX-UpBaseWorldX)*Sin(DR)+(TeachWorldY- UpBaseWorldY)*Cos(DR)

UpRotateOffset= Rotate– TeachWorld

6 方案搭建

根据上述分析,我们首先确定本场景下VM需要搭建的流程数目,为了方便项目实施本项目搭建了6个流程,其中前四个流程分别作为挡风玻璃与车身处的四个相机的标定流程,另外两个流程分别作为上相机与下相机处的运行流程,在运行流程中会分别进行偏差的计算。 


下面对每个流程创建的目的以及搭建过程进行详细的阐述。

四个相机分别为下相机1,下相机2,上相机1,上相机2。下相机1的标定流程CalibDown1如下所示:

 


该流程的主要作用为对下相机1进行标定,并在每一步标定时与外界上位机实时返回标定的状态。

 



发送数据模块73返回N点标定模块的状态,发送数据模块56、57返回标定开始与标定结束的标志位。

 


其中高精度匹配模块的参数设置可以参考FAQ1.5.2,N点标定模块的参数设置可以参考FAQ1.5.1,其余模块的参数设置可以参考VM的帮助文档和其他FAQ文档。其他三个标定流程CalibDown2,CalibUp1,CalibUp2均与CalibDown1流程相近,这里不再做阐述,其流程搭建如下:


 




运行流程为DownRun流程和UpRun流程,其中DownRun流程用来计算运行时下相机挡风玻璃与基准位置的偏差,UpRun流程用来计算运行时上相机车身与基准位置的偏差并与DownRun流程计算出的下相机处的偏差相加,得到最终的偏差量,以及定位坐标。


 



为了与上位机进行通信,因此需要配置全局触发,全局触发的相关内容可以参考FAQ1.3.2,本项目中全局触发配置如下:

 


2022-01-17 17:24 未知地区
    |
  • 评论
  • |
  • 1

请升级浏览器版本

您正在使用的浏览器版本过低,请升级最新版本以获得更好的体验。

推荐使用以下浏览器