当前位置:首页 >> 文学 >>

毕业论文


西 南 交 通 大 学 本科毕业设计(论文)

ADAMS 环境下工业机器人运动控制 和联合仿真 Motion Control And Co-simulation Of Industrial Robot iN ADAMS Environment

年 级: 学 号: 姓 名: 专 业: 指导老师:

2005 级 20051035 ***** 机械设计制造及其自动化 @@@@@

2009 年

6



西南交通大学本科毕业设计(论文)

第I页

院 系 年 级 题 目 指导教师 评 语

机械工程学院 专 业 机械设计制造及其自动化 2005 姓 名 ADAMS 环境下工业机器人运动控制和联合仿真

指导教师 评 阅 人 评 语

(签章)

评 阅 人

(签章)



绩 (签章)

答辩委员会主任





西南交通大学本科毕业设计(论文)

第 II 页

毕业设计(论文)任务书
班 级 机械 05-7 班 学 生 姓 名 学 完成日期: 号 20051035 月 日

发题日期: 题 目

2009 年 3 月 20 日

2009 年

ADAMS 环境下工业机器人运动控制和联合仿真

1、本论文的目的、意义 在制造系统中,工业机器人扮演着重要的角色,从加工、制造、装配,配送等 过程环节,工业机器人因其自身的灵活性应用越来越广泛,它已经成为当代工业自 动化三大领域之一,它的水平高低和应用程度反应出了一个国家工业水平的高低。 本项目通过对工业机器人运动学、系统模型建立与仿真,研究工业机器人在使用中 的运动学分析以及基本的控制方法,并通过 ADAMS 实现对工业机器人实际运动的研 究和仿真,将控制响应过程通过 OpenGL 环境实现视景仿真。 2、学生应完成的任务 1)源程序及相应的文档,实现如下功能:工业机器人运动学模型建立与仿真, 动力学模型建立与仿真,通过 Matlab 控制模型输出的数据实现视景仿真等。 2)翻译课题相关外文资料。 3)毕业论文说明书。 3、论文各部分内容及时间分配: (共 第一部分 第二部分 第三部分 第四部分 第五部分 评阅及答辩 12 周) (1-2 周) (3-4 周) (5-8 周) (9 周) (10-11 周) (12 周)

实习调研、收集资料 方案选择、总体设计、软件熟悉 系统建模、编程 联合仿真、测试及文档的编写 编写毕业论文说明书

指导教师: 审 批 人:

年 年

月 月

日 日

西南交通大学本科毕业设计(论文)

第 III 页





虚拟样机技术就是在建造第一台物理样机之前,设计师利用计算机技术建立 机械系统的数字化模型,进行仿真分析并以图形方式显示该系统在真实工程条件下 的各种特性,从而修改并得到最优设计方案的技术。 ADAMS软件是目前国际上应用最为广泛的虚拟样机分析软件,用户可以运用 该软件非常方便地对虚拟机械系统进行静力学、运动学和动力学分析。但针对复杂 的机器人机械系统,要想准确的控制其运动,仅依靠ADAMS软件自身也很难做到; MATLAB软是Mathworks公司开发的一种集计算、图形可视化和编辑功能于一体 的优秀数学应用软件,具有强大的计算能力,能够建立复杂的控制模型准确控制复 杂机器人系统的运动;OpenGL(开放式图形库全称)是SGI公司开发的底层三维 图形API,目前在图形开发领域已成为工业标准。使用OpenGL可以创建视觉质量 接近射线跟踪程序的精致漂亮的3D图形。 Visual C++ 6.0已经成为集编辑、 编译。 运行、调试为一体的功能强大的集成编程环境,在Windows编程中占有重要地位。 OpenGL和Visual C++ 6.0有紧密接口,利用二者可以开发出优秀的视镜仿真系 统。 ADAMS、 MATLAB和Visual C++ 6.0由于定位不同, 都有各自的优势和缺点, 但是三者之间又可以通过接口联合控制或者混合编程。本文分别利用ADAMS对三 自由度机器人的运动学和轨迹优化方案进行研究,利用Visual C++ 6.0、OpenGL 和从MATLAB里导出的控制模型的数据对三自由度机器人进行了视景仿真的研究。 论文首先通过建立坐标系和矩阵变换,对刚体的空间表示进行了阐述,然后采用 通用的 D-H 法则, 将机器人关节角度参数化,推导出其正运动学方程和逆运动关节 角,并计算出机器人手部的初始坐标。其次采用 ADAMS 软件,详细介绍了机器人 三维建模过程,包括整体框架构建,单个构件绘图和布尔运算等,并对机器人关节 点进行了参数化设计。最后从机器人轨迹规划的基本原理和方法出发,比较分析了 关节空间轨迹规划和直角坐标空间轨迹规划的差别,并采用三次多项式和五次多项 式对机器人进行了轨迹规划, 利用 ADAMS 软件中内嵌的 Step 函数对运动轨迹进行 了仿真分析。然后在 Windows XP Professional 的系统环境下,以 Visuall C++6.0 为开发工具,建立了三自由度机械手视景仿真系统模型,实现了仿真系统对 MATLAB 控制模型导出数据的读取和利用。 关键词:运动学 轨迹规划 ADAMS 虚拟样机技术 视景仿真 纹理映射

西南交通大学本科毕业设计(论文)

第 IV 页

Abstract
Before manufacturing the first physical prototype, the designers used computer technology to build a mechanical system of digital model for analysis simulation, which showed that the system works in real conditions of the various characteristics, so as to be revised and Optimal design. This process is called Virtual prototyping technology. Now ADAMS software is widely used in virtual prototyping analysis in the world, it is very convenient for the user to use this software ot do the statics, kinematics and dynamics analysis for the virtual machine system.But to the complicated robot mechanical system,it is also very hard to do the accurate control of its movement only rely on ADAMS software itself ;MATLAB is one of the outstanding mathematics application software integrating calculation, graphical visualization and editing functions developed by the Mathworks company , and it has strong ability in complex calculation, being able to create the control model to do accurate control of the robot system's complicated movement . OpenGL(the full name of Open graphics libraries) is a 3D graphics Application Programming Interface in the bottom,now having been the industry standard in the area of graphics developing.You can create delicate and beautiful 3D graphics using OpenGL,whose visual quality is close to ray tracing program . Visual C + + 6.0 has become powerful integrated programming environment with editing, compiling. Operating and debugging, and occupies an important position in the Windows programming. Visual C + + 6.0 and OpenGL has close interface, using them we can develop good endoscopic simulation system. Because of the different due , ADAMS, Visual C + + 6.0 and MATLAB have their own respective advantages and disadvantages, but we can also do the joint control or mixing programming through the interface between the three.In this paper, the author do research tokinematics and track optimization scheme of 3-dof robot based on ADAMS , also do the Visual simulation research of 3-dof robot using the data of the control model derived from the MATLAB based on Visual C + + 6.0 and OpenGL. First of all, through the establishment of coordinates and matrix transformation, the rigid body of the space that was elaborated, and then use the D-H rule, Robot parameters of the joint were gained, equations of motion were given, and the joints angle were known , initial coordinates of Robot hand can be calculated. Followed by ADAMS software, we processed details of the robot three-dimensional modeling, including the

西南交通大学本科毕业设计(论文)

第V页

overall framework for building, mapped a single component and Boolean operation, designed parameters for the robot and the key points. Finally, we introduced the basic principles and methods of robot trajectory planning, and compared differences between the joint space trajectory planning and rectangular coordinates space trajectory planning. the cubic polynomial and five polynomial of the robot trajectory planning were carried out, the Step function were used on a trajectory simulation analysis of ADAMS software.Then in Windows XP system environment, using Visual C + + 6.0 as development tool, the author establish a 3-dof manipulator visual simulation system, realizing the accessing and using to the data of control model derived from MATLAB .

Key words: kinematics Visual simulation

trajectory planning ADAMS virtual prototyping technology

Texture mapping

西南交通大学本科毕业设计(论文) 目 录

第 VI 页

第一章 绪论 ............................................................ 1 1.1 工业机器人的发展现状 ............................................ 1 1.2 虚拟样机技术简介 ............................................... 1 1.2.1 虚拟样机的定义和特点 ...................................... 2 1.2.2 研究现状和发展趋势 ........................................ 2 1.4 本文要研究的主要内容 ........................................... 4 第二章 机器人运动学 .................................................... 5 2.1 空间点和坐标系的表示 ........................................... 5 2.1.1 空间点的向量表示 .......................................... 5 2.1.2 坐标系在固定参考坐标系中的表示 ............................ 6 2.2 坐标系的变换 .................................................. 6 2.2.1 齐次变换 .................................................. 6 2.2.2 坐标系相对于旋转坐标系的变换 ............................. 10 2.2.3 变换矩阵的逆 ............................................. 10 2.3 机器人的正逆运动学 ............................................ 11 2.3.1 正运动学的 D-H 表示法 ..................................... 12 2.3.2 逆运动学方程的求解 ....................................... 15 2.4 微分运动 ...................................................... 16 第三章 基于 ADAMS 的机器人的虚拟样机分析 ............................... 18 3.1 ADAMS 概述 ..................................................... 18 3.2 ADAMS 中机器人模型的建立 ....................................... 18 3.2.1 设置建模环境 ............................................. 19 3.2.2 机器人实体建模 ........................................... 19 3.2.3 机器人模型的设置 ......................................... 20 3.3 轨迹规划仿真分析 .............................................. 21 3.3.1 3.3.2 轨迹规划方法的理论分析 .................................. 21 轨迹规划仿真分析 ........................................ 27

第四章 基于模型的视景仿真系统的设计与实现 ............................. 32

西南交通大学本科毕业设计(论文)

第 VII 页

4.1 OpenGL 概述 .................................................... 33 4.1.1 4.1.2 4.2 OpenGL 工作方式 ......................................... 33 OpenGL 绘制过程 ......................................... 34

机器人三维可视化框架建立 ..................................... 35 4.2.1 4.2.2 利用 MFC 建立单文档应用程序框架 .......................... 35 设置 OpenGL 绘图环境 ..................................... 37

4.3

机械手三维模型的建立 ......................................... 40 4.3.1 4.3.2 导入机械手模型 .......................................... 40 在 OpenGL 中建立机械手的模型 ............................. 41

4.4

建立仿真场景 ................................................. 44 5.4.1 4.4.2 纹理贴图的实现 .......................................... 45 设置光照 ................................................ 48

4.5

基于模型的视景仿真的实现 ..................................... 51 4.5.1 4.5.2 4.5.3 数据的读取 .............................................. 52 利用读取的数据控制机械手的运动 .......................... 55 实现观察视角的交互式键盘控制 ............................ 60

结论 .................................................................. 63 致谢 .................................................................. 65 附录 .................................................................. 66 参考文献 .............................................................. 73 实习报告 .............................................................. 74

西南交通大学本科毕业设计(论文)

第1页

第一章 绪论
1.1 工业机器人的发展现状
1961 年,美国的 Consolided Control Corp 和 AMF 公司联合制造了第一台实用 的示教再现型工业机器人,迄今为止,世界上对工业机器人的研究已经经历了四十 余年的历程,日本、美国、法国、德国的机器人产业已日趋成熟和完善。工业机器 人由操作机(机械本体) 、控制器、伺服驱动系统和检测传感装置构成,是一种仿 人操作、自动控制、可重复编程、能在三维空间完成各种作业的机电一体化自动化 生产设备。特别适合于多品种、变批量的柔性生产。 它对稳定、提高产品质量,
【1】

提高生产效率改善劳动条件和产品的快速更新换代起着十分重要的作用。 采用工业机器人,不仅可提高产品的质量与产量,而且对保障人身安全,改善 劳动环境,减轻劳动强度,提高劳动生产率,节约原材料消耗以及降低生产成本, 有着十分重要的意义。和计算机、网络技术一样,工业机器人的广泛应用正在日益 改变着人类的生产和生活方式。在制造业中,尤其是在汽车产业中,工业机器人得 到了广泛的应用。如在毛坯制造(冲压、压铸、锻造等)、机械加工、焊接、热处理、 表面涂覆、上下料、装配、检测及仓库堆垛等作业中,机器人都已逐步取代了人工 作业。 2004 年德国汽车制造业中每 1 万名工人中拥有工业机器人的数量为 1140 如, 台。
【2】

在国外, 工业机器人技术日趋成熟, 已经成为一种标准设备被工业界广泛应用。 从而,相继形成了一批具有影响力的、著名的工业机器人公司,它们包括:瑞典的 ABB Robotics,日本的 FANUC、Yaskawa,德国的 KUKA Roboter,美国的 Adept Technology、American Robot、意大利 COMAU,英国的 AutoTech Robotics 公司, 这些公司已经成为其所在地区的支柱性产业。 在我国,工业机器人的真正使用到现在已经接近 20 多年了,已经基本实现了 试验、引进到自主开发的转变,促进了我国制造业、勘探业等行业的发展。2004 年 全年国产工业机器人数量(主要指在国内生产和组装的)突破 1400 台,产值突破 8 亿元人民币。进口机器人数量超过 9000 台,进口额达到 2.6 亿美元。国内各个工 业机器人厂家都呈现出产销两旺的局面。截至 2004 年底,我国工业机器人市场已 经突破 30 亿元人民币。 现阶段, 我国工业机器人正逐步发展成为一种有影响力的
【3】

产业。

1.2 虚拟样机技术简介

西南交通大学本科毕业设计(论文)

第2页

1.2.1 虚拟样机的定义和特点
虚拟样机技术就是在建造第一台物理样机之前,设计师利用计算机技术建立机 械系统的数字化模型,进行仿真分析并以图形方式显示该系统在真实工程条件下的 各种特性,从而修改并得到最优设计方案的技术。该技术以机械系统运动学、动力 学和控制理论为核心,加上成熟的三维计算机图形技术和基于图形的用户界面技术, 将分散的零部件设计和分析技术集成在一起,提供一个全新研发机械产品的设计方 法。它是一种计算机模型,它能够反映实际产品的特性,包括外观、空间关系以及运 动学和动力学的特性。借助于这项技术,设计师可以在计算机上建立机械系统的模 型,伴之以三维可视化处理,模拟在真实环境下系统的运动和动力特性,并根据仿真 结果精化和优化系统。虚拟样机技术利用虚拟环境在可视化方面的优势以及可交互 式地探索虚拟物体的功能,对产品进行几何、功能、制造等许多方面交互的建模与 分析。它在 CAD 模型的基础上,把虚拟技术与仿真方法相结合,为产品的研发提供了 一个全新的设计方法。它具有以下特点: A 全新的研发模式 虚拟样机技术实现了系统性的产品优化,使产品在概念设计阶段就可以迅速地 分析、比较多种设计方案,确定影响性能的敏感参数,并通过可视化技术设计产品、 预测产品在真实工况下的特征,从而获得最优工作性能。 B 研发成本低、周期短、产品质量高 通过计算机技术建立产品的数字化模型,可以完成无数次物理样机无法进行的 虚拟试验,不但减少了物理样机的数量,降低了成本,而且缩短了研发周期、提高了 产品质量。 C 实现了动态联盟 广泛地采用动态联盟, 通过 Internet 共享和交流,临时缔结成的一种虚拟企 业,适应了快速变化的全球市场,克服单个企业资源的局限性。

1.2.2 研究现状和发展趋势
虚拟样机技术在一些较发达国家,如美国、德国、日本等已得到广泛的应用,应 用领域从汽车制造业、工程机械、航空航天业、到医学以及工程咨询等很多方面。 美国航空航天局(NASA)的喷气推进实验室(JPL)研制的火星探测器“探路号” , 就是 JPL 工程师利用虚拟样机技术仿真研究研发的。美国波音飞机公司的波音 777 飞机是世界上首架以无图方式研发及制造的飞机,其设计、装配、性能评价及分析 就是采用了虚拟样机技术,不但缩短了研发周期、降低了研发成本,而且确保了最终 产品一次接装成功。 我国从“九五”期间开始跟踪和研究虚拟样机的相关技术,主要研究集中在虚

西南交通大学本科毕业设计(论文)

第3页

拟样机的概念、系统结构以及相关的支撑技术,应用多集中在一些高精尖领域。近 年来,才尝试着将虚拟样机技术用于一般机械的开发研制。天津大学与河北工业大 学采用虚拟样机技术联合开发了冲击式压实机,对其进行了仿真计算,得到各部件 的运动规律曲线,验证了压实机各部件参数值的合理性。
【4】

虚拟样机概念正向广度和深度发展,今后的虚拟样机技术将更加强调部件、技 术、知识的重用,强调便于虚拟样机柔性协同的运行管理的组织重构,强调跨领域技 术的沟通支持,重点在以下几个方面进行研究: (1)基于虚拟样机的优化设计; (2)以虚拟样机为中心的并行设计设计; (3)分析和仿真工具的集成; (4)虚拟样机系统的容错性研究。

