基于AR技术的模具拆装工程训练系统的搭建方法与流程

文档序号:16317575发布日期:2018-12-19 05:32阅读:213来源:国知局
基于AR技术的模具拆装工程训练系统的搭建方法与流程

本发明属于机械产品拆装训练领域,具体涉及一种基于ar技术的模具拆装工程训练系统的搭建方法。

背景技术

在传统的机械产品拆装训练教学过程中,学生面对的是实际的装配环境,因此,传统的机械产品拆装训练教学过程的特点是真实感强,但是不能够有效提升学生的学习兴趣。应用虚拟现实技术进行虚拟仿真教学过程在提高场地利用率,节约实验成本,提升学生学习兴趣等方面优势十分明显,例如:上海第二工业大学朱文华教授等人利用虚拟现实技术,基于unity3d软件在zspace桌面虚拟现实设备上完成圆柱齿轮减速器拆装教学系统,提高了拆装过程的交互性和沉浸感,虽然虚拟现实技术在提高学生的学习兴趣方面取得了一定的进步,但是对实际操作的引导效果却十分有限,而且虚拟现实技术不能够对现实场景进行完整描绘,真实感有限。



技术实现要素:

本发明的目的是为解决虚拟现实技术不能够对现实场景进行完整的描绘的问题。

本发明为解决上述技术问题采取的技术方案是:

步骤一:设计模具拆装过程中的引导信息;

引导信息包括:每一步拆装过程所需零件模型的信息、拆装过程的动画演示和拆装完成后的模型展示;

步骤二:使用vs2015中c++语言的mfc类库,搭建模具拆装工程训练系统的图形化界面,根据设计需要添加button、slider和tab控件;

步骤三:下载opencv3.4.1、hcnet和zbarsdk,opencv3.4.1用于实现计算机视觉功能、hcnet作为网络摄像机、zbarsdk用于实现条形码识别功能,将opencv3.4.1、hcnet和zbarsdk导入vs2015,并配置开发环境;

步骤四:调用网络摄像机,对网络摄像机进行标定和畸变校正;

步骤五:构建网络摄像机和投影仪的位置关系,利用excel软件的开发工具功能生成添加验证的code39条形码,并利用zbar对条形码进行条形码识别;

步骤六:利用网络摄像机的抓图功能拍摄每一步拆装过程中零件盒所得部件的匹配模板图像;

步骤七:根据全部拆装过程,设计程序逻辑,实现对引导信息、匹配模板图像的读取,同时利用投影仪投射引导信息,根据引导信息,网络摄像机实时获取每一步拆装过程的实际操作图像,将实际的操作图像与匹配模板图像进行特征点匹配,并对匹配成功的特征点进行筛选;

步骤八:记录筛选后的特征点匹配对数,若网络摄像机获取的实际的操作图像与匹配模板图像特征点匹配数量达到匹配模板图像自匹配特征点数量的70%,则认定匹配成功,继续执行步骤七设计的程序逻辑,直至完成全部拆装过程;

否则认定匹配未成功,则对零部件位置进行调整后,继续对网络摄像机获取的实际的操作图像与匹配模板图像进行特征点匹配,直至认定匹配成功;继续执行步骤七设计的程序逻辑,直至完成全部拆装过程。

本发明的有益效果是:本发明利用ar技术将虚拟的装配引导信息叠加至实际的装配操作环境,利用网络摄像机和投影仪构建出虚实结合的场景,同时利用投影仪投射引导信息和应用摄像机实时获取实际操作图片,并与匹配模板图像匹配,能够对现实场景进行100%描绘,引导信息通过显示设备显示在用户视野中,对实际操作起到很好的引导效果,也提高了受训者的学习自主性,本发明应用orb算子实现了对图像特征点的快速识别,具有延时低、系统流畅性好的特点,orb算子运算速度大约为surf算子的10倍、sift算子的40倍,在实时的特征点提取的过程中,能够明显加快程序运行流程。

