APP下载

基于OpenGL空间机械臂三维重构可视化研究

2018-01-23李泰国李文新王伟文高家祺

计算机技术与发展 2018年1期
关键词:运动学绘制材质

李泰国,李文新,王伟文,高家祺

(兰州空间技术物理研究所,甘肃 兰州 730000)

0 引 言

随着空间探索的不断深入,空间机械臂应用技术已经成为空间技术的重要研究方向。由于机器臂结构复杂、真实设备成本昂贵、实验条件受限等问题,会对机械臂的实验研究开展带来一定难度。因此,在机械臂的设计研究中,图形仿真系统作为一种安全灵活的工具,发挥着非常重要的作用,并广泛应用于机械臂研究和开发的各个方面。机械臂图形仿真涉及机械臂机构学、运动学、零件建模、机械臂三维实现、运动控制和机械臂路径规划,是一项综合性的有创新意义和实用价值的研究课题。因此针对机械臂在不同平台下(如OpenGL、MATLAB机器人工具箱、LabView、ADAMS等)不同性能的仿真试验,给机械臂的研究带来了便利。能够为机器臂结构方案与相关设计提供强有力的支撑;能够有效地帮助设计师掌握机械臂工作空间的形态和极限;也能够为离线编程人员提供一种有效的验证手段;还能帮助检测机械臂的工作环境与机械臂之间是否存在干涉,以保证机械臂运行的绝对安全等[1-4]。

目前,存在多种设计软件方便进行机械臂的仿真研究,包括三维设计软件UG、Pro/E、Solidworks,仿真软件ADAMS、机器人专用软件WorkSpace、专用计算软件Matlab等。但是从三维建模,嵌入控制算法,实现3D仿真难易程度等多方面进行分析,发现UG、Pro/E、Solidworks等在机构仿真方面有一定的优势,但是难以满足机械臂控制仿真的要求;ADAMS和WorkSpace等仿真软件在嵌入用户开发算法方面存在明显的不足;Matlab在算法开发和正确性验证方面有优势,但是难于直接对控制器进行驱动。而OpenGL是一个跨平台、开源的图形程序接口,具有较好的可视化功能,能够为仿真及场景可视化提供较好的环境,可使用光效、雾效、纹理等特效功能,模拟现实世界物体对光的反射、散射原理,增强了曲面的材质感和临场感,达到了良好的现实逼真效果。采用OpenGL技术,在Windows环境下以Visual C++为基础进行机械臂三维重构可视化研究,便于嵌入用户控制算法,满足机械臂控制仿真的要求。

1 模型建立及数据转换

在计算机图形学中有两种方式表示三维模型:多边形构成和NURBS曲面构成。在三维图形的绘制过程中,如果直接利用OpenGL库提供的基本几何体构造复杂的图形是相当困难的。原因在于OpenGL只能通过基本的几何图元点、线及多边形建立三维模型,但是它不提供建立三维模型的高级命令。此外,如果直接利用OpenGL绘制复杂三维模型,则需要在程序设计时使用大量的绘图语句。这样OpenGL程序在运行时将占有大量内存,导致程序执行效率降低,相应地会增加程序设计的复杂度和工作量;并且程序的通用性和简便性很难满足,给系统的开发带来了极大困难。

由于OpenGL对模型的数据格式相对比较通用,没有特殊的要求。在仿真研究过程中比较可取的做法是先利用专业建模软件(如3D Studio MAX、Pro/E等)建立需要的三维模型,然后转换为OpenGL可以识别的模型数据格式(如3DS文件、STL文件等),最后将创建的模型数据导入OpenGL。然后在开发环境(Visual C++、LabView等)中直接获取模型数据,结合OpenGL进行绘制及交互控制。该方法的优势在于可以利用专业建模软件3D Studio MAX的优点,快速建立复杂三维模型,还可以借助OpenGL的编程接口对模型进行实时绘制和交互控制,提高程序的执行效率,降低建模时间,加快系统开发进程[5-8]。

1.1 3DS文件的建立

利用3D Studio MAX软件创建模型并导出成3DS文件的流程如图1所示。

图1 3DS文件创建流程

1.2 3DS文件结构

3DS文件结构由Chunk(块)组成,每个Chunk描述了诸如场景数据,每个编辑窗口的状态、材质、网格数据等[9]。Chunk由两部分组成:ID和Length(下一个数据的位置)。二进制的3DS文件采用小尾端格式存储,即低字节在前,高字节在后。3DS中每个块的数据组织格式包括“块ID”、“块长度”和“块数据”。