1.3 视景仿真技术简介
1.3.1 视景仿真的定义和特点
视景仿真又称虚拟仿真虚拟现实仿真。它是 21 世纪最有前景的高科技技术之 一,它是计算机技术,图形图象技术,光学技术,控制技术等多种高科技的结合, 是延伸人类感觉器官的一门科学,通过对现实世界或者是人类想象的虚拟世界进行 三维建模并实时驱动,通过头盔显示器或者三维投影技术显示出来。 视景仿真(Visual Simulation)是一种基于可计算信息的沉浸式交互环境,具 体地说,就是采用以计算机技术为核心的现代高科技生成逼真的视、听、触觉一体 化的特定范围的虚拟环境,用户借助必要的设备以自然的方式与虚拟环境中的对象 进行交互作 用、相互影响,从而产生“沉浸”于等同真实环境的感受和体验。其 作为计算机技术中最为前沿的应用领域之一,它已经广泛应用于虚拟现实、模拟驾 驶、场景再现、城市规划及其它应用领域。计算机仿真又称全数字仿真,是根据相 似原理, 利用计算机来逼真模仿研究系统中的研究对象, 将研究对象进行数学描述, 建模编程,并且在计算机中运行实现.作为计算机仿真的组成部分,视景仿真采用 计算机图形图像技术,根据仿真的目的.构造仿真对象的三维模型并再现真实的环 境,达到非常逼真的仿真效果.目前,视景仿真技术在我国已广泛应用于各种研究 领域:军事演练、城市规划仿真、大型工程漫游、名胜古迹虚拟旅游、模拟训练以 及交互式娱乐仿真等.视景仿真技术对作战装备的使用效果有很好的实时显示,给 人以强烈的视觉上的冲击,对提高武器装备的性能、研制效率有着重要的作用

1.3.2 工业机器人视景仿真系统研究的意义

西南交通大学本科毕业设计(论文)

第4页

由于机器人价格昂贵,以及机器人的作业空间需要较大而独立的试验场地等诸 多原因,不可能达到每个需要学习机器人的人都能亲自操作机器人的要求。而可视 化技术的出现,使得人们能够在三维图形世界中观察机器人,并通过计算机交互式 对机器人进行示教仿真。基于 VC++6.0 的 OpenGL 上的工业机器人的视景仿真系统 可以提供一个真实的实验平台,在不接触实际机器人及其工作环境的情况下,通过 图形技术,提供一个和机器人进行交互的虚拟环境。此系统充分利用 OpenGL 的实 时交互性,模拟工业机器人的示教/再现过程,可以在此系统上编辑工业机器人的 程序并动态模拟工业机器人的运动过程,观察工业机器人的运动结果,检验所编写 工业机器人程序的正确性。 进行实物实验之前, 可以先在仿真系统上进行模拟仿真, 观察实验的运动过程以及运动结果,避免直接在现实中操作对工业机器人及周围物 体可能造成的伤害。另外,对于刚接触工业机器人的操作员来说,此系统可以提供 与现实工业机器人几乎相同的操作步骤,在操作员真正操作工业机器人之前,可以 增加其操作的熟练程度,增加安全系数。

1.4 本文要研究的主要内容
为了简化研究,本文采用一个 3 自由度关节机器人,分别通过 ADAMS 软件的建 模和仿真,结合 MATLAB 的运算功能,进行了机器人运动学分析和空间坐标的轨迹 规划,实现运动轨迹的最优化。又在 Windows XP 环境下,利用 Visual C++6.0 和 OpenGL 完成了基于模型的视景仿真系统的设计与实现,具体工作如下: (1)进行运动学分析。按照通用的 D-H 法则,通过矩阵变换,得到了机器人 的正运动学方程和初始坐标,推导出机器人逆运动学的关节角度。 (2)在 ADAMS/View 中构造机器人部件,运用约束库中的移动和旋转副对部件 进行链接,添加驱动力,实现机器人的运动,完成三维建模。 (3)对机器人的运行轨迹进行多项式优化,利用 ADAMS/View 的仿真和后处理 模块,绘制小臂末端处所取点的位置、速度、加速度、角速度和角加速度曲线,结 合曲线进行三次多项式和五次多项式轨迹规划的仿真分析,并进行比较分析。 (4)利用 Visual C++6.0 和 OpenGL 导入并建立机械手模型,建立仿真场景, 实现基于模型数据的运动仿真,并实现视角的交互式键盘控制。

西南交通大学本科毕业设计(论文)

第5页

第二章 机器人运动学
机器人运动学指研究机器人各个连杆相对运动的空间几何关系。在实际应用 中,最为感兴趣的问题是机器人手部(即末端执行器)相对于参考坐标系的空间描 述。机器人可以看成为一个开环的运动链,该链是由一组杆件相连而成,其一端固 定在基座上,另一端固定在机器人手部上。两个杆件之间通过关节相连,关节由驱 动器驱动,使杆件之间产生相对运动,从而使机器人手部达到期望的位置和姿态。 在机器人运动学的研究过程中,又可以分为两类基本问题,即机器人运动学的 正问题与逆问题。其中,机器人运动学的正问题指在已知杆件几何结构参数和关节 变量值的前提下,求解机器人手部相对于参考坐标系的位置与姿态的问题;机器人 运动学的逆问题指根据机器人手部在笛卡尔坐标系中的位置与姿态求解机器人各 关节的关节变量值的问题。
【5】

2.1 空间点和坐标系的表示
2.1.1 空间点的向量表示
在直角坐标系中,可以用一个 3×1 的位置矢量来表示空间内任意一点的位置。 对于直角坐标系中任意一点 p 的位置可以用 3×1 的位置矢量 P 表示为

?px ? ? ? P ? ?py ? ? ? ? pz ?

(2-1)

如图 2-1 所示, px , py 和 pz 分别 表示点 P 在当前坐标系中的三个坐标轴 方向的分量。这里 P 称为位置矢量,这 种表示法也可变化为如下形式: 图 2-1 空间点的位置表示

p? ? ? p x? ?
加入一个比例因子 w ,使得
【 次坐标。10】

p y?

pz?

? w ?

T

(2-2) , p ? 为 p 的齐

px ?

p? ? px p? ,p y ? y ,pz ? z w w w

西南交通大学本科毕业设计(论文)

第6页

2.1.2 坐标系在固定参考坐标系中的表示
当一个坐标系位于另一个坐标系中时,如图 2-2 所示,通常用三个互相垂直的 单位向量 n、o、a 表示,这三个变量分别代表法线(normal) 、指向(orientation) 与接近(approach)向量(如图 2-2 所示) 。每一个单位向量都可以由它所在参考 坐标系中的三个分量表示,这样,坐标系 F 就可以表示为由四个向量组成的矩阵:

?n x ? n F =? y ? ? nz ?0 ?

ox oy oz
0

ax ay az
0

px ?
? pz ? 1 ? ?

py ?

?
(2-3)

图 2-2 一个坐标系在另一个坐标系中的表示

式(2-3)中前三个列向量取 w=0,表明该坐标系三个单位向量 n、o、a 的方向。 而第四个列向量中 w=1,表示该坐标系相对于参考坐标系的位置。

2.2

坐标系的变换
坐标系的变换包括绕固定参考坐标系的变换和绕运动参考坐标系的变换。

2.2.1 齐次变换
空间中一个坐标系相对于固定的参考坐标系的运动称为齐次变换。齐次变换可 以是平移运动,可以是旋转运动,也可以是平移与旋转的复合运动。 (1) 纯平移齐次变换 如果一个坐标系(它可能表示的是一个物体)在空间运动中相对于固定参考坐 标系的姿态不发生变化,即该坐标系的三个单位向量方向不变,只改变它的坐标原 点位置,则称这种运动为平移运动。如图 2-3 所示,坐标系{A}沿平移向量 d 平 移到新的位置:

西南交通大学本科毕业设计(论文)

第7页

d = ?d x ?

dy

dz ? ?

T

(2-4)

【 其 中 d x ,d y ,d z 是 平 移 向 量 d 相 对 于 固 定 参 考 系 三 个 坐 标 轴 方 向 的 分 量 。 7 】

图 2-3

坐标系的平移

平移后新的坐标系原点位置向量可以表示为原来坐标系的原点位置向量与位 移向量 d 的矢量和。若采用矩阵形式,新坐标系的矩阵表示可以通过将坐标系左乘 变换矩阵。由于平移过程中方向向量保持不变,所以平移变换矩阵 T 可以简单地表 示为:

?1 ? 0 T ? ? ? ?0 ?0 ?

0 1 0 0

0 0 1 0

dx ? dy ? dz ?
1 ? ? ? ?
(2-5)

可以看到,矩阵的前三列没有旋转运动(等同于单位矩阵) ,而最后一列表示 平移运动,这个方程可以用符号表示如下:

Fnew ? Trans(d x ,d y ,d z ) ? Fold


(2-6)

西南交通大学本科毕业设计(论文)

第8页

Fnew

?1 ? ?0 ? ? ?0 ?0 ? ?n x ? ?n ? ? y ?nz ?0 ?

0 1 0 0

0 0 1 0

dx ?

?n x ? ? d y ? ?n y ??? d z ? ?nz 1 ? ?0 ? ?

ox oy oz
0

ax ay az
0

px ? py ?
1 ? ? ? ?
(2-7)

pz ?

ox oy oz
0

ax ay az
0

px ? d x ? py ? d y ? pz ? d z ?
1 ? ? ? ?

(2)

绕轴纯旋转齐次变换

为了简化旋转变换的推导,假设坐标系{B}位于坐标系{A}的原点。纯旋转 就是{B}坐标系在空间中运动中相对于固定参考坐标系{A}的位置不发生变化, 即只改变该坐标系三个单位向量的方向而不改变其原点位置。这样坐标系{B}可 以由坐标系{A}经过旋转次变换后得到,由此可以推广到其他旋转情况。 设向量 x, y, z 为坐标系{A}的三个单位向量,空间任意一点 p 的位置可以 用向量 p 表示。向量 p 在坐标系{A}中的表示为:
A

p = p xix + p y j y + p z kz

(2-8)

向量 p 在坐标系{B}中的表示为:
B

p ? p nin + po jo + p ? k?
B

(2-9)

则向量

P 在坐标系{A}中的投影分别为
(2-10) (2-11) (2-12)

Px ? ix .B p ? ix . n p n + ix . o po + ix . ? p ? i j k
Py ? iy .B p ? iy . n p n + iy . o po + iy . ? p ? i j k

Pz ? iz .B p ? iz . n p n + iz . o po + iz . ? p ? i j k
写成齐次矩阵形式则为:

西南交通大学本科毕业设计(论文)

第9页

?ix . n ? px ? i ? ? ? i ?i . ? py ? ? ? y n ? ? i ?iz . n ? pz ? ?0 ?1 ? ? ? ? ?ix . n i ? i ?i . ? ? y n i ?iz . n ?0 ?

ix . o ix . ? 0 ? ? p n ? i i iy . o iy . ? 0 ? ? po ? i i ? iz . 0 iz . o 0 ? ? p? ? i i ? ?
0 0 1 ? ?1 ? ?? ? ?? ?
(2-13)

ix . o ix . ? 0 ? i i iy . o iy . ? 0 ? i i ? iz . 0 iz . o 0 ? i i
0 0 1? ? ?
(2-14)

A

RB

当坐标系{B}只相对于坐标系{A}单个轴转动时称为基本变换矩阵。如坐标 系{B}只绕坐标系{A}的 x 轴转动角度θ 时,基本转动变换矩阵记为 Rot(x,θ ), 由式(2-14)可以计算得:

?1 ? Rot(x ,? ) ? ?0 ?0 ?

0

C? S?

? ? ? S? ? C? ? ? 0

(2-15)

可以用同样的方法来分析坐标系{B}绕坐标系{A}的 y 轴和 z 轴旋转的情况, 结果如下:

? C? 0 ? Rot(y ,? ) ? ? 0 1 ? ?S ? 0 ? ?C ? ? Rot(z ,? ) ? ?S ? ?0 ?
(3) 复合齐次变换

? 0 ? C?? ?

S? ?
(2-16)

? S ? 0? ? C ? 0? 0 1? ?

(2-17)

复合齐次变换是有由固定坐标系或当前运动坐标系的一系列沿轴平移和绕轴 旋转变换所组成的,此时该固定坐标系在参考系中不仅原点位置发生变化,同时它 的三个坐标轴单位向量的方向也发生变化。 此时的变换顺序很重要, 变换顺序不同, 结果不同。 我们假设坐标系(n, o, a)相对于参考坐标系(x ,y ,z)依次进行了下列四个变

西南交通大学本科毕业设计(论文) 换: ? ? ? ? 绕 z 轴旋转θ 度 绕 z 轴平移 d 绕 x 轴平移 a 绕 x 轴旋转α 度
xyz

第 10 页

则复合齐次变换
XYZ

T noa 可由下式求解:

T no? ? Rot(x ,? ) ? Trans(a ,0,0) ? Trans(0,0,d ) ? Rot(z ,? )

(2-18) 可见,齐次变换矩阵是由一组平移和旋转矩阵依次左乘获得,矩阵书写的顺序
【6】 和进行变换的顺序正好相反,而且变换的顺序不能更改,否则结果会随之改变。

2.2.2 坐标系相对于旋转坐标系的变换
前面我们所讨论的所有变换都是相对于固定参考坐标系的。也就是说,所有平 移和旋转都是相对于参考坐标系的轴来测量的。然而事实上,也有可能相对于运动 坐标系或当前坐标系的轴的变换。例如,相对于运动坐标系(当前坐标系)的 n 轴 而不是参考坐标系的 x 轴旋转θ 度。为了计算当前坐标系中点的坐标相对于参考坐 标系的变化,我们需要右乘变换矩阵而不是左乘。由于运动坐标系中的点或刚体的 位置总是相对于运动坐标系测量的,所以必须右乘来表示该点或刚体的位置矩阵。

2.2.3 变换矩阵的逆
A

在分析机器人时,如果已知坐标系{B}相对于坐标系{A}的值
B

TB

到{A}相对于{B}的描述

TA

,为了得

,需要求这个矩阵的逆。一个直接求逆的方法就是将

4 ? 4 齐次变换求逆。同样,我们还可以通过变换的性质求逆。下面是关于 x 轴简单 旋转矩阵的求逆过程。旋转矩阵如下:

?1 ? Rot(x ,? ) ? ?0 ?0 ?

0

C? S?

? ? ? S? ? C? ? ? 0

(2-19)

我们采用以下的步骤来计算旋转矩阵的逆: 1) 计算矩阵的行列式 2) 将矩阵转置

西南交通大学本科毕业设计(论文) 3) 将转置矩阵的每个元素用它的子行列式代替 4) 用转置后的矩阵除以行列式 通过以上步骤我们得到:

第 11 页

?1 ? T Rot(x ,? ) ? ?0 ?0 ?

0

C? ? S?

0? ? S? ? C? ? ?

(2-20)

关于 x 轴的旋转矩阵的逆与它的转置矩阵相同,即:
T Rot(x ,? )?1 ? Rot(x ,? )

(2-21)

2.3 机器人的正逆运动学
对于一个已知构型的机器人,当它的连杆长度和关节角度都已知时,计算机器 人手的位姿就称为正运动学。也就是说,如果已知机器人所有的关节变量,用正运 动学方程就能计算任一瞬间机器人的位置和姿态。如果要将机器人的手放到一个期 望的位姿,就必须知道机器人所有关节的长度和角度。由机器人手的位姿来求关节 和连杆变量的过程就称为机器人的逆运动学。对于正运动学,必须推导出一组特定 方程,我们只要将已知的关节和连杆变量代入方程就能计算出机器人的位姿,然后 再根据这些方程求解出逆运动学方程。 在空间中,要确定一个物体的几何状态需要确定其 3 个位移坐标(位置)和三 个旋转坐标(姿态) 。机器人手部的空间位置和姿态的表示可以借助一个固连在它 上面的参考坐标系来表示,只要这个坐标系可以在基座的参考坐标系的空间中表示 出来,那么该机器人手部相对于基座的位姿就是已知的了,可采用齐次坐标变换的 方法完成这两个坐标系的坐标转化。

图 2-3 机器人手的位置和姿态描述

西南交通大学本科毕业设计(论文)

第 12 页