附图说明

图1为本发明方法的流程图;

图2为内角点提取后,在原图像上绘制出角点的图像;

图3为像素坐标系和图像坐标系的关系图;

图4为相机坐标系和图像坐标系关系图;

其中:p为相机坐标系下的任一点,p为p投影到图像坐标系下的点;

图5为完成畸变校正后的图像;

图6为下模板特征点提取结果图;

图7为网络摄像机获取的棋盘格图像与匹配模板图像进行特征点匹配的结果图;

图8为筛选完成后的特征点匹配结果图;

图9为凹模装配过程的示意图。

具体实施方式

下面结合附图对本发明的技术方案作进一步的说明,但并不局限于此,凡是对本发明技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的保护范围中。

具体实施方式一:结合图1说明本实施方式。本实施方式所述的基于ar技术的模具拆装工程训练系统的搭建方法,该方法包括以下步骤:

步骤一:设计模具拆装过程中的引导信息;

引导信息包括:每一步拆装过程所需零件模型的信息、拆装过程的动画演示和拆装完成后的模型展示;

步骤二:使用vs2015中c++语言的mfc类库,搭建模具拆装工程训练系统的图形化界面,根据设计需要添加button、slider和tab控件;

步骤三:下载opencv3.4.1、hcnet和zbarsdk,opencv3.4.1用于实现计算机视觉功能、hcnet作为网络摄像机、zbarsdk用于实现条形码识别功能,将opencv3.4.1、hcnet和zbarsdk导入vs2015,并配置开发环境;

步骤四:调用网络摄像机,对网络摄像机进行标定和畸变校正;

步骤五:构建网络摄像机和投影仪的位置关系,利用excel软件的开发工具功能生成添加验证的code39条形码,并利用zbar对条形码进行条形码识别;

步骤六:利用网络摄像机的抓图功能拍摄每一步拆装过程中零件盒所得部件的匹配模板图像;

步骤七:根据全部拆装过程,设计程序逻辑,实现对引导信息、匹配模板图像的读取,同时利用投影仪投射引导信息,根据引导信息,网络摄像机实时获取每一步拆装过程的实际操作图像,将实际的操作图像与匹配模板图像进行特征点匹配,并对匹配成功的特征点进行筛选;

步骤八:记录筛选后的特征点匹配对数,若网络摄像机获取的实际的操作图像与匹配模板图像特征点匹配数量达到匹配模板图像自匹配特征点数量的70%,则认定匹配成功,继续执行步骤七设计的程序逻辑,直至完成全部拆装过程;

否则认定匹配未成功,则对零部件位置进行调整后,继续对网络摄像机获取的实际的操作图像与匹配模板图像进行特征点匹配,直至认定匹配成功;继续执行步骤七设计的程序逻辑,直至完成全部拆装过程。

步骤七中将第一步拆装过程的实际的操作图像与匹配模板图像进行特征点匹配后,通过匹配特征点数量判断该步拆装过程是否匹配成功,若匹配成功,则继续执行步骤七设计的程序,来完成下一步拆装过程,在完成下一步拆装过程时,拍摄当前实际的操作图像,用于与匹配模板图像匹配。

若匹配未成功,则对零部件位置进行调整后,继续对网络摄像机获取的实际的操作图像与匹配模板图像进行特征点匹配,直至第一步的拆装过程匹配成功后,再继续执行步骤七设计的程序,进行下一步拆装过程;即每一步的拆装过程均需要通过特征点匹配后,才能继续进行下一步的拆装过程,直至完成全部拆装过程。

为解决传统拆装训练过程和虚拟现实技术拆装教学系统在实际教学中存在的问题,本发明利用增强现实技术渲染生成虚实结合的场景,在生成虚实结合的场景中完成对拆装操作的引导,综合了传统拆装训练真实感强和虚拟现实技术拆装教学系统实时交互性好的优点,具有良好而广泛的应用前景。

