从工程的角度而言,对于软件开发,先创建一个良好合适的系统构架对于保障开发的可行性、开发成本和软件质量都是至关重要的。至于运用3D图形技术对双臂机器人进行软件仿真,其中要害又是身临其境之沉浸感的机器人三维动态的、逼真的和可交互的虚拟环境,其次才是软件各功能模块的实现。因此,我以现有机器人离线编程系统作为原型,采用软件工程的方法进行了系统设计。
2.1 设计要求
(1)、设计三维虚拟仿真软件系统;
(2)、建立机器人虚拟模型,提供软件接口;
(3)、建立仿真系统与控制界面的交互控制,包括键盘交互、离线编程;
(4)、机器人与虚拟物体的碰撞检测;
(5)、模拟机器人工作环境、包括现场模拟、视图控制、多视角检测。
2.2系统分析
2.2.1离线编程系统用例分析
考虑到设计目标和离线编程系统最为接近,因此以此作为原型进行分析
图2-1 离线编程系统分析
2.2.2 MVC系统构架
MVC (Model、View、Controller)模型-视图-控制器 的系统构架,广泛用于信息处理,其中:
模型层,是指抽象的控制对象的数学或者程序模型,如机器人的D-H模型,以及自定义的一个要害的MyRobot类作为控制对象;
视图层,指GUI用户界面、虚拟场景、数据报表等;
控制层,指根据业务流程组织的相对集中的控制算法,比如运动学引擎、场景视图控制器、文档治理和分析器等。
实际上,还可以引入一个Commulication的通信模块,完成分布式计算和多机协作的功能。
2.2.2 MVC系统构架
MVC (Model、View、Controller)模型-视图-控制器 的系统构架,广泛用于信息处理,其中:
模型层,是指抽象的控制对象的数学或者程序模型,如机器人的D-H模型,以及自定义的一个要害的MyRobot类作为控制对象;
视图层,指GUI用户界面、虚拟场景、数据报表等;
控制层,指根据业务流程组织的相对集中的控制算法,比如运动学引擎、场景视图控制器、文档治理和分析器等。
实际上,还可以引入一个Commulication的通信模块,完成分布式计算和多机协作的功能。
图2-2 仿真系统的MVC构架
2.3几种可行VR方案的设计和比较
2.3.1 VR系统的设计
VR系统设计的主要原则是模块化、标准化和面向对象的开放性和可重用性 ,它包括具有临场感的输入输出系统、具有真实感的虚拟环境仿真系统。其中输入输出系统包括控制台命令输入、语音控制器输入 ;以及立体显示、触觉反馈、立体声合成和输出等。虚拟环境仿真系统包括虚拟环境的三维图形生成和三维模型的数据库治理。同构双臂多冗余度机器人避碰研究的虚拟实现就是利用计算机图形学的方法模拟真实机器人的运动过程,并同时进行碰撞检测。
VR具有4大主要特点 :多感知性、沉浸感、交互性和自主性。近年来,VR技术与机器人技术的有机结合成为极具发展潜力和应用前景的研究方向之一。通过计算机技术生成一个虚拟仿真环境,既可节省大量的建造物理仿真环境的经费,时也可以方便地修正仿真环境的物理参数。另外 ,在现场作业时 ,可将控制信号和现场反馈信号分别输入到虚拟仿真系统和实际操作控制系统中 ,先观察虚拟仿真系统的执行结果 ,若执行动作正确 ,再将此命令送给实际操作机器人 ,避免出现不可挽回的错误。近来年 ,VR技术和机器人技术的有机结合越来越成为人们关注的焦点虚拟现实系统设计的基本手段和目标就是充分利用并集成高性能的计算机软硬件及多种传感器 ,创建一个具有自然交互作用 ,使操作员产生身临其境之沉浸感的机器人三维动态的、逼真的和可交互的虚拟环境。
机器人的编程技术分为离线编程和在线编程,尤其令人注目的是我们涉及的离线编程系统。与VR技术紧密相关的是机器人离线编程技术(Off-line programming),它也为机器人智能研究的提供了算法实验的平台。离线编程系统主要包括以下几个核心的模块设计:图形仿真引擎、机器人的正逆运动学模块、任务路径规划设计模块,机器人碰撞检测模块。其中图形仿真引擎的实现有多种方式,最底层的就是OpenGL和Direct3D两个图形接口,前者产生于SGI,后者是Microsoft制定的图形接口。
2.3.2 方案比较
实现这个系统有以下几种可能:
(1). OpenGL接口的VC++编程实现
图2-3 基于OpenGL实现的CAD系统分析
这种实现方式也是我们一开始计划的,也有一些现有的CAD系统和游戏引擎可以参考。但技术过于底层,太多细节需要考虑,短时间内难以做好。
(2) 基于现有工具软件的实现
Matlab中有Virtual Reality工具箱,使用其中有关节点可以方便的进行仿真,而且可以与Simulink其他工具箱结合,但是也有众多不成熟的地方,比如图形不理想、不能进行碰撞检测、功能也有局限性。
(3) 基于现有CAD系统的二次开发
此方式是一条较好的实现路线,因为现有CAD软件的图形引擎相对是很成熟的,而且多半也提供了相应的接口,甚至连CAD数据库都有现成的,但是也伴随着系统庞大、依靠于特定的CAD系统、灵活性不够的问题。
(4) 基于图形高级开发库的实现
图形高级开发库,如Java3D、VEGA、Performer等,是基于OpenGL或者DirectX这些底层开发库的,由一些研究图形系统的公司发布的工具包。这些开发库提供了开发图形系统需要的一些要害函数和对象,由特定的程序语言来使用这些开发包,因此可以方便的集成到应用系统中。
与基于CAD的二次开发相比,熟悉这些开发包和熟悉二次开发的库函数难度相当,而且功能也相对要灵活很多,当然也会有来自于熟悉程序语言的工作量。
经比较,结合自己的情况,采用了Java3D的高级图形开发库作为实现途径。
2.4 选定的实现方案
2.4.1 Java、JAVA3D性能特点
先介绍一下Java的优点:
(1)、Java是基于字节流实现的,不同于C编译器编译后产生的即是二进制的机器码文件,Java编译后产生的是一种开放格式的*.class文件,这种代码需要运行于Java虚拟机才可以解释执行,而不同的操作系统的Java虚拟机却不同的。因此,Java程序具有与特定的计算机系统无关的特点,即“一次编译到处运行”。去年中国政府的软件大采购中,操作系统大部分的是红旗Linux,这种趋势也是我选用Java的原因;
(2).Java是一门完全面向对象的语言, C++则混合含有面向过程的诸多方法,比如因为指针导致程序可读性下降、结构混乱、轻易出现不易理解的错误,Java中取消了指针,提供所谓“智能指针”的句柄;
(3)、Java以网络为中心,在程序中使用网络功能比在C/C++里要轻易很多,而且Java的线程的使用也简单许多;
(4). 在自由软件的世界里,Java也备受青睐,因为不仅class文件格式开放,而且虚拟机的结构和众多的开发包都是源代码开放的,这样让它可以跟最前沿的技术潮流紧密结合,也可以免费获得很多有价值的项目的资料。
Java3D继续了Java的诸多优良品质,对于3D图形性能也有众多优势:
(5).Java3D还提供了高层的、面向对象的应用界面,简化了3D图形应用程序的开发;
(6).优化了图形性能、完善的API库;
(7).封装了对于描述虚拟场景有用的类和函数。
具体地,下一章必要性的简单介绍了一些Java3D的基础知识。
2.4.2 相关支持技术
因为虚拟仿真实际是一门综合技术,需要众多相关技术作为支撑,比如我在程序设计中,除Java、Java3D外,也用到了VRML/X3D、XML、xj3d、orocos等相关知识以及开发包,还用到UG进行机器人模型的CAD造型。
2.5 系统开发工具
操作系统:Windows 2003 Server
Java开发平台:j2sdk-1_4_2-windows-i586
Java运行平台:j2re-1_4_2_01-windows-i586
API库:java3d-1_3_1-windows-i586-opengl-sdk、Xj3D-DEV-20040427、Xj3D M8
IDE工具:JCreator、UltraEditor、XMLSpy、VrmlPad2.0
2.6 GUI用户界面介绍
图2-4 仿真系统运行界面
主体GUI说明:
菜单栏:系统配置及主体功能;
工具栏:视图控制工具栏;
左侧信息面板:显示机器人相关参数的信息;
右侧控制类标签面板:仿真控制功能;
中心视图:仿真浏览器
底部面板:机器人离线编程命令窗。
部分弹出界面,如机器人定义文件robot.xml具体信息对话框:
图2-5 机器人具体信息对话框
本文地址:http://www.cg3000.com/html/cgTutorials/VirtualReality/Java3D/20071205/jiqirenxunifangzhenxitongchubuyanjiu_er__69354.shtml


当前位置 :