机器人手部的位姿如图 2-3 所示,可由固接在机器人手部的坐标系{B}来表 示。该坐标系由其原点位置和三个单位矢量(n, o, a)唯一确定。坐标系{A}表示 固连在机器人基座上的固定参考坐标系。向量 P 为坐标系{B}原点在坐标系{A} 中的位置矢量。前面已经讨论过了一个坐标系在固定坐标系的表示故这里直接给出 坐标系{B}在坐标系{A}中的位姿的表示:

?n ? ? n F =? Y ?n ? ? ?0 ?

o? oY o?
0

a? aY a?
0

p? ? pY ?
1 ? ? ?
(2-22)

p? ? ?

2.3.1 正运动学的 D-H 表示法
机器人建模采用的是 Denavit 和 Hartenberg 提出来的标准方法,我们简称为 D-H 模型,该模型可用于任何复杂的机器人构型。 假设机器人由一系列的关节和连杆构成,这些关节包括滑动的和旋转的,连杆 长度任意,确保在空间能构成任意想要的机器人模型。为了表示这个模型,我们需 要为每个关节指定一个参考坐标系,然后再考虑从一个关节到下一个关节的变换。 假设一个机器人由任意多的连杆和关节以任意形式构成。如图 2-4 所示,任意 三个顺序连接的关节和连杆,每个关节都可以平移或旋转。指定第一个关节为关节 n,第二个第三个关节分别为 n+1 和 n+2,连杆 n 位于关节 n 和 n+1 之间,连杆 n+1 位于关节 n+1 和关节 n+2 之间,这些关节和连杆前后还有其他连杆和关节。

西南交通大学本科毕业设计(论文)

第 13 页

图 2-4 关节-连杆组合的通用 D-H 表示法

D-H 表示法建模的第一步是为每个关节指定本地参考坐标系,每个关节都必须 指定 x 轴和 z 轴,由于 D-H 法不用 y 轴,一般不指定 y 轴。具体步骤如下: ? 所有关节用 z 轴表示,如果关节是旋转, z 轴位于按右手规则旋转的方向,如 果关节是滑动的,z 轴为沿直线运动的方向。关节 n 处 z 轴的下标记作 n-1。对 于旋转关节,绕 z 轴的旋转( ? 角)是关节变量,对于滑动关节,沿 z 轴的连 杆长度 d 是关节变量。 ? 如图 2-4 所示,通常关节不一定平行或相交,因此 z 轴通常是斜线,但总有一 条公垂线,正交于任意两条斜线。通常在公垂线方向上定义本地参考坐标系的 x 轴。例如 a n 表示 z n ? 1 和 z n 之间的公垂线, x n 的方向即沿 a n 方向。 ? ? 如果两个关节的 z 轴平行,那么它们之间就有无数条公垂线,我们可以挑选与 前一公垂线共线的公垂线,从而简化模型。 若两相邻的关节 z 轴相交,则不存在公垂线,我们选择垂直于两轴平面的任意 直线,同样简化了模型。 在图 2-4 中,? 角表示绕 z 轴的旋转,d 表示 z 轴上两相邻公垂线之间的距离,

a 表示每一条公垂线的长度,? 角表示相邻两 z 轴的夹角。通常只有 ? 和d 是变量。 从一个参考坐标系变换到另一个参考坐标系 (例如从 x n - z n 到 x n ? 1 - z n ? 1 ) 可 ,
以通过以下四步标准运动实现:

西南交通大学本科毕业设计(论文) ? ? ? ? 绕 z n 轴旋转 ? n ? 1 ,使得 x n 和 x n ? 1 相互平行且共面。 沿 z n 轴平移d n ? 1 距离,使得 x n 和 x n ? 1 共线。

第 14 页

沿 x n 轴平移 a n ? 1 距离,使得的原点重合,此时两个坐标系的原点在同一位置。 将 z n 轴绕 x n ? 1 旋转 ? n ? 1 ,使得 z n 和 z n ? 1 对准。至此,坐标系 n 和坐标系 n +1 完全一致,变换结束。 在 n +1 和 n +2 坐标系间按照同样的运动顺序也可以实现坐标系间的变换。 我们 可以从参考坐标系开始,转换到机器人底座,再到第一个关节,依次下去直至 末端执行器。每个变换矩阵(记作 A)都是由上述四个矩阵依次右乘的结果:
n

Tn ? 1 ? An ? 1
? Rot(z ,?n ? 1 ) ? Trans(0,0,d n ? 1 ) ? Trans(an ? 1,0,0) ? Rot(x ,? n ? 1 ) ?C ?n ? 1 -S?n ? 1 0 0 ? ?1 0 ? ? ? ?S?n ?1 C ?n ?1 0 0 ? ? ?0 1 ? ?0 0 1 0 ? ?0 0 ? ? ? ?0 0 0 1 ? ?0 0 ? ? ? ?1 ? 0 ?? ?0 ? ?0 ? ? ? 0 0 ? 1 d n ?1 ? ? 0 1 ? ? 0 0 0? ? 0? 0 ? ? 1? ?

0 0 0 an ? 1 ? ?1 0 ? ?0 C ? ? S ? 1 0 0 ? ? n ?1 n ?1 ? 0 1 0 ? ?0 S ? n ? 1 C ? n ? 1 ? ? 0 0 1 ? ?0 0 0 ? ?

(2-23)

An ?1

?C ?n ? 1 ? S? ? ? n ?1 ?0 ? ?0 ?

? S ?n ? 1C ? n ? 1

S ?n ?1S ? n ?1
? C ?n ? 1S ? n ? 1

an ?1C ?n ?1 ? an ?1S ?n ?1 ? d n ?1
1 ? ? ? ? ?
(2-24)

C ?n ?1C ? n ?1 S ? n ?1
0

C ? n ?1
0

从机器人基座到手(末端执行器)之间的总变换可以表示为:
R

TH ? RT1 1T2 2T3 ...n ?1Tn ? A1A2A3 ... n A

(2-25)

为了简化计算,我们为关节和连杆参数制作一个表格,每个参数可以从机器人 的原理图上读出,计算时再这些参数代入 A 矩阵。在本文中设计的简单三自由度机 器人模型参数如图 2-5 所示。所有链接采用旋转关节,D-H 参数如表 2-1 所示。

西南交通大学本科毕业设计(论文)

第 15 页

图 2-5 简单三自由度机器人(单位:英寸) 表 2-1 机器人 D-H 参数表(逆转为正,顺转为负) 连杆 i 1 2 3 4
?

d
0 65 0 0

a
0 0 200 150

?

90° 0° -30° - 30°

0° -90° 0° 0°

将上述角度值代入式(2-25) ,运用 MATLAB 进行计算出机器人初始位置坐标:

2.3.2 逆运动学方程的求解
为了让机器人处于适当的位姿,我们需要求解每个关节的角度值,这就是机器
R

人的逆运动学。我们可以通过矩阵

TH

左乘

An?1

来求解,如下:

R

TH

?n ? ? n ? A1A2A3 ... n ? ? Y A ?n ? ? ?0 ?

o? oY o?
0

a? aY a?
0

p? ? p? ? ? 1 ? ? pY ?
?
(2-26)

为了求解角度,我们从 式:

A

?1 1 开始,依次左乘上述矩阵,得到每个关节角度表达

西南交通大学本科毕业设计(论文)

第 16 页

A1?1

?n ? ? n ?? Y ?n ? ? ?0 ?

o? oY o?
0

a? aY a?
0

p? ?
? A2A3 ... n A p? ? ? 1 ? ?

pY ?

?
(2-27)

因此,我们的三自由度机器人逆运动关节角度表达

?1 ? arctan(?PX / PY )

?2 ? arccos ?? PZ C ?1(1 ? C ?3 ) ? PY S ?3 ? / ?18(1 ? C ?3 ) ?1 ?? C ? ?

?3 ? arccos ? (PY / C ? )2 ? (PZ )2 ? 162 / 162?
? ?

?

?

(2-28)

2.4 微分运动
微分运动即机器人的微小运动,可以用它来推导不同部件之间的速度关系。

图 2-6 (a)具有两自由度平面结构

(b)速度图

如图所示的两个自由度的简单机构, 1 表示第一个连杆相对于参考坐标系的旋 转角度, 下:

?

? 2 表示第二个连杆相对于第一个连杆的旋转角度。B 点的速度可以计算如

VB ? VA ? VB / A
? ? ? ? ? ?l1?1 sin ?1i ? l1?1 cos ?1j ? l2(?1 ? ?2 ) ? ? ? sin(?1 ? ? 2 ) ? l2(?1 ? ? 2 )cos(?1 ? ? 2 )j i
将速度方程写成矩阵形式得到如下结果: (2-29)

西南交通大学本科毕业设计(论文)

第 17 页

?V B ? X ?V BY ?

? ? ?l sin ?1 ? l2 sin(?1 ? ?2 ) ? ? ? 1 ? ? l1 cos ?1 ? l2 cos(?1 ? ?2 ) ? ?

? l2 sin(?1 ? ?2 )? ? l2 cos(?1 ? ?2 ) ? ?

? ?? ? ? ? ? (2-30) ?? ?

方程左边表示 B 点速度的 x,y 分量。B 点的位置我们可以用下述方程表示:

?X B ? l1 cos ?1 ? l2 cos(?1 ? ?2 ) ? ? ?Y B ? l1 sin ?1 ? l2 sin(?1 ? ?2 ) ?
对方程中的

(2-31)

?1 和 ? 2 微分,写成矩阵形式如下:
? l2 sin(?1 ? ?2 )? ? l2 cos(?1 ? ?2 ) ? ? ?d ?1 ? ? ? ?d ?2 ? ? ?
(2-32)

?d X ? ? B? ?d YB ? ? ?

? ?l1 sin ?1 ? l2 sin(?1 ? ?2 ) ? ? l1 cos ?1 ? l2 cos(?1 ? ?2 ) ?

我们看到, (2-29)和(2-31)式在形式上很相像,只是前者表示的是速度关 系,后者表示的是微分运动的关系。因此在机器人运动中,我们可以将关节的微分 运动与速度联系起来。

西南交通大学本科毕业设计(论文)

第 18 页

第三章 基于 ADAMS 的机器人的虚拟样机分析
3.1 ADAMS 概述
美国 MSC.Software 公司在 2003 年 3 月收购了全球最大机构的仿真软件、咨询 服务、系统集成供应商 MDI/ADAMS。MSC.Software 公司的 ADAMS 软件是虚拟样机领 域内广泛使用的软件,可以使工程师、设计人员能够在物理样机构造前,建立机械系 统的“模拟样机”,预估出机器的工作性能。ADAMS 软件具有如下特点: (1)分析类型包括运动学、静力学分析以及线性和非线性动力学分析 (2)具有二维和三维建模能力 (3)具有 50 余种联结副、力和发生器组成的库和强大的函数库 (4)具有组装、分析和动态显示模型的功能,包含刚体和柔体分析 (5)具有与 CAD、UG、Pro/E、Matlab、ANSYS 等软件的专用接口 (6)具有开放式结构,允许用户集成自己的子程序 基于 ADAMS 的虚拟样机技术是在制造物理样机前,利用计算机技术建立该产品 的数学模型,通过基于实体的可视化仿真分析,模拟该系统在实际工作环境中的运 动学和动力学特性,并反复修改设计,从而得到最优方案。 A 创建模型 创建机械系统模型时,首先要创建构成模型的各个零部件。零部件创建完后,需 要使用运动关节约束库创建零部件之间的约束副,确定部件之间的连接情况以及仿 真过程中构件之间的位置关系。最后,施加运动及各种载荷使样机按照设计要求进 行仿真。 B 测试验证模型并细化 模型创建过程中和完成后,都可以对模型进行运动仿真测试。通过对模型的性 能测试,验证设计方案的正确性,然后,在模型中增加更复杂的因素,进一步细化模 型。为便于不同方案的比较,通过设计变量不同取值的迭代仿真,求出设计变量的最 优值。 C 优化设计
【8】

采用设计和优化分析的研究手段,确定各个设计变量相对于解算结果的灵敏度 并最终确定目标函数的最优值。

3.2 ADAMS 中机器人模型的建立
本文机械手模型参考了 PUMA 机器人的结构,建模过程中依照模块化的思想先 绘制各个部件,然后通过布尔运算和参数的调整,完成建模。
【15】

西南交通大学本科毕业设计(论文)

第 19 页

3.2.1 设置建模环境
打开 ADAMS/View,选择创建新模型,将机械手模型命名为 model_2jixieshou, 其他采用系统默认值,进入建模界面。 在建模界面中,首先要设定工作栅格,点击菜单 Settings 中的 Working Gird. 如图 3-1 所示,根据建模需要,栅格范围设置为 1000×1000(mm),大小为 50×50 (mm) 。

图 3-1 工作栅格设置

设置完工作栅格就可以开始建模。

3.2.2 机器人实体建模
ADAMS/View 中集成了很多图形模板,包括点,线,面,体各方面。我们构建的 是机器人的三维立体模型,其主要部件都是刚体。ADAMS 中的刚体模板包括圆柱, 圆锥,长方体,球体,拉伸体,平板等。我们选择圆柱体(圆盘)作为机器人的底 座,圆柱体作为机器人的腰部,拉伸体作为机器人的手臂。在建模过程中,作者一 直根据模块化的原则,在建立每一个部件的过程中都同时通过布尔运算等对模块进 行优化,很好的美化了模型,并且是模型更加合理。这种工作方法为最后的总装提 供和很大的便利和好处,节省了很多时间,提高了工作效率,值得在其他工作中借 鉴。由于建模过程主要是 ADAMS 软件的操作过程,如果对 ADAMS 比较熟悉这个过程 就很简单。本文不再对建模过程做详细介绍。建立好的机械手实体模型如下图 3-2

西南交通大学本科毕业设计(论文) 所示:

第 20 页

图 3-2 机械手实体模型

3.2.3 机器人模型的设置
机器人实体模型建好以后,应对其属性进行修改。我们设计用的机器人材料为 铝材,初始位移为各个点的初始位置,初始速度设置为零。选定材料后,物体的密 度就自动确定了,同时系统会自动计算构件的质量。然后对关节添加相应的约束和 驱动力。如果我们要模拟某些特殊的工作过程,我们还应该在相应的位置处添加力 和力矩。如我们模拟提升物体的操作过程,那么我们就在小臂(PART6)的端部 PART6_MARKER_6 处添加一个大小为 10N 方向向下的力。 完成这个设置后机器人的模 型如下图 3-3 所示:

西南交通大学本科毕业设计(论文)

第 21 页

图 3-3 机器人最终模型

至此,我们已经完成了三自由度机器人的建模过程,通过软件自检功能,可以 判定模型正确与否,建模完成以后就可以进行运动学仿真分析。

3.3 轨迹规划仿真分析
完成建模过程后,我们就可以运用软件的仿真功能对模型的运动学,静力学, 动力学进行分析,本文对所建立的模型进行了运动学的理论分析,然后又结合轨迹 规划进行了仿真分析。轨迹规划一般分为两种:一种是在关节空间进行规划,将关 节变量表示成时间的函数,并规划它的一阶和二阶时间导数;另一种是在直角空间 (笛卡尔空间)进行规划,将末端位姿、速度、加速度表示为时间的函数,而相应的 关节位移、速度和加速度由末端信息导出。
【12】

本文分别给出了对模型进行关节空间和直角空间轨迹规划方法的理论分析,并 在 ADAMS/View 的仿真和后处理模块中利用 ADAMS 内嵌的 step 函数对关节空间内三 次多项式和五次多项式轨迹规划进行了分析比较。

3.3.1 轨迹规划方法的理论分析

西南交通大学本科毕业设计(论文) (1)关节空间内三次多项式轨迹规划

第 22 页

假设机器人的初始位姿是已知的,通过逆运动学方程可以求得期望位姿对应的 关节角。若考虑其中某一关节在运动开始时刻 运动到新的角度

?f , 使用多项式函数可以保证初始和末端的边界条件与已知条件相

ti 的角度 ?i ,希望该关节在tf 时刻

匹配,这些条件信息可以求解下面的三次多项式方程。

?(t ) ? c0 ? ct ? c2t 2 ? c3t 3 1
这里的初始条件和末端条件是:

(3-1)

?(ti ) ? ?i ?(tf ) ? ?f ??(ti ) ? 0 ??(tf ) ? 0
对 4-1 式求导,得: (3-2)

? ?(t ) ? c1 ? 2c2t ? 3c3t 2
将 4-2 式分别代入 4-1 和 4-3 式得:

(3-3)

?(ti ) ? c0 ? ?i ?(tf ) ? c0 ? ctf ? c2tf2 ? c3t f3 1
? ?(ti ) ? c1 ? 0 ? ?(tf ) ? c1 ? c2tf ? c3t f2 ? 0
联立求解这四个方程就可以得到任意时刻的关节位置,控制器则据此来驱动关 节。每个关节分别规划,同步运行。如果要求机器人依次通过多个点,则每一段末 端求解出的速度和位置都可用作下一段的初始条件,每一段的轨迹都可采用上述的 三次多项式来规划。 针对本文设计的三自由度机器人,在其初始位置基础下,我们要求机器人手臂 在 6S 后分别运动 (3-4)