每个3DS文件都包括一个块ID是“0x4D4D”的基本块。基本块是在3DS文件中必须存在的,也可用于检测一个文件是不是3DS文件,它由ID为“0x3D3D”的编辑块和ID为“0xB000”的关键帧块组成。3DS编辑块表明程序数据的开始,包括材质列表块、两配置块、视口定义块、物体定义块等。3DS关键帧块表明开始定义关键帧信息。3DS主要的几个块的ID及信息,包括(0xAFFF,材质信息开始)、(0xA000,材质名称)、(0xA300,材质纹理名称)、(0x4130,与三角面相关的材质信息)、(0x4000,模型中对象信息)、(0x4110,对象中定点信息)、(0x4120,对象中三角面信息)、(0x4140,纹理坐标)。

2 基于OpenGL和VC++ MFC的空间机械臂三维重构

2.1 OpenGL与MFC的接口

为使Windows能正确执行OpenGL的API函数,首先必须对绘图环境进行初始化,只有在OpenGL绘制环境中,OpenGL命令才能被接收并执行,所以必须创建OpenGL绘制环境。OpenGL绘制环境初始化过程如表1所示。

表1 OpenGL绘制环境初始化

2.2 空间机械臂3DS文件的读取

如1.2节所述,3DS文件中采用的是块结构,并且块与块之间存在嵌套关系,所以可以采用递归的方法读取3DS文件中的三维模型数据。基于面向对象的程序设计思想,设计了5个类用于空间机械臂3DS文件的读取和重绘,分别是tChunk(定义块信息)、t3DModel(定义模型信息)、t3DObject(定义模型对象信息)、tMaterialInfo(定义材质信息)和tFace(定义顶点信息和纹理坐标信息)。3DS文件读取的算法伪代码如下所述:

参数定义为:

ChunkLength:表示3DS文件长度;

ReadBytesLen:表示读出的数据字节数;

TempBytesLen:用于保存读出数据字节数的临时变量。

算法步骤:

Step1:初始化变量,打开3DS文件;

Step2:读取第一块数据的ID及数据长度ChunkLength;

Step2.1:判断ID为0x4D4D,ReadBytesLen加6,执行Step3;

Step2.2:判断ID不为0x4D4D,则执行Step6。

Step3:读取下一块数据的ID及数据长度TempBytesLen;

Step3.1:判断ID为0xA000,则将解析后的材质名称保存至材质信息名称队列;

Step3.2:判断ID为0xA020,则将解析后的材质颜色保存至材质信息颜色队列;

Step3.3:判断ID为0xA200,则将解析后的纹理信息保存至纹理信息队列;

Step3.4:判断ID为0xA300,则将解析后的材质文件名称保存至材质文件名称队列;

Step3.5:如果为其他ID,忽略其数据信息。

Step4:ReadBytesLen=ReadBytesLen+TempBytesLen;

Step5:判断已读入数据长度ReadBytesLen是否小于块长度ChunkLength;

Step5.1:如果ReadBytesLen小于或等于ChunkLength,继续执行Step3;

Step5.2:如果ReadBytesLen大于ChunkLength,执行Step6。

Step6:程序结束。

2.3 空间机械臂三维模型的重绘

将三维模型及场景数据从3DS文件读出后,需要在OpenGL环境下完成三维模型的重绘[10-11]。三维模型重绘算法伪代码如下所述:

参数定义:

算法步骤:

Step1:计算3DS模型中各个面的法向量;

Step1.4:保存计算后的各个面的法向量。

Step2:设置三维模型的材质纹理;

Step3:设置OpenGL绘图环境;

Step3.1:创建绘图描述表并设置像素格式;

Step3.2:初始化模型、大小;

Step3.3:设置光照、旋转角度、转速及模式。

Step4:遍历3DModel对象,对存储的对象逐一进行绘制,如果有纹理映射信息,则打开纹理映射;

Step5:开始以ViewMode模式绘制,先遍历所有的面,然后嵌套遍历三角形所有的点,获得面对每个点的索引。给出法向量,最后完成绘制;

Step6:根据机械臂运动学求解结果判断机械臂是否需要重绘;

Step6.1:如果是机械臂正运动学控制,则按从以太网接收到的机械臂各关节角的个数进行机械臂形状的重绘;

Step6.2:如果是机械臂逆运动学控制,则根据从以太网接收到的机械臂末端状态解算出各关节角,再进行机械臂形状的重绘。

Step7:程序结束。

3 空间机械臂参数

空间七自由度机械臂是一个完全结构对称的冗余型机械臂,与臂杆两端相连接的3个关节完全相同并且对称。通过对空间机械臂的结构特征进行分析,建立的空间机械臂D-H坐标系如图2所示,D-H参数如表2所示。

