《大学电脑作业:大学论文》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
广东技术师范学院
1摘要1Abstract1第一章绪论11.2虚拟样机技术简介11.2.1虚拟样机的定义和特点11.2.2研究现状和发展趋势21.3视景仿真技术简介31.3.1视景仿真的定义和特点31.3.2工业机器人视景仿真系统研究的意义31.4本文要研究的主要内容3第二章机器人运动学52.1空间点和坐标系的表示52.1.1空间点的向量表示52.1.2坐标系在固定参考坐标系中的表示52.2坐标系的变换62.2.1齐次变换62.2.2坐标系相对于旋转坐标系的变换72.2.3变换矩阵的逆82.3机器人的正逆运动学82.3.1正运动学的D-H表示法92.3.2逆运动学方程的求解102.4微分运动10第三章基于ADAMS的机器人的虚拟样机分析123.1ADAMS概述123.2ADAMS中机器人模型的建立123.2.1设置建模环境133.2.2机器人实体建模133.2.3机器人模型的设置133.3轨迹规划仿真分析143.3.1轨迹规划方法的理论分析143.3.2轨迹规划仿真分析17第四章基于模型的视景仿真系统的设计与实现191.1.1OpenGL工作方式20
21.1.1OpenGL绘制过程204.2机器人三维可视化框架建立204.2.1利用MFC建立单文档应用程序框架204.2.2设置OpenGL绘图环境214.3机械手三维模型的建立234.3.1导入机械手模型234.3.2在OpenGL中建立机械手的模型244.4建立仿真场景264.4.1纹理贴图的实现264.4.2设置光照284.5基于模型的视景仿真的实现304.5.1数据的读取314.5.2利用读取的数据控制机械手的运动324.5.3实现观察视角的交互式键盘控制34结论36致谢52
3摘要摘要虚拟样机技术就是在建造第一台物理样机之前,设计师利用计算机技术建立机械系统的数字化模型,进行仿真分析并以图形方式显示该系统在真实工程条件下的各种特性,从而修改并得到最优设计方案的技术。ADAMS软件是目前国际上应用最为广泛的虚拟样机分析软件,用户可以运用该软件非常方便地对虚拟机械系统进行静力学、运动学和动力学分析。但针对复杂的机器人机械系统,要想准确的控制其运动,仅依靠ADAMS软件自身也很难做到;MATLAB软是Mathworks公司开发的一种集计算、图形可视化和编辑功能于一体的优秀数学应用软件,具有强大的计算能力,能够建立复杂的控制模型准确控制复杂机器人系统的运动;OpenGL(开放式图形库全称)是SGI公司开发的底层三维图形API,目前在图形开发领域已成为工业标准。使用OpenGL可以创建视觉质量接近射线跟踪程序的精致漂亮的3D图形。VisualC++6.0已经成为集编辑、编译。运行、调试为一体的功能强大的集成编程环境,在Windows编程中占有重要地位。OpenGL和VisualC++6.0有紧密接口,利用二者可以开发出优秀的视镜仿真系统。ADAMS、MATLAB和VisualC++6.0由于定位不同,都有各自的优势和缺点,但是三者之间又可以通过接口联合控制或者混合编程。本文分别利用ADAMS对三自由度机器人的运动学和轨迹优化方案进行研究,利用VisualC++6.0,OpenGL和从MATLAB里导出的控制模型的数据对三自由度机器人进行了视景仿真的研究。论文首先通过建立坐标系和矩阵变换,对刚体的空间表示进行了阐述,然后采用通用的D-H法则,将机器人关节角度参数化,推导出其正运动学方程和逆运动关节角,并计算出机器人手部的初始坐标。其次采用ADAMS软件,详细介绍了机器人三维建模过程,包括整体框架构建,单个构件绘图和布尔运算等,并对机器人关节点进行了参数化设计。最后从机器人轨迹规划的基本原理和方法出发,比较分析了关节空间轨迹规划和直角坐标空间轨迹规划的差别,并采用三次多项式和五次多项式对机器人进行了轨迹规划,利用ADAMS软件中内嵌的Step函数对运动轨迹进行了仿真分析。然后在WindowsXPProfessional的系统环境下,以VisuallC++6.0为开发工具,建立了三自由度机械手视景仿真系统模型,实现了仿真系统对MATLAB控制模型导出数据的读取和利用。
4AbstractAbstractBeforemanufacturingthefirstphysicalprototype,thedesignersusedcomputertechnologytobuildamechanicalsystemofdigitalmodelforanalysissimulation,whichshowedthatthesystemworksinrealconditionsofthevariouscharacteristics,soastoberevisedandOptimaldesign.ThisprocessiscalledVirtualprototypingtechnology.NowADAMSsoftwareiswidelyusedinvirtualprototypinganalysisintheworld,itisveryconvenientfortheusertousethissoftwareotdothestatics,kinematicsanddynamicsanalysisforthevirtualmachinesystem.Buttothecomplicatedrobotmechanicalsystem,itisalsoveryhardtodotheaccuratecontrolofitsmovementonlyrelyonADAMSsoftwareitself;MATLABisoneoftheoutstandingmathematicsapplicationsoftwareintegratingcalculation,graphicalvisualizationandeditingfunctionsdevelopedbytheMathworkscompany,andithasstrongabilityincomplexcalculation,beingabletocreatethecontrolmodeltodoaccuratecontroloftherobotsystem'scomplicatedmovement.OpenGL(thefullnameofOpengraphicslibraries)isa3DgraphicsApplicationProgrammingInterfaceinthebottom,nowhavingbeentheindustrystandardintheareaofgraphicsdeveloping.Youcancreatedelicateandbeautiful3DgraphicsusingOpenGL,whosevisualqualityisclosetoraytracingprogram.VisualC++6.0hasbecomepowerfulintegratedprogrammingenvironmentwithediting,compiling.Operatinganddebugging,andoccupiesanimportantpositionintheWindowsprogramming.VisualC++6.0andOpenGLhascloseinterface,usingthemwecandevelopgoodendoscopicsimulationsystem.Becauseofthedifferentdue,ADAMS,VisualC++6.0andMATLABhavetheirownrespectiveadvantagesanddisadvantages,butwecanalsodothejointcontrolormixingprogrammingthroughtheinterfacebetweenthethree.Inthispaper,theauthordoresearchtokinematicsandtrackoptimizationschemeof3-dofrobotbasedonADAMS,alsodotheVisualsimulationresearchof3-dofrobotusingthedataofthecontrolmodelderivedfromtheMATLABbasedonVisualC++6.0andOpenGL.Firstofall,throughtheestablishmentofcoordinatesandmatrixtransformation,therigidbodyofthespacethatwaselaborated,andthenusetheD-Hrule,Robotparametersofthejointweregained,equationsofmotionweregiven,andthejointsanglewereknown,initialcoordinatesofRobothandcanbecalculated.FollowedbyADAMSsoftware,weprocesseddetailsoftherobotthree-dimensionalmodelingincludingtheoverallframeworkforbuilding,mappedasinglecomponentandBooleanoperation,designedparametersfortherobotandthekeypoints.Finally,weintroducedthebasicprinciplesandmethodsofrobottrajectoryplanning,andcompareddifferencesbetweenthejointspacetrajectoryplanningandrectangularcoordinatesspacetrajectoryplanning,thecubicpolynomialandfivepolynomialoftherobottrajectoryplanningwerecarriedout,theStepfunctionwereusedonatrajectorysimulationanalysisofADAMSsoftware.TheninWindowsXPsystemenvironment,usingVisualC++6.0asdevelopmenttool,theauthorestablisha3-dofmanipulatorvisualsimulationsystem,realizingtheaccessingandusingtothedataofcontrolmodelderivedfromMATLAB.Keywords:kinematicstrajectoryplanningADAMSvirtualprototypingtechnologyVisualsimulationTexturemappi
5第一章绪论1.1工业机器人的发展现状1961年,美国的ConsolidedControlCorp和AMF公司联合制造了第一台实用的示教再现型工业机器人,迄今为止,世界上对工业机器人的研究已经经历了四十余年的历程,日本、美国、法国、德国的机器人产业已日趋成熟和完善。工业机器人由操作机(机械本体)、控制器、伺服驱动系统和检测传感装置构成,是一种仿人操作、自动控制、可重复编程、能在三维空间完成各种作业的机电一体化自动化生产设备。特别适合于多品种、变批量的柔性生产。【1】它对稳定、提高产品质量,提高生产效率改善劳动条件和产品的快速更新换代起着十分重要的作用。采用工业机器人,不仅可提高产品的质量与产量,而且对保障人身安全,改善劳动环境,减轻劳动强度,提高劳动生产率,节约原材料消耗以及降低生产成本,有着十分重要的意义。和计算机、网络技术一样,工业机器人的广泛应用正在日益改变着人类的生产和生活方式。在制造业中,尤其是在汽车产业中,工业机器人得到了广泛的应用。如在毛坯制造(冲压、压铸、锻造等)、机械加工、焊接、热处理、表面涂覆、上下料、装配、检测及仓库堆垛等作业中,机器人都一逐步取代了人工作业。如,2004年德国汽车制造业中每1万名工人中拥有工业机器人的数量为1140台。【2】在国外,工业机器人技术日趋成熟,已经成为一种标准设备被工业界广泛应用。从而,相继形成了一批具有影响力的、著名的工业机器人公司,它们包括:瑞典的ABBRobotics,日本的FANUC、Yaskawa,德国的KUKARoboter,美国的AdeptTechnology、AmericanRobot,意大利COMAU,英国的AutoTechRobotics公司,这些公司l2经成为其所在地区的支柱性产业。在我国,工业机器人的真正使用到现在已经接近20多年了,已经基本实现了试验、引进到自主开发的转变,促进了我国制造业、勘探业等行业的发展。2004年全年国产工业机器人数量(主要指在国内生产和组装的)突破1400台,产值突破8亿元人民币。进口机器人数量超过9000台,进口额达到2.6亿美元。国内各个工业机器人厂家都呈现出产销两旺的局面。截至2004年底,我国工业机器人市场已经突破30亿元人民币。【3】现阶段,我国工业机器人正逐步发展成为一种有影响力的产业。1.2虚拟样机技术简介1.2.1虚拟样机的定义和特点虚拟样机技术就是在建造第一台物理样机之前,设计师利用计算机技术建立机械系统的数字化模型,进行仿真分析并以图形方式显示该系统在真实工程条件下的各种特性,从而修改并得到最优设计方案的技术。该技术以机械系统运动学、动力学和控制理论为核心,加上成熟的三维计算机图形技术和基于图形的用户界面技术,将分散的零部件设计和分析技术集成在一起,提供一个全新研发机械产品的设计方法。它是一种计算机模型,它能够反映实际产品的特性,包括外观、空间关系以及运动学和动力学的特性。借助于
6这项技术,设计师可以在计算机上建立机械系统的模型,伴之以三维可视化处理,模拟在真实环境下系统的运动和动力特性,并根据仿真结果精化和优化系统。虚拟样机技术利用虚拟环境在可视化方面的优势以及可交互式地探索虚拟物体的功能,对产品进行几何、功能、制造等许多方面交互的建模与分析。它在CAD模型的基础上,把虚拟技术与仿真方法相结合,为产品的研发提供了一个全新的设计方法。它具有以下特点:A全新的研发模式虚拟样机技术实现了系统性的产品优化,使产品在概念设计阶段就可以迅速地分析、比较多种设计方案,确定影响性能的敏感参数,并通过可视化技术设计产品、预测产品在真实工况下的特征,从而获得最优工作性能。B研发成本低、周期短、产品质量高通过计算机技术建立产品的数字化模型,可以完成无数次物理样机无法进行的虚拟试验,不但减少了物理样机的数量,降低了成本,而且缩短了研发周期、提高了产品质量。C实现了动态联盟广泛地采用动态联盟,通过Internet共享和交流,临时缔结成的一种虚拟企业,适应了快速变化的全球市场,克服单个企业资源的局限性。1.1.1研究现状和发展趋势虚拟样机技术在一些较发达国家,如美国、德国、日本等已得到广泛的应用,应用领域从汽车制造业、工程机械、航空航天业、到医学以及工程咨询等很多方面。美国航空航天局(NASA)的喷气推进实验室(JPL)研制的火星探测器“探路号”,就是JPL工程师利用虚拟样机技术仿真研究研发的。美国波音飞机公司的波音777飞机是世界上首架以无图方式研发及制造的飞机,其设计、装配、性能评价及分析就是采用了虚拟样机技术,不但缩短了研发周期、降低了研发成本,而且确保了最终产品一次接装成功。我国从“九五”期间开始跟踪和研究虚拟样机的相关技术,主要研究集中在虚拟样机的概念、系统结构以及相关的支撑技术,应用多集中在一些高精尖领域。近年来,才尝试着将虚拟样机技术用于一般机械的开发研制。天津大学与河北工业大学采用虚拟样机技术联合开发了冲击式压实机,对其进行了仿真计算,得到各部件的运动规律曲线,验证了压实机各部件参数值的合理性。【4】虚拟样机概念正向广度和深度发展,今后的虚拟样机技术将更加强调部件、技术、知识的通用,强调便于虚拟样机柔性协同的运行管理的组织重构,强调跨领域技术的沟通支持,重点在以下几个方面进行研究:(1)基于虚拟样机的优化设计:(2)以虚拟样机为中心的并行设计设计;(3)分析和仿真工具的集成;(4)虚拟样机系统的容错性研究。
713视景仿真技术简介1.3.1视景仿真的定义和特点视景仿真又称虚拟仿真虚拟现实仿真。它是21世纪最有前景的高科技技术之一,它是计算机技术,图形图象技术,光学技术,控制技术等多种高科技的结合,是延伸人类感觉器官的一门科学,通过对现实世界或者是人类想象的虚拟世界进行三维建模并实时驱动,通过头盔显示器或者三维投影技术显示出来。视景仿真(VisualSimulation)是一种基于可计算信息的沉浸式交互环境,具体地说,就是采用以计算机技术为核心的现代高科技生成逼真的视、听、触觉一体化的特定范围的虚拟环境,用户借助必要的设备以自然的方式与虚拟环境中的对象进行交互作用、相互影响,从而产生“沉浸”于等同真实环境的感受和体验。其作为计算机技术中最为前沿的应用领域之一,它已经广泛应用于虚拟现实、模拟驾驶、场景再现、城市规划及其它应用领域。计算机仿真又称全数字仿真,是根据相似原理,利用计算机来逼真模仿研究系统中的研究对象,将研究对象进行数学描述,建模编程,并且在计算机中运行实现.作为计算机仿真的组成部分,视景仿真采用计算机图形图像技术,根据仿真的目的.构造仿真对象的三维模型并再现真实的环境,达到非常逼真的仿真效果.目前,视景仿真技术在我国已广泛应用于各种研究领域:军事演练、城市规划仿真、大型工程漫游、名胜古迹虚拟旅游、模拟训练以及交互式娱乐仿真等.视景仿真技术对作战装备的使用效果有很好的实时显示,给人以强烈的视觉上的冲击,对提高武器装备的性能、研制效率有着重:要的作用1.3.2工业机器人视景仿真系统研究的意义由于机器人价格昂贵,以及机器人的作业空间需要较大而独立的试验场地等诸多原因,不可能达到每个需要学习机器人的人都能亲自操作机器人的要求。而可视化技术的出现,使得人们能够在三维图形世界中观察机器人,并通过计算机交互式对机器人进行示教仿真。基于VC++6.0的OpenGL上的工业机器人的视景仿真系统可以提供•个真实的实验平台,在不接触实际机器人及其工作环境的情况下,通过图形技术,提供一个和机器人进行交互的虚拟环境。此系统充分利用OpenGL的实时交互性,模拟工业机器人的示教/再现过程,可以在此系统上编辑工业机器人的程序并动态模拟工业机器人的运动过程,观察工业机器人的运动结果,检验所编写工业机器人程序的正确性。进行实物实验之前,可以先在仿真系统上进行模拟仿真,观察实验的运动过程以及运动结果,避免直接在现实中操作对工业机器人及周围物体可能造成的伤害。另外,对于刚接触工业机器人的操作员来说,此系统可以提供与现实工业机器人几乎相同的操作步骤,在操作员真正操作工业机器人之前,可以增加其操作的熟练程度,增加安全系数。14本文要研究的主要内容为了简化研究,本文采用一个3自由度关节机器人,分别通过ADAMS软件的建模和仿真,结合MATLAB的运算功能,进行了机器人运动学分析和空间坐标的轨迹规划,实现运动轨迹的最优化。又在WindowsXP环境下,利用VisualC++6.0和OpenGL完
8成了基于模型的视景仿真系统的设计与实现,具体工作如下:(1)进行运动学分析。按照通用的D-H法则,通过矩阵变换,得到了机器人的正运动学方程和初始坐标,推导出机器人逆运动学的关节角度。(2)在ADAMS/View中构造机器人部件,运用约束库中的移动和旋转副对部件进行链接,添加驱动力,实现机器人的运动,完成三维建模。(3)对机器人的运行轨迹进行多项式优化,利用ADAMS/View的仿真和后处理模块,绘制小臂末端处所取点的位置、速度、加速度、角速度和角加速度曲线,结合曲线进行三次多项式和五次多项式轨迹规划的仿真分析,并进行比较分析。(4)利用VisualC++6.0和OpenGL导入并建立机械手模型,建立仿真场景,实现基于模型数据的运动仿真,并实现视角的交互式键盘控制。
9第二章机器人运动学机器人运动学指研究机器人各个连杆相对运动的空间几何关系。在实际应用中,最为感兴趣的问题是机器人手部(即末端执行器)相对于参考坐标系的空间描述。机器人可以看成为•个开环的运动链,该链是由一组杆件相连而成,其一端固定在基座上,另一端固定在机器人手部上。两个杆件之间通过关节相连,关节由驱动器驱动,使杆件之间产生相对运动,从而使机器人手部达到期望的位置和姿态。在机器人运动学的研究过程中,又可以分为两类基本问题,即机器人运动学的正问题与逆问题。其中,机器人运动学的正问题指在已知杆件几何结构参数和关节变量值的前提下,求解机器人手部相对于参考坐标系的位置与姿态的问题;机器人运动学的逆问题指根据机器人手部在笛卡尔坐标系中的位置与姿态求解机器人各关节的关节变量值的问题。【5】2.1空间点和坐标系的表示2.1.1空间点的向量表示在直角坐标系中,可以用一个3X1的位置矢量来表示空间内任意一点的位置。对于直角坐标系中任意一点p的位置可以用3X1的位置矢量P表示为(2-1)如图2-1所示,,和分别表示点P在当前坐标系中的三个坐标轴方向的分量。这里P称为位置矢量,这种表示法也可变化为如下形式:图2-1空间点的位置表示(2-2)加入一个比例因子,使得,为的齐次坐标。【10】2.1.2坐标系在固定参考坐标系中的表示当一个坐标系位于另一个坐标系中时,如图2-2所示,通常用三个互相垂直的单位向量n、o、a表示,这三个变量分别代表法线(normal)>指向(orientation)与接近(approach)向量(如图2-2所示每一个单位向量都可以由它所在参考坐标系中的三个分量表示,这样,坐标系F就可以表示为由四个向量组成的矩阵:
10(2-3)图2-2一个坐标系在另一个坐标系中的表示式(2-3)中前三个列向量取w=0,表明该坐标系三个单位向量n、o、a的方向。而第四个列向量中w=l,表示该坐标系相对于参考坐标系的位置。2.1坐标系的变换坐标系的变换包括绕固定参考坐标系的变换和绕运动参考坐标系的变换。2.1.1齐次变换空间中一个坐标系相时于固定的参考坐标系的运动称为齐次变换。齐次变换可以是平移运动,可以是旋转运动,也可以是平移与旋转的复合运动。(1)纯平移齐次变换如果一个坐标系(它可能表示的是一个物体)在空间运动中相对于固定参考坐标系的姿态不发生变化,即该坐标系的三个单位向量方向不变,只改变它的坐标原点位置,则称这种运动为平移运动。如图2-3所示,坐标系{A}沿平移向量d平移到新的位置:(2-4)其中是平移向量d相对于固定参考系三个坐标轴方向的分量。【7】图2-3坐标系的平移平移后新的坐标系原点位置向量可以表示为原来坐标系的原点位置向量与位移向量d的矢量和。若采用矩阵形式,新坐标系的矩阵表示可以通过将坐标系左乘变换矩阵。由于平移过程中方向向量保持不变,所以平移变换矩阵T可以简单地表示为:(2-5)可以看到,矩阵的前三列没有旋转运动(等同于单位矩阵),而最后一列表示平移运动,这个方程可以用符号表示如下:(2-6)即(2-7)(2)绕轴纯旋转齐次变换为了简化旋转变换的推导,假设坐标系{B}位于坐标系{A}的原点。纯旋转就是{B}坐标系在空间中运动中相对于固定参考坐标系{A}的位置不发生变化,即只改变该坐标系三个单位向量的方向而不改变其原点位置。这样坐标系{B}可以由坐标系{A}经过旋转次变换后得到,由此可以推广到其他旋转情况。设向量x,y,z为坐标系{A}的三个单位向量,空间任意一点p的位置可以用向量p表示。向量p在坐标系{A}中的表示为:(2-8)向量p在坐标系{B}中的表示为:
11(2-9)则向量在坐标系{A}中的投影分别为(2-10)(2-11)(2-12)写成齐次矩阵形式则为:(2-13)(2-14)当坐标系{B}只相对于坐标系{A}单个轴转动时称为基本变换矩阵。如坐标系{B}只绕坐标系{A}的x轴转动角度0时,基本转动变换矩阵记为Rot(x,。),由式(2-14)可以计算得:(2-15)可以用同样的方法来分析坐标系{B}绕坐标系{A}的y轴和z轴旋转的情况,结果如下:(2-16)(2-17)(3)复合齐次变换复合齐次变换是有由固定坐标系或当前运动坐标系的一系列沿轴平移和绕轴旋转变换所组成的,此时该固定坐标系在参考系中不仅原点位置发生变化,同时它的三个坐标轴单位向量的方向也发生变化。此时的变换顺序很重要,变换顺序不同,结果不同。我们假设坐标系(n,o,a)相对于参考坐标系(x,y,z)依次进行了下列四个变换:绕z轴旋转9度绕z轴平移d绕x轴平移a绕x轴旋转a度则复合齐次变换可由下式求解:(2-18)可见,齐次变换矩阵是由一组平移和旋转矩阵依次左乘获得,矩阵书写的顺序和进行变换的顺序正好相反,而且变换的顺序不能更改,否则结果会随之改变。【6】2.1.1坐标系相对于旋转坐标系的变换前面我们所讨论的所有变换都是相对于固定参考坐标系的。也就是说,所有平移和旋转都是相对于参考坐标系的轴来测量的。然而事实上,也有可能相对于运动坐标系或当前坐标系的轴的变换。例如,相对于运动坐标系(当前坐标系)的n轴而不是参考坐标系的x轴旋转0度。为了计算当前坐标系中点的坐标相对于参考坐标系的变化,我们需要右乘变换矩阵而不是左乘。由于运动坐标系中的点或刚体的位置总是相时于运动坐标系测量的,所以必须右乘来表示该点或刚体的位置矩阵。
122.1.1变换矩阵的逆在分析机器人时,如果已知坐标系{B}相对于坐标系{A}的值,为了得到{A}相对于{B}的描述,需要求这个矩阵的逆。一个直接求逆的方法就是将44齐次变换求逆。同样,我们还可以通过变换的性质求逆。下面是关于x轴简单旋转矩阵的求逆过程。旋转矩阵如下:(2-19)我们采用以下的步骤来计算旋转矩阵的逆:1)计算矩阵的行列式2)将矩阵转置3)将转置矩阵的每个元素用它的子行列式代替4)用转置后的矩阵除以行列式通过以上步骤我们得到:(2-20)关于x轴的旋转矩阵的逆与它的转置矩阵相同,即:(2-21)2.2机器人的正逆运动学对于一个已知构型的机器人,当它的连杆长度和关节角度都已知时,计算机器人手的位姿就称为正运动学。也就是说,如果已知机器人所有的关节变量,用正运动学方程就能计算任一瞬间机器人的位置和姿态。如果要将机器人的手放到一个期望的位姿,就必须知道机器人所有关节的长度和角度。由机器人手的位姿来求关节和连杆变量的过程就称为机器人的逆运动学。对于正运动学,必须推导出一组特定方程,我们只要将己知的关节和连杆变量代入方程就能计算出机器人的位姿,然后再根据这些方程求解出逆运动学方程。在空间中,要确定一个物体的几何状态需要确定其3个位移坐标(位置)和三个旋转坐标(姿态)。机器人手部的空间位置和姿态的表示可以借助一个固连在它上面的参考坐标系来表示,只要这个坐标系可以在基座的参考坐标系的空间中表示出来,那么该机器人手部相对于基座的位姿就是已知的了,可采用齐次坐标变换的方法完成这两个坐标系的坐标转化。图2-3机器人手的位置和姿态描述机器人手部的位姿如图2-3所示,可由固接在机器人手部的坐标系{B}来表示。该坐标系由其原点位置和三个单位矢量(n,o,a)唯一确定。坐标系{A}表示固连在机器人基座上的固定参考坐标系。向量P为坐标系{B}原点在坐标系{A}中的位置矢量。前面已经讨论过了一个坐标系在固定坐标系的表示故这里直接给出坐标系{B}在坐标系{A}中的位姿的表示:(2-22)
132.1.1正运动学的D-H表示法机器人建模采用的是Denavit和Hartenberg提出来的标准方法,我们简称为D-H模型,该模型可用于任何复杂的机器人构型。假设机器人由一系列的关节和连杆构成,这些关节包括滑动的和旋转的,连杆长度任意,确保在空间能构成任意想要的机器人模型。为了表示这个模型,我们需要为每个关节指定一个参考坐标系,然后再考虑从一个关节到下一个关节的变换。假设一个机器人由任意多的连杆和关节以任意形式构成。如图24所示,任意三个顺序连接的关节和连杆,每个关节都可以平移或旋转。指定第一个关节为关节n,第二个第三个关节分别为n+1和n+2,连杆n位于关节n和n+1之间,连杆n+1位于关节n+1和关节n+2之间,这些关节和连杆前后还有其他连杆和关节。图2-4关节-连杆组合的通用D-H表示法D-H表示法建模的第一步是为每个关节指定本地参考坐标系,每个关节都必须指定x轴和轴,由于D-H法不用y轴,一般不指定y轴。具体步骤如下:所有关节用轴表示,如果关节是旋转,轴位于按右手规则旋转的方向,如果关节是滑动的,轴为沿直线运动的方向。关节n处轴的下标记作n-屋对于旋转关节,绕轴的旋转(角)是关节变量,对于滑动关节,沿轴的连杆长度d是关节变量。如图24所示,通常关节不一定平行或相交,因此z轴通常是斜线,但总有一条公垂线,正交于任意两条斜线。通常在公垂线方向上定义本地参考坐标系的x轴。例如表示和之间的公垂线,的方向即沿方向。如果两个关节的轴平行,那么它们之间就有无数条公垂线,我们可以挑选与前一公垂线共线的公垂线,从而简化模型。若两相邻的关节轴相交,则不存在公垂线,我们选择垂直于两轴平面的任意直线,同样简化了模型。在图24中,角表示绕轴的旋转,表示轴上两相邻公垂线之间的距离,表示每一条公垂线的长度,角表示相邻两轴的夹角。通常只有和是变量。从一个参考坐标系变换到另一个参考坐标系(例如从-到-),可以通过以下四步标准运动实现:绕轴旋转,使得和相互平行且共面。沿轴平移距离,使得和共线。沿轴平移距离,使得的原点重合,此时两个坐标系的原点在同一位置。将轴绕旋转,使得和对准。至此,坐标系和坐标系+1完全一致,变换结束。在+1和+2坐标系间按照同样的运动顺序也可以实现坐标系间的变换。我们可以从参考坐标系开始,转换到机器人底座,再到第一个关节,依次下去直至末端执行器。每个变换矩阵(记作A)都是由上述四个矩阵依次右乘的结果:(2-23)(2-24)从机器人基座到手(末端执行器)之间的总变换可以表示为:(2-25)为了简化计算,我们为关节和连杆参数制作一个表格,每个参数可以从机器人的原理图上读出,计算时再这些参数代入A矩阵。在本文中设计的简单三自由度机器人模型参数如图2-5所示。所有链接采用旋转关节,D-H参数如表2-1所示。图2-5简单三自由度机器人(单位:英寸)
14表2-1机器人D-H参数表(逆转为正,顺转为负)连杆ida190°000°200650-90°3-30002000°4-30001500°将上述角度值代入式(2-25),运用MATLAB进行计算出机器人初始位置坐标:2.1.1逆运动学方程的求解为了让机器人处于适当的位姿,我们需要求解每个关节的角度值,这就是机器人的逆运动学。我们可以通过矩阵左乘来求解,如下:(2-26)为了求解角度,我们从开始,依次左乘上述矩阵,得到每个关节角度表达式:(2-27)因此,我们的三自由度机器人逆运动关节角度表达(2-28)24微分运动微分运动即机器人的微小运动,可以用它来推导不同部件之间的速度关系。图2-6(a)具有两自由度平面结构(b)速度图如图所示的两个自由度的简单机构,表示第一个连杆相对于参考坐标系的旋转角度,表示第二个连杆相对于第一个连杆的旋转角度。B点的速度可以计算如下:(2-29)将速度方程写成矩阵形式得到如下结果:(2-30)方程左边表示B点速度的x,y分量。B点的位置我们可以用下述方程表示:(2-31)对方程中的和微分,写成矩阵形式如下:
15(2-32)我们看到,(2-29)和(2-31)式在形式上很相像,只是前者表示的是速度关系,后者表示的是微分运动的关系。因此在机器人运动中,我们可以将关节的微分运动与速度联系起来。
16第三章基于ADAMS的机器人的虚拟样机分析3.1ADAMS概述美国MSC.Software公司在2003年3月收购了全球最大机构的仿真软件、咨询服务、系统集成供应商MDI/ADAMSoMSC.Software公司的ADAMS软件是虚拟样机领域内广泛使用的软件,可以使工程师、设计人员能够在物理样机构造前,建立机械系统的“模拟样机”,预估出机器的工作性能。ADAMS软件具有如下特点:(1)分析类型包括运动学、静力学分析以及线性和非线性动力学分析(2)具有二维和三维建模能力(3)具有50余种联结副、力和发生器组成的库和强大的函数库(4)具有组装、分析和动态显示模型的功能,包含刚体和柔体分析(5)具有与CAD、UG、Pro/E,Matlab、ANSYS等软件的专用接口(6)具有开放式结构,允许用户集成自己的子程序基于ADAMS的虚拟样机技术是在制造物理样机前,利用计算机技术建立该产品的数学模型,通过基于实体的可视化仿真分析,模拟该系统在实际工作环境中的运动学和动力学特性,并反复修改设计,从而得到最优方案。A创建模型创建机械系统模型时,首先要创建构成模型的各个零部件。零部件创建完后,需要使用运动关节约束库创建零部件之间的约束副,确定部件之间的连接情况以及仿真过程中构件之间的位置关系。最后,施加运动及各种载荷使样机按照设计要求进行仿真。B测试验证模型并细化模型创建过程中和完成后,都可以对模型进行运动仿真测试。通过对•模型的性能测试,验证设计方案的正确性,然后,在模型中增加更复杂的因素,进一步细化模型。为便于不同方案的比较,通过设计变量不同取值的迭代仿真,求出设计变量的最优值。C优化设计采用设计和优化分析的研究手段,确定各个设计变量相对于解算结果的灵敏度并最终确定目标函数的最优值。【8】3.2ADAMS中机器人模型的建立本文机械手模型参考了PUMA机器人的结构,建模过程中依照模块化的思想先绘制各个部件,然后通过布尔运算和参数的调整,完成建模。【15】
173.2.1设置建模环境打开ADAMS/View,选择创建新模型,将机械手模型命名为model_2jixieshou,其他采用系统默认值,进入建模界面。在建模界面中,首先要设定工作栅格,点击菜单Settings中的WorkingGird.如图3-1所示,根据建模需要,栅格范围设置为1000X1000(mm),大小为50X50(mm).图3-1工作栅格设置设置完工作栅格就可以开始建模。3.2.2机器人实体建模ADAMS/View中集成了很多图形模板,包括点,线,面,体各方面。我们构建的是机器人的三维立体模型,其主要部件都是刚体。ADAMS中的刚体模板包括圆柱,圆锥,长方体,球体,拉伸体,平板等。我们选择圆柱体(圆盘)作为机器人的底座,圆柱体作为机器人的腰部,拉伸体作为机器人的手臂。在建模过程中,作者一直根据模块化的原则,在建立每一个部件的过程中都同时通过布尔运算等对模块进行优化,很好的美化了模型,并且是模型更加合理。这种工作方法为最后的总装提供和很大的便利和好处,节省了很多时间,提高了工作效率,值得在其他工作中借鉴。由于建模过程主要是ADAMS软件的操作过程,如果对ADAMS比较熟悉这个过程就很简单。本文不再对建模过程做详细介绍。建立好的机械手实体模型如下图3-2所示:图3-2机械手实体模型3.2.3机器人模型的设置机器人实体模型建好以后,应对其属性进行修改。我们设计用的机器人材料为铝材,初始位移为各个点的初始位置,初始速度设置为零。选定材料后,物体的密度就自动确定了,同时系统会自动计算构件的质量。然后对关节添加相应的约束和驱动力。如果我们要模拟某些特殊的工作过程,我们还应该在相应的位置处添加力和力矩。如我们模拟提升物体的操作过程,那么我们就在小臂(PART6)的端部PART6_MARKER_6处添加一个大小为10N方向向下的力。完成这个设置后机器人的模型如下图3-3所示:图3-3机器人最终模型至此,我们已经完成了三自由度机器人的建模过程,通过软件自检功能,可以判定模型正确与否,建模完成以后就可以进行运动学仿真分析。
183.3轨迹规划仿真分析完成建模过程后,我们就可以运用软件的仿真功能对模型的运动学,静力学,动力学进行分析,本文对所建立的模型进行了运动学的理论分析,然后又结合轨迹规划进行了仿真分析。轨迹规划一般分为两种:一种是在关节空间进行规划,将关节变量表示成时间的函数,并规划它的一阶和二阶时间导数:另一种是在直角空间(笛卡尔空间)进行规划,将末端位姿、速度、加速度表示为时间的函数,而相应的关节位移、速度和加速度由末端信息导出。【12】本文分别给出了对模型进行关节空间和直角空间轨迹规划方法的理论分析,并在ADAMS/View的仿真和后处理模块中利用ADAMS内嵌的step函数对关节空间内三次多项式和五次多项式轨迹规划进行了分析比较。3.3.1轨迹规划方法的理论分析(1)关节空间内三次多项式轨迹规划假设机器人的初始位姿是已知的,通过逆运动学方程可以求得期望位姿对应的关节角。若考虑其中某一关节在运动开始时刻的角度,希望该关节在时刻运动到新的角度,使用多项式函数可以保证初始和末端的边界条件与已知条件相匹配,这些条件信息可以求解下面的三次多项式方程。(3-1)这里的初始条件和末端条件是:(3-2)对4-1式求导,得:(3-3)将4-2式分别代入4-1和4-3式得:(3-4)联立求解这四个方程就可以得到任意时刻的关节位置,控制器则据此来驱动关节。每个关节分别规划,同步运行。如果要求机器人依次通过多个点,则每一段末端求解出的速度和位置都可用作F一段的初始条件,每一段的轨迹都可采用上述的三次多项式来规划。针对本文设计的三自由度机器人,在其初始位置基础下,我们要求机器人手臂在6s后分别运动=180°,=60°,=30°。
19表4.1三次多项式规划关节角度00.00000.00000.0000113.33334.44442.2222246.666715.55567.7778390.000030.000015.00004133.333344.444422.22225166.666755.555627.77786180.000060.000030.0000将上述边界条件代入44式,解得第一个关节轨迹参数为=0,=0,=15,=-5/3轨迹方程为:;同样可得出第二个关节轨迹参数=0,=0,=5,=-5/9轨迹方程为:;第三个关节参数=0,=0,=5/2,=-5/18轨迹方程为:我们将运动过程分为5段,则每秒钟机器人运动的关节角度如表4-1所示。(2)关节空间内五次多项式轨迹规划在三次多项式规划中,我们采用的边界条件是起点和终点的位置与速度,如果同时指定起点和终点的加速度,这样边界条件就增加到6个,可以用同样的方法进行五次多项式的规划:(3-5)(3-6)(3-7)(3)关节空间内抛物线过渡的线性运动轨迹规划在关节空间轨迹规划的另一种方法就是让关节以恒定的速度在起点和终点之间运动,轨迹方程相当于一次多项式,速度为常数,加速度为零。这样意味着在起点和终点的加速度必须为无穷大,为避免这一情况,线性运动在起点和终点可以用抛物线来过渡。如图4-6,抛物线与直线过渡段在时间和处是对称的,由此得到:(3-8)图4-6抛物线过渡的线性段规划方法此时抛物线运动段的加速度为一常数,在A点和B点速度连续,将边界条件代入得:从而得出抛物线的方程为:(3-9)将零初速度,线性段常值速度以及零末端速度代入上式,得到:(3-10)从而可求出过渡时间:
20(3-11)显然,不能大于总时间的一半,否则整个过程中只有加减速而没有直线运动。终点的抛物线段与起点是时称的,只是加速度为负而已。我们依然用设计的三自由度机器人来进行规划。在其初始位置基础上,我们要求机器人手臂在6s后分别运动=180°,=60°,=30°中间匀速运动的速度分别为,,,那么过渡时间分别为:匀加速,匀速,匀减速运动方程分别如下:第一个关节角:第二个关节角:第三个关节角:则在0s到6s关节的角度分别如表4-2所示:表4-2抛物线过渡规划关节角度0000140/3632501893903015413042215500/35461806030(4)直角空间轨迹规划直角坐标空间轨迹与机器人相对于直角坐标系的运动有关,机器人末端执行器的位姿就是沿循直角坐标空间的轨迹。实际上所有的关节空间轨迹规划的方法都可用于直角坐标空间的轨迹规划。其差别在于:对于关节空间的轨迹规划,规划函数生成的值就是关节值,而直角坐标空间轨迹规划函数生成的值是机器人末端执行器的位姿,必须通过反复求解逆运动学方程来计算关节角。其过程可以综合如下:将时间增加一个增量;
21利用所选择的轨迹函数计算末端执行器的位姿;利用机器人逆运动学方程计算位姿对应的关节量;将关节信息传递给控制帮;重复以上循环过程。3.3.1轨迹规划仿真分析(1)三次多项式轨迹规划仿真分析我们在ADAMS里进行三次多项式轨迹仿真时,用的是STEP函数。[13]STEP函数利用的是三次多项式逼近海赛阶跃函数。STEP阶跃函数有连续的一阶导,但在起点处的二阶导不连续,在速度图像上表现为速度连续但加速度不连续。我们设定机器人三个部分在6s时间内分别转动180。,60°,30。,为了分析其运动特性,我们分别选取机器人小臂PART6末端的PART6_MARKER_6点的运动参数进行分析。机器人小臂末端的PART6_MARKER_6在X,Y,Z三个方向上的位移曲线如下:图4-7PART6_MARKER_6在X,Y,Z三个方向上的位移图从上图中我们看到,在三次多项式规划条件下,X,Y,Z三个方向上的点都呈现出起伏变化,与匀速驱动条件下情况不同。PART6_MARKER_6点从(248.2051,70.0962,-40.0)运动到(-303.1089,475.0,40.0)处。PART6_MARKER_6速度和加速度曲线如图4-8所示,我们可以看到,速度由Omm/s增大到297.6708mm/s,然后又逐渐下降到Omm/s,而加速度最大值达到了253.6641mm/,并且在0.012s和5.988/s处存在突变。图4-8PART6_MARKER_6速度和加速度图像PART6_MARKER_6角速度和角加速度曲线如图4-9所示,PART6_MARKER_6角速度和角加速度变化与速度变化类似,最大角速度为50.3512d/s,角加速度最大为33.4069〃,在0.012s和5.988/s处存在突变。图4-9PART6_MARKER_6角速度和角加速度图像(2)五次多项式轨迹规划仿真分析我们运用ADAMS内嵌的steP5函数对机器人关节进行五次多项式轨迹规划,step5函数是通过五次多项式逼近海塞阶跃函数。同样选取我们分别选取机器人小臂PART6末端PART6_MARKER_6点的运动参数进行分析。PART6_MARKER_6在X,Y,Z三个方向上的位移曲线如图4-16所示:图4-16PART6_MARKER_6在X,Y,Z三个方向上的位移图像从上图中我们可以看出,三次多项式和五次多项式轨迹规划相比,机器人手臂末端的始末位置不变,都是从(248.2051,70.0962,-40.0)运动到(-303.1089,475.0,40.0),中间点的位移也没太大变化。但是其速度和加速度等运动参数变化却比较大。五次多项式轨迹规划条件下PART6_MARKER_6的速度和加速度曲线如图4-17所示:
22图4-17PART6_MARKER_6的速度和加速度图像PART6_MARKER_6的角速度和角加速度曲线如图4-18所示:图4-18PART6_MARKER_6的角速度和角加速度图像从上面的图像中我们可以看到,PART6_MARKER_6的速度先增后减,加速度变化也一样。速度从开始时刻的Omm/s增大到中间时刻的370.1791mm/s再减小到终点时刻的Omm/s,加速度变化较三次多项式规划时平缓,不存在突变点。在Os时最小,为0mm/,中间时刻达到最大值396.2381mm/,然后逐渐下降到终点时的0mm/.角速度和角加速度的变化情况如下:最大角速度为62.8912d/s,最大角加速度为32.826d/,角加速度不存在明显突变。(3)轨迹规划比较分析从上面的两种轨迹仿真结果中可以看出,三次多项式轨迹规划和五次多项式轨迹规划最大的区别就在前者的加速度和角加速度在中间点存在跳变,而后者的加速度和角加速度的变化则趋于平缓。我们对两种情况下PART6_MARKER_6点的运动参数变化情况进行比较,如下表所示:表4-3PART3_MARKER_12点的运动参数比较比较项目三次多项式五次多项式最大速度mm/s297.6708370.1791最大加速度mm/253.6641396.2381加速度突变有无最大角速度d/s50.351262.8912最大角加速度d/33.406932.826角加速度突变有无之所以有这种区别,原因在于三次多项式轨迹规划中,我们的边界条件只有四个,初始位移和速度,终点的位移和速度:而在五次多项式轨迹规划中,我们的初始条件中包含了加速度,分别为初始位移、速度和加速度,终点位移、速度和加速度。因此在一般的三次多项式轨迹规划中,我们应该加入最大速度变化的限制条件,从而保证机器人的运动更平稳。
23第四章基于模型的视景仿真系统的设计与实现随着机器人研究的不断深入,机器人三维可视化技术作为机器人设计和研究中安全可靠、灵活方便的工具,越来越受到重视。机器人的三维图形仿真,就是要建立一个精确、逼真的机器人模型以及机器人工作环境。三维可视化是数学模拟和科学计算可视化技术相结合的产物,它一般包括两方面内容:一是将传统数字仿真计算的结果转换为图形和图像形式;二是仿真交互界面可视化,即具有可视化交互和动画展示能力,要求能够实时跟踪显示仿真计算结果。可视化技术的出现,使得人们能够在三维图形世界中观察机器人,并通过计算机交互式对机器人进行示教仿真。i般来说,机器人可视化仿真系统主要由三个模块组成:工业机器人的三维模型模块(实现仿真系统的基础)、示教和再现模块(实现示教和再现的功能)、离线编程模块,见图4-1。但是由于时间和知识限制,本文只研究了后两个模块的实现,对离线编程并没有采取通常的做法,根据老师的建议想将Matlab软件和VC++结合起来,用在Matlab里建立的控制模型来控制OpenGL里机械手的运动,本章按照这个思路实现了利用Matlab里建立的控制模型导出的数据来控制机械手的运动。图4-1通用机器人可视化仿真系统模块本章将通过VC++6.0和OpenGL来完成机械手的三维可视化仿真系统的设计与实现,它提供一个真实的实验平台,在不接触实际机器人及其工作环境的情况下,通过图形技术,提供一个和机械手进行交互的虚拟环境。本章主要内容为:(1)建立程序框架;(2)建立机械手三维模型;(3)建立仿真场景:(4)实现基于模型的视景仿真。4.1。廊1概述OpenGL即开放性图形库(opengraphiclibary)是美国高级图形和高性能计算机系统公司SGI所开发的三维图形标准库,具有绘制三维图形的各项功能,它是处理专用图形硬件的软件接口,支持可视化的实现,它是三维计算机图形和模型库,独立于窗口系统和操作系统。从开发人员角度看,OpenGL是一些绘图指令或函数的集合。这些指令允许用户对二维几何对象或三维几何对象进行说明,允许用户对对象实施操作以便把这些对象着色到帧存上。OpenGL可以方便地实现三维图形的交互操作。对■于OpenGL的实现者而言,OpenGL是影响硬件操作的指令集合。如果硬件仅仅包括一个可以寻址的帧存,那么OpenGL就不得不在CPU上实现对象的描绘,OPenGL可以保存数量较大的状态信息,这些状态信息可以用来指示OpenGL如何往帧存中画物体。有一些状态,用户可以直接使用,通过调用就可得到状态值;而另一些状态只有作用在所画物体上,才能使其产生的影响可见。
244.1.1OpenGL工作方式OpenGL在Windows环境卜的工作过程如图4-2所示。OpenGL的库函数被封装在OPengl犯.dll动态链接库中,从客户应用程序发布的对openGL函数的调用首先被Opengl32处理,在传给服务器后,被winsry.dll进一步进行处理,然后传给DDx(nivieeDriverinterface),最后传递给视屏驱动程序。【18】图4-2OpenGL在Windows环境下的工作过程4.1.2OpenGL绘制过程OpenGL具有较强的图形绘制能力,包括绘制物体、启动光照、管理位图、纹理映射、动画、图形增强及交互技术等功能。综合以上功能,作为图形硬件的软件接口,OpenGL主要是将三维的物体投影到一个二维平面上,之后处理得到像素,进行显示。OpenGL首先将物体转化为可以描述物体几何性质的顶点(Vertex)与描述图像的像素(Pixel),在执行一系列操作后,最终将这些数据转化成像素数据。也就是说,OpenGL是基于点的。有一组顶点定义的图元(Pirmitive)执行完绘制操作后,后继图元才能作用。简单的图形生成过程如图4-3所示。图4-3OpenGL中简单图形的绘制过程对图元的定义:图元由一组顶点定义,这一组顶点可以是一个或是多个顶点。每个顶点信息可以是二维的也可以是三维的。顶点信息可以山位置坐标、颜色值、法向量、纹理坐标组成。法线、纹理、颜色值会在处理每个顶点的过程中被使用。OpenGL将点、线段、多边形等通过在函数glBegin()和glEnd()之间一系列顶点的数据绘制出图形。对图元的操作:OpenGL用交换矩阵、光照、反走样、像素操作等方法控制图元的绘制。图元的操作处理过程结束后,只留下图元可见部分,准备进行光栅化(投影)处理。像素处理比较特殊:对像素、位图、影像直接进行像素操作,然后进行光栅化,后者是有些数据被存储在纹理中供顶点使用。光栅化过程:将图元转化为二维图像,完成每个图像点的颜色与深度的计算,生成结果为基片,即各图元的二维结果。基片操作:处理过程包括基片是否遮挡、测试、融合等,最后得到像素,存入显示帧缓冲中,完成整个绘制过程。4.2机器人三维可视化框架建立4.2.1利用MFC建立单文档应用程序框架VC++6.0能够创建多种类型的MFC应用程序,不同的应用程序具有不同的应用程序框架,VC++6.0系统的设计者创建了程序框架生成工具Appwizard,用它来建立开发各种MFC应用程序所需要的程序框架,通过APpwizard就可移动生成包含基本程序框架
25的应用程序包,这样就可以在此基础上进行程序设计。在参考许多数字处理、图像处理软件的基础上,决定采用单文档的应用程序框架。[16]创建工程:启动VC++6.0进入VC++的集成开发环境,新建一个工程,选择MFCAppwizard选项,在应用程序类型中选择singledocument(单文档)类型。设置编译环境:设置编译环境主要包括设置包含文件和设置库文件路径。加入OpenGL库:选择菜单ProjectSetting,将弹出Projectsettings对话框,在该对话框选择Link标签页,如图4-4所示。在该对话框中的Object/LibraryModule文本框中力口入opengl32.1ib、glu32.1ib>glaux.lib三个函数库文件。在头文件中加入gl/glu.h(OpenGL核心函数的头文件)和gl/glut.h(使用函数的头文件),这样就可以调用openGL软件包了。图4-4加入OpenGL库函数这样,我们就很容易的建立了一个在Windows环境下进行OpenGL编程开发的框架,按快捷键F7进行编译,按快捷键F5执行就会弹出一个窗口,包含一个主菜单、一个工具条和一个状态条等部件。如下图4-5所示:图4-5程序框架4.1.1设置OpenGL绘图环境1)创建RC在windows环境下建立OpenGL绘制窗口是通过建立设备描述衣(DC)和绘制描述表(RC)来实现的,而RC和DC是连接在一块的。因此,为了建立RC,先要建立DC。用ChoosePixelFormat。选择系统中与pfd描述的像素格式最为匹配的返回;本文现在消息响应函数OnCreate里调用InitializeOpenGL(m_pDC)函数,然后又通过后者调用SetupPixelFormat。函数来设置DC像素格式完成绘图环境的设置工作;intCMyView::OnCreate(LPCREATESTRUCTIpCreateStruct){if(CView::OnCreate(lpCreateStruct)==-1)return-1;m_pDC=newCClientDC(this);InitializeOpenGL(m_pDC);〃调用函数return0;)BOOLCMyView::InitializeOpenGL(CDC*pDC)(m_pDC=pDC;
26SetupPixelFormat。;〃设置像素格式m_hRC=::wglCreateContext(m_pDC->GetSafeHdc());::wglMakeCurrent(m_pDC->GetSafeHdc(),m_hRC);〃选择像素格式returnTRUE;)2)设置坐标变化方式每次窗口创建或改变大小的时候,都要重新设置视口大小,因此我们在OnsizeO中进行视口设置。而投影变换和视点一模型变换的初始设置也可以放在里面进行。voidCMyView::OnSize(UINTnType,intex,intcy)(CView::OnSize(nType,ex,cy);if(cy==O)//防止被零除{cy=l;}glViewport(0,0,cx,cy);//重置当前视口glMatrixMode(GL_PROJECTlON);//选择投影矩阵glLoadldentityO;//重置投影矩阵gluPerspective(45.0f,(float)cx/(float)cy,0.1f,2000.0f);〃设置透视投影矩阵glMatrixMode(GL_MODELVIEW);//选择模型观察矩阵glLoadldentityO;//重置观察模型矩阵)3)绘图显示完成上面的设置以后我们就可以利用OpenGL进行绘图了。本文为了程序的简约,先在OnDraw()里调用RenderScene。函数,然后在RenderScene。里调用所有绘图显示函数。代码如下:voidCMyView::OnDraw(CDC*pDC){CMyDoc*pDoc=GetDocument();ASSERT_VALlD(pDoc);RenderSceneO;〃调用绘图函数}4)程序结束,释放资源。调用消息响应函数OnDesgy(),在函数里完成相关资源的释放。voidCMyView::OnDestroy(){CView::OnDestroy();::wglMakeCurrent(O,O);
27::wglDeleteContext(m_hRC);if(m_hPalette)DeleteObject(m_hPalette);if(m_pDC)(deletem_pDC;}最后按照参考书上的方法设置了全屏显示按钮,可以实现全屏显示,同时可以进行屏幕工具栏的显示缩放。【16】编译运行结果如图4-6所示:图4-6设置完成的机器人三维场景框架13机械手三维模型的建立OpenGL中模型的建立一般有两种思路,一种通过一个是用3dsMax绘制出模型并将其转换成特定格式的文件,然后导入到程序中;另一个是直接用OpenGL的函数绘制出所需要的模型。导入的模型比较美观漂亮,但是实现起来技术难度比较大,而OpenGL的函数绘制出的模型则比较粗糙,但是灵活性好,实现起来也比较容易。4.3.1导入机械手模型利用openGL建立复杂物体的三维模型是一件比较麻烦和枯燥的事情,因为OPenGL并没有提供三维模型的高级命令,它也是通过基本的几何图元一点、线及多边形来建立三维立体模型的。而利用3dsMax建立复杂物体的模型则显得轻松的多。可是,用3dsMax制作的动画没有交互性,无法实时控制,而这正是OpenGL的优势所在。把这些模型转换成OpenGL程序,再对其进行控制是一种比较理想的方法。所以,如果可以把OpenGL与3dsMax结合起来实现三维仿真则可以事半功倍。但是由于时间和知识的限制,无法完成对3D模型的读取工作,所以查找了一些读取3D模型文件的代码,利用这些代码将机械手模型转换成了OpenGL程序,将模型导入进了OpenGL里。为了节约时间作者没有在3dsMax里建立机械手的模型,而是在比较熟悉的AutoCAD里建立了机械手的模型,然后通过3dsMax软件模型文件导出成接口程序可识别的*.ASE格式的文件,再通过接口程序导入进OpenGL里。导入前的在3dsMax里的模型如图4-7所示:图4-73dsMax里的机械手模型导入后的机械手模型经过坐标变换、缩放、改变颜色并加入光照照亮后如下图4-8所示:图4-8导入的机械手模型
284.3.1在OpenGL中建立机械手的模型虽然实现了模型的导入,但是只实现了整体导入,未能实现分块导入机械手的模型,所以在OpenGL只实现了整体模型的控制,很显然满足不了机械手运动的要求,所以导入的模型只能作为仿真场景的一部分做静态显示。为了继续进行后续工作,作者直接在OpenGL中通过基本的几何图元一点、线及多边形建立了机械手的三维立体模型。机械手模型主要由底座、腰部、关节、手臂这几个部分组成,由于底座、腰部和关节都是圆柱型的,所以作者先利用glu库函数(gluCylinder和gluDisk)【17】画出一个共用的圆柱,然后通过不同的缩放(glScalef)、转移(glTranslatef)>旋转(glRotatef)变换绘制出了底座,腰部和关节的模型。这里取绘制关节的函数作为例子介绍绘制过程,代码如下:voidCMyView::joint()|glPushMatrix();〃模型入栈GLUquadricObj*obj1;objl二gluNewQuadric();〃创建一个描述当前绘图模式、定位、光照模式、纹理模式和回调函数的不透明的状态变量glTranslatef(0.0,0.0,・5.0);〃向Z轴负方向即屏幕里移动5个像素的距离glPushMatrix();gk)Cylinder(objl,10.0,10.0,10.0,360.0,2);〃绘制一个顶面半径、底面半径和高度都为10的圆柱面glPopMatrix();glPushMatrix();gluDisk(obj1,0.0,10.0,360,1);//绘制一个半径为10的圆片堵住上述圆柱面的底面glPopMatrix();giPushMatrix();glTranslatef(0.0,0.0,10);〃向Z轴正方向即屏幕外移动10个距离gluDisk(objl,0.0,10.0,360,1),绘制一个半径为10的圆片堵住上述圆柱面的顶面glPopMatrix();glPopMatrixOH模型出栈)绘制手臂也很简单,手臂其实在这里同样是通过对一个立方体进行不同的然后通过不同的缩放(glScalef)>转移(glTranslatef)、旋转(glRotatef)变换来完成绘制。OpenGL里也有对应画立方体的库函数,但是由于不太清楚怎么对用库函数绘制的模型进行纹理贴图,所以选用了一种比较熟悉和简单的方式来绘制,就是通过6个面来组合成一个立方体。对每个面都可以进行不同的纹理贴图。在后面的仿真场景建立过程中同样利用这个四方体也完成了实验室房间、木质方桌、大理石长桌、凳子和储物箱的绘制。绘制立方体的代码如下:voidCMyView::shoubi(){glPushMatrix();
29glColor4f(1.Of,I.Of,I.Of,I.Of);〃定义面的颜色为白色glBegin(GL_QUADS),开始绘制//前面glTexCoord2f(0.0f,O.Of);glVertex3f(-lOO,Of,O.Of,-lOO.Of);//纹理和四边形的左下glTexCoord2f(1.0fO.Of);glVertex3f(lOO.Of,O.Of,-lOO.Of);//纹理和四边形的右下glTexCoord2f(1.0f,l.Of);glVertex3f(100.0f,lOO,Of,-lOO.Of);//纹理和四边形的右上glTexCoord2f(0.0f,l.Of);glVertex3f(-lOO.Of,lOO.Of,-lOO.Of);//纹理和四边形的左上glEnd();glBegin(GL_QUADS);//后面glTexCoord2f(1.0f,O.Of);glVertex3f(-1OO.Of,O.Of,lOO.Of);〃纹理和四边形的右下glTexCoord2f(1.0f,1.00;glVertex3f(-lOO.Of,lOO.Of,lOO.Of);//纹理和四边形的右上glTexCoord2f(0.0f,l.Of);glVertex3f(lOO,Of,lOO.Of,lOO.Of);//纹理和四边形的左上glTexCoord2f(0.0f,O.Of);glVertex3f(lOO.Of,O.Of,lOO.Of);//纹理和四边形的左下glEnd();glPopMatrix();}绘制完机械手的各个部件以后就可以通过缩放(glScalef)、转移(glTranslatef)、旋转(glRotatef)变换来完成整个机械手模型的绘制。代码如下:voidCMyView::manipulator(){glPushMatrix();glTranslatef(0.0,-80.0,-20.0);〃分别沿Y和X轴负方向移动80和20//glRotatef(0.0,1.0,0.0,0.0);glRotatef(・hand[i].rotl,0QL0,0.0);〃绕Y轴旋转-hand[i].rotl(第一个关节角第i时刻的值)glPushMatrix();glTranslatef(O.O,-15.0,0.0);glRotatef(-90,1.0,0.0,0.0);//yftX轴逆时针旋转90°glPushMatrix();glTranslatef(O.0,0.0,20.0);glColor3f(L0,0.0,0.0);〃设置为红色glScalef(1.01.0,5.0);〃沿新的Z轴方向扩大5倍joint。;//绘制腰部glPopMatrix();
30glTranslatef(0.0,0.0,-5.0);glScalef(3.O,3.O,O.5);〃沿新的丫和X轴扩大3倍,新的Z轴方向缩小0.5倍[Color3f(0.0,1.0,0.0);〃设置为绿色joint();〃绘制底座glPopMatrix();…〃同样的方法绘制关节和两个手臂,这里不再叙述}在RenderScene。里调用manipulator(),编译运行后的结果如图4-9所示:图4-9OpenGL中绘制的机械手模型44建立仿真场景场景中模型的绘制和上节机械手模型的绘制很类似,所以在这里不再做介绍,这一节主要介绍纹理贴图的实现和设置光照。4.4.1纹理贴图的实现OpenGL体系内有一块纹理内存,在有硬件加速的情况下,可能是位于显卡的VRAM里,否则会是OpenGL库管理的一块内存。在这个纹理内存里图片是以特定的内部格式保存的,有的显卡还支持压缩纹理技术,所以将纹理像素从应用程序内存传到纹理内存需要进行格式转换。这在OpenGL中是通过分别描述像素在应用程序内存和纹理内存的格式来完成的,真正转换工作OpenGL会在内部完成。定义纹理的命令是glTexImage2/lD(GL_TEX_IMAGE_2/lD,level,components,width,height,border,format,type,*pixels);OpenGL术语称应用程序内存读出像素的过程为解码(UNPACK),而向纹理内存写像素的过程为编码(PACK)。用glPixelStore*(GL」UN]PACK_*,参数值);命令设定编码[解码]格式。对于贴纹理过程我们只需关心解码过程。如今的显卡通常都有比较大的显存,其中有一部份是专门的纹理存储区,有的卡还可以将最多64M系统内存映射为纹理内存,所以我们有可能把经常要用的纹理就保留在纹理内存里以提高程序性能。OpenGL从1.2开始提供了纹理对象技术,可以把在管道内放多个纹理,每个纹理对应一个数字(名字),需要用到是把这个名字的纹理Bind为当前纹理就可以了。用glGenTextures(n,*textures)命令取得可用的纹理名字的。在3D图形中,纹理映射是广泛使用的。纹理映射也是相当复杂的过程:1、定义纹理;2、控制滤波;3、说明映射方式;4、绘制场景给出顶点的纹理坐标和几何坐标。(注意!!纹理映射只能在RGBA模式下使用,不适用于颜色索引模式)1.纹理定义voidglTexImage2D(GLenumtarget,GLintlevel,GLintcomponents,GLsizeiwidth,GLsizeiheight,GLintborder,GLenumformat,GLenumtype,constGLvoid*pixels);定义一个二维纹理映射,target是常数GL_TEXTURE_2D;level表示多级分辨率的纹理图象的级数,若只有一种分辨率,level为0;components是从1到4的整数,1:选择R;2:选择RA;3:选择RGB;4:选择RGBA;
31widthheight是纹理的尺寸。format和type描述映射格式和数据类型。它们与前面讲glDrawPixels。中GL_NEAREST_MIPMAP_NEAREST,GL_NEAREST_MIPMAP_LINEAR,GL_LINEAR_MIPMAP_NEAREST,GL_LINEAR_MIPMAP_LINEAR1.1滤波原始纹理图象是个方形图象,把它映射到奇形怪状的物体上,一般不可能图象上的一个象素对应屏幕的一个象素。因此局部放大缩小时,就要定义合适的滤波方式(以2D为例):voidglTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);voidglTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);前者是放大滤波(GL_TEXTURE_MAG_FILTER),后者是缩小滤波(GL_TEXTURE_MIN_FILTER);另外,GL_NEAREST是利用最坐标最靠近象素中心的纹理元素,这有可能使图样走型,但计算速度快;GL_LINEAR利用线形插值,效果好但计算量大。2.2重复与缩限纹理映射可以重复映射或者缩限映射,重复映射时纹理可以在自己的坐标ST方向重复。对■于重复映射:voidglTexParameterfv(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);voidglTexParameterfv(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);参数GL_REPEAT改为GL_CLAMP,则缩限,所有大于1的纹理元素值置为1。所有小于。的纹理元素值置为0,0的纹理元素值置为0。3.映射方式处理纹理本身图案颜色和物体本身颜色的关系:voidglTexEnv{if}[v](GLenumtarget,GLenumpname,TYPEparam);target必须是GL_TEXTURE_ENV;pname是GL_TEXTURE_ENV_MODE,则param可以是GL_DECALGL_MODULATE或GL_BLEND,说明纹理值与原来颜色不同的处理方式。pname是GL_TEXTURE_ENV_COLOR,则参数param是包含4个浮点数(R、G、B、A)的数组。这些值只在采用GL_BLEND纹理函数时才采用。4.纹理坐标坐标的定义:纹理图象是方形的,纹理坐标可定义成s,t,r,q坐标,仿照齐次坐标系的x,y,z,w坐标。voidglTexCoord{1234}{sifd}[v](TYPEcoords);设置当前纹理坐标,此后调用glVertex*。所产生的顶点都赋予当前的纹理坐标。5.坐标自动产生有时不需要为每个物体顶点赋予纹理坐标,可以使用voidglTexGen{if}(GLenumcoord,GLenumpname.TYPEparam);coord为:GL_SGL_TGL_R或GL_Q,指明哪个坐标自动产生pname为GL_TEXTURE_GEN_MODE时param为常数:GL_OBJECT_LINEARGL_EYE_LINEAR或GL_SPHERE_MAP,它们决定用哪个函数来产生纹理坐标pname为GL_OBJECT_PLANE或GL_EYE_PLANE,param时一个指向参数数组的指针。【16】下面就本文中纹理贴图的例子做介绍:苜先定义了一个读入位图的函数BOOLLoadBMP(TCHAR*szFileName),在位图函数中完成了纹理的定义;然后又定义了一个函数GLLoadTextures(GLuint*ptList)完成了对纹理的滤波、重复和缩限的控制,最后在场景模型的绘制中将纹理坐标赋给了模型顶点坐标。下面是本文中纹理贴图的部分代码:CLoadBMP::GLLoadTextures(GLuint*ptList){glGenTextures(18,ptList);〃生成16个纹理名字
32glBindTexture(GL_TEXTURE_2D,ptList[GRESS]);〃将纹理名字GRESS绑定到纹理目标上glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT)〃在S方向纹理重复glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);〃在T方向纹理重复glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);〃放大滤波glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);〃缩/卜滤波LoadBMP("gress.bmp");//投入位图)绘制实验室房间的代码:voidCMyView::creatskybox(){glPushMatrix();glDisable(GL_BLEND);glEnable(GL_TEXTURE_2D);启动纹理映射glBindTexture(GL_TEXTURE_2D,tList[GRASS2]);选择纹理GRASS2glColor4f(l.Of,1.Of,l.Of,1.Of);glBegin(GL_QUADS);glTexCoord2f(0.0f,O.Of);glVertex3f(-1OO.Of,-lOO.Of,-lOO.Of);//纹理和四边形的左下glTexCoord2f(1.0f,O.Of);glVertex3f(lOO,Of,-lOO.Of,-lOO.Of);//纹理和四边形的右下glTexCoord2f(1.0f,1.0D;glVertex3f(lOO.Of,lOO.Of,-100.0D;//纹理和四边形的右上glTexCoord2f(0.0f,1.0D;glVertex3f(-lOO.Of,lOO.Of,-lOO.Of);//纹理和四边形的左上glEnd();编译运行后的结果如下图4-10所示:图4-10题图后的仿真场景效果图3.4.2设置光照从图5-7可以看出,如果能使场景变的亮一些效果肯定很好,这是因为我们还没有设置光照的效果,下面我们对•场景进行光照设置。首先让我们了解一下OpenGL中光照的知识。在观察物体的表面时,人眼睛对颜色的感知取决于进入眼内视维细胞的光子的能量分布。这些光子来自于光源或发光物体,一些被表面吸收,而另一些则被反射。而且,不同表面的反射特性的差别是非常大的:对于较光滑的表面,入射光线在某个方向上将
33完全反射,在另外的方向上则完全散射。大部分表面处于全反射与散射之间。OpenGL近似地将光线分解成红、绿、蓝三种成分。光源的颜色取决于它所发出的红、绿、蓝光的和。表面的材质特征则是由这个表面在各个方向反射的红、绿、蓝光的百分比决定。虽然OpenGL的光照方程仅是一种近似算法,但与实际是十分接近的,并且可以达到很快的计算速度。在OpenGL的光照模型中,场景中的光线来自不同光源,这些光源的开关相互独立,有的从特定的方向、位置射出,还有一些在场景中散射。OpenGL的光照模型将光照分成四个独立的成分:发射光,环境光,散射光,镜面反射光。四种成分独立地计算,然后叠加到一起。发射光是最简单的,它由物体发出,并且不受任何光源的影响。背景光成分是从某个光源发出并由环境经多次散射得到的,难以确定其最初的方向,看起来好像来自于四面八方。散射光来自于一个固定方向,所以当光线垂直照射到物体表面上时要比斜照时亮一些。然而,一旦光线照到表面上就均匀地在各个方向都发生散射,因此不论观察点处在哪个位置,其亮度都是一样的。来自于特定位置与方向的任何光线都可能带有散射光成分。镜面反射光也来自于特定方向,但它几乎全部反射到对称的方向上。尽管光源发出的光是按单一频率分布的,但其中的环境光、散射光和镜面反射光分量是有区别的。对光线来说,每种颜色的数值对应于它所占光强的百分比。如果光线的R,G和B值都是1.0,这种光就是最强的白光。如果三个值都是0.5,颜色仍然是白色,但亮度只有原来的一半,所以这种光看起来是灰色的。如果R=G=1而B=0(全红和全绿,没有蓝),此时光是黄色的。OpenGL的光照模型进行了这样的近似处理:材料的颜色,是由它对红、绿、蓝光各反射百分比的检加结果决定的。为光线指定额色成分意味着光的颜色与材料的颜色是不同的。对村质来说,其R、G、B值对应着材质对这些颜色光的反射比例。所以,若某材料R=l,G=0.5,B=0,说明这种材质反射全部红光,一半的绿光,不反射蓝光。换句话说,在OpenGL中,若光线的RGB值为(LR,LG,LB),材料的RGB值为(MR.MG,MB),如果其他的反射影响可以忽略,那么最后进入人眼中光的RGB值则为(LRXMR,LGXMG,LBXMB),类似地,如果有两束光(RI,Gl,B1)和(R2,G2,B2)进入人眼,OpenGL将它们合成为(R1+R2,G1+G2,B1+B2)下面列出的是向场景中增加光照需要的步骤:为所有物体的顶点定义法线向量。这些法线决定了物体相对于光源的方位。创建、选择光源,并为光源定位。通过传递给函数glLight()以参数GL_POSITION来指定光源的位置,并通过模型视图变换得到光源的最终位置。可以使用此函数在场景中设置八个不同颜色的光源。此函数有三个参数,通过设置十个不同的参数,可以得到不同的效果,如参数为GL_AMBIENT设置光源的环境光亮度,GL_DIFFUSE对应光源的散射光亮度等。定义了期望的光源特征之后,便可以使用参数GL_LIGHTING调用函数g]Enable(),让OpenGL开始执行光照计算。创建并选择光照模型,定义全局环境光的等级、观察点的有效位置(用于光照计算)和正面和背面是否采取相同光照计算。函数glLightModel。描述了光照模型的参数。为场景中的物体定义材料属性。一种物体的材质属性决定了它如何反射光线,也山此决定了该物体表现出来的材质属性。函数glMaterial。指定用于执行光照计算的当前材料属性。此函数可以通过设置七个不同的参数,得到不同的效果。如设置材质的环境颜色、设置材质的散射颜色等。本文中设置光照的代码如下:voidCMyView::lm()(GLfloatlAmb[4];GLfloatlDif[4];GLfloatlSpe[4];GLfloatlPos[4];〃分别定义了环境光、漫反射光、镜面反射光和光的位置的参数数组GLfloatmAmb[4J;GLfloatmDif[4J;GLfloatmSpe[4];GLfloatmEmil4];GLfloatmShininess;〃分别定义了材质反射环境光、反
34射漫反射光、反射镜面反射光、辐射光和光强度的参数数组〃对各个参数数组的初始化赋值1Amb[0]=0.2f;lAmb[1]=0.2f;lAmb[2]=0.2f;lAmb[3]=O.lf;lDif[0]=0.2f;lDif[l]=0.2f;lDif[2]=0.2f;lDif[3]=l.Of;lSpe[0]=0.5f;lSpe[1]=0.5f;lSpe[2]=0.5f;lSpe[3]=1.0f;lPos[0]=0.0f;!Pos[l]=1000.0f;lPos[2]=-1000.0f;lPos[3]=0.0f;mAmb[0]=0.0f;mAmb[1]=0.0f;mAmb[2]=0.0f;mAmb[3]=1.0f;mDif[0]=0.0f;mDif[1]=0.0f;mDif[2]=0.0f;mDif[3]=1.0f;mSpe[0]=1.0f;mSpe[l]=1.0f;mSpe[2]=l.Of;mSpe[3]=1.0f;mEmi[0]=0.3f;mEmi[l]=0.3f;mEmi⑵=0.3f;mEmi[3]=1.0f;mShininess=6.80f;〃定义光照属性glLightfv(GL_LIGHTl,GL_AMBIENT,lAmb);glLightfv(GL_LIGHTl,GL_DIFFUSE,lDiD;glLightfv(GL_LIGHTl,GL_SPECULAR,lSpe);glLightfv(GL_LIGHTl,GL_POSITIONJPos);〃定义材质属性glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,mAmb);glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,mDif);glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mSpe);glMaterialfv(GL_FRONT_AND_BACK,GL_EMISSION,mEmi);设置光照后的结果如图4・11所示:图4-11设置光照后仿真场景效果图4.5基于模型的视景仿真的实现本节是实现基于模型的视景仿真系统的核心环节。系统中机械手的运动应该受到指定的控制模型的控制,控制模型的任何参数的改变都应该在视景仿真系统中得到反应。本系统的初始目标是实现控制模型对系统中机械手模型的实时控制,这需要完成Matlab和VC++的混合编程技术也就是建立一个Matlab和VC++的接口来实现Matlab中的控制模型对OpenGL中的机械手模型运动的实时控制。但是由于时间的限制,在本系统中未能实现这一技术。本文实现了通过控制模型生成的数据来控制机械手模型的运动,相比前一技术缺乏实时性控制,但是却相应的扩大了应用范围,因为本系统读入的数据没有模型的限制,可以读入任何模型导入的数据。本系统实现的技术思路是首先获取控制模型导出的数据(这个数据可以以不同的文件形式给出,本系统采用的是文本文件(TXT)
35的格式),然后将获取的数据以数组的形式存储在计算机的内存里,在机械手模型运动的时候调用这些数据。4.5.1数据的读取本系统采用的数据文件为TXT格式,文件中存储了每个时刻三个关节角的度数值,读取实现思路是先定义一个数组结构体,然后读取数据并存进数组里。代码如F:〃先定义一个结构体,存放角度值typedefstruct{floatroti;//floatrot2;//floatrot3;//}HHand;HHandhand"10];〃存储各个时刻对应三个角度的值,可以根据时间步数改变容量大小然后我们要实现读取文件对话框的建立和数据文件的读取工作:首先我们要建立读取菜单按钮:(1)选择页面ResourceView,双击Menu文件夹中的IDR_MAINFRAME工具栏显示图如图4-12所示。单击工具栏最右边的灰色图标,创建一个新的图标工具。图4-12工具栏页面选择新建的图标工具,选择菜单“查看”,在弹出的对话框中按图4-13所示进行操作。图4-13工具栏属性页面选择新建的图标工具,选择菜单“建立类向导”,在弹出的对话框中按图5-14所示进行操图4-14工具栏命令向导页面在生成的消息响应函数OnFileOpenl。添加代码完成读取文件对话框的显示和数据的读取。代码如下:voidCMyView::OnFileOpen1(){CFileDialogdlg(TRUE,_T(MtxtH),NULL,OFN_HIDEREADONLYIOFN_OVERWRITEPROMPTIOFN_ALLOWMULTISELECT,_T("(*.txt)l*.txtr));〃建立打开对话框if(dlg.DoModal()!=IDOK){return;}CComboBoxm_cFileList;m_cFileList.AddString(dlg.GetPathName());〃列表添加文件路径ShellExecute(NULL,_T("openH),_T(dlg.GetPathName()),NULL,NULL,SW_SHOW);〃显示打开的文件FILE*fp,*fw;〃定义文件指针fp=fopen(dlg.GetPathName()Jrb");〃以读的方式打开所选择的数据文件inti;
36for(i=0;i<101;i++)(//fseek(fp,OL,1);fscanf(fp,"%f',&hand[i].rotl);//i$|X的值fseek(fp,3L,l);〃向后移动4个空格fscanf(fp,"%f",&hand[i].rot2);〃读取的值fseek(fp,3L,l);//向后移动4个空格fscanf(fp,"%f",&hand[i].rot3);〃读取的值fseek(fp,2L,1);〃移到下一行开始处)fw=fopen("temp.txt","w");以写的方式打开文件,若没有则新建一个for(i=0;i<101;i++)(fprintf(fw,"%f,%f,%f
37”,hand[i].rotl,hand[i].rot2,hand[i].rot3);〃将读入数组中的数据在文件中打印出来,检测是不是正确读取的数据)fclose(fp);〃关闭文件指针}这样就将数据从文件中读入到数组中存储在计算机内存中以供下一步调用来控制机械手的运动。4.5.1利用读取的数据控制机械手的运动首先我们要建立时间定时器的消息响应函数OnTimer(),并在OnCreate。里加入SetTimer(l,20,NULL);设置时间定时器,在OnDestroyO里加如KillTimer(1);关闭时间定时器。然后我们要将实现用数组变量来控制机械手模型三个自由度的运动即腰部、大臂和小臂的转动。在前面的建模过程中我们已经将数组变量加入到控制模型变化的坐标变换当中来实现对机械手模型三个转动的控制,代码为:voidCMyView::manipulator()glRotatef(hand[i].rot1,0.0,1.0,0.0);〃实现对腰部转动的变量控制glRotatef(hand[i].rot2,0.0,0.0,L0);〃实现对大臂转动的变量控制glRotatef(hand[i].rot3-hand[i].rot2,0.0,0.0,1.0);〃实现对小臂转动的变量控制
38建立控制机械手运动的工具按钮,建立方法和菜单按钮相似,这里不再做详细介绍。定义一个布尔变量key和一个整型变量congtrolkey来控制运动的开始和停止,分别初始化为false和0。然后在工具按钮消息响应函数OnBUTTONmove()和时间消息响应函数OnTimer()里控制变量的变化来实现控制机械手的运动。代码如下:voidCMyView::OnBUTTONmove(){key=true;〃控制运动的总开关controlkey++;〃变量累加}voidCMyView::OnTimer(UINTnIDEvent)(if(i==101)(i=O;key=false;}〃如果读到数组最后•组值即机械手运动到最后则回复到初始状态,停止运动elseif(((controlkey%2)!=0)&&key){i++;}〃实现在运动过程中点击控制按钮运动停止,再点击控制按钮又开始运动的控制Invalidate(FALSE);CView::OnTimer(nIDEvent);}这样我们就实现了通过控制模型生成的数据来控制机械手模型的运动的过程。由于没有找到合适的控制模型,所以本文通过五次多项式轨迹规划改变不同的边界条件产生不同的空间运动轨迹对仿真系统进行了验证.为了简便,本文定义机械手运动都从同一初始位置开始运动,首先点击''读取机械手数据”选择文件,弹出一个对话框如图4-15所示:图4-15选择数据文件选择数据文件“shujvl.txt",点击绿色的机械手运动控制按钮,机械手按照文件中的数据开始运动,在Mallab中绘制的小臂末端的空间运动轨迹图和系统中运动仿真最后时刻效果图分别如图4-16和4-17所R<:图4-16按第一组数据运动的空间轨迹图图4-17读取“shujvl.txt”选择数据文件“shujv2.txt",空间轨迹图和仿真运动最后效果图分别如图4-18、4-19所示:图4-18按第二组数据运动的空间轨迹图
39图4-19读取"shujv2.txt”选择数据文件“shujv3.txt",空间轨迹图和仿真运动最后效果图分别如图4-20、4-21所示:图4-19按第二组数据运动的空间轨迹图图4-20读取“shujv3.txt”时比空间轨迹图和系统仿真运动的过程,系统准确的按照预定的轨迹进行了仿真,验证了系统的准确性和稳定性,从而说明系统实现了基于模型数据的运动仿真。读取的三组数据和对应的多项式附录。4.5.1实现观察视角的交互式键盘控制原理和机械手运动的键盘控制一样,将相机函数的参数设置成变量,通过键盘消息响应函数来控制各个参数的变化从而实现观察视角的键盘控制。部分代码如下:视角函数:gluLookAt(cam.x,cam.y,cam.z,0.0,0,0,upv.x,upv.y,upv.z);//(cam.x,cam.y,cam.z)为相机坐标,(0.0,0,0)为目标点坐标,(upv.x,upv.y,upv.z)控制观察的方向键盘消息响应函数代码:voidCMyView::OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags){switch(nChar)(caseVK_UP:〃方向键上键,相机右转{cam.y++;cam.x++;Invalidate(false);break;)caseVK_D0WN:〃方向键下键,相机左转(cam.y—;cam.x-;Invalidate(false);
40break;caseVK_LEFT:〃方向键左键,相机拉远(cam.z++;Invalidate(false);break;}caseVK_RIGHT:〃方向键右键,相机靠近(cam.z—;Invalidate(false);break;))CView::OnKeyDown(nChar,nRepCnt,nFlags);}改变相机位置可以得到不同的效果。拉近相机和左转相机的效果分别如图如图4-19和4-20所示:图4-19拉近相机图4-20左转相机至此我们完成了基于模型的视景仿真系统的设计与实现。
41本文以简单的三自由度机器人为研究对象,通过ADAMS虚拟样机建模,建立起运动学方程,进行工作路径的轨迹规划,对机器人进行运动学仿真和分析。主要进行了以下几个方面的工作:(1)进行了运动学分析。按照通用的D-H法则,通过矩阵变换,得到了机器人的正运动学方程和初始坐标,推导出机器人逆运动学的关节角度。(2)运用ADAMS虚拟样机软件对机器人进行建模。通过模块化设计和布尔运算,对机器人模型进行了结构优化。(3)进行了轨迹规划和仿真。通过ADAMS中内嵌的Step和Step5函数,分别进行了三次多项式和五次多项式的轨迹规划,在ADAMS的后处理程序中对规划后的曲线进行了仿真分析。(4)利用VisualC++6.0和OpenGL导入并建立了机械手模型,建立了仿真场景,实现了基于模型数据的运动仿真,并实现了视角的交互式键盘控制。通过上述工作,我们得到以下结论:(1)通过D-H法则建立的机器人正逆运动学方程是正确的,能够计算出机器人在任意角度时的坐标和任意位置的关节角度。(2)ADAMS虚拟样机软件可以进行机器人三维建模,并家打折管理系统需要满足来自三方面的需求,这三个方面分别是系统管理员、各商家管理员和消费者。系统管理员是维护整个系统,对各商家管理员、消费者、后台数据库进行管理、维护,以及对整个系统进行更改和完善;各商家管理员及时发布、更新自家的商品打折的相关信息:消费者的需求是浏览到全面的、及时的商家打折的详细信息。系统管理员主要负责设计系统,以及长期地不断更新、完善系统,管理和维护后台数据库,他们有权力批准哪个商家加入,给其一个账号,让其注册、添加、修改信息,对于不合法的商家或已经不存在的商家撤消其资格。各商家管理员根据已经申请并获得批准的账号登录到系统,发布自家的信息,并及时进行更改,尤其是打折商品的信息,还可以浏览、删除、添加、保存、打印相关信息。他们要本着诚信的原则,不能欺骗消费者,否则系统管理员会根据调查和消费者的反映,取消其资格。本系统的目的就是让消费者在第一时间,全面的、准确的浏览到详细的各个商家打折信息。消费者如果是第一次使用本系统,只需申请一个合法的账号和密码就可以登录进去,进入系统后,消费者可以添加、修改、删除自己的信息,也可以不添加,就可以免费使用本系统提供的信息。在第二次登在PowerBuilder中,窗口是应用程序与用户交互的界面,是非常重要的一类对象,用户通过窗口响应程序提供必要的数据,提示所需要完成的工作,应用程序通过窗口显示运行状态和执行结果。几乎每个PowerBuilder应用程序都要使用窗口,因此创建窗口成为开发应用程序必不可少的。窗口的创建方式有两种:普通方式和继承方式。本系统的所有窗口都是使用普通方式创建的。PowerBuilder提供了六种窗口类型,它们的表现风格和使用环境各不相同。主窗口是一种方式,是独立于其他窗口的单独窗口,能覆盖其他的窗口,同时也能被其他的窗口所覆盖。用户可用一个主窗口作为用户与应用的交互界面,通常应用打开的第一个窗口就是主窗口,除非用户指定此窗口为MDI风格。主窗口可以带有菜单,能够被最大化、最小化或改变大小[3Jo本系统的应用程序的主要功能都是在主窗口及在其下打开的众多窗口中完成的。由于本系录时则不用重新申请,只需输入已经申请的账号和密码,系统会根据已经设置的权限判断出是消费者而非管理员,让其进入相应的窗口,浏览系统提供的信息。
42在本系统的登录窗口设置里有权限设置,主要判断是管理员还是消费者,对于有些商家不想公开和保密的信息,消费者是看不到的,也是不能修改的,消费者只能修改自己的个人信息。本系统还提供打印功能,管理员或消费者可以把自己有用的信息打印出来。对其进行运动学分析,运动学分析是针对相关设计点的运动参数进行的。ADAMS软件强大的函数功能可以实现所需要的参数关联,后处理程序中的仿真功能可以实现机器人的运动学和动力学分析。(3)轨迹规划中我们可以看出三次多项式轨迹规划只能规划位移和速度,而五次多项式规划可以规划位移,速度和加速度,规划效果优于前者。这是因为五次多项式轨迹规划的边界条件中包含了加速度信息,因此我们可以推断:规划次数越高,效果越好。(4)VC++6.0和OpenGL能够很好的实现可视化视景仿真系统的开发,功能扩展性很强,能够很好的实现交互式仿真,实现对模型的实时控制。后续工作展望:(1)通过对简单的三自由度机器人运动学分析,我们可以进行复杂的机器人运动学推导,比如六自由度关节机器人的运动学分析。(2)在运动学分析后,可以进行动力学分析,通过ADAMS和MATLAB的联合仿真,对机器人关节的驱动进行控制。【14】(3)本文仅对机器人进行了三次多项式和五次多项式轨迹规划,我们还可以尝试关节坐标空间和直角坐标空间的其它轨迹规划方法。(4)由于时间关系,本文只是实现了视景仿真根据调查研究做出的需求分析,然后对系统的整个功能做出分析,并划分出具体的模块。系统开发的总体任务是实现各种信息的系统化、规范化和自动化。根据需求分析本系统需要完成的功能主要有:(1)登录窗口的设置,已经有账号和口令的用户只需正确真写这两项就可以登录,系统会根据已经设置的权限,判断是否管理员还是一般用户,然后进入不同的窗口,提供不同的信息和服务。(2)注册设置,新用户可以单击注册按钮,申请一个新的合法的账号和口令,就可以进入系统,首先是添加个人信息,包括用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email、注册日期几项,用户也可以不添加,只接进入使用本系统,在系统内,可以再进行信息的修改、添加、删除。(3)口令修改,不管是管理员还是一般用户,为了安全或根据个人喜好,对自己的口令进行修改。(4)用户信息的添加,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email、注册日期。(5)用户信息的删除,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email,注册日期。(6)用户信息的保存,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email、注册日期。(7)用户信息的检索,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、EmaiL(8)商品信息的添加,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。(9)商品信息的删除,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。(10)商品信息的修改,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。(11)商品信息的检索,商品类型号、商品类型、商品名称、商品级别、生产系统的简单建模和基于模型数据的运动仿真,模型建立很粗糙,场景材质、光照等设置不是很理想,还具有当今社会是一个信息社会,一个知识经济时代。自世界上第一台计算机ENINC(Electronicnumericalintegratorandcalculator)于1946年在美国问世到现在,计算机业飞速发展,技术淘汰指标高的惊人,价格下降以及软件应用的快速扩展引发了以信息处理计算机化为标志的“微机革命”,随之而来的是以全球信息网络普及和全球信息共享为标志的“全球信息网络革命”的蓬勃兴起。可见,世界已进入在计算机信息管理领域中激烈竞争的时代,计算机」经
43变得普通的不能再普通的工具,如同我们离不开的自行车、汽车、电脑一样。我们应该承认,谁掌握的知识多,信息量大,信息处理速度快,批量大,谁的效率就高,谁就能在各种竞争中立于不败之地。1.1管理信息系统概述管理信息系统(MIS)的概念是1961年美国人J.D.GALLAGHER首先提出来的,是一门新兴的、集管理科学、信息科学、系统科学及计算机科学为一体的综合性学科,是一个不断发展的新型学科,MIS的定义随着计算机技术和通信技术的进步也在不断更新,在现阶段普遍认为MIS是人为或计算机设备以及其他信息处理手段合成并用于管理信息的系统。MIS包括计算机、网络通信设备等硬件成分,也包括操作系统、应用软件包等软件成分,随着计算机技术和通信技术的迅速发展还会出现更多的内容。MIS的结构由信源、信宿、信息处理、信息用户和信息管理者等五个部分组成。完善的MIS具有以下四个标准:确定的信息需求、信息的可采集性与可加工性、可以通过程序为管理人员提供信息、可以对信息进行管理。管理信息系统是企业的信息系统,通过研究企业中信息管理活动的全过程,以便有效的管理信息,提供各类管理决策信息,辅助企业进行现代化管理。具体作用如下:(1)用统•标准处理和提供信息,排除使用前后矛盾的不完整的数据。(2)完整、及时地提供在管理及决策中需要的数据。(3)利用指定的数据关系式分析数据,客观预测未来。(4)向各级管理机构提供不同详细程度的报告,缩短分析和解释时间。(5)用最低的费用最短的时间提供尽可能精确、可靠的信息,以便使决策者选择最佳的实施方案,以提高企业的经济效益[1]。1.2本系统开发的目的和研究意义目前,在商务网站中,网页上用到的数据都是从后台数据库获取的。这些数据大多是根据商家提供的信息或是从其他媒体中截取,甚至是派人亲自去打听的,然后由录入员逐条分类录入。由于要处理的数据量巨大,更新速度要求频繁,尤其是打折商品的信息,时更新的要求更大,时效性强。此外,从消费者方面来说,他们从网页上浏览到的商家的打折信息由于没有系统的管理,比较零散,给他们带来了很大的不便,他们不能快速得得知最新的、全面的、真实的打折信息。基于商家和消费者的利益,我们决定开发这个用于商务网站中管理后台数据库的商家打折管理信息系统,就是将各个商家的有关打折商品的信息存到数据库中,并对其进行有效的管理、维护、处理与分析,为消费者提供及时、齐全、准确、可靠的打折信息,同时极大保证商家的利润。1.3本文的主要工作本文的主要工作有:第一,对系统作详细的分析,包括系统的需求分析、功能分析和数据库需求分析。第二,对系统进行详细的设计,包括系统体系结构设计、系统功能模块设计、数据库设计;其中功能模块设计主要完成了对系统管理模块、用户安全管理模块和商品信息管理模块的设计。第三,实现系统,完成了相应的数据库连接和应用程序编写,生成可执行文件,并对系统进行维护。2商家打折管理信息系统的系统分析
44所谓系统分析,就是指在整个系统开发工程中,解决“做什么”的问题,把要解决哪些问题,满足用户哪些具体的信息需求调查分析清楚,从逻辑上或说从信息处理的功能需求上提出系统的方案,即逻辑模型,为下一阶段进行物理方案设计,解决怎么办提供依据。它是信息开发系统中的一个重要阶段,是建立系统模型的第一步。其核心是目标分析与需求分析,最后提出系统的逻辑方案⑵。2.1系统需求分析商家打折管理系统需要满足来自三方面的需求,这三个方面分别是系统管理员、各商家管理员和消费者。系统管理员是维护整个系统,对各商家管理员、消费者、后台数据库进行管理、维护,以及对整个系统进行更改和完善;各商家管理员及时发布、更新自家的商品打折的相关信息;消费者的需求是浏览到全面的、及时的商家打折的详细信息。系统管理员主要负责设计系统,以及长期地不断更新、完善系统,管理和维护后台数据库,他们有权力批准哪个商家加入,给其一个账号,让其注册、添加、修改信息,对于不合法的商家或已经不存在的商家撤消其资格。各商家管理员根据一经申请并获得批准的账号登录到系统,发布自家的信息,并及时进行更改,尤其是打折商品的信息,还可以浏览、删除、添加、保存、打印相关信息。他们要本着诚信的原则,不能欺骗消费者,否则系统管理员会根据调查和消费者的反映,取消其资格。本系统的目的就是让消费者在第一时间,全面的、准确的浏览到详细的各个商家打折信息。消费者如果是第一次使用本系统,只需申请一个合法的账号和密码就可以登录进去,进入系统后,消费者可以添加、修改、删除自己的信息,也可以不添加,就可以免费使用本系统提供的信息。在第二次登录时则不用重新申请,只需输入已经申请的账号和密码,系统会根据已经设置的权限判断出是消费者而非管理员,让其进入相应的窗口,浏览系统提供的信息。在本系统的登录窗口设置里有权限设置,主要判断是管理员还是消费者,对于有些商家不想公开和保密的信息,消费者是看不到的,也是不能修改的,消费者只能修改自己的个人信息。本系统还提供打印功能,管理员或消费者可以把自己有用的信息打印出来。2.2系统功能分析根据调查研究做出的需求分析,然后对系统的整个功能做出分析,并划分出具体的模块。系统开发的总体任务是实现各种信息的系统化、规范化和自动化。根据需求分析本系统需要完成的功能主要有:(1)登录窗口的设置,已经有账号和口令的用户只需正确真写这两项就可以登录,系统会根据已经设置的权限,判断是否管理员还是一般用户,然后进入不同的窗口,提供不同的信息和服务。(2)注册设置,新用户可以单击注册按钮,申请一个新的合法的账号和口令,就可以进入系统,首先是添加个人信息,包括用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email、注册日期几项,用户也可以不添加,只接进入使用本系统,在系统内,可以再进行信息的修改、添加、删除。(3)口令修改,不管是管理员还是一般用户,为了安全或根据个人喜好,对自己的口令进行修改。(4)用户信息的添加,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系用话、Email、注册日期。(5)用户信息的删除,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email,注册日期。(6)用户信息的保存,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系用话、Emaik注册日期。(7)用户信息的检索,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、EmaiL(8)商品信息的添加,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。(9)商品信息的删除,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。
45(10)商品信息的修改,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。(11)商品信息的检索,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。2.1数据库需求分析在仔细调查分析有关网上购物信息和商家打折管理信息折和用户需求的基础上,得出用户的需求具体体现在各商家及其各种商品尤其是打折商品的信息的查询、浏览和保存;管理员的需求具体体现在各商家及其商品尤其是打折商品信息的提供、保存、更新和查询。因此要求数据库结构能充分满足各种信息的输入和输出。收集基本数据、数据结构以及数据处理的流程,组成•份详尽的数据字典。据此,我们得到如图2.1所示的本系统处理的数据流程图。否是图2.1商家打折信息管理系统数据流程图针对对商家打折信息管理系统的需求,通过系统工作过程的内容和数据流程分析,设计出如下所述的数据项和数据结构:(1)用户安全管理信息,包括的数据项有:用户账号、用户口令、用户姓名、用户级别、用户性别、工作单位、家庭住址、联系电话、Email、注册日期等。(2)商品管理信息,包括的数据项有:商品类型号、商品类型、商品名称、商品级别、生产地址、生产日期、出销商场、商场出销数量等。
463商家打折管理信息系统的系统设计3.1系统体系结构设计系统设计是为实现需求目标而对软件的系统结构进行的总体设计。系统结构是系统的高层次结构形式。系统结构设计需要在时间和空间之间、硬件和软件之间、简单化和一般化之间、效率和可维护性之间做出权衡,其策略取决于具体的应用目标。本系统的模块划分如下:(1)用户安全管理模块:不管是系统管理员、各商家管理员,还是消费者,都统称为用户。木模块主要是维护各用户的信息安全。(2)商品信息管理模块:各商家管理员输入其出销商品的信息供消费者浏览;系统管理员可监督其准确性,是否欺骗消费者;消费者主要是浏览商家的商品,按需购买。3.2系统功能模块设计对系统的各项功能进行集中、分块,按照结构化程序设计的要求,可得到如图3.1所示的系统功能模块图。图3.1系统功能模块图3.2.1建立应用程序主窗口在PowerBuilder中,窗口是应用程序与用户交互的界面,是非常重要的一类对象,用户通过窗口响应程序提供必要的数据,提示所需要完成的工作,应用程序通过窗口显示运行状态和执行结果。几乎每个PowerBuilder应用程序都要使用窗口,因此创建窗口成为开发应用程序必不可少的。窗口的创建方式有两种:普通方式和继承方式。本系统的所有窗口都是使用普通方式创建的。PowerBuilder提供了六种窗口类型,它们的表现风格和使用环境各不相同。主窗口是一种方式,是独立于其他窗口的单独窗口,能覆盖其他的窗口,同时也能被其他的窗口所覆盖。用户可用一个主窗口作为用户与应用的交互界面,通常应用打开的第一个窗口就是主窗口,除非用户指定此窗口为MDI风格。主窗口可以带有菜单,能够被最大化、最小化或改变大小[3]。本系统的应用程序的主要功能都是在主窗口及在其下打开的众多窗口中完成的。由于本系统有不同的用户,包括不同的管理员和消费者使用,他们的需求不同,为方便使用,建立了两个主窗口,针对两种管理员的主窗口是w_main,针对消费者的主窗口是w_main1,主:窗口w_main的设置如下图所示:图3.2主窗口w_main主窗口w_main1的设置如下图所示:图3.3主窗口w_mainl3.2.2菜单设计菜单和窗口一样是图形用户界面的一个基本要素。菜单与窗口结合在一起,既增加了程序的功能,又方便了用户的操作。除了
47简单情况外,绝大多数应用程序都使用菜单,它己经成为商业化程序的标准界面元素。菜单能够有效地把程序功能组织起来,在有限的屏幕空间中分组展示应用程序的功能。[4]菜单由一系列菜单项构成,用户通过菜单项发出命令,指示程序完成期待的任务。除了子窗口和响应窗口外,其他类型的窗口都可以拥有菜单。PowerBuilder中,菜单也是一种对象,在应用设计过程中,随时都可以创建和修改菜单。所以在本系统中设计并使用了菜单。根据需求,在本系统中设计了两个菜单,分别是m_manage、m_user,其主要功能是分别连接到两个主窗口中,在打开主窗口后,可以根据需要完成相应的操作。为了美观,也为了快捷操作,可以为每个菜单添加与其功能相近的图标,直接点击图标也可在主窗口打开相应菜单。3.1.1系统管理模块的设计系统管理模块主要的功能有:实现用户登录,用户重新登录,修改口令,退出系统。主要有登录窗口、重新登录窗口、口令修改窗口、退出按钮。(1)登录窗口的设计用户要使用系统,首先要登录。要进入本系统需要申请一个合法的账号,不管是管理员还是消费者。对于第一次使用本系统的商家管理员,系统管理员会给其一个账号和权限,让其进入管理员窗口,然后可以修改他们的相关信息,但权限是不能修改的,已经是不可变的了,除非这个商家退出系统,不再加入使用本系统。对于第一次使用本系统的和消费者,也要进行注册,申请一个合法的账号,输入合法的口令,申请成功后,系统会让其先填写个人信息,点击保存,将其保存在数据里,然后再进入系统,否则系统不会保存个人信息,在下次登录时当今社会是•个信息社会,一个知识经济时代。自世界上第一台计算机ENINC(Electronicnumericalintegratorandcalculator)于1946年在美国问世到现在,计算机业飞速发展,技术淘汰指标高的惊人,价格下降以及软件应用的快速扩展引发了以信息处理计算机化为标志的“微机革命”,随之而来的是以全球信息网络普及和全球信息共享为标志的“全球信息网络革命”的蓬勃兴起。可见,世界已进入在计算机信息管理领域中激烈竞争的时代,计算机已经变得普通的不能再普通的工具,如同我们离不开的自行车、汽车、电脑一样。我们应该承认,谁掌握的知识多,信息量大,信息处理速度快,批量大,谁的效率就高,谁就能在各种竞争中立于不败之地。1.1管理信息系统概述管理信息系统(MIS)的概念是1961年美国人J.D.GALLAGHER首先提出来的,是一门新兴的、集管理科学、信息科学、系统科学及计算机科学为一体的综合性学科,是一个不断发展的新型学科,MIS的定义随着计算机技术和通信技术的进步也在不断更新,在现阶段普遍认为MIS是人为或计算机设备以及其他信息处理手段合成并用于管理信息的系统。MIS包括计算机、网络通信设备等硬件成分,也包括操作系统、应用软件包等软件成分,随着计算机技术和通信技术的迅速发展还会出现更多的内容。MIS的结构由信源、信宿、信息处理、信息用户和信息管理者等五个部分组成。完善的MIS具有以下四个标准:确定的信息需求、信息的可采集性与可加工性、可以通过程序为管理人员提供信息、可以对信息进行管理。管理信息系统是企业的信息系统,通过研究企业中信息管理活动的全过程,以便有效的管理信息,提供各类管理决策信息,辅助企业进行现代化管理。具体作用如下:(1)用统一标准处理和提供信息,排除使用前后矛盾的不完整的数据。(2)完整、及时地提供在管理及决策中需要的数据。(3)利用指定的数据关系式分析数据,客观预测未来。
48(4)向各级管理机构提供不同详细程度的报告,缩短分析和解释时间。(5)用最低的费用最短的时间提供尽可能精确、可靠的信息,以便使决策者选择最佳的实施方案,以提高企业的经济效益[1]。1.1本系统开发的目的和研究意义目前,在商务网站中,网页上用到的数据都是从后台数据库获取的。这些数据大多是根据商家提供的信息或是从其他媒体中截取,甚至是派人亲自去打听的,然后由录入员逐条分类录入。由于要处理的数据量巨大,更新速度要求频繁,尤其是打折商品的信息,时更新的要求更大,时效性强。此外,从消费者方面来说,他们从网页上浏览到的商家的打折信息由于没有系统的管理,比较零散,给他们带来了很大的不便,他们不能快速得得知最新的、全面的、真实的打折信息。基于商家和消费者的利益,我们决定开发这个用于商务网站中管理后台数据库的商家打折管理信息系统,就是将各个商家的有关打折商品的信息存到数据库中,并对其进行有效的管理、维护、处理与分析,为消费者提供及时、齐全、准确、可靠的打折信息,同时极大保证商家的利润。1.2本文的主要工作本文的主要工作有:第一,对系统作详细的分析,包括系统的需求分析、功能分析和数据库需求分析。第二,对系统进行详细的设计,包括系统体系结构设计、系统功能模块设计、数据库设计:其中功能模块设计主耍完成了对系统管理模块、用户安全管理模块和商品信息管理模块的设计。第三,实现系统,完成了相应的数据库连接和应用程序编写,生成可执行文件,并对系统进行维护。2商家打折管理信息系统的系统分析所谓系统分析,就是指在整个系统开发工程中,解决“做什么”的问题,把要解决哪些问题,满足用户哪些具体的信息需求调查分析清楚,从逻辑上或说从信息处理的功能需求上提出系统的方案,即逻辑模型,为下一阶段进行物理方案设计,解决怎么办提供依据。它是信息开发系统中的一个重要阶段,是建立系统模型的第一步。其核心是目标分析与需求分析,最后提出系统的逻辑方案⑵。2.1系统需求分析商家打折管理系统需要满足来自三方面的需求,这三个方面分别是系统管理员、各商家管理员和消费者。系统管理员是维护整个系统,对各商家管理员、消费者、后台数据库进行管理、维护,以及对整个系统进行更改和完善;各商家管理员及时发布、更新自家的商品打折的相关信息;消费者的需求是浏览到全面的、及时的商家打折的详细信息。系统管理员主要负责设计系统,以及长期地不断更新、完善系统,管理和维护后台数据库,他们有权力批准哪个商家加入,给其一个账号,让其注册、添加、修改信息,对于不合法的商家或已经不存在的商家撤消其资格。各商家管理员根据已经申请并获得批准的账号登录到系统,发布自家的信息,并及时进行更改,尤其是打折商品的信息,还可以浏览、删除、添加、保存、打印相关信息。他们要本着诚信的原则,不能欺骗消费者,否则系统管理员会根据调查和消费者的反映,取消其资格。本系统的目的就是让消费者在第一时间,全面的、准确的浏览到详细的各个商家打折信息。消费者如果是第一次使用本系统,只需申请一个合法的账号和密码就可以登录进去,进入系统后,消费者可以添加、修改、删除自己的信息,也可以不添加,就可以免费使用本系统提供的信息。在第二次登录时则不用重新申请,只需输入已经申请的账号和密码,系统会根据一经设置的权限判
49断出是消费者而非管理员,让其进入相应的窗口,浏览系统提供的信息。在本系统的登录窗口设置里有权限设置,主要判断是管理员还是消费者,对于有些商家不想公开和保密的信息,消费者是看不到的,也是不能修改的,消费者只能修改自己的个人信息。本系统还提供打印功能,管理员或消费者可以把自己有用的信息打印出来。2.1系统功能分析根据调查研究做出的需求分析,然后对系统的整个功能做出分析,并划分出具体的模块。系统开发的总体任务是实现各种信息的系统化、规范化和自动化。根据需求分析本系统需要完成的功能主要有:(1)登录窗口的设置,已经有账号和口令的用户只需正确真写这两项就可以登录,系统会根据已经设置的权限,判断是否管理员还是一般用户,然后进入不同的窗口,提供不同的信息和服务。(2)注册设置,新用户可以单击注册按钮,申请一个新的合法的账号和口令,就可以进入系统,首先是添加个人信息,包括用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email、注册日期几项,用户也可以不添加,只接进入使用本系统,在系统内,可以再进行信息的修改、添加、删除。(3)口令修改,不管是管理员还是一般用户,为了安全或根据个人喜好,对自己的口令进行修改。(4)用户信息的添加,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email、注册日期。(5)用户信息的删除,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email,注册日期。(6)用户信息的保存,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email、注册日期。(7)用户信息的检索,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、EmaiL(8)商品信息的添加,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。(9)商品信息的删除,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。(10)商品信息的修改,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。(11)商品信息的检索,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。2.3数据库需求分析在仔细调查分析有关网上购物信息和商家打折管理信息折和用户需求的基础上,得出用户的需求具体体现在各商家及其各种商品尤其是打折商品的信息的查询、浏览和保存;管理员的需求具体体现在各商家及其商品尤其是打折商品信息的提供、保存、更新和查询。因此要求数据库结构能充分满足各种信息的输入和输出。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典。据此,我们得到如图2.1所示的本系统处理的数据流程图。
50图2.1商家打折信息管理系统数据流程图针对对商家打折信息管理系统的需求,通过系统工作过程的内容和数据流程分析,设计出如下所述的数据项和数据结构:(1)用户安全管理信息,包括的数据项有:用户账号、用户口令、用户姓名、用户级别、用户性别、工作单位、家庭住址、联系电话、Email、注册日期等。(2)商品管理信息,包括的数据项有:商品类型号、商品类型、商品名称、商品级别、生产地址、生产日期、出销商场、商场出销数量等。3商家打折管理信息系统的系统设计3.1系统体系结构设计系统设计是为实现需求目标而对软件的系统结构进行的总体设计。系统结构是系统的高层次结构形式。系统结构设计需要在时间和空间之间、硬件和软件之间、简单化和一般化之间、效率和可维护性之间做出权衡,其策略取决于具体的应用目标。本系统的模块划分如下:(1)用户安全管理模块:不管是系统管理员、各商家管理员,还是消费者,都统称为用户。本模块主要是维护各用户的信息安全。(2)商品信息管理模块:各商家管理员输入其出销商品的信息供消费者浏览;系统管理员可监督其准确性,是否欺骗消费者:消费者主要是浏览商家的商品,按需购买。3.2系统功能模块设计对系统的各项功能进行集中、分块,按照结构化程序设计的要求,可得到如图3.1所示的系统功能模块图。图3.1系统功能模块图3.2.1建立应用程序主窗口
51在PowerBuilder中,窗口是应用程序与用户交互的界面,是非常重要的一类对象,用户通过窗口响应程序提供必要的数据,提示所需要完成的工作,应用程序通过窗口显示运行状态和执行结果。几乎每个PowerBuilder应用程序都要使用窗口,因此创建窗口成为开发应用程序必不可少的。窗口的创建方式有两种:普通方式和继承方式。本系统的所有窗口都是使用普通方式创建的。PowerBuilder提供了六种窗口类型,它们的表现风格和使用环境各不相同。主窗口是一种方式,是独立于其他窗口的单独窗口,能覆盖其他的窗口,同时也能被其他的窗口所覆盖。用户可用一个主窗口作为用户与应用的交互界面,通常应用打开的第一个窗口就是主窗口,除非用户指定此窗口为MDI风格。主窗口可以带有菜单,能够被最大化、最小化或改变大小[3]o本系统的应用程序的主要功能都是在主窗口及在其下打开的众多窗口中完成的。由于本系统有不同的用户,包括不同的管理员和消费者使用,他们的需求不同,为方便使用,建立了两个主窗口,针对两种管理员的主窗口是w_main,针对消费者的主窗口是w_main1o主窗口w_main的设置如下图所示:图3.2主窗口w_main主窗口w_mainl的设置如下图所示:图3.3主窗口w_main13.1.1菜单设计菜单和窗口一样是图形用户界面的一个基本要素。菜单与窗口结合在一起,既增加了程序的功能,又方便了用户的操作。除了简单情况外,绝大多数应用程序都使用菜单,它已经成为商业化程序的标准界面元素。菜单能够有效地把程序功能组织起来,在有限的屏幕空间中分组展示应用程序的功能。[4]菜单由一系列菜单项构成,用户通过菜单项发出命令,指示程序完成期待的任务。除了子窗口和响应窗口外,其他类型的窗口都可以拥有菜单。PowerBuilder菜单也是一种对象,在应用设计过程中,随时都可以创建和修改菜单。所以在本系统中设计并使用了菜单。根据需求,在本系统中设计了两个菜单,分别是m_manage、m_user,其主要功能是分别连接到两个主窗口中,在打开主窗口后,可以根据需要完成相应的操作。为了美观,也为了快捷操作,可以为每个菜单添加与其功能相近的图标,直接点击图标也可在主窗口打开相应菜单。3.1.2系统管理模块的设计系统管理模块主要的功能有:实现用户登录,用户重新登录,修改口令,退出系统。主要有登录窗口、重新登录窗口、口令修改窗口、退出按钮。(1)登录窗口的设计用户要使用系统,首先要登录。要进入本系统需要申请一个合法的账号,不管是管理员还是消费者。对于第一次使用本系统的商家管理员,系统管理员会给其一个账号和权限,让其进入管理员窗口,然后可以修改他们的相关信息,但权限是不能修改的,已经是不可变的了,除非这个商家退出系统,不再加入使用本系统。对于第一次使用本系统的和消费者,也要进行注册,申请一个合法的账号,输入合法的口令,申请成功后,系统会让其先填写个人信息,点击保存,将其保存在数据里,然后再进入系统,否则系统不会保存个人信息,在下次登录时还得申请账号。对于填写的信息,可以在系统内进入修改。对于已经有账号和口令的用
52户,只需耍填写正确的账号和口令,系统会在内部根据权限判断是管理员还是消费者,分别让其进入管理员窗口和消费者使用窗□o当今社会是,个信息社会,一个知识经济时代。自世界上第一台计算机ENINC(Electronicnumericalintegratorandcalculator)于1946年在美国问世到现在,计算机业飞速发展,技术淘汰指标高的惊人,价格下降以及软件应用的快速扩展引发了以信息处理计算机化为标志的“微机革命”,随之而来的是以全球信息网络普及和全球信息共享为标志的“全球信息网络革命”的蓬勃兴起。可见,世界已进入在计算机信息管理领域中激烈竞争的时代,计算机已经变得普通的不能再普通的工具,如同我们离不开的自行车、汽车、电脑一样。我们应该承认,谁掌握的知识多,信息量大,信息处理速度快,批量大,谁的效率就高,谁就能在各种竞争中立于不败之地。1.1管理信息系统概述管理信息系统(M1S)的概念是1961年美国人J.D.GALLAGHER首先提出来的,是一门新兴的、集管理科学、信息科学、系统科学及计算机科学为一体的综合性学科,是一个不断发展的新型学科,MIS的定义随着计算机技术和通信技术的进步也在不断更新,在现阶段普遍认为MIS是人为或计算机设备以及其他信息处理手段合成并用于管理信息的系统。MIS包括计算机、网络通信设备等硬件成分,也包括操作系统、应用软件包等软件成分,随着计算机技术和通信技术的迅速发展还会出现更多的内容。MIS的结构由信源、信宿、信息处理、信息用户和信息管理者等五个部分组成。完善的MIS具有以下四个标准:确定的信息需求、信息的可采集性与可加工性、可以通过程序为管理人员提供信息、可以对信息进行管理。管理信息系统是企业的信息系统,通过研究企业中信息管理活动的全过程,以便有效的管理信息,提供各类管理决策信息,辅助企业进行现代化管理。具体作用如下:(1)用统一标准处理和提供信息,排除使用前后矛盾的不完整的数据。(2)完整、及时地提供在管理及决策中需要的数据。(3)利用指定的数据关系式分析数据,客观预测未来。(4)向各级管理机构提供不同详细程度的报告,缩短分析和解释时间。(5)用最低的费用最短的时间提供尽可能精确、可靠的信息,以便使决策者选择最佳的实施方案,以提高企业的经济效益口]。1.2本系统开发的目的和研究意义目前,在商务网站中,网页上用到的数据都是从后台数据库获取的。这些数据大多是根据商家提供的信息或是从其他媒体中截取,甚至是派人亲自去打听的,然后由录入员逐条分类录入。由于要处理的数据量巨大,更新速度要求频繁,尤其是打折商品的信息,对更新的要求更大,时效性强。此外,从消费者方面来说,他们从网页上浏览到的商家的打折信息由于没有系统的管理,比较零散,给他们带来了很大的不便,他们不能快速得得知最新的、全面的、真实的打折信息。基于商家和消费者的利益,我们决定开发这个用于商务网站中管理后台数据库的商家打折管理信息系统,就是将各个商家的有关打折商品的信息存到数据库中,并对其进行有效的管理、维护、处理与分析,为消费者提供及时、齐全、准确、可靠的打折信息,同时极大保证商家的利润。1.3本文的主要工作本文的主要工作有:第一,对系统作详细的分析,包括系统的需求分析、功能分析和数据库需求分析。第二,对系统进行详细的设计,包括系统体系结构设计、系统功能模块设计、数据库设计;其中功能模块设计主要完成了对系统管理模块、用户安全管理模块和商品信息管理模块的设计。
53第三,实现系统,完成了相应的数据库连接和应用程序编写,生成可执行文件,并对系统进行维护。2商家打折管理信息系统的系统分析所谓系统分析,就是指在整个系统开发工程中,解决“做什么”的问题,把要解决哪些问题,满足用户哪些具体的信息需求调查分析清楚,从逻辑上或说从信息处理的功能需求上提出系统的方案,即逻辑模型,为下一阶段进行物理方案设计,解决怎么办提供依据。它是信息开发系统中的一个重要阶段,是建立系统模型的第一步。其核心是目标分析与需求分析,最后提出系统的逻辑方案⑵。2.1系统需求分析商家打折管理系统需要满足来自三方面的需求,这三个方面分别是系统管理员、各商家管理员和消费者。系统管理员是维护整个系统,对各商家管理员、消费者、后台数据库进行管理、维护,以及对整个系统进行更改和完善;各商家管理员及时发布、更新自家的商品打折的相关信息;消费者的需求是浏览到全面的、及时的商家打折的详细信息。系统管理员主要负责设计系统,以及长期地不断更新、完善系统,管理和维护后台数据库,他们有权力批准哪个商家加入,给其一个账号,让其注册、添加、修改信息,对于不合法的商家或已经不存在的商家撤消其资格。各商家管理员根据已经申请并获得批准的账号登录到系统,发布自家的信息,并及时进行更改,尤其是打折商品的信息,还可以浏览、删除、添加、保存、打印相关信息。他们要本着诚信的原则,不能欺骗消费者,否则系统管理员会根据调查和消费者的反映,取消其资格。本系统的目的就是让消费者在第一时间,全面的、准确的浏览到详细的各个商家打折信息。消费者如果是第一次使用本系统,只需申请一个合法的账号和密码就可以登录进去,进入系统后,消费者可以添加、修改、删除自己的信息,也可以不添加,就可以免费使用本系统提供的信息。在第二次登录时则不用重新申请,只需输入已经申请的账号和密码,系统会根据已经设置的权限判断出是消费者而非管理员,让其进入相应的窗口,浏览系统提供的信息。在本系统的登录窗口设置里有权限设置,主要判断是管理员还是消费者,对于有些商家不想公开和保密的信息,消费者是看不到的,也是不能修改的,消费者只能修改自己的个人信息。本系统还提供打印功能,管理员或消费者可以把自己有用的信息打印出来。2.2系统功能分析根据调查研究做出的需求分析,然后对系统的整个功能做出分析,并划分出具体的模块。系统开发的总体任务是实现各种信息的系统化、规范化和自动化。根据需求分析本系统需要完成的功能主要有:(1)登录窗口的设置,已经有账号和口令的用户只需正确真写这两项就可以登录,系统会根据已经设置的权限,判断是否管理员还是一般用户,然后进入不同的窗口,提供不同的信息和服务。(2)注册设置,新用户可以单击注册按钮,申请一个新的合法的账号和口令,就可以进入系统,首先是添加个人信息,包括用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email、注册日期几项,用户也可以不添加,只接进入使用本系统,在系统内,可以再进行信息的修改、添加、删除。(3)口令修改,不管是管理员还是一般用户,为了安全或根据个人喜好,对自己的口令进行修改。(4)用户信息的添加,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email,注册日期。
54(5)用户信息的删除,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email,注册日期。(6)用户信息的保存,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、Email、注册日期。(7)用户信息的检索,用户账号、用户口令、姓名、性别、工作单位、家庭住址、联系电话、EmaiL(8)商品信息的添加,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。(9)商品信息的删除,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。(10)商品信息的修改,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。(11)商品信息的检索,商品类型号、商品类型、商品名称、商品级别、生产地址、出销商场、生产日期、现有数量。2.1数据库需求分析在仔细调查分析有关网上购物信息和商家打折管理信息折和用户需求的基础上,得出用户的需求具体体现在各商家及其各种商品尤其是打折商品的信息的查询、浏览和保存;管理员的需求具体体现在各商家及其商品尤其是打折商品信息的提供、保存、更新和查询。因此要求数据库结构能充分满足各种信息的输入和输出。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典。据此,我们得到如图2.1所示的本系统处理的数据流程图。否是图2.1商家打折信息管理系统数据流程图
55针对对商家打折信息管理系统的需求,通过系统工作过程的内容和数据流程分析,设计出如下所述的数据项和数据结构:(1)用户安全管理信息,包括的数据项有:用户账号、用户口令、用户姓名、用户级别、用户性别、工作单位、家庭住址、联系电话、Email、注册日期等。(2)商品管理信息,包括的数据项有:商品类型号、商品类型、商品名称、商品级别、生产地址、生产日期、出销商场、商场出销数量等。3商家打折管理信息系统的系统设计3.1系统体系结构设计系统设计是为实现需求目标而对软件的系统结构进行的总体设计。系统结构是系统的高层次结构形式。系统结构设计需要在时间和空间之间、硬件和软件之间、简单化和一般化之间、效率和可维护性之间做出权衡,其策略取决于具体的应用目标。本系统的模块划分如下:(1)用户安全管理模块:不管是系统管理员、各商家管理员,还是消费者,都统称为用户。本模块主要是维护各用户的信息安全。(2)商品信息管理模块:各商家管理员输入其出销商品的信息供消费者浏览;系统管理员可监督其准确性,是否欺骗消费者;消费者主要是浏览商家的商品,按需购买。3.2系统功能模块设计对系统的各项功能进行集中、分块,按照结构化程序设计的要求,可得到如图3.1所示的系统功能模块图。图3」系统功能模块图3.2.1建立应用程序主窗口在PowerBuilder中,窗口是应用程序与用户交互的界面,是非常重要的一类对象,用户通过窗口响应程序提供必要的数据,提示所需要完成的工作,应用程序通过窗口显示运行状态和执行结果。几乎每个PowerBuilder应用程序都要使用窗口,因此创建窗口成为开发应用程序必不可少的。窗口的创建方式有两种:普通方式和继承方式。本系统的所有窗口都是使用普通方式创建的。PowerBuilder提供了六种窗口类型,它们的表现风格和使用环境各不相同。主窗口是一种方式,是独立于其他窗口的单独窗口,能覆盖其他的窗口,同时也能被其他的窗口所覆盖。用户可用一个主窗口作为用户与应用的交互界面,通常应用打开的第一个窗口就是主窗口,除非用户指定此窗口为MDI风格。主窗口可以带有菜单,能够被最大化、最小化或改变大小[3].本系统的应用程序的主要功能都是在主窗口及在其下打开的众多窗口中完成的。由于本系统有不同的用户,包括不同的管理员和消费者使用,他们的需求不同,为方便使用,建立了两个主窗口,针对两种管理员的主窗口是w_main,针对消费者的主窗口是w_main1。主窗口w_main的设置如下图所示:图3.2主窗口w_main
56主窗口w_mainl的设置如卜图所小:图3.3主窗口w_mainl3.1.1菜单设计菜单和窗口一样是图形用户界面的一个基本要素。菜单与窗口结合在一起,既增加了程序的功能,又方便了用户的操作。除了简单情况外,绝大多数应用程序都使用菜单,它已经成为商业化程序的标准界面元素。菜单能够有效地把程序功能组织起来,在有限的屏幕空间中分组展示应用程序的功能。[4]菜单由一系列菜单项构成,用户通过菜单项发出命令,指示程序完成期待的任务。除了子窗口和响应窗口外,其他类型的窗口都可以拥有菜单。PowerBuilder中,菜单也是一种对象,在应用设计过程中,随时都可以创建和修改菜单。所以在本系统中设计并使用了菜单。根据需求,在本系统中设计了两个菜单,分别是mjnanage、m_user,其主要功能是分别连接到两个主窗口中,在打开主窗口后,可以根据需要完成相应的操作。为了美观,也为了快捷操作,可以为每个菜单添加与其功能相近的图标,直接点击图标也可在主窗口打开相应菜单。3.1.2系统管理模块的设计系统管理模块主要的功能有:实现用户登录,用户重新登录,修改口令,退出系统。主要有登录窗口、重新登录窗口、口令修改窗口、退出按钮。(1)登录窗口的设计用户要使用系统,首先要登录。要进入本系统需要申请一个合法的账号,不管是管理员还是消费者。对于第一次使用本系统的商家管理员,系统管理员会给其一个账号和权限,让其进入管理员窗口,然后可以修改他们的相关信息,但权限是不能修改的,已经是不可变的了,除非这个商家退出系统,不再加入使用本系统。对于第一次使用本系统的和消费者,也要进行注册,申请一个合法的账号,输入合法的口令,申请成功后,系统会让其先填写个人信息,点击保存,将其保存在数据里,然后再进入系统,否则系统不会保存个人信息,在下次登录时还得申请账号。对于填写的信息,可以在系统内进入修改。对于已经有账号和口令的用户,只需要填写正确的账号和口令,系统会在内部根据权限判断是管理员还是消费者,分别让其进入管理员窗口和消费者使用窗口。因此,在登录窗口要有输入账号和口令的文本框,也有登录和注册两个按钮。具体设因此,在登录窗口要有输入账号和口令的文本框,也有登录和注册两个按钮。具体设还得申请账号。对于填写的信息,可以在系统内进入修改。对于已经有账号和口令的用户,只需要填写正确的账号和口令,系统会在内部根据权限判断是管理员还是消费者,分别让其进入管理员窗口和消费者使用窗口。因此,在登录窗口要有输入账号和口令的文本框,也有登录和注册两个按钮。具体设很大的改进空间,比如还可以通过Matlab和VC++混合编程实现控制模型对机械手模型的实时控制等。
57致谢本论文是在唐猛老师和熊鹰老师的精心指导下完成的,二位老师不仅在论文内容上给了我诸多指导,更重要的是他们教会了我一种研究问题的方法,那就是从总体上着手,在细微处落笔。他们清晰的研究思路,严谨的治学态度,言传身教,让我受益匪浅。在此,特向唐老师和熊老师表示真挚的感谢!
此文档下载收益归作者所有