?

1

=180°,

?

2

=60°,

?

3

=30°。

西南交通大学本科毕业设计(论文)
表 4.1 三次多项式规划关节角度

第 23 页

t
0 1 2 3 4 5 6

?1
0.0000 13.3333 46.6667 90.0000 133.3333 166.6667 180.0000

?2
0.0000 4.4444 15.5556 30.0000 44.4444 55.5556 60.0000

?3
0.0000 2.2222 7.7778 15.0000 22.2222 27.7778 30.0000

将上述边界条件代入 4-4 式,解得第一个关节轨迹参数为 c0 =0, c1 =0, c2 =15,
5 轨迹方程为:? 1 (t ) ? 15t 2 ? t 3 ;同样可得出第二个关节轨迹参数 c0 =0, 3 5 3 2 c1 =0,c2 =5,c3 =-5/9 轨迹方程为:? 2 (t ) ? 5t ? 9 t ;第三个关节参数 c0 =0,c1 =0, 5 2 5 3 c2 =5/2, c3 =-5/18 轨迹方程为:? 3 (t ) ? 2 t ? 18 t

c =-5/3
3

我们将运动过程分为 5 段,则每秒钟机器人运动的关节角度如表 4-1 所示。 (2)关节空间内五次多项式轨迹规划 在三次多项式规划中,我们采用的边界条件是起点和终点的位置与速度,如果 同时指定起点和终点的加速度,这样边界条件就增加到 6 个,可以用同样的方法进 行五次多项式的规划:

?(t ) ? c0 ? ct ? c2t 2 ? c3t 3 ? c4t 4 ? c5t 5 1
? ?(t ) ? c1 ? 2c2t ? 3c3t 2 ? 4c4t 3 ? 5c5t 4 ?? ?(t ) ? 2c2 ? 6c3t ? 12c4t 2 ? 20c5t 3
(3)关节空间内抛物线过渡的线性运动轨迹规划

(3-5) (3-6) (3-7)

在关节空间轨迹规划的另一种方法就是让关节以恒定的速度在起点和终点之 间运动,轨迹方程相当于一次多项式,速度为常数,加速度为零。这样意味着在起 点和终点的加速度必须为无穷大,为避免这一情况,线性运动在起点和终点可以用 抛物线来过渡。如图 4-6,抛物线与直线过渡段在时间和处是对称的,由此得到:

西南交通大学本科毕业设计(论文)

第 24 页

?(t ) ? c0 ? ct ? 1
? ?(t ) ? c1 ? c2t ?? ?(t ) ? c2

1 c2t 2 2
(3-8)

图 4-6 抛物线过渡的线性段规划方法

此时抛物线运动段的加速度为一常数,在 A 点和 B 点速度连续,将边界条件代 入得:

??(t ? 0) ? ?i ? c0 ?? ??(t ? 0) ? 0 ? c1 ? ?? ??(t ) ? c2
从而得出抛物线的方程为:

?c0 ? ?i ? ? ?c1 ? 0 ? ?? ?c2 ? ?

?(t ) ? ?i ? ??(t ) ? c2t
?? ?(t ) ? c2

1 2 ct 2 2
(3-9)

将零初速度,线性段常值速度 ? 以及零末端速度代入上式,得到:

1 2 ct 2 2b ? ? A ? c2tb ? ?

? A ? ?i ?

? B ? ? A ? ? ?(tf ? tb ) ? tb ? ? ? A ? ? ?tf ? 2tb ?
? ? ?B ? ?A ? ?

西南交通大学本科毕业设计(论文)

第 25 页

?f ? ?B ? (?A ? ?i )
? ?f ? 0
从而可求出过渡时间:

(3-10)

tb ?

?i ? ?f ? ?tf ?

(3-11)

显然,不能大于总时间的一半,否则整个过程中只有加减速而没有直线运动。 终点的抛物线段与起点是对称的,只是加速度为负而已。 我们依然用设计的三自由度机器人来进行规划。在其初始位置基础上,我们要 求机器人手臂在 6S 后分别运动

?

1

=180°,

?

2

=60°,

?

3

=30°中间匀速运动的速

度分别为 v1 ? 40? / s , v2 ? 12? / s , v3 ? 6? / s ,那么过渡时间分别为:
0 ? 180 ? 40 ? 6 0 ? 60 ? 12 ? 6 0 ? 30 ? 6 ? 6 ? 1.5( s) , tb 2 ? ? 1.0( s) , tb3 ? ? 1.0( s) 40 12 6 匀加速,匀速,匀减速运动方程分别如下: tb1 ?
1 80 2 ? ?? ? 2 ? 3 t ? ? 80 ? ?? A ? ? ? t ?i ? ?? 3 ? ? ? 80 第一个关节角 ?1 : ? 3 ?

?? ? 30 ? 40 ? (t ? 1.5) ? ? ? ? 40 ? A ?? B ? ?? ? ? ?0 ? 1 80 ? 2 ?? ? 180 ? 2 ? 3 (6 ? t ) ? ? 80 ? ?? f ? ? ? (6 ? t ) ?B 3 ? ?? 80 ? ? ?? ? 3 ?
1 ? 2 ?? ? 2 ? 12t ? ? ? 第二个关节角 ?2 :? i ? ? A ? ? ? 12t ?? ? ? ? 12 ? ? ?

西南交通大学本科毕业设计(论文)

第 26 页

?? ? 6 ? 12 ? (t ? 1) ? ? ? A ? ? B ? ???? 12 ? ? ?0 ?
1 ? 2 ?? ? 60 ? 2 ?12 ? (6 ? t ) ? ? ? ?? f ? ? ? 12 ? (6 ? t ) ?B ?? ? ? ? ?12 ? ? ?
1 ? 2 ?? ? 2 ? 6t ? ? ? 第三个关节角 ?3 :? i ? ? A ? ? ? 6t ?? ? ? ?6 ? ? ?

?? ? 3 ? 6 ? (t ? 1) ? ? ?? B ? ? ?6 ?A ?? ? ? ?0 ?
1 ? 2 ?? ? 30 ? 2 ? 6 ? (6 ? t ) ? ? ? ? B ? ? f ? ? ??6 ? (6 ? t ) ? ? ? ? ?6 ? ? ? 则在 0s 到 6s 关节的角度分别如表 4-2 所示:
表 4-2 抛物线过渡规划关节角度 t

?1
0 40/3 50 90 130 500/3 180

?2
0 6 18 30 42 54 60

?3
0 3 9 15 21 27 30

0 1 2 3 4 5 6

(4)直角空间轨迹规划

西南交通大学本科毕业设计(论文)

第 27 页

直角坐标空间轨迹与机器人相对于直角坐标系的运动有关,机器人末端执行器 的位姿就是沿循直角坐标空间的轨迹。实际上所有的关节空间轨迹规划的方法都可 用于直角坐标空间的轨迹规划。其差别在于:对于关节空间的轨迹规划,规划函数 生成的值就是关节值,而直角坐标空间轨迹规划函数生成的值是机器人末端执行器 的位姿,必须通过反复求解逆运动学方程来计算关节角。 其过程可以综合如下: 将时间增加一个增量t ?

t ??t ;

利用所选择的轨迹函数计算末端执行器的位姿; 利用机器人逆运动学方程计算位姿对应的关节量; 将关节信息传递给控制器; 重复以上循环过程。

3.3.2 轨迹规划仿真分析
(1)三次多项式轨迹规划仿真分析 我们在 ADAMS 里进行三次多项式轨迹仿真时,用的是 STEP 函数。[13] 起点处的二阶导不连续,在速度图像上表现为速度连续但加速度不连续。 我们设定机器人三个部分在 6S 时间内分别转动 180°,60°,30°,为了分析 其运动特性,我们分别选取机器人小臂 PART6 末端的 PART6_MARKER_6 点的运动参 数进行分析。 机器人小臂末端的 PART6_MARKER_6 在 X,Y,Z 三个方向上的位移曲线如下: STEP

函数利用的是三次多项式逼近海赛阶跃函数。STEP 阶跃函数有连续的一阶导,但在

图 4-7 PART6_MARKER_6 在 X,Y,Z 三个方向上的位移图

西南交通大学本科毕业设计(论文)

第 28 页

从上图中我们看到,在三次多项式规划条件下,X,Y,Z 三个方向上的点都呈现 出起伏变化,与匀速驱动条件下情况不同。PART6_MARKER_6 点从(248.2051, 70.0962,-40.0)运动到(-303.1089,475.0,40.0)处。 PART6_MARKER_6 速度和加速度曲线如图 4-8 所示, 我们可以看到, 速度由 0mm/s 增 大 到 297.6708mm/s, 然 后 又 逐 渐 下 降 到 0mm/s, 而 加 速 度 最 大 值 达 到 了 253.6641mm/ s ,并且在 0.012s 和 5.988/s 处存在突变。
2

图 4-8

PART6_MARKER_6 速度和加速度图像

PART6_MARKER_6 角速度和角加速度曲线如图 4-9 所示,PART6_MARKER_6 角速 度和角加速度变化与速度变化类似,最大角速度为 50.3512d/s,角加速度最大为 33.4069d/ s ,在 0.012s 和 5.988/s 处存在突变。
2

图 4-9 PART6_MARKER_6 角速度和角加速度图像

西南交通大学本科毕业设计(论文) (2)五次多项式轨迹规划仿真分析

第 29 页

我们运用 ADAMS 内嵌的 step5 函数对机器人关节进行五次多项式轨迹规划, step5 函数是通过五次多项式逼近海塞阶跃函数。同样选取我们分别选取机器人小 臂 PART6 末端 PART6_MARKER_6 点的运动参数进行分析。 PART6_MARKER_6 在 X,Y,Z 三个方向上的位移曲线如图 4-16 所示:

图 4-16 PART6_MARKER_6 在 X,Y,Z 三个方向上的位移图像

从上图中我们可以看出,三次多项式和五次多项式轨迹规划相比,机器人手臂 末端的始末位置不变,都是从(248.2051,70.0962,-40.0)运动到(-303.1089, 475.0,40.0) ,中间点的位移也没太大变化。但是其速度和加速度等运动参数变化 却比较大。五次多项式轨迹规划条件下 PART6_MARKER_6 的速度和加速度曲线如图 4-17 所示:

西南交通大学本科毕业设计(论文)

第 30 页

图 4-17 PART6_MARKER_6 的速度和加速度图像

PART6_MARKER_6 的角速度和角加速度曲线如图 4-18 所示:

图 4-18 PART6_MARKER_6 的角速度和角加速度图像

从上面的图像中我们可以看到,PART6_MARKER_6 的速度先增后减,加速度变化 也一样。速度从开始时刻的 0mm/s 增大到中间时刻的 370.1791mm/s 再减小到终点 时刻的 0mm/s,加速度变化较三次多项式规划时平缓,不存在突变点。在 0s 时最小, 为 0mm/ s , 中 间 时 刻 达 到 最 大 值 396.2381mm/ s , 然 后 逐 渐 下 降 到 终 点 时 的 0mm/ s 。角速度和角加速度的变化情况如下:最大角速度为 62.8912d/s,最大角 加速度为 32.826d/ s ,角加速度不存在明显突变。 (3)轨迹规划比较分析
2 2 2 2

西南交通大学本科毕业设计(论文)

第 31 页

从上面的两种轨迹仿真结果中可以看出,三次多项式轨迹规划和五次多项式轨 迹规划最大的区别就在前者的加速度和角加速度在中间点存在跳变,而后者的加速 度和角加速度的变化则趋于平缓。我们对两种情况下 PART6_MARKER_6 点的运动参 数变化情况进行比较,如下表所示:
表 4-3 PART3_MARKER_12 点的运动参数比较 比较项目 最大速度 mm/s 最大加速度 mm/ s 加速度突变 最大角速度 d/s 最大角加速度 d/ s 角加速度突变
2 2

三次多项式 297.6708 253.6641 有 50.3512 33.4069 有

五次多项式 370.1791 396.2381 无 62.8912 32.826 无

之所以有这种区别,原因在于三次多项式轨迹规划中,我们的边界条件只有四 个,初始位移和速度,终点的位移和速度;而在五次多项式轨迹规划中,我们的初 始条件中包含了加速度,分别为初始位移、速度和加速度,终点位移、速度和加速 度。 因此在一般的三次多项式轨迹规划中, 我们应该加入最大速度变化的限制条件, 从而保证机器人的运动更平稳。

西南交通大学本科毕业设计(论文)

第 32 页

第四章 基于模型的视景仿真系统的设计与实现
随着机器人研究的不断深入,机器人三维可视化技术作为机器人设计和研究中 安全可靠、灵活方便的工具,越来越受到重视。机器人的三维图形仿真,就是要建 立一个精确、逼真的机器人模型以及机器人工作环境。 三维可视化是数学模拟和科学计算可视化技术相结合的产物,它一般包括两方 面内容:一是将传统数字仿真计算的结果转换为图形和图像形式;二是仿真交互界 面可视化,即具有可视化交互和动画展示能力,要求能够实时跟踪显示仿真计算结 果。可视化技术的出现,使得人们能够在三维图形世界中观察机器人,并通过计算 机交互式对机器人进行示教仿真。 一般来说,机器人可视化仿真系统主要由三个模块组成:工业机器人的三维模 型模块(实现仿真系统的基础)、示教和再现模块(实现示教和再现的功能)、离线编 程模块,见图 4-1。但是由于时间和知识限制,本文只研究了后两个模块的实现, 对离线编程并没有采取通常的做法,根据老师的建议想将 Matlab 软件和 VC++结合 起来,用在 Matlab 里建立的控制模型来控制 OpenGL 里机械手的运动,本章按照这 个思路实现了利用 Matlab 里建立的控制模型导出的数据来控制机械手的运动。

图 4-1 通用机器人可视化仿真系统模块

本章将通过 VC++6.0 和 OpenGL 来完成机械手的三维可视化仿真系统的设计与 实现,它提供一个真实的实验平台,在不接触实际机器人及其工作环境的情况下, 通过图形技术,提供一个和机械手进行交互的虚拟环境。本章主要内容为: (1)建立程序框架;

西南交通大学本科毕业设计(论文) (2)建立机械手三维模型; (3)建立仿真场景; (4)实现基于模型的视景仿真。

第 33 页

4.1 OpenGL 概述
OpenGL 即开放性图形库(open graphic libary)是美国高级图形和高性能计 算机系统公司 SGI 所开发的三维图形标准库,具有绘制三维图形的各项功能,它是 处理专用图形硬件的软件接口, 支持可视化的实现, 它是三维计算机图形和模型库, 独立于窗口系统和操作系统。 从开发人员角度看,OpenGL 是一些绘图指令或函数的集合。这些指令允许用户 对二维几何对象或三维几何对象进行说明,允许用户对对象实施操作以便把这 些对象着色到帧存上。OpenGL 可以方便地实现三维图形的交互操作。 对于 OpenGL 的实现者而言,OpenGL 是影响硬件操作的指令集合。如果硬件仅 仅包括一个可以寻址的帧存,那么 OpenGL 就不得不在 CPU 上实现对象的描绘, OPenGL 可以保存数量较大的状态信息,这些状态信息可以用来指示 OpenGL 如何往 帧存中画物体。有一些状态,用户可以直接使用,通过调用就可得到状态值;而另 一些状态只有作用在所画物体上,才能使其产生的影响可见。

4.1.1 OpenGL 工作方式
OpenGL 在 Windows 环境下的工作过程如图 4-2 所示。OpenGL 的库函数被封装 在 OPengl 犯.dll 动态链接库中, 从客户应用程序发布的对 openGL 函数的调用首先 被 Opengl32 处理,在传给服务器后,被 winsry.dll 进一步进行处理,然后传给
【18】 DDx(nivieeDriverInterface),最后传递给视屏驱动程序。

西南交通大学本科毕业设计(论文)

第 34 页

图 4-2

OpenGL 在 Windows 环境下的工作过程

4.1.2 OpenGL 绘制过程
OpenGL 具有较强的图形绘制能力,包括绘制物体、启动光照、管理位图、纹理 映射、动画、图形增强及交互技术等功能。综合以上功能,作为图形硬件的软件接 口,OpenGL 主要是将三维的物体投影到一个二维平面上,之后处理得到像素,进行 显示。OpenGL 首先将物体转化为可以描述物体几何性质的顶点(Vertex)与描述图 像的像素(Pixel) ,在执行一系列操作后,最终将这些数据转化成像素数据。也就 是说,OpenGL 是基于点的。有一组顶点定义的图元(Pirmitive)执行完绘制操作 后,后继图元才能作用。简单的图形生成过程如图 4-3 所示。