图2 空间机械臂D-H坐标系

连杆iθidi/mmai-1/mmαi-11θ1000°2θ2d2090°3θ3d3a3-90°4θ40a40°5θ5d500°6θ6d6090°7θ7d70-90°

其中,d2=d3=d5=d6=d7=515;a3=a4=5 540。

根据机械臂D-H参数可以完成机械臂的正运动学和逆运动学的求解,根据正运动学的解算可以完成机械臂正运动的仿真控制;若已知机械臂末端执行器的坐标位置,则可以通过该位置坐标结合逆运动学求解公式计算出机械臂各个关节的角度值,可以完成机械臂的逆运动控制及路径规划控制。将机械臂的正逆运动学的求解算法嵌入基于OpenGL的空间机械臂三维模型中,通过利用图形程序接口来完成场景及三维模型的更新显示,以此可以达到动态显示三维仿真的效果[12-14]。

4 空间机械臂三维可视化系统

4.1 系统架构设计

根据系统需求分析,空间机械臂三维可视化系统的整体架构设计如图3所示。

4.2 系统运行效果

在设计完成后,在Visual C++环境下该系统的运行效果如图4所示。

图3 机械臂三维可视化系统架构

图4 空间机械臂三维可视化系统运行效果

5 结束语

利用3D Studio MAX建模具有模型逼真形象、开发效率高的特点,完成空间机械臂三维模型及场景的创建。在Visual C++ 6.0环境下,完成三维模型数据3DS文件的读取与解析,采用OpenGL技术进行三维模型的重绘,大大降低了OpenGL建立复杂模型的难度。在此基础上,运用OpenGL对三维模型的处理技术,对三维模型场景进行实时渲染,使得生成的场景逼真,真实感强。建立的空间机械臂三维可视化系统可实现空间机械臂的运动学仿真,为进一步研究空间机械臂的路径规划研究奠定基础。

[1] 唐立才,张海涛,张敬鹏,等.基于OSG的空间机械臂三维仿真平台的设计与实现[J].计算机测量与控制,2015,23(3):987-989.

[2] 廖 明,周良辰,闾国年,等.基于OpenGL驱动的三维场景重构[J].计算机应用研究,2015,32(4):1276-1280.

[3] 董天平,马 燕,刘伦鹏.基于OpenGL的工业化机器人仿真研究[J].重庆师范大学学报:自然科学版,2013,30(2):60-64.

[4] 陈 琳,戴 骏,冯俊杰,等.基于OpenGL的多机器人仿

真环境[J].组合机床与自动化加工技术,2014(9):10-13.

[5] 李 新,李珊珊.3ds模型在OpenGL中的读取和重绘[J].首都师范大学学报:自然科学版,2008,29(2):101-104.

[6] 万 鹏,姜立军,陈学东,等.基于图像处理的外螺纹三维模型重构[J].图学学报,2012,33(1):68-72.

[7] HERBORT S,WOHLER C.An introduction to image-based 3D surface reconstruction and a survey of photometric methods[J].3D Research,2011,2(3):1-17.

[8] MERAT P,AGHILI F,SU Chunyi.Modeling,control and simulation of a 6-DOF reconfigurable space manipulator with lockable cylindrical joints[C]//International conference on intelligent robotics and applications.[s.l.]:[s.n.],2013:121-131.

[9] 刘志林,苏 丽.基于COSMOSMotion的机械臂三维虚拟仿真[J].机械设计与制造,2010(12):92-94.

[10] Shreiner D.OpenGL编程指南[M].王 锐,译.第8版.北京:机械工业出版社,2014.

[11] 钱小平,杨庆华,荀 一,等.基于Java3D的机械臂三维虚拟场景创建及运动学仿真[J].机电工程,2014,31(1):47-51.

[12] CHEN M Q,GONG Y W. Research on technology of three-dimension Roam based on OpenGL[C]//International conference on computer application and system modeling.[s.l.]:[s.n.],2010:562-564.

[13] LIU N,PANG M Y.Rendering soft shadows with OpenGL based on planar projection method[C]//2nd international conference on network infrastructure and digital content.[s.l.]:IEEE,2010:235-239.

[14] 僧德文,李仲学,李春民,等.基于OpenGL的真实感图形绘制技术及应用[J].计算机应用研究,2005,22(3):173-175.

猜你喜欢

运动学绘制材质
轿车前后悬架运动学仿真分析
绘制童话
作品赏析
刚柔并济
绘制世界地图
复合切割机器人的运动学分析与仿真研究
基于运动学特征的新型滑板对速滑蹬冰动作模拟的有效性
神秘的不速之客
材质放大镜电光闪耀亮片
外套之材质对比战