使用基于自然特征的识别和匹配技术,实现了拆装过程中零部件的识别。与现在成熟且广泛采用的基于标志物的识别方法相比,具有不需要附加额外的特征信息,受装配环境影响小,稳定性与灵活性高等优点,可明显降低准备过程中的工作量。

具体实施方式二:本实施方式对实施方式一所述的基于ar技术的模具拆装工程训练系统的搭建方法进行进一步的限定,所述步骤一设计模具拆装过程中的引导信息的具体过程为:

步骤一一、模具拆装过程所需零件模型的建立:模具拆装工程训练系统中使用的模具为多工位级进模,多工位级进模依次实现冲孔和折弯的工序,将实际的多工位级进模进行拆卸,通过实际测量获取拆卸后所得零件的具体尺寸,应用三维可视化实体模拟软件的零件来创建二维和三维对象功能,完成零件三维模型的建立;

模具拆装工程训练系统的零件模型包括下模板、盖板、凹模固定板、螺钉(型号gb/t70.1m5×9)、销(型号gb/t199.25×30)、冲头、螺钉(型号gb/t70.1m6×20)、螺钉(型号gb/t70.1m5×20)、红弹簧、弹簧(型号顶件快、塞打、刀口、折弯冲头、螺钉(型号gb/t70.1m5×14)、螺钉(型号gb/t70.1m6×25)、销(型号gb/t199.25×26)、弹簧(型号)、上模板、卸料板、顶针和螺钉m8。每个零件盒内包含一种零件模型。

步骤一二、模具拆装工程训练系统零件模型的装配:应用三维可视化实体模拟软件的约束功能,依照装配过程的位置要求固定零件模型之间的相对位置,完成多工位级进模的装配;

步骤一三、装配视频渲染输出:将完成装配的多工位级进模导入三维可视化实体模拟软件的inventorstudio动画制作环境,在动画时间轴中,驱动约束来控制零件模型移动,通过调整透明度来控制零件模型显隐,完成装配视频渲染过程。

本实施方式中的三维可视化实体模拟软件可以是autodeskinventorprofessional(aip)、solidworks、catia、ug等。

具体实施方式三:本实施方式对实施方式二所述的基于ar技术的模具拆装工程训练系统的搭建方法进行进一步的限定,本实施方式的步骤四中调用网络摄像机,对网络摄像机进行标定和畸变矫正,其具体过程为:

步骤四一:初始化网络摄像机的sdk,设置登录参数注册网络摄像机,设置的登录参数包括网络摄像机的ip地址、用户名和密码信息,并开启实时预览,完成摄像机调用;

本次使用海康威视h265400w像素半球型网络摄像机,应用海康威视sdk进行二次开发,完成摄像机的调用操作。根据开发手册,预览流程为:开始、初始化sdk,用户注册设备、启动预览、实时数据回调、停止预览、注销设备、释放sdk、结束;

步骤四二:利用网络摄像机的云台控制功能,使用滑动条调节速度,完成云台位置、焦距大小、焦点前后和光圈大小的调节;设置预制点,保证每次调用时网络摄像机均在调整好的位置;

摄像机云台控制流程为:开始、初始化sdk,用户注册设备、云台控制、停止预览、注销设备、释放sdk、结束;

步骤四三:将标定板(购买的标定板效果比较好)以不同姿态放置于工作平台,应用网络摄像机的抓图功能拍摄15~20张棋盘格图像,并保存到硬盘中;

摄像机抓图流程为:开始、初始化sdk,用户注册设备、启动预览、实时数据回调、预览抓图、停止预览、注销设备、释放sdk、结束;

步骤四四:读取网络摄像机所拍摄的棋盘格图像,对棋盘格内角点进行粗提取后,对粗提取的内角点进行精确化得到亚像素内角点,完成内角点提取;

步骤四五:对网络摄像机进行标定和畸变矫正,标定和畸变矫正的具体过程为:

由于标定板位于水平的操作平台,且标定板棋盘格尺寸已知,以标定板棋盘格中的一个顶点为原点,棋盘格的两边为坐标轴建立空间直角坐标系,即可确定平面棋盘格的实际三维坐标。根据提取的角点和平面棋盘格的实际三维坐标,利用张正友标定法完成摄像机标定过程,并求解畸变系数,并完成图片的校正。

世界坐标系(worldcoordinate)是描述网络摄像机和待测物体的空间位置的坐标系,世界坐标系下,坐标为(xw,yw,zw)的点的齐次坐标为(xw,yw,zw,1)t;(xw,yw,zw,1)t代表(xw,yw,zw,1)的转置;

世界坐标系下,坐标为(xw,yw,zw)的点的齐次坐标为(xw,yw,zw,1)t

以网络摄像机镜头光心为原点o′,镜头光轴为z轴,像面的两边平行线为x、y轴,建立相机坐标系;世界坐标系下的点(xw,yw,zw)在相机坐标系下对应的齐次坐标为(xc,yc,zc,1)t,(xc,yc,zc)为世界坐标系下的点(xw,yw,zw)在相机坐标系下的坐标;

世界坐标系和相机坐标系的转换关系如公式(1)所示:

式中:r为3×3维的旋转矩阵;t为3×1维的平移矢量;

像素坐标系(pixelcoordinate)是以棋盘格图像的左上角为原点o,以像面的两边平行线为u,v轴,建立像素坐标系;像素坐标系反映了网络摄像机感光元件中像素的排列情况,坐标轴以像素为单位。

世界坐标系下的点(xw,yw,zw)在像素坐标系下对应的齐次坐标为(u,v,1)t,(u,v)为世界坐标系下的点(xw,yw,zw)在像素坐标系下的坐标;

图像坐标系是以棋盘格图像的中心为原点,即以网络摄像机的光轴与像面的交点为原点o,以u轴和v轴的平行线分别为x轴和y轴的坐标系;(坐标轴一般以毫米为单位。该坐标系易于坐标变换。)

世界坐标系下的点(xw,yw,zw)在图像坐标系下对应的齐次坐标设为(x,y,1)t;(x,y)为世界坐标系下的点(xw,yw,zw)在图像坐标系下的坐标;

像素坐标系和图像坐标系的转换关系如公式(2)所示:

式中:dx为像素在x轴方向的物理尺寸,dy为像素在y轴方向的物理尺寸,u0为图像坐标系原点的横坐标,v0为图像坐标系原点的纵坐标;

相机坐标系和图像坐标系的转换关系如公式(3)所示:

式中:s为比例因子,f为网络摄像头有效焦距;

世界坐标系与像素坐标系的转换关系如公式(4)所示:

为网络摄像机的内参矩阵;

理想的摄像机模型是针孔模型,但是实际的镜头不符合这种假设。另外,相机的构造以及制造、安装、工艺等因素也会造成误差,导致相机通常会存在多种非线性畸变,为了使相机标定结果更加准确,在进行相机标定时应该将相机的非线性畸变考虑进来,修正理想投影模型。

网络摄像机的畸变包括径向非线性畸变和切向非线性畸变,其中:径向非线性畸变的模型为:

x2=x(1+k1r2+k2r4+k3r6)(5)

y2=y(1+k1r2+k2r4+k3r6)(6)

其中:(x,y)是网络摄像机的正常位置坐标,(x2,y2)是网络摄像机的径向非线性畸变位置坐标;r为网络摄像机的正常位置坐标到镜头光心的距离,即k1为2阶径向畸变系数,k2为4阶径向畸变系数,k3为6阶径向畸变系数;

切向非线性畸变的模型为:

x1=x+[2p1y+p2(r2+2x2)](7)

y1=y+[2p2x+p1(r2+2y2)](8)

其中:(x,y)是网络摄像机的正常位置坐标,(x1,y1)是网络摄像机的切向非线性畸变位置坐标;p1为垂向切向畸变系数,p2为水平向切向畸变系数;

则网络摄像机的非线性畸变公式为:

x0=x(1+k1r2+k2r4+k3r6)+[2p1y+p2(r2+2x2)]

y0=y(1+k1r2+k2r4+k3r6)+[2p2x+p1(r2+2y2)]

畸变矩阵即为包括k1,k2,k3,p1和p2的五维向量(k1,k2,k3,p1,p2);

求解出网络摄像机的内参矩阵、畸变矩阵、旋转矩阵和平移矢量,即完成网络摄像机的标定和畸变校正。

本实施方式的主程序如下://feature2d.cpp:实现文件

具体实施方式四:本实施方式对实施方式三所述的基于ar技术的模具拆装工程训练系统的搭建方法进行进一步的限定,本实施方式中的步骤五构建网络摄像机和投影仪的位置关系,利用excel软件的开发工具功能生成添加验证的code39条形码,并利用zbar对条形码进行条形码识别,其具体过程为:

步骤五一:利用opencv3.4.1生成一张与电脑分辨率相同的黑色图像,在黑色图像中设置识别区域,并将识别区域内部的颜色改成白色,利用投影仪将整个黑色图像投射至工作平台上,记录识别区域在整个黑色图像中的位置;

步骤五二:利用网络摄像机的抓图功能拍摄步骤五一投射完成后的工作平台的图像,利用网络摄像机的内参矩阵和畸变矩阵对拍摄的图像进行校正;

步骤五三:应用opencv3.4.1显示校正后的图像,设置鼠标回调函数,在校正后的图像上手动框选投影仪投射图像所在位置,完成摄像机和投影仪位置关系构建;

步骤五四:利用excel软件的开发工具功能,生成内容为ar01至ar28的共28个添加验证的code39条形码;

步骤五五:将条形码粘贴到零件盒上,对条形码位置区域进行框选,应用zbar对所框选的条形码位置区域进行条形码识别。

具体实施方式五:本实施方式对实施方式四所述的基于ar技术的模具拆装工程训练系统的搭建方法进行进一步的限定,本实施方式中生成code39条形码的具体过程为:

步骤1、点击"开发工具"选项卡,"插入"-"其他控件";

步骤2、弹出"microsoftbarcode控件14.0对象"对话框,选择code39样式;

步骤3、鼠标右击条形码对象,弹出快捷菜单,点击"属性"命令项;

步骤4、在"linkedcell"处输入a1,在a1单元格中输入ar01字符;

步骤5、点击"开发工具"选项卡下的"设计模式"来结束设计,即可生成内容为ar01的code39条形码;

步骤6、重复步骤1-5,完成ar01至ar28条形码的生成,并打印输出。

具体实施方式六:本实施方式对实施方式五所述的基于ar技术的模具拆装工程训练系统的搭建方法进行进一步的限定,本实施方式中步骤六根据步骤五一中设置的识别区域位置,将每一步拆装过程中零件和所得部件放入识别区域内,利用网络摄像机的抓图功能拍摄图像,并分别截取识别区域的图像作为每一步拆装过程的匹配模板图像。

具体实施方式七:本实施方式对实施方式六所述的基于ar技术的模具拆装工程训练系统的搭建方法进行进一步的限定,本实施方式中步骤七根据全部拆装过程,设计程序逻辑,实现对引导信息、匹配模板图像的读取,同时利用投影仪投射引导信息,根据引导信息,网络摄像机实时获取实际的操作图像,将实际的操作图像与匹配模板图像进行特征点匹配,并对匹配成功的特征点进行筛选,其具体过程为:

步骤七一:根据全部拆装过程,设计程序逻辑;将每一步拆装过程的引导信息和匹配模板图像相关联;

步骤七二:利用投影仪投射引导信息,并利用网络摄像机实时获取实际操作过程的图像;

步骤七三:截取步骤七二获取的图像中的识别区域部分,应用orb特征点提取算子;

步骤七四:使用flann匹配算子,将步骤七三截取得到的图像与匹配模板图像进行特征点匹配;

步骤七五:根据劳氏算法对匹配成功的特征点进行筛选。

利用投影仪投射引导信息(即步骤一设计的拆装过程动画演示)后,操作者即可根据动画演示进行实际拆装操作,实际拆装操作过程中,实时利用网络摄像机获取实际操作图像,获取实际操作图像后将识别区域部图像截取出来,再将截取出来的图像与匹配模板图像进行特征点匹配。

实施例

本发明步骤四三的关键程序代码为:

//提取棋盘格内角点

findchessboardcorners(imageinput,board_size,image_points,cv_calib_cb_adaptive_thresh|cv_calib_cb_normalize_image);

//对粗提取的内角点进行精确化

find4quadcornersubpix(view_gray,image_points,size(5,5));

//保存亚像素内角点

image_points_seq.push_back(image_points);

完成内角点提取,绘制的图像如图2所示。

本发明步骤四四中像素坐标系和图像坐标系的关系如图3所示。

由针孔成像原理,相机坐标系和图像坐标系具有简单透视变换关系,关系如图4所示:

求解出网络摄像机的内参矩阵、畸变矩阵、旋转矩阵和平移矢量,即完成网络摄像机的标定和畸变校正的关键程序代码为:

//求解摄像机内参矩阵、畸变矩阵、旋转矩阵和平移矢量

calibratecamera(object_points_seq,image_points_seq,image_size,cameramatrix,distcoeffs,rvecsmat,tvecsmat,cv_calib_fix_k3);

//图片校正

undistort(camera,camera_clone,cameramatrix,distcoeffs);

完成校正的图片如图5所示。

构建网络摄像机和投影仪的位置关系的关键程序代码为:

//创建窗口

cvnamedwindow("captureimage",window_normal);

//在所创建窗口上显示校正完成的图片并设置鼠标回调函数

setmousecallback("captureimage",on_mousebarhandle,

(void*)&scrimage);

对条形码进行识别的关键程序代码为:

//初始化扫描器

imagescannerscanner;

//设置扫描范围

imageimagezbar(width,height,"y800",raw,width*height);

//扫描条码

scanner.scan(imagezbar);

//保存条形码内容

bar.push_back(barname);

//保存条形码位置

barposition.push_back(g_rectangle);

应用orb特征点提取算子,与匹配模板图像进行特征点匹配的关键程序代码如下://将从摄像机截取图像和从文件夹中读取图像转为灰度图像;

cvtcolor(captureimage,d_srcr,color_bgr2gray);

cvtcolor(trainimage,d_srcl,color_bgr2gray);

//提取图像的特征点

d_orb->detectandcompute(d_srcr,mat(),keypoints_2,d_descriptorsr);

d_orb->detectandcompute(d_srcl,mat(),keypoints_1,d_descriptorsl);

其中下模板特征点提取结果如图6所示。

//匹配两张图像中的特征点

d_matcher->match(d_descriptorsl,d_descriptorsr,matches);

特征点匹配结果如图7所示。

//对匹配成功的特征点进行筛选

if(matches[i].distance<=0.6*max_dist)

{

good_matches.push_back(matches[i]);

goodmatchnumber++;

}

筛选完成后的特征点匹配结果如图8所示。

多工位级进模零件装配过程如下:

1、程序确定本步装配所需要的零件,在放置该零件的零件盒的条形码位置,用投影仪投射标记光点,在工作平台投射零件的匹配模板;

2、从零件盒中取出零件,置于识别区中,等待系统识别;

3、完成识别后,在工作平台投射本步装配过程视频;

4、按视频引导进行装配操作;

5、将装配完成部件置入置于识别区中,等待系统识别;

6、完成识别后,重复1-5步操作直至完成部件装配。

如图9所示,为凹模装配过程的示意图。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1