西南交通大学本科毕业设计(论文)

第 35 页

图 4-3

OpenGL 中简单图形的绘制过程

对图元的定义:图元由一组顶点定义,这一组顶点可以是一个或是多个顶点。 每个顶点信息可以是二维的也可以是三维的。顶点信息可以由位置坐标、颜色值、 法向量、纹理坐标组成。法线、纹理、颜色值会在处理每个顶点的过程中被使用。 OpenGL 将点、线段、多边形等通过在函数 glBegin()和 glEnd()之间一系列顶点的 数据绘制出图形。 对图元的操作:OpenGL 用交换矩阵、光照、反走样、像素操作等方法控制图元 的绘制。图元的操作处理过程结束后,只留下图元可见部分,准备进行光栅化(投 影)处理。像素处理比较特殊:对像素、位图、影像直接进行像素操作,然后进行 光栅化,后者是有些数据被存储在纹理中供顶点使用。 光栅化过程:将图元转化为二维图像,完成每个图像点的颜色与深度的计算, 生成结果为基片,即各图元的二维结果。 基片操作:处理过程包括基片是否遮挡、测试、融合等,最后得到像素,存入 显示帧缓冲中,完成整个绘制过程。

4.2

机器人三维可视化框架建立

4.2.1 利用 MFC 建立单文档应用程序框架
VC++6.0 能够创建多种类型的 MFC 应用程序,不同的应用程序具有不同的应用 程序框架,VC++6.0 系统的设计者创建了程序框架生成工具 Appwizard,用它来建

西南交通大学本科毕业设计(论文)

第 36 页

立开发各种 MFC 应用程序所需要的程序框架,通过 APpwizard 就可移动生成包含基 本程序框架的应用程序包,这样就可以在此基础上进行程序设计。在参考许多数字
【16】 处理、图像处理软件的基础上,决定采用单文档的应用程序框架。

? ? ?

创建工程:启动 VC++6.0 进入 VC++的集成开发环境,新建一个工程,选择 MFC Appwizard 选项,在应用程序类型中选择 singledocument(单文档)类型。 设置编译环境:设置编译环境主要包括设置包含文件和设置库文件路径。 加入 OpenGL 库:选择菜单 Project ? Setting,将弹出 ProjectSettings 对话 框 , 在 该 对 话 框 选 择 Link 标 签 页 , 如 图 4-4 所 示 。 在 该 对 话 框 中 的 Object/Library Module 文本框中加入 opengl32.lib、glu32.lib、glaux.lib 三个函数库文件。在头文件中加入 gl/glu.h(OpenGL 核心函数的头文件)和 gl/glut.h(使用函数的头文件),这样就可以调用 openGL 软件包了。

图 4-4 加入 OpenGL 库函数

这样,我们就很容易的建立了一个在 Windows 环境下进行 OpenGL 编程开发的 框架,按快捷键 F7 进行编译,按快捷键 F5 执行就会弹出一个窗口,包含一个主菜 单、一个工具条和一个状态条等部件。如下图 4-5 所示:

西南交通大学本科毕业设计(论文)

第 37 页

图 4-5 程序框架

4.2.2 设置 OpenGL 绘图环境
1)创建 RC 在 windows 环境下建立 OpenGL 绘制窗口是通过建立设备描述表(DC)和绘制描 述表(RC)来实现的,而 RC 和 DC 是连接在一块的。因此,为了建立 RC,先要建立 DC。用 ChoosePixelFormat()选择系统中与 pfd 描述的像素格式最为匹配的返回; 本文现在消息响应函数 OnCreate 里调用 InitializeOpenGL(m_pDC)函数, 然后又通 过后者调用 SetupPixelFormat()函数来设置 DC 像素格式完成绘图环境的设置工作; int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; m_pDC = new CClientDC(this); InitializeOpenGL(m_pDC); ... return 0; } //调用函数

西南交通大学本科毕业设计(论文) BOOL CMyView::InitializeOpenGL(CDC* pDC) { m_pDC = pDC; SetupPixelFormat();//设置像素格式 m_hRC = ::wglCreateContext(m_pDC->GetSafeHdc());

第 38 页

::wglMakeCurrent(m_pDC->GetSafeHdc(), m_hRC);//选择像素格式 return TRUE; } 2)设置坐标变化方式 每次窗口创建或改变大小的时候, 都要重新设置视口大小, 因此我们在 OnsizeO 中进行视口设置。而投影变换和视点一模型变换的初始设置也可以放在里面进行。 void CMyView::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); if (cy==0) {cy=1; } glViewport(0,0,cx,cy);// 重置当前视口 glMatrixMode(GL_PROJECTION);// 选择投影矩阵 glLoadIdentity(); 视投影矩阵 glMatrixMode(GL_MODELVIEW);// glLoadIdentity(); } 3)绘图显示 完成上面的设置以后我们就可以利用 OpenGL 进行绘图了。本文为了程序的简 约,先在 OnDraw()里调用 RenderScene()函数,然后在 RenderScene()里调用所 有绘图显示函数。代码如下: void CMyView::OnDraw(CDC* pDC) { CMyDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); RenderScene(); //调用绘图函数 } // 选择模型观察矩阵 重置观察模型矩阵 // 重置投影矩阵 gluPerspective(45.0f,(float)cx/(float)cy,0.1f,2000.0f);// 设 置 透 // 防止被零除

西南交通大学本科毕业设计(论文) 4)程序结束,释放资源。 调用消息响应函数 OnDestroy(),在函数里完成相关资源的释放。 void CMyView::OnDestroy() { CView::OnDestroy(); ::wglMakeCurrent(0,0); ::wglDeleteContext( m_hRC); if (m_hPalette) DeleteObject(m_hPalette); if ( m_pDC ) { delete m_pDC; } ... }

第 39 页

最后按照参考书上的方法设置了全屏显示按钮,可以实现全屏显示,同时可以
【16】 进行屏幕工具栏的显示缩放。

编译运行结果如图 4-6 所示:

图 4-6 设置完成的机器人三维场景框架

西南交通大学本科毕业设计(论文)

第 40 页

4.3

机械手三维模型的建立
OpenGL 中模型的建立一般有两种思路,一种通过一个是用 3dsMax 绘制出模型

并将其转换成特定格式的文件,然后导入到程序中;另一个是直接用 OpenGL 的函 数绘制出所需要的模型。 导入的模型比较美观漂亮, 但是实现起来技术难度比较大, 而 OpenGL 的函数绘制出的模型则比较粗糙,但是灵活性好,实现起来也比较容易。

4.3.1 导入机械手模型
利用 openGL 建立复杂物体的三维模型是一件比较麻烦和枯燥的事情,因为 OPenGL 并没有提供三维模型的高级命令,它也是通过基本的几何图元一点、线及多 边形来建立三维立体模型的。而利用 3dsMax 建立复杂物体的模型则显得轻松的多。 可是,用 3dsMax 制作的动画没有交互性,无法实时控制,而这正是 OpenGL 的优势 所在。把这些模型转换成 OpenGL 程序,再对其进行控制是一种比较理想的方法。 所以,如果可以把 OpenGL 与 3dsMax 结合起来实现三维仿真则可以事半功倍。但是 由于时间和知识的限制,无法完成对 3D 模型的读取工作,所以查找了一些读取 3D 模型文件的代码,利用这些代码将机械手模型转换成了 OpenGL 程序,将模型导入 进了 OpenGL 里。为了节约时间作者没有在 3dsMax 里建立机械手的模型,而是在比 较熟悉的 Auto CAD 里建立了机械手的模型,然后通过 3dsMax 软件模型文件导出成 接口程序可识别的*.ASE 格式的文件,再通过接口程序导入进 OpenGL 里。导入前的 在 3dsMax 里的模型如图 4-7 所示:

图 4-7 3dsMax 里的机械手模型

西南交通大学本科毕业设计(论文)

第 41 页

导入后的机械手模型经过坐标变换、缩放、改变颜色并加入光照照亮后如下图 4-8 所示:

图 4-8 导入的机械手模型

4.3.2 在 OpenGL 中建立机械手的模型
虽然实现了模型的导入,但是只实现了整体导入,未能实现分块导入机械手的 模型,所以在 OpenGL 只实现了整体模型的控制,很显然满足不了机械手运动的要 求,所以导入的模型只能作为仿真场景的一部分做静态显示。为了继续进行后续工 作,作者直接在 OpenGL 中通过基本的几何图元一点、线及多边形建立了机械手的 三维立体模型。机械手模型主要由底座、腰部、关节、手臂这几个部分组成,由于 底座、腰部和关节都是圆柱型的,所以作者先利用 glu 库函数(gluCylinder 和 gluDisk )
【 17 】

画 出 一 个 共 用 的 圆 柱 , 然 后 通 过 不 同 的 缩 放 ( glScalef ) 转 移 、

(glTranslatef) 、旋转(glRotatef)变换绘制出了底座,腰部和关节的模型。这 里取绘制关节的函数作为例子介绍绘制过程,代码如下: void CMyView::joint() { glPushMatrix();//模型入栈 GLUquadricObj *obj1; obj1=gluNewQuadric();//创建一个描述当前绘图模式、定位、光照模式、

西南交通大学本科毕业设计(论文) 纹理模式和回调函数的不透明的状态变量

第 42 页

glTranslatef(0.0,0.0,-5.0);//向 Z 轴负方向即屏幕里移动 5 个像素的距 离 glPushMatrix(); gluCylinder(obj1,10.0,10.0,10.0,360.0,2);//绘制一个顶面半径、底面 半径和高度都为 10 的圆柱面 glPopMatrix(); glPushMatrix(); gluDisk(obj1,0.0,10.0,360,1);// 绘制一个半径为 10 的圆片堵住上述圆 柱面的底面 glPopMatrix(); glPushMatrix(); glTranslatef(0.0,0.0,10);//向 Z 轴正方向即屏幕外移动 10 个距离 gluDisk(obj1,0.0,10.0,360,1);//绘制一个半径为 10 的圆片堵住上述圆 柱面的顶面 glPopMatrix(); glPopMatrix();//模型出栈 } 绘制手臂也很简单,手臂其实在这里同样是通过对一个立方体进行不同的然后 通过不同的缩放(glScalef) 、转移(glTranslatef) 、旋转(glRotatef)变换来 完成绘制。OpenGL 里也有对应画立方体的库函数,但是由于不太清楚怎么对用库函 数绘制的模型进行纹理贴图,所以选用了一种比较熟悉和简单的方式来绘制,就是 通过 6 个面来组合成一个立方体。对每个面都可以进行不同的纹理贴图。在后面的 仿真场景建立过程中同样利用这个四方体也完成了实验室房间、木质方桌、大理石 长桌、凳子和储物箱的绘制。绘制立方体的代码如下: void CMyView::shoubi() { glPushMatrix(); glColor4f(1.0f,1.0f,1.0f,1.0f);//定义面的颜色为白色 glBegin(GL_QUADS);//开始绘制 // 前面 glTexCoord2f(0.0f, 0.0f); glVertex3f(-100.0f, 0.0f, -100.0f); // 纹理和四边形的左下 glTexCoord2f(1.0f, 0.0f); glVertex3f( 100.0f, 0.0f, -100.0f);

西南交通大学本科毕业设计(论文) // 纹理和四边形的右下

第 43 页

glTexCoord2f(1.0f, 1.0f); glVertex3f(100.0f, 100.0f, -100.0f); // 纹理和四边形的右上 glTexCoord2f(0.0f, 1.0f); glVertex3f(-100.0f, 100.0f, -100.0f); // 纹理和四边形的左上 glEnd(); glBegin(GL_QUADS); // 后面 glTexCoord2f(1.0f, 0.0f); glVertex3f(-100.0f, 0.0f, 100.0f); // 纹理和四边形的右下 glTexCoord2f(1.0f, 1.0f); glVertex3f(-100.0f, 100.0f, 100.0f); // 纹理和四边形的右上 glTexCoord2f(0.0f, 1.0f); glVertex3f( 100.0f, 100.0f, 100.0f); // 纹理和四边形的左上 glTexCoord2f(0.0f, 0.0f); glVertex3f( 100.0f, 0.0f,100.0f); // 纹理和四边形的左下 glEnd(); ... glPopMatrix(); } 绘 制 完 机 械 手 的 各 个 部 件 以 后 就 可 以 通 过 缩 放 ( glScalef ) 转 移 、 (glTranslatef) 、旋转(glRotatef)变换来完成整个机械手模型的绘制。代码如 下: void CMyView::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].rot1,0.0,1.0,0.0);//绕 Y 轴旋转-hand[i].rot1 第 ( 一个关节角? 1 第 i 时刻的值) glPushMatrix(); glTranslatef(0.0,-15.0,0.0); glRotatef(-90,1.0,0.0,0.0);//沿 X 轴逆时针旋转 90° glPushMatrix();

西南交通大学本科毕业设计(论文) glTranslatef(0.0,0.0,20.0); glColor3f(1.0,0.0,0.0);//设置为红色 glScalef(1.0,1.0,5.0);//沿新的 Z 轴方向扩大 5 倍 joint();//绘制腰部 glPopMatrix(); glTranslatef(0.0,0.0,-5.0);

第 44 页

glScalef(3.0,3.0,0.5);//沿新的 Y 和 X 轴扩大 3 倍,新的 Z 轴方向缩小 0.5 倍 glColor3f(0.0,1.0,0.0);//设置为绿色 joint();//绘制底座 glPopMatrix(); ...//同样的方法绘制关节和两个手臂,这里不再一一叙述 } 在 RenderScene()里调用 manipulator(),编译运行后的结果如图 4-9 所示:

图 4-9 OpenGL 中绘制的机械手模型

4.4

建立仿真场景
场景中模型的绘制和上节机械手模型的绘制很类似,所以在这里不再做介绍,

西南交通大学本科毕业设计(论文) 这一节主要介绍纹理贴图的实现和设置光照。

第 45 页

4.4.1 纹理贴图的实现
OpenGL 体系内有一块纹理内存,在有硬件加速的情况下,可能是位于显卡的 VRAM 里,否则会是 OpenGL 库管理的一块内存。在这个纹理内存里图片是以特定的 内部格式保存的,有的显卡还支持压缩纹理技术,所以将纹理像素从应用程序内存 传到纹理内存需要进行格式转换。这在 OpenGL 中是通过分别描述像素在应用程序 内存和纹理内存的格式来完成的,真正转换工作 OpenGL 会在内部完成。定义纹理 的 命 令 是 glTexImage2/1D(GL_TEX_IMAGE_2/1D,level,components,width,height,border,f ormat,type,*pixels );OpenGL 术 语 称 应 用 程 序 内 存 读 出 像 素 的 过 程 为 解 码 (UNPACK) , 而 向 纹 理 内 存 写 像 素 的 过 程 为 编 码 (PACK) 。 用 glPixelStore*(GL_[UN]PACK_*,参数值);命令设定编码[解码]格式 。对于贴纹理 过程我们只需关心解码过程。如今的显卡通常都有比较大的显存,其中有一部份是 专门的纹理存储区,有的卡还可以将最多 64M 系统内存映射为纹理内存,所以我们 有可能把经常要用的纹理就保留在纹理内存里以提高程序性能。 OpenGL 从 1.2 开始 提供了纹理对象技术, 可以把在管道内放多个纹理, 每个纹理对应一个数字(名字), 需要用到是把这个名字的纹理 Bind 为当前纹理就可以了。用 glGenTextures (n,*textures)命令取得可用的纹理名字的。 在 3D 图形中,纹理映射是广泛使用的。纹理映射也是相当复杂的过程:1、 定 义纹理;2、控制滤波;3、说明映射方式;4、绘制场景给出顶点的纹理坐标和几 何坐标。 (注意! !纹理映射只能在 RGBA 模式下使用,不适用于颜色索引模式) 1.纹理定义 void glTexImage2D( GLenum target, GLint level, GLint components,GLsizei width, GLsizei height, GLint border,GLenum format, GLenum type, const GLvoid *pixels );定义一个二维纹理映射,target 是常数 GL_TEXTURE_2D;level 表示多 级分辨率的纹理图象的级数,若只有一种分辨率,level 为 0;components 是从 1 到 4 的整数,1:选择 R;2:选择 R A;3:选择 R G B;4:选择 R G B A; width height 是纹理的尺寸。format 和 type 描述映射格式和数据类型。它们与前 面讲 glDrawPixels()中 GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_NEAREST,GL_LINEAR_MIPMAP_LINEAR 2.1 滤波 原始纹理图象是个方形图象,把它映射到奇形怪状的物体上,一般不可能图象上的 一个象素对应屏幕的一个象素。 因此局部放大缩小时, 就要定义合适的滤波方式 (以

西南交通大学本科毕业设计(论文) 2D 为例) :

第 46 页

void glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); void glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); 前 者 是 放 大 滤 波 ( GL_TEXTURE_MAG_FILTER ), 后 者 是 缩 小 滤 波 (GL_TEXTURE_MIN_FILTER) ;另外,GL_NEAREST 是利用最坐标最靠近象素中心的纹 理元素,这有可能使图样走型,但计算速度快;GL_LINEAR 利用线形插值,效果好 但计算量大。 2.2 重复与缩限 纹理映射可以重复映射或者缩限映射,重复映射时纹理可以在自己的坐标 S T 方向 重复。对于重复映射: void void glTexParameterfv(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); glTexParameterfv(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);

参数 GL_REPEAT 改为 GL_CLAMP,则缩限,所有大于 1 的纹理元素值置为 1。所 有小于 0 的纹理元素值置为 0,0 的纹理元素值置为 0。 3. 映射方式 处理纹理本身图案颜色和物体本身颜色的关系:void glTexEnv{if}[v](GLenum target,GLenum pname,TYPE param);target 必 须 是 GL_TEXTURE_ENV;pname 是 GL_TEXTURE_ENV_MODE,则 param 可以是 GL_DECAL GL_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 坐标。void glTexCoord{1234}{sifd}[v](TYPE coords);设置当前 纹理坐标,此后调用 glVertex*()所产生的顶点都赋予当前的纹理坐标。 5. 坐标自动产生 有时不需要为每个物体顶点赋予纹理坐标,可以使用 void glTexGen{if}(GLenum coord,GLenum pname,TYPE param);coord 为:GL_S GL_T GL_R 或 GL_Q,指明哪个 坐标自动产生 pname 为 GL_TEXTURE_GEN_MODE 时 param 为常数:GL_OBJECT_LINEAR GL_EYE_LINEAR 或 GL_SPHERE_MAP,它们决定用哪个函数来产生纹理坐标 pname 为
【16】 GL_OBJECT_PLANE 或 GL_EYE_PLANE,param 时一个指向参数数组的指针。

下面就本文中纹理贴图的例子做介绍:首先定义了一个读入位图的函数 BOOL LoadBMP(TCHAR* szFileName),在位图函数中完成了纹理的定义;然后又定义了一 个函数 GLLoadTextures(GLuint* ptList)完成了对纹理的滤波、 重复和缩限的控制,

西南交通大学本科毕业设计(论文)

第 47 页

最后在场景模型的绘制中将纹理坐标赋给了模型顶点坐标。下面是本文中纹理贴图 的部分代码: CLoadBMP::GLLoadTextures(GLuint* ptList) { glGenTextures(18, ptList);//生成 16 个纹理名字 glBindTexture(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");//载入位图 ... } 绘制实验室房间的代码: void CMyView::creatskybox() { glPushMatrix(); glDisable(GL_BLEND); glEnable(GL_TEXTURE_2D);启动纹理映射 glBindTexture(GL_TEXTURE_2D, tList[GRASS2]);选择纹理 GRASS2 glColor4f(1.0f,1.0f,1.0f,1.0f); glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex3f(-100.0f, -100.0f, -100.0f); // 纹理和四边形的左下 glTexCoord2f(1.0f, 0.0f); glVertex3f( 100.0f, -100.0f, -100.0f); // 纹理和四边形的右下 glTexCoord2f(1.0f, 1.0f); glVertex3f(100.0f, 100.0f, -100.0f); // 纹理和四边形的右上 glTexCoord2f(0.0f, 1.0f); glVertex3f(-100.0f, 100.0f, -100.0f);

西南交通大学本科毕业设计(论文) // 纹理和四边形的左上 glEnd(); ... } 编译运行后的结果如下图 4-10 所示:

第 48 页

图4-10

题图后的仿真场景效果图

4.4.2 设置光照
从图 5-7 可以看出,如果能使场景变的亮一些效果肯定很好,这是因为我们还 没有设置光照的效果,下面我们对场景进行光照设置。首先让我们了解一下 OpenGL 中光照的知识。 在观察物体的表面时,人眼睛对颜色的感知取决于进入眼内视维细胞的光子的 能量分布。 这些光子来自于光源或发光物体, 一些被表面吸收, 而另一些则被反射。 而且,不同表面的反射特性的差别是非常大的:对于较光滑的表面,入射光线在某 个方向上将完全反射,在另外的方向上则完全散射。大部分表面处于全反射与散射 之间。OpenGL 近似地将光线分解成红、绿、蓝三种成分。光源的颜色取决于它所发 出的红、绿、蓝光的和。表面的材质特征则是由这个表面在各个方向反射的红、绿、

西南交通大学本科毕业设计(论文)

第 49 页

蓝光的百分比决定。虽然 OpenGL 的光照方程仅是一种近似算法,但与实际是十分 接近的,并且可以达到很快的计算速度。在 OpenGL 的光照模型中,场景中的光线 来自不同光源,这些光源的开关相互独立,有的从特定的方向、位置射出,还有一 些在场景中散射。 OpenGL 的光照模型将光照分成四个独立的成分: 发射光, 环境光, 散射光,镜面反射光。四种成分独立地计算,然后叠加到一起。发射光是最简单的, 它由物体发出,并且不受任何光源的影响。背景光成分是从某个光源发出并由环境 经多次散射得到的,难以确定其最初的方向,看起来好像来自于四面八方。散射光 来自于一个固定方向,所以当光线垂直照射到物体表面上时要比斜照时亮一些。然 而,一旦光线照到表面上就均匀地在各个方向都发生散射,因此不论观察点处在哪 个位置,其亮度都是一样的。来自于特定位置与方向的任何光线都可能带有散射光 成分。镜面反射光也来自于特定方向,但它几乎全部反射到对称的方向上。尽管光 源发出的光是按单一频率分布的,但其中的环境光、散射光和镜面反射光分量是有 区别的。对光线来说,每种颜色的数值对应于它所占光强的百分比。如果光线的 R, G 和 B 值都是 1.0, 这种光就是最强的白光。 如果三个值都是 0.5, 颜色仍然是白色, 但亮度只有原来的一半,所以这种光看起来是灰色的。如果 R=G=1 而 B=0(全红 和全绿,没有蓝),此时光是黄色的。 OpenGL 的光照模型进行了这样的近似处理:材料的颜色,是由它对红、绿、蓝 光各反射百分比的叠加结果决定的。为光线指定额色成分意味着光的颜色与材料的 颜色是不同的。对村质来说,其 R、G、B 值对应着材质对这些颜色光的反射比例。 所以,若某材料 R=1,G=0.5,B=0,说明这种材质反射全部红光,一半的绿光, 不反射蓝光。换句话说,在 OpenGL 中,若光线的 RGB 值为(LR,LG,LB),材料的 RGB 值为(MR.MG,MB),如果其他的反射影响可以忽略,那么最后进入人眼中光的 RGB 值则为(LR×MR,LG×MG,LB×MB)。类似地,如果有两束光(R1,G1,B1)和(R2, G2,B2)进入人眼,OpenGL 将它们合成为(R1+R2,G1+G2,B1+B2) 下面列出的是向场景中增加光照需要的步骤: 为所有物体的顶点定义法线向量。这些法线决定了物体相对于光源的方位。 创建、 选择光源, 并为光源定位。 通过传递给函数 glLight()以参数 GL_POSITION 来指定光源的位置,并通过模型视图变换得到光源的最终位置。可以使用此函数在 场景中设置八个不同颜色的光源。此函数有三个参数,通过设置十个不同的参数, 可以得到不同的效果,如参数为 GL_AMBIENT 设置光源的环境光亮度,GL_DIFFUSE 对应光源的散射光亮度等。定义了期望的光源特征之后,便可以使用参数 GL_LIGHTING 调用函数 g]Enable(),让 OpenGL 开始执行光照计算。 创建并选择光照模型,定义全局环境光的等级、观察点的有效位置(用于光照 计算)和正面和背面是否采取相同光照计算。函数 g1LightModel()描述了光照模型

西南交通大学本科毕业设计(论文) 的参数。

第 50 页

为场景中的物体定义材料属性。一种物体的材质属性决定了它如何反射光线, 也由此决定了该物体表现出来的材质属性。 函数 glMaterial()指定用于执行光照计 算的当前材料属性。此函数可以通过设置七个不同的参数,得到不同的效果。如设 置材质的环境颜色、设置材质的散射颜色等。 本文中设置光照的代码如下: void CMyView::lm() { GLfloat lAmb[4]; GLfloat lDif[4];GLfloat lSpe[4];GLfloat lPos[4];//分别 定义了环境光、漫反射光、镜面反射光和光的位置的参数数组 GLfloat mAmb[4]; GLfloat mDif[4]; GLfloat mSpe[4]; GLfloat mEmi[4]; GLfloat mShininess;//分别定义了材质反射环境光、反射漫反射光、反射镜面 反射光、辐射光和光强度的参数数组 //对各个参数数组的初始化赋值 lAmb[0]=0.2f; lAmb[1]=0.2f;lAmb[2]=0.2f; lDif[0]=0.2f; lDif[1]=0.2f;lDif[2]=0.2f; lSpe[0]=0.5f; lSpe[1]=0.5f;lSpe[2]=0.5f; lAmb[3]=0.1f; lDif[3]=1.0f; lSpe[3]=1.0f; lPos[3]=0.0f;

lPos[0]=0.0f; lPos[1]=1000.0f;lPos[2]=-1000.0f; mAmb[0]=0.0f; mAmb[1]=0.0f;mAmb[2]=0.0f; mDif[0]=0.0f; mDif[1]=0.0f;mDif[2]=0.0f; mSpe[0]=1.0f; mSpe[1]=1.0f;mSpe[2]=1.0f; mEmi[0]=0.3f; mEmi[1]=0.3f;mEmi[2]=0.3f; mShininess=6.80f; //定义光照属性 glLightfv(GL_LIGHT1,GL_AMBIENT,lAmb); glLightfv(GL_LIGHT1,GL_DIFFUSE,lDif);

mAmb[3]=1.0f; mDif[3]=1.0f; mSpe[3]=1.0f; mEmi[3]=1.0f;

西南交通大学本科毕业设计(论文) glLightfv(GL_LIGHT1,GL_SPECULAR,lSpe); glLightfv(GL_LIGHT1,GL_POSITION,lPos); //定义材质属性 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 所示:

第 51 页

图 4-11 设置光照后仿真场景效果图

4.5

基于模型的视景仿真的实现
本节是实现基于模型的视景仿真系统的核心环节。系统中机械手的运动应该受

到指定的控制模型的控制,控制模型的任何参数的改变都应该在视景仿真系统中得 到反应。本系统的初始目标是实现控制模型对系统中机械手模型的实时控制,这需

西南交通大学本科毕业设计(论文)

第 52 页

要完成 Matlab 和 VC++的混合编程技术也就是建立一个 Matlab 和 VC++的接口来实 现 Matlab 中的控制模型对 OpenGL 中的机械手模型运动的实时控制。但是由于时间 的限制,在本系统中未能实现这一技术。本文实现了通过控制模型生成的数据来控 制机械手模型的运动,相比前一技术缺乏实时性控制,但是却相应的扩大了应用范 围,因为本系统读入的数据没有模型的限制,可以读入任何模型导入的数据。 本系统实现的技术思路是首先获取控制模型导出的数据(这个数据可以以不同 的文件形式给出,本系统采用的是文本文件(TXT)的格式) ,然后将获取的数据以 数组的形式存储在计算机的内存里,在机械手模型运动的时候调用这些数据。

4.5.1 数据的读取
本系统采用的数据文件为 TXT 格式,文件中存储了每个时刻三个关节角的度数 值,读取实现思路是先定义一个数组结构体,然后读取数据并存进数组里。代码如 下: //先定义一个结构体,存放角度值 typedef struct{ float rot1;//? 1 float rot2;//? 2 float rot3;//? 3 }HHand; HHand hand[110];//存储各个时刻对应三个角度的值,可以根据时间步数改变 容量大小 然后我们要实现读取文件对话框的建立和数据文件的读取工作:首先我们要建 立读取菜单按钮:1) ( 选择页面 Resource View,双击 Menu 文件夹中的 IDR_MAINFRAME 工具栏显示图如图4-12所示。单击工具栏最右边的灰色图标,创建一个新的图标工 具。

西南交通大学本科毕业设计(论文)

第 53 页

图 4-12 工具栏页面

选择新建的图标工具,选择菜单“查看”,在弹出的对话框中按图 4-13 所示进 行操作。

图 4-13 工具栏属性页面

西南交通大学本科毕业设计(论文)

第 54 页

选择新建的图标工具,选择菜单“建立类向导” ,在弹出的对话框中按图 5-14 所示进行操

图 4-14 工具栏命令向导页面

在生成的消息响应函数 OnFileOpen1()添加代码完成读取文件对话框的显示和 数据的读取。代码如下: void CMyView::OnFileOpen1() { CFileDialog dlg(TRUE,_T("txt"),NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT,_T("(*.txt)|*.txt|")); //建立打开对话框 if ( dlg.DoModal()!=IDOK ) { return; } CComboBox m_cFileList; m_cFileList.AddString( dlg.GetPathName( ) ); //列表添加文件路径 ShellExecute(NULL, _T("open"), _T(dlg.GetPathName( )), NULL, NULL, SW_SHOW);//显示打开的文件 FILE *fp,*fw;//定义文件指针 fp=fopen(dlg.GetPathName( ),"rb");//以读的方式打开所选择的数据文 件 int i; for(i=0;i<101;i++)

西南交通大学本科毕业设计(论文) { //fseek(fp,0L,1); fscanf(fp,"%f",&hand[i].rot1);//读取? 1 的值 fseek(fp,3L,1);//向后移动 4 个空格 fseek(fp,3L,1);//向后移动 4 个空格 fseek(fp,2L,1);//移到下一行开始处 } fscanf(fp,"%f",&hand[i].rot2);//读取? 2 的值 fscanf(fp,"%f",&hand[i].rot3);//读取? 3 的值

第 55 页

fw=fopen("temp.txt","w");以写的方式打开文件,若没有则新建一个 for(i=0;i<101;i++) { fprintf(fw,"%f,%f,%f\n",hand[i].rot1,hand[i].rot2,hand[i].rot3); //将读入数组中的数据在文件中打印出来,检测是不是正确读取的数据 } fclose(fp);//关闭文件指针 } 这样就将数据从文件中读入到数组中存储在计算机内存中以供下一步调用来 控制机械手的运动。

4.5.2 利用读取的数据控制机械手的运动
首先我们要建立时间定时器的消息响应函数 OnTimer(),并在 OnCreate()里加 入 SetTimer(1, 20, NULL);设置时间定时器, OnDestroy()里加如 KillTimer(1); 在 关闭时间定时器。 然后我们要将实现用数组变量来控制机械手模型三个自由度的运动即腰部、大 臂和小臂的转动。在前面的建模过程中我们已经将数组变量加入到控制模型变化的 坐标变换当中来实现对机械手模型三个转动的控制,代码为: void CMyView::manipulator() { ... glRotatef(hand[i].rot1,0.0,1.0,0.0);//实现对腰部转动的变量控制 ... glRotatef(hand[i].rot2,0.0,0.0,1.0);//实现对大臂转动的变量控制 ...

西南交通大学本科毕业设计(论文)

第 56 页

glRotatef(hand[i].rot3-hand[i].rot2,0.0,0.0,1.0);//实现对小臂转动的 变量控制 ... } 建立控制机械手运动的工具按钮,建立方法和菜单按钮相似,这里不再做详细 介绍。 定义一个布尔变量 key 和一个整型变量 congtrolkey 来控制运动的开始和停 止,分别初始化为 false 和 0 。然后在工具按钮消息响应函数 OnBUTTONmove()和 时间消息响应函数 OnTimer()里控制变量的变化来实现控制机械手的运动。代码如 下: void CMyView::OnBUTTONmove() { key=true;//控制运动的总开关 controlkey++;//变量累加 } void CMyView::OnTimer(UINT nIDEvent) { if(i==101) {i=0;key=false;}//如果读到数组最后一组值即机械手运动到最后则回复 到初始状态,停止运动 else if (((controlkey%2)!=0)&&key){i++;}//实现在运动过程中点击控制 按钮运动停止,再点击控制按钮又开始运动的控制 Invalidate(FALSE); CView::OnTimer(nIDEvent); } 这样我们就实现了通过控制模型生成的数据来控制机械手模型的运动的过程。 由于没有找到合适的控制模型,所以本文通过五次多项式轨迹规划改变不同的边界 条件产生不同的空间运动轨迹对仿真系统进行了验证. 为了简便,本文定义机械手运动都从同一初始位置开始运动,首先点击“读取 机械手数据”选择文件,弹出一个对话框如图 4-15 所示:

西南交通大学本科毕业设计(论文)

第 57 页

图 4-15 选择数据文件

选择数据文件“shujv1.txt” ,点击绿色的机械手运动控制按钮,机械手按照 文件中的数据开始运动,在 Matlab 中绘制的小臂末端的空间运动轨迹图和系统中 运动仿真最后时刻效果图分别如图 4-16 和 4-17 所示:

图 4-16 按第一组数据运动的空间轨迹图

西南交通大学本科毕业设计(论文)

第 58 页

图 4-17 读取“shujv1.txt”

选择数据文件“shujv2.txt” ,空间轨迹图和仿真运动最后效果图分别如图 4-18、4-19 所示:

图 4-18 按第二组数据运动的空间轨迹图

西南交通大学本科毕业设计(论文)

第 59 页

图 4-19 读取“shujv2.txt”

选择数据文件“shujv3.txt” ,空间轨迹图和仿真运动最后效果图分别如图 4-20、4-21所示:

西南交通大学本科毕业设计(论文)
图 4-19 按第二组数据运动的空间轨迹图

第 60 页

图 4-20 读取“shujv3.txt”

对比空间轨迹图和系统仿真运动的过程,系统准确的按照预定的轨迹进行了仿 真, 验证了系统的准确性和稳定性, 从而说明系统实现了基于模型数据的运动仿真。 读取的三组数据和对应的多项式附录。

4.5.3 实现观察视角的交互式键盘控制
原理和机械手运动的键盘控制一样,将相机函数的参数设置成变量,通过键盘 消息响应函数来控制各个参数的变化从而实现观察视角的键盘控制。部分代码如 下: 视角函数: 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)控制观察的方向 键盘消息响应函数代码: void CMyView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { switch(nChar)

西南交通大学本科毕业设计(论文) { case VK_UP://方向键上键,相机右转 { cam.y++; cam.x++; Invalidate(false); break; } case VK_DOWN://方向键下键,相机左转 { cam.y--; cam.x--; Invalidate(false); break; } case VK_LEFT://方向键左键,相机拉远 { cam.z++; Invalidate(false); break; } case VK_RIGHT://方向键右键,相机靠近 { cam.z--; Invalidate(false); break; }} CView::OnKeyDown(nChar, nRepCnt, nFlags); }

第 61 页

改变相机位置可以得到不同的效果。拉近相机和左转相机的效果分别如图如图 4-19 和 4-20 所示:

西南交通大学本科毕业设计(论文)

第 62 页

图 4-19 拉近相机

图 4-20 左转相机

至此我们完成了基于模型的视景仿真系统的设计与实现。

西南交通大学本科毕业设计(论文)

第 63 页





本文以简单的三自由度机器人为研究对象,通过 ADAMS 虚拟样机建模,建立起 运动学方程,进行工作路径的轨迹规划,对机器人进行运动学仿真和分析。主要进 行了以下几个方面的工作: (1)进行了运动学分析。按照通用的 D-H 法则,通过矩阵变换,得到了机器人 的正运动学方程和初始坐标,推导出机器人逆运动学的关节角度。 (2)运用 ADAMS 虚拟样机软件对机器人进行建模。通过模块化设计和布尔运算, 对机器人模型进行了结构优化。 (3)进行了轨迹规划和仿真。通过 ADAMS 中内嵌的 Step 和 Step5 函数,分别进 行了三次多项式和五次多项式的轨迹规划,在 ADAMS 的后处理程序中对规划后的曲 线进行了仿真分析。 (4)利用 Visual C++6.0 和 OpenGL 导入并建立了机械手模型, 建立了仿真场景, 实现了基于模型数据的运动仿真,并实现了视角的交互式键盘控制。 通过上述工作,我们得到以下结论: (1)通过 D-H 法则建立的机器人正逆运动学方程是正确的,能够计算出机器人 在任意角度时的坐标和任意位置的关节角度。 (2)ADAMS 虚拟样机软件可以进行机器人三维建模,并对其进行运动学分析,运 动学分析是针对相关设计点的运动参数进行的。ADAMS 软件强大的函数功能可以实 现所需要的参数关联,后处理程序中的仿真功能可以实现机器人的运动学和动力学 分析。 (3)轨迹规划中我们可以看出三次多项式轨迹规划只能规划位移和速度,而五 次多项式规划可以规划位移,速度和加速度,规划效果优于前者。这是因为五次多 项式轨迹规划的边界条件中包含了加速度信息, 因此我们可以推断: 规划次数越高, 效果越好。 (4)VC++6.0 和 OpenGL 能够很好的实现可视化视景仿真系统的开发,功能扩展 性很强,能够很好的实现交互式仿真,实现对模型的实时控制。 后续工作展望: (1)通过对简单的三自由度机器人运动学分析,我们可以进行复杂的机器人运 动学推导,比如六自由度关节机器人的运动学分析。 (2)在运动学分析后, 可以进行动力学分析, 通过 ADAMS 和 MATLAB 的联合仿真, 对机器人关节的驱动进行控制。
【14】

(3)本文仅对机器人进行了三次多项式和五次多项式轨迹规划,我们还可以尝 试关节坐标空间和直角坐标空间的其它轨迹规划方法。

西南交通大学本科毕业设计(论文)

第 64 页

(4)由于时间关系,本文只是实现了视景仿真系统的简单建模和基于模型数据 的运动仿真,模型建立很粗糙,场景材质、光照等设置不是很理想,还具有很大的 改进空间,比如还可以通过 Matlab 和 VC++混合编程实现控制模型对机械手模型的 实时控制等。

西南交通大学本科毕业设计(论文)

第 65 页





本论文是在唐猛老师和熊鹰老师的精心指导下完成的,二位老师不仅在论文内 容上给了我诸多指导,更重要的是他们教会了我一种研究问题的方法,那就是从总 体上着手,在细微处落笔。他们清晰的研究思路,严谨的治学态度,言传身教,让 我受益匪浅。在此,特向唐老师和熊老师表示真挚的感谢! 同时,机械学院的扈志远、严心涛同学和王洁红师兄给我了很大帮助,他们的 热情和无私是交大人留给我最美的回忆! 最后,我要向所有关心过我帮助过我的亲人,师长,同学致谢,是你们的关爱 让我走过了象牙塔的日子,走到了现在。无论以后的天空有多么阴霾,我都会看到 你们给我的阳光! 感谢交大,感恩人生!

西南交通大学本科毕业设计(论文)

第 66 页


机械手数据
初始位置(0,45,0) ; 终止位置 1(-180,-45,-90) ; 终止位置 2(-180,-90,45) ; 终止位置 3(-180,15,-30) ; 第一组多项式:



?

1

(t ) ? 5t 2 ? 17.4t 3 ? 4.92t 4 ? 0.3856 t 5

?

2

(t ) ? 5t 2 ? 6.6t 3 ? 1.68t 4 ? 0.1264 t 5
3

?
第二组多项式:

(t ) ? 5t 2 ? 10.2t 3 ? 2.76t 4 ? 0.2128 t 5

?

1

(t ) ? 5t 2 ? 17.4t 3 ? 4.92t 4 ? 0.3856 t 5

?

2

(t ) ? 5t 2 ? 10.2t 3 ? 2.76t 4 ? 0.2128 t 5 (t ) ? 5t 2 ? 0.6t 3 ? 0.48t 4 ? 0.0464 t 5

?
? ?
?1
0.0000 0.0104 0.0331 0.0562 0.0685 0.0595 0.0191 -0.0617 -0.1916 -0.3784 -0.6295 -0.9516

3

第三组多项式:

?

1

(t ) ? 5t 2 ? 17.4t 3 ? 4.92t 4 ? 0.3856 t 5

2

(t ) ? 5t 2 ? 1.8t 3 ? 0.24t 4 ? 0.0112 t 5 (t ) ? 5t 2 ? 5.4t 3 ? 1.32t 4 ? 0.0976 t 5

3

第一组数据:

?2
0.0000 0.0117 0.0436 0.0911 0.1498 0.2158 0.2851 0.3541 0.4193 0.4776 0.5261 0.5618

?3
0.0000 0.0112 0.0401 0.0795 0.1227 0.1637 0.1964 0.2155 0.2157 0.1923 0.1409 0.0573

西南交通大学本科毕业设计(论文)
-1.3508 -1.8325 -2.4017 -3.0629 -3.8199 -4.6761 -5.6343 -6.6968 -7.8656 -9.1420 -10.5270 -12.0212 -13.6246 -15.3369 -17.1575 -19.0853 -21.1188 -23.2563 -25.4956 -27.8345 -30.2700 -32.7992 -35.4188 -38.1253 -40.9148 -43.7833 -46.7265 -49.7400 -52.8192 -55.9592 -59.1550 -62.4016 -65.6937 -69.0258 -72.3926 -75.7884 -79.2077 -82.6447 -86.0938 -89.5490 -93.0048 -96.4552 -99.8946 -103.3172 -106.7172 -110.0891 -113.4273 -116.7264 -119.9808 -123.1854 -126.3351 -129.4248 -132.4497 -135.4052 -138.2867 -141.0901 -143.8113 0.5823 0.5852 0.5683 0.5297 0.4675 0.3802 0.2662 0.1244 -0.0464 -0.2471 -0.4785 -0.7412 -1.0357 -1.3623 -1.7213 -2.1126 -2.5363 -2.9922 -3.4798 -3.9990 -4.5490 -5.1292 -5.7390 -6.3774 -7.0436 -7.7366 -8.4553 -9.1984 -9.9648 -10.7532 -11.5621 -12.3902 -13.2360 -14.0979 -14.9744 -15.8640 -16.7648 -17.6753 -18.5938 -19.5185 -20.4477 -21.3797 -22.3127 -23.2450 -24.1749 -25.1006 -26.0203 -26.9324 -27.8352 -28.7270 -29.6063 -30.4714 -31.3208 -32.1530 -32.9666 -33.7601 -34.5323 -0.0621 -0.2207 -0.4217 -0.6678 -0.9616 -1.3053 -1.7006 -2.1493 -2.6528 -3.2121 -3.8280 -4.5012 -5.2320 -6.0205 -6.8667 -7.7702 -8.7305 -9.7469 -10.8184 -11.9441 -13.1226 -14.3525 -15.6323 -16.9600 -18.3340 -19.7522 -21.2123 -22.7123 -24.2496 -25.8218 -27.4264 -29.0607 -30.7219 -32.4072 -34.1138 -35.8388 -37.5791 -39.3318 -41.0938 -42.8620 -44.6334 -46.4049 -48.1734 -49.9358 -51.6890 -53.4301 -55.1560 -56.8637 -58.5504 -60.2132 -61.8492 -63.4559 -65.0305 -66.5704 -68.0733 -69.5368 -70.9586

第2页

西南交通大学本科毕业设计(论文)
-146.4464 -35.2819 -148.9918 -36.0076 -151.4444 -36.7085 -153.8009 -37.3834 -156.0587 -38.0313 -158.2153 -38.6515 -160.2686 -39.2432 -162.2167 -39.8056 -164.0583 -40.3383 -165.7921 -40.8407 -167.4176 -41.3126 -168.9344 -41.7536 -170.3425 -42.1637 -171.6425 -42.5430 -172.8353 -42.8915 -173.9222 -43.2096 -174.9051 -43.4977 -175.7863 -43.7563 -176.5686 -43.9862 -177.2553 -44.1884 -177.8503 -44.3637 -178.3579 -44.5136 -178.7831 -44.6392 -179.1313 -44.7422 -179.4085 -44.8243 -179.6215 -44.8875 -179.7774 -44.9338 -179.8842 -44.9655 -179.9504 -44.9852 -179.9851 -44.9955 -179.9981 -44.9994 -180.0000 -45.0000 第二组数据 -72.3367 -73.6691 -74.9538 -76.1892 -77.3738 -78.5061 -79.5850 -80.6093 -81.5783 -82.4912 -83.3476 -84.1472 -84.8900 -85.5762 -86.2061 -86.7804 -87.3001 -87.7663 -88.1804 -88.5440 -88.8593 -89.1284 -89.3538 -89.5386 -89.6857 -89.7988 -89.8817 -89.9384 -89.9736 -89.9921 -89.9990 -90.0000

第 68 页

?1
0.0000 0.0104 0.0331 0.0562 0.0685 0.0595 0.0191 -0.0617 -0.1916 -0.3784 -0.6295 -0.9516 -1.3508 -1.8325 -2.4017 -3.0629 -3.8199 -4.6761 -5.6343 -6.6968 -7.8656 -9.1420

?2
0.0000 0.0112 0.0401 0.0795 0.1227 0.1637 0.1964 0.2155 0.2157 0.1923 0.1409 0.0573 -0.0621 -0.2207 -0.4217 -0.6678 -0.9616 -1.3053 -1.7006 -2.1493 -2.6528 -3.2121

?3
0.0000 0.0126 0.0506 0.1143 0.2040 0.3200 0.4624 0.6313 0.8266 1.0483 1.2964 1.5707 1.8710 2.1970 2.5484 2.9248 3.3258 3.7510 4.1999 4.6719 5.1664 5.6829

西南交通大学本科毕业设计(论文)
-10.5270 -12.0212 -13.6246 -15.3369 -17.1575 -19.0853 -21.1188 -23.2563 -25.4956 -27.8345 -30.2700 -32.7992 -35.4188 -38.1253 -40.9148 -43.7833 -46.7265 -49.7400 -52.8192 -55.9592 -59.1550 -62.4016 -65.6937 -69.0258 -72.3926 -75.7884 -79.2077 -82.6447 -86.0938 -89.5490 -93.0048 -96.4552 -99.8946 -103.3172 -106.7172 -110.0891 -113.4273 -116.7264 -119.9808 -123.1854 -126.3351 -129.4248 -132.4497 -135.4052 -138.2867 -141.0901 -143.8113 -146.4464 -148.9918 -151.4444 -153.8009 -156.0587 -158.2153 -160.2686 -162.2167 -164.0583 -165.7921 -3.8280 -4.5012 -5.2320 -6.0205 -6.8667 -7.7702 -8.7305 -9.7469 -10.8184 -11.9441 -13.1226 -14.3525 -15.6323 -16.9600 -18.3340 -19.7522 -21.2123 -22.7123 -24.2496 -25.8218 -27.4264 -29.0607 -30.7219 -32.4072 -34.1138 -35.8388 -37.5791 -39.3318 -41.0938 -42.8620 -44.6334 -46.4049 -48.1734 -49.9358 -51.6890 -53.4301 -55.1560 -56.8637 -58.5504 -60.2132 -61.8492 -63.4559 -65.0305 -66.5704 -68.0733 -69.5368 -70.9586 -72.3367 -73.6691 -74.9538 -76.1892 -77.3738 -78.5061 -79.5850 -80.6093 -81.5783 -82.4912 6.2206 6.7788 7.3569 7.9541 8.5696 9.2025 9.8520 10.5172 11.1974 11.8914 12.5984 13.3175 14.0476 14.7878 15.5371 16.2945 17.0589 17.8294 18.6048 19.3842 20.1665 20.9507 21.7358 22.5207 23.3043 24.0857 24.8638 25.6377 26.4063 27.1686 27.9237 28.6707 29.4085 30.1364 30.8533 31.5585 32.2511 32.9302 33.5952 34.2452 34.8795 35.4975 36.0984 36.6817 37.2468 37.7932 38.3203 38.8278 39.3151 39.7821 40.2283 40.6536 41.0577 41.4404 41.8018 42.1417 42.4603

第 69 页

西南交通大学本科毕业设计(论文)
-167.4176 -168.9344 -170.3425 -171.6425 -172.8353 -173.9222 -174.9051 -175.7863 -176.5686 -177.2553 -177.8503 -178.3579 -178.7831 -179.1313 -179.4085 -179.6215 -179.7774 -179.8842 -179.9504 -179.9851 -179.9981 -180.0000 -83.3476 -84.1472 -84.8900 -85.5762 -86.2061 -86.7804 -87.3001 -87.7663 -88.1804 -88.5440 -88.8593 -89.1284 -89.3538 -89.5386 -89.6857 -89.7988 -89.8817 -89.9384 -89.9736 -89.9921 -89.9990 -90.0000 42.7575 43.0336 43.2888 43.5233 43.7377 43.9321 44.1073 44.2637 44.4020 44.5229 44.6273 44.7161 44.7901 44.8505 44.8985 44.9352 44.9620 44.9803 44.9916 44.9975 44.9997 45.0000

第 70 页

第三组数据:

?1
0.0000 0.0104 0.0331 0.0562 0.0685 0.0595 0.0191 -0.0617 -0.1916 -0.3784 -0.6295 -0.9516 -1.3508 -1.8325 -2.4017 -3.0629 -3.8199 -4.6761 -5.6343 -6.6968 -7.8656 -9.1420 -10.5270 -12.0212 -13.6246 -15.3369 -17.1575 -19.0853 -21.1188 -23.2563

?2
0.0000 0.0123 0.0482 0.1065 0.1860 0.2853 0.4033 0.5389 0.6908 0.8581 1.0396 1.2344 1.4414 1.6597 1.8883 2.1264 2.3730 2.6274 2.8887 3.1560 3.4288 3.7062 3.9875 4.2722 4.5594 4.8486 5.1393 5.4308 5.7225 6.0141

?3
0.0000 0.0118 0.0447 0.0949 0.1589 0.2332 0.3147 0.4003 0.4872 0.5728 0.6544 0.7300 0.7971 0.8538 0.8983 0.9289 0.9439 0.9420 0.9218 0.8823 0.8224 0.7412 0.6380 0.5122 0.3631 0.1904 -0.0061 -0.2268 -0.4716 -0.7406

西南交通大学本科毕业设计(论文)
-25.4956 -27.8345 -30.2700 -32.7992 -35.4188 -38.1253 -40.9148 -43.7833 -46.7265 -49.7400 -52.8192 -55.9592 -59.1550 -62.4016 -65.6937 -69.0258 -72.3926 -75.7884 -79.2077 -82.6447 -86.0938 -89.5490 -93.0048 -96.4552 -99.8946 -103.3172 -106.7172 -110.0891 -113.4273 -116.7264 -119.9808 -123.1854 -126.3351 -129.4248 -132.4497 -135.4052 -138.2867 -141.0901 -143.8113 -146.4464 -148.9918 -151.4444 -153.8009 -156.0587 -158.2153 -160.2686 -162.2167 -164.0583 -165.7921 -167.4176 -168.9344 -170.3425 -171.6425 -172.8353 -173.9222 -174.9051 -175.7863 6.3049 6.5946 6.8826 7.1686 7.4521 7.7327 8.0102 8.2841 8.5542 8.8201 9.0816 9.3384 9.5903 9.8371 10.0785 10.3145 10.5447 10.7691 10.9876 11.2000 11.4063 11.6062 11.7999 11.9872 12.1681 12.3426 12.5106 12.6722 12.8273 12.9760 13.1184 13.2544 13.3842 13.5078 13.6253 13.7368 13.8423 13.9421 14.0361 14.1245 14.2076 14.2852 14.3578 14.4253 14.4879 14.5459 14.5993 14.6484 14.6933 14.7341 14.7712 14.8046 14.8346 14.8613 14.8849 14.9056 14.9237 -1.0337 -1.3506 -1.6911 -2.0548 -2.4412 -2.8499 -3.2802 -3.7314 -4.2029 -4.6938 -5.2032 -5.7303 -6.2740 -6.8334 -7.4074 -7.9948 -8.5947 -9.2057 -9.8267 -10.4565 -11.0938 -11.7373 -12.3858 -13.0380 -13.6925 -14.3481 -15.0035 -15.6574 -16.3084 -16.9553 -17.5968 -18.2317 -18.8587 -19.4766 -20.0843 -20.6806 -21.2644 -21.8346 -22.3902 -22.9303 -23.4538 -23.9601 -24.4481 -24.9172 -25.3667 -25.7959 -26.2044 -26.5916 -26.9572 -27.3009 -27.6224 -27.9217 -28.1986 -28.4533 -28.6860 -28.8968 -29.0863

第 71 页

西南交通大学本科毕业设计(论文)
-176.5686 -177.2553 -177.8503 -178.3579 -178.7831 -179.1313 -179.4085 -179.6215 -179.7774 -179.8842 -179.9504 -179.9851 -179.9981 -180.0000 14.9392 14.9525 14.9636 14.9728 14.9803 14.9863 14.9909 14.9943 14.9967 14.9983 14.9993 14.9998 15.0000 15.0000 -29.2549 -29.4032 -29.5319 -29.6420 -29.7343 -29.8101 -29.8705 -29.9170 -29.9512 -29.9746 -29.9891 -29.9967 -29.9996 -30.0000

第 72 页

西南交通大学本科毕业设计(论文)

第 73 页

参考文献
[1] 原魁.工业机器人发展现状与趋势.现代零部件,2007 年第 1 期 [2] 张杨林.国内工业机器人市场及发展趋势.大众科技,2006 年第 6 期 [3] 刘远江.中国工业机器人市场调查.机器人技术与应用,2005 年第 3 期 [4] 宋健.基于 ADAMS 的虚拟样机技术研究综述.潍坊学院学报,2006 年 11 月,第六卷第 6 期 [5] (美)Saeed B.Niku .机器人学到导论.孙富春,朱纪洪,刘国栋.电子工业出版社, [6] (美)John J.Craig.机器人学导论.贠超.机械工业出版社,2006.6 [7] 杨玉维.3-RRRP 并联机器人运动学研究与仿真. [研究生学位论文]: 天津理工大学机械设 计系,2005 年 3 月 [8] 李增刚编著.ADAMS 入门详解与实例.国防工业出版社,2006.4 [9] 范建成,熊光明,周明飞.MSC.ADAMS 应用与提高.机械工业出版社, 系,2007.5 [11] 孙晋永.复指数变换法在工业机器人轨迹规划中的应用研究.[硕士学位论文]: 兰州理工大 学机械电子系,2003.6 [12] 于澎.工业机器人虚拟样机与仿真控制系统研究.[硕士学位论文]: 合肥工业大学机械设计 系,2007.5 [13] 杜百超.基于虚拟样机技术的工业机器人轨迹规划及仿真.[硕士学位论文]: 吉林大学机械 电子系,2007.5 [14] 费向海.焊接机器人轨迹规划.[硕士学位论文]: 辽宁工学院机械电子系,2007.3 [15] 宋伟刚.机器人学—运动学、动力学与控制.科学出版社,2007.10 [16] 郭兆荣.[Visual C++ OpenGL]应用程序与开发.人民邮电出版社,2006.12 [17] (美)Richard S. Wright,Jr..OpenGL 超级宝典.人民邮电出版社,2001.6 [18] 万继祥.模块化四自由度机械手的仿真与控制.[硕士学位论文]: 山东理工大学机械电子 系,2008.6 2006.9 2004.1

[10] 姜爽.差分进化算法在机器人轨迹规划中的应用 .[硕士学位论文]: 吉林大学机械电子

西南交通大学本科毕业设计(论文)

第 74 页

实习报告
09 年的 4 月 14 日,一个阳光明媚的日子,在王老师的带领下,我们踏上了去重 庆的列车。一路上那个我们都很兴奋,也许是因为毕业设计难得的放松机会,也许是 对毕业实习的好奇,或许是年青人血液中流淌的本来就是兴奋的血液。 随着火车的汽笛声响起, 4 个多小时的短暂旅程宣告了结束,我们到了重庆北 站。公司派来的接待人员就是上一届的师兄,接我们的大巴车早已经在车站等候,一 切是那么的顺利,公司的良好印象已经在我们的印象中产生。 重庆的山城的称呼确实名不虚传,一路上大巴车如过山车一样时上时下,让我们 这些已经习惯了平原生活的人直呼过瘾。在车上我们尽情的享受重庆的美景,快乐的 谈笑,不知不觉间已经到达了实习的最终目的地——重庆鑫源摩托车有限公司。 不同的接待人员,同样的笑容,这似乎是鑫源的特色!师兄把我们介绍给了公司 安排的另外一名接待人员,一个很和蔼的大哥。他向我们简要的介绍了一下公司的情 况,以及我们的食宿安排,当然少不了每次实习都必须进行的安全教育!在他的帮助 下,我们顺利的安顿了下来。他非常关心我们的安全,一直在强调说过马路要小心, 不要斜着走,要直走,因为重庆的车都开得很快!虽然都已经是成年人,但是在他面 前却感觉自己还是一个小孩子,所以我们都很认真的记住了他的话。 晚上自由安排,可是由于公司所在地是高新区,四处都还很荒凉,所以大部人还 是安排了在宿舍看电视。重庆的美女和美食素来是很文明的,这一点当天晚上我们就 体验到了,虽然是在郊区,可是晚饭吃的火锅还是很有味道,而且还很实惠,同时还 有辣妹子服务员热情的服务,一顿饭下来大家都很兴奋,不知道是由于重庆的火锅太 辣还是重庆的美女太热情。 刚到一个地方一般都没有睡懒觉的习惯,第二天早上很早的就起床了!轻轻的穿 好鞋,一个人提前到了公司!学生就是学生,虽然感觉自己已经很早,可是来到公司 的时候看到好多员工已经到了公司。把自己当成他们中的一员,跟随他们到员工食堂 吃了早饭。公司考虑到我们还是学生,所以集合的时间放的很晚,吃过早饭还没见几 个同学出来。一个人在公司里随便逛了一下,听着公司的广播,看着员匆忙走过的身 影,忽然有点向往那种忙碌充实的生活。 很快大家都到了集合地点,这次接待员是一个漂亮的学姐,她生动形象的解说和 温柔可爱的笑容深深的吸引了我们,看着大家认真的样子不禁感叹美女是很有优势 哦。学姐先带我们去了公司文化展览室,在展览室里向我们介绍了公司发展的历程, 公司的风云人物,公司的整体布局和公司的文化展品。同学们都忍不住纷纷和自己喜 欢的摩托车展品留影纪念。然后从文化展览室通过参观通道我们进入了组装车间,学 姐大致向我们介绍了组装流程,各个分区工作,让我们对摩托车的组装过程有了一个

西南交通大学本科毕业设计(论文)

第 75 页

整体的了解。从组装车间出来,我们走进了鑫源的越野竞技场,这是鑫源举办摩托车 越野比赛的地方,是公司文化战略的一部分。登上看台,看着故意设置的各种障碍, 各个公司的广告牌,仿佛能闻到遗留的激烈比赛的气息,眼前好像呈现出激烈的比赛 场面,让人为之震撼。 从竞技场出来学姐带我们去了公司的另一个很有鑫源文化氛围 的地方——鑫源 75 号俱乐部。75 号是鑫源的幸运号码,因为鑫源的赛车手就是穿着 这个号码的衣服获得了一项又一项的荣誉, 鑫源也是靠着这一项有一项的荣誉打出了 自己的名声,在激烈的越野摩托车市场竞争中站稳了脚跟并不断发展壮大的。在俱乐 部优雅的环境里我们结束了上午的实习, 俱乐部的别致的布置和优雅的环境又让我们 一段狂拍,争着留影纪念,像一群没有见过世面的孩子。 吃过午饭经过短暂休息后我们又开始了下午的参观。 公司的一名技术员带我们参 观摩托车零部件的检测环节。由于我们参观的工业园区主要进行摩托车的总装工作, 所以零部件检测环节是保证产品质量的最重要的一环。在参观过程中,技术员向我们 讲解了检验环节的工作流程,需要注意的关键点,并介绍了相关检验设备的用途和简 单的操作技巧, 让我们又学了不少课外知识在参观的过程中我注意到了公司对检测过 程实行了专人负责制的效果,并在每一个检测口张贴了检测流程和检测结果报告,透 明度和及时性很强,极大的调动了员工的工作积极性,这种管理制度很值得借鉴。 16 日的上午在公司会议室汤献华副总经理为我们做了一场“企业需要什么样的 人才”的专题报告,从企业的角度向我们讲述了大学生就业难的原因。汤总原本就是 大学老师,属于学者型企业家。在报告中他向我们讲述了企业用人的标准,企业生存 的道理,企业最需要什么什么样的人才。汤总敏捷的思维,幽默风趣的讲述和深刻透 彻的剖析深深的吸引了我们。同时汤总的报告也给了我们很大的启示和帮助,让我们 学会了换位思考问题,从企业的角度看到了自己的缺点和不足。 下午我们在技术人员的带领下参观了公司的总装车间。 车间内流水线的布局让我 们第一次零距离的观察了从零部件到完整的摩托车的装配过程, 第一次观察到了整个 流水线的生产过程。在参观过程中,技术人员都很详细的介绍了装配的每一个环节, 并认真回答了同学们提出的问题。随着流水线的流动方向,我们先后参观了发动机转 配过程, 发动机检验等过程, 参观了很多高新技术检验设备, 学到了很多的课外知识。 以前在课本中了解过流水线生产的高效率,这次深切的感受到了!虽然一天参观下来 很累,但是我们还是很兴奋,因为我们收获了很多。 17 日的上午我们参观了总装车间中摩托车的检验过程。公司技术人员向我们介 绍了检验的关键环节和各种设备的用途。公司的整车检验是一个半自动化的过程,很 好的将先进的信息化技术同人的灵活性结合了起来,这给了我深刻启示。企业的目的 是盈利,先进的技术固然重要,但是还是离不开人的参与,充分的将人的灵活性同先 进的技术结合起来可是产生巨大的生产效率, 并降低了生产成本, 提高了企业竞争力。

西南交通大学本科毕业设计(论文)

第 76 页

由于参观已经接近了尾声, 中午公司为我们安排了集体午餐, 让我们感到很温暖。 下午还安排了公司篮球队和我们学生之间的篮球友谊赛。比赛进行的非常激烈,学生 队凭借技术优势先声夺人,但是企业队依靠合理的组织赢下了比赛。从公司安排的一 系列活动中我们可以感受到鑫源对人才的重视, 同时从企业生产过程和员工的状态我 们也感受到了鑫源的活力。 鑫源的管理和文化都很深入人心, 整个公司的管理很高效, 这也许是鑫源最有竞争力的东西。 参观结束后我们利用了空余时间参观了重庆的风景区,重庆不光有美女美食,美 景同样让人流连忘返。 最后公司派车将我们送到了重庆的火车站,当汽笛声响起我们踏上了归途,同样 的兴奋,却多了一份沉甸甸的收获。同时我们深深的祝福鑫源能够顺利成长。


赞助商链接
相关文章:
毕业论文附件
毕业论文附件 - 附件 1 山西师范大学现代文理学院 毕业论文与毕业设计结构格式标准 一、总则 1.指导思想 毕业论文和毕业设计是本科教学的重要内容。为加强这一工作...
毕业论文撰写的内容与要求
毕业论文撰写的内容与要求 - 毕业论文撰写的内容与要求 第一部分:论文封面(论文题目/指导老师/学生姓名/专业/班级/学 号) 论文题目应简短、明确、有概括性。通过...
毕业论文具体要求
毕业论文具体要求 - 毕业设计(论文)具体要求 要求: 1、题目自选,选题须与所学专业相关 2、认真写作,确保毕业论文质量。 3、毕业论文字数要求:3,000 字以上。...
毕业论文各要素及其写法
毕业论文各要素及其写法_文学_高等教育_教育专区。毕业论文结构毕业论文由前置和主体两部分组成,具体内容包括: ? ? ? ? ? 前置部分:封面 摘要 关键词 目录 ? ...
毕业论文指导书
毕业论文指导书 (理工类) 学专 院业 材料科学与工程 材料成型及控制工程 李元东 7 2013 秋第 6 周至 2014 春第 15 周共 30 周 2014 春第 1 周至第 15...
毕业论文周记 [1500字]
毕业论文周记 [1500字] - 1 确定选题 本周的论文任务是确定论文选题。当看到下发的论文题目的时候,一 时不知道该如何选择。经过仔细地阅读论文题目,通过自身对...
毕业论文排版要求
毕业论文排版要求_教育学_高等教育_教育专区。营销毕业文档 营销办公软件 实习报告 题目名称:跨流域调水工程水源区 XXXXXX 院系名称:经济管理学院 班学级:XXX101 ...
毕业论文指导讲座
毕业论文指导讲座物理系 09 本科班主讲人:李国良 2012.03 (一)毕业论文简介 (二)毕业论文撰写的要求 (三)毕业论文的选题原则 (四)毕业论文的写作 (五)毕业...
毕业论文1
毕业论文1_计算机软件及应用_IT/计算机_专业资料。毕业论文 学号:1245350758 河南大学 2016 届本科毕业论文 基于 JAVA 的酒店管理系统的设计与实现 The design and ...
毕业论文
宁夏医科大学继续教育学院 毕业论文(设计)题目:慢性胃炎的临床治疗 姓学专 名: 号: 业: 李莹霞 20128015352 临床医学 慢性胃炎的临床治疗作者:李莹霞 【摘要】...
更多相关文章: