基于Matlab的空间描点机器人建模与仿真报告
- 格式:doc
- 大小:427.00 KB
- 文档页数:19
第1章任务描述及需求分析1.1任务描述本文选用雅马哈公司SCARA(Selective Compliance Assembly Robot Arm) 机器人作为该系统机器人主体,同时结合所选用的工控机、雅马哈SCARA机器人控制器RXC340等控制设备,还采用红外光栅以及光栅控制器构成安全保护装置,同时选用伺服驱动器、电机、震荡送料机、DDC工业摄像机、气动夹爪和气缸等相关设备共同组成了该自动插件机器人系统,在保证产品合格率达标、操作人员安全、经济效益高的条件下,将保险片插接速度提升至每分钟20个以上,良好的满足生产工艺的需要。
本次实践主要包括两个部分,第一部分为了解自动插件机器人原理,相关硬件选型,最终绘制电气原理图。
第二部分为利用MATLAB软件进行SCARA机器人基于D-H 法建模仿真,然后进行该机器人的正逆运动学分析并绘制相关位置、速度、加速度还有轨迹规划曲线。
1.2需求分析1.2.1性能指标分析(1)生产线插接速度>=20个/min,且插接速度可调。
(2)具有1-8种颜色的保险片识别功能,并能根据保险片的颜色进行1-6工位保险盒定位插接。
(3)控制系统具有手动和半自动运行模式功能。
(4)控制系统具有启动,停止,暂停等功能。
(5)控制系统具有防触碰安全报警指示及复位功能。
(6)储料区容量满时具有暂停供料功能。
(7)控制系统可以实现脱机运行。
1.2.2功能需求目前,工业上的自动插件技术主要包括一下这几种,分别为人工插件技术,半自动插件技术和全自动插件技术。
自动插件技术的发展主要是由于,传统的人工插件工艺已经无法满足现代工业的发展需求了,而且由于人工插件需要大量人工,随着社会的发展人工成本不断上升,并且人工插件的生产效率低、且生产质量得不到有效保障,这些问题都严重制约了企业的发展。
所以设计出一款能够代替人工进行自动化插装的插件机器人是非常有必要的。
在这次实践过程中,我们设计所采用的日本雅马哈公司生产的SCARA机器人,利用该机器人分别实现硬件设备的选型,电气原理图的绘制,还有基于MATLAB软件实现该机器人的仿真、D-H法以及正逆运动学分析。
在MATLAB中进行机器人编程和仿真机器人编程和仿真在现代科技领域扮演着至关重要的角色。
随着科技的不断发展,人们对机器人的需求也越来越高。
而MATLAB作为一种强大的编程和仿真工具,为机器人领域提供了许多便捷和高效的解决方案。
在本文中,我们将探讨如何在MATLAB中进行机器人编程和仿真,并介绍一些相关应用和实例。
第一部分:MATLAB中的机器人编程基础机器人编程是指为机器人设定行为和任务,使其能够执行特定的工作。
MATLAB为机器人编程提供了丰富的函数库和工具箱,使得编程过程更加简便和高效。
1. MATLAB中的机器人模型首先,在进行机器人编程和仿真之前,我们需要定义一个机器人模型。
MATLAB中的机器人模型包括机器人的几何结构、运动学特性和动力学参数等信息。
通过使用MATLAB中的Robotic System Toolbox,我们可以方便地创建机器人模型,并对其进行各种操作和分析。
2. 机器人运动学分析机器人的运动学分析是机器人编程的重要一环。
在MATLAB中,我们可以使用Robotic System Toolbox提供的函数和工具进行机器人的运动学分析。
例如,可以使用forwardKinematics函数计算机器人末端执行器的位置和姿态,或者使用inverseKinematics函数计算关节的角度和位置。
3. 机器人路径规划路径规划是机器人编程中的核心问题之一。
在MATLAB中,我们可以利用Path Planning Toolbox提供的算法和函数,实现机器人在给定环境中的路径规划。
通过设置起始点和目标点,以及环境的障碍物信息,可以使用MATLAB中的路径规划算法自动生成机器人的轨迹,使其能够高效地避开障碍物并到达目标位置。
第二部分:机器人编程和仿真的应用案例机器人编程和仿真在许多领域都有广泛的应用。
下面将介绍两个典型的应用案例,以展示MATLAB在机器人领域的强大功能。
1. 机器人控制系统设计机器人控制系统是机器人编程中的关键环节。
使用Matlab技术进行建模和仿真的步骤引言:Matlab是一种功能强大的数学计算软件,被广泛应用于各个领域的科学研究和工程技术中。
其中,建模和仿真是Matlab应用的重要方面,它可以帮助工程师和研究人员分析和预测各种系统的行为。
本文将介绍使用Matlab技术进行建模和仿真的步骤,包括建立模型、定义参数、进行仿真和分析结果等。
一、确定建模目标在开始建模之前,首先需要明确建模的目标和需求。
例如,我们可以通过建模来分析电路、机械系统或者物理过程等。
只有明确了建模目标,才能选择合适的建模方法和工具。
二、选择合适的建模方法建模方法可以根据系统的特点和需求进行选择。
常用的建模方法包括物理建模、统计建模、数据驱动建模等。
物理建模是基于系统的物理原理和方程进行建模,统计建模是通过统计分析来描述系统的行为,数据驱动建模则是利用已有的数据来建立模型。
根据不同的情况,选择合适的建模方法至关重要。
三、建立模型在Matlab中,建立模型可以使用Simulink或者编程的方式。
Simulink是一种基于图形化界面的建模工具,可以通过拖拽组件和连接线来搭建模型。
编程的方式则可以使用Matlab脚本语言来描述系统的数学模型。
根据系统的特点和个人的喜好,选择适合自己的建模方式。
四、定义参数和初始条件在建立模型之后,需要定义参数和初始条件。
参数是影响系统行为的变量,可以通过Matlab的变量赋值来定义。
初始条件是模型在仿真开始之前系统的状态,也需要进行设定。
对于一些复杂的系统,可能需要对模型进行调优和参数敏感性分析等,以获取更加准确的结果。
五、进行仿真在模型建立并定义好参数和初始条件之后,就可以进行仿真了。
仿真是通过运行模型,模拟系统在不同条件下的行为。
Matlab提供了强大的仿真功能,可以灵活地设置仿真时间步长和仿真条件,进行数据记录和后续分析。
六、分析结果仿真完成后,需要对仿真结果进行分析。
Matlab提供了各种分析工具和函数,可以方便地对仿真数据进行处理和可视化。
机器人学课程设计基于Matlab的签名机器人建模与仿真一、课程设计问题描述 (1)1.基本要求 (1)2.实现正运动学与工作空间 (1)3.实现逆运动学轨迹规划 (1)4.自由发挥项 (1)5.附录要求 (1)二、六自由度机器人设计 (1)1.机器人的基本构型设计 (1)2.机器人的尖节与连杆参数设计 (1)三、正运动学实现与工作空间 (2)1 •建立坐标系 (2)2.建立D-H表 (3)3.分析正运动 (3)4.按摩机器人正运动学仿真结果与工作空间 (4)四、机器人逆解与奇异型分析 (5)1.机器人逆运动学与微分运动学分析 (5)2.机器人轨迹规划仿真结果 (6)五、机器人数值解法改进 (6)1-逆运动的数值解法 (6)六 ' 心得体会 (9)七、程序流程与代码附录 (9)一♦课程设计问题描述1•基本要求①设计一款六自由度机器人,要求2,3,4,5尖节中有一个是滑动矢节,其余尖节应为转动尖节。
试构想该机器人的功能,并根据功能设定机器人的介绍参数(杆件长及尖节极限);②建立机器人的正运动学模型,进行Matlab运动仿真。
(分析机器人的工作空间,制作机器人的各个运动的动画)o2.实现正运动学与工作空间①自行设计一个六自由度机器人,对其尖节建立坐标系,注意包含滑动矢节;②给出所设计的六自由度机器人的D・H参数表;③推导所设计的六自由度机器人的正运动学,写出各个齐次变换矩阵;④使也MATLAB编程,得出机器人工作空间,包含立体图和剖面图、机器人工作动画;⑤对设计的六自Lil度机器人机器的工作空间进行简单分析。
3.实现逆运动学轨迹规划①这里特征机器人末端的轨迹规划,不是尖节空间的轨迹规划;②要实现控制机器人末端在空间完成某种轨迹(如直线、圆弧•写字•画图等);③可以釆用求解逆运动的方程或者是利用微分运动;④写出详细的推导过程(公式);⑤使用MATLAB编程仿真,得到仿真动画和图片。
4.自由发挥项①机器人完整逆解(数值解);②寻找奇异点,分析奇异位型;5.附录要求①附程序流程图;②附代码。
《MATLAB与控制系统仿真》实验报告一、实验目的本实验旨在通过MATLAB软件进行控制系统的仿真,并通过仿真结果分析控制系统的性能。
二、实验器材1.计算机2.MATLAB软件三、实验内容1.搭建控制系统模型在MATLAB软件中,通过使用控制系统工具箱,我们可以搭建不同类型的控制系统模型。
本实验中我们选择了一个简单的比例控制系统模型。
2.设定输入信号我们需要为控制系统提供输入信号进行仿真。
在MATLAB中,我们可以使用信号工具箱来产生不同类型的信号。
本实验中,我们选择了一个阶跃信号作为输入信号。
3.运行仿真通过设置模型参数、输入信号以及仿真时间等相关参数后,我们可以运行仿真。
MATLAB会根据系统模型和输入信号产生输出信号,并显示在仿真界面上。
4.分析控制系统性能根据仿真结果,我们可以对控制系统的性能进行分析。
常见的性能指标包括系统的稳态误差、超调量、响应时间等。
四、实验步骤1. 打开MATLAB软件,并在命令窗口中输入“controlSystemDesigner”命令,打开控制系统工具箱。
2.在控制系统工具箱中选择比例控制器模型,并设置相应的增益参数。
3.在信号工具箱中选择阶跃信号,并设置相应的幅值和起始时间。
4.在仿真界面中设置仿真时间,并点击运行按钮,开始仿真。
5.根据仿真结果,分析控制系统的性能指标,并记录下相应的数值,并根据数值进行分析和讨论。
五、实验结果与分析根据运行仿真获得的结果,我们可以得到控制系统的输出信号曲线。
通过观察输出信号的稳态值、超调量、响应时间等性能指标,我们可以对控制系统的性能进行分析和评价。
六、实验总结通过本次实验,我们学习了如何使用MATLAB软件进行控制系统仿真,并提取控制系统的性能指标。
通过实验,我们可以更加直观地理解控制系统的工作原理,为控制系统设计和分析提供了重要的工具和思路。
七、实验心得通过本次实验,我深刻理解了控制系统仿真的重要性和必要性。
MATLAB软件提供了强大的仿真工具和功能,能够帮助我们更好地理解和分析控制系统的性能。
课程设计课程名称机器人学题目名称空间描点机器人建模仿真学生学院专业班级学号学生姓名指导教师目录1.课程设计要求 (1)2.空间描点机器人的设计 (2)2.1机器人构型及坐标 (2)2.2D-H参数表 (4)3.正运动学 (5)3.1齐次变换矩阵 (5)3.2 空间描点机器人工作空间 (6)4.几何法求逆解 (7)5.程序流程图 (8)6.总结分析 (9)7.Matlab程序附录 (10)7.1 Mov_6DOF_Rob_Lnya.m (10)7.2 DHfk6Dof_Lnya.m (12)7.3 IK_6DOF_Rob_Lnya.m (13)7.4 Build_6DOFRobot_Lnya.m (14)7.5 Erzhihua.m (14)7.6 draw_Workplace.m (15)7.7 Matrix_DH_Ln.m (16)7.8 Connect3D.m (17)1. 课程设计要求一,按照附件模板填写,要求有封面和目录,除签名处不能有手写。
二,主要内容包括下面几个部分,1,设计一款六自由度机器人,要求2,3,4,5关节中有一个是滑动关节,其余关节应为转动关节。
试构想该机器人的功能,并根据功能设定机器人的介绍参数(杆件长度及关节极限)2,建立机器人的正运动学模型,进行Matlab 运动仿真。
(分析机器人的工作空间,制作机器人各个运动的动画。
)注意事项:1)要求画出机器人的关节坐标系,列出DH 参数表,以及各个关节间的齐次变换矩阵。
2)Matlab仿真应画出工作空间的立体图和剖面图。
采用机器人产品的同学应与实际说明书的工作空间做对比。
自行设计的同学要做简单的分析讨论。
3)直接采用例程里面的三自由度机器人该部分得0 分。
3,实现逆运动学轨迹规划注意事项:1)这里特指机器人末端的轨迹规划,不是关节空间的轨迹规划。
2)要实现控制机器人末端在空间中完成某种轨迹。
(如直线,圆弧,心型,写字等)3)可以采用求解逆运动的方程或者是利用微分运动。
文章编号:100422261(2004)0120039204基于Matlab 和VR 技术的移动机器人建模及仿真Ξ葛为民1,2,曹作良2,彭商贤1(1.天津大学机械工程学院,天津300072;2.天津理工学院机械工程学院,天津300191)摘 要:利用Matlab 建立移动机器人的动力学模型,在虚拟现实(VR )环境下,实时仿真移动机器人路径跟踪的运动特性,为基于Internet 的机器人遥操作试验搭建了仿真平台.实验结果表明,虚拟模型准确地模拟了真实移动机器人的动力学特征;通过对模型的参数修改,为实现对真实机器人的最优控制和设计提供了可信的参考方案.关键词:Matlab ;虚拟现实;移动机器人;遥操作中图分类号:TP242.2 文献标识码:ADynamic modeling and simulation of mobilerobot based on matlab and VR technologyGE Wei 2min 1,2,C AO Zuo 2liang 2,PE NG Shang 2xian 1(1.School of Mechanical Eng.,T ianjin University ,T ianjin 300072,China ;2.School of Mechanical Eng.,T ianjin Institute of T echnology ,T ianjin 300191,China )Abstract :This paper proposes an approach that develops a dynam ic m odel of a m obile robot taking advantage of the M atlab.M eantime ,in a developed virtual reality environment ,the built m odel simulates the m otion of path tracking and obstacle av oidance.Furtherm ore ,it provides a platformfor experiments of m obile robot teleoperation.The experi 2mental results approve that ,the virtual m odel represents the dynam ic properties of real robot accurately and ,w ith the change of parameters of the virtual m odel ,it helps to find out the optim ization methods of controlling and designing the m obile robot indeed.K eyw ords :M atlab ;virtual reality ;m obile robot ;teleoperation 在当今工业现代化的高速发展时期,特别是自动化设备在各个领域的广泛应用,移动机器人(AG V )的应用越来越显示出它的重要性和优越性.AG V 的重要特征是它的可移动性,对这种可移动性的控制是AG V 研制的核心问题.课题组研制的T UT -1型AG V 采用3种传感器(磁导航传感器、CC D 摄像机、超声波传感器)跟踪磁条来对AG V 进行引导和避障,经过这3种传感器的信息融合,测算出AG V 的位置和运动方向作为反馈与给定的运动状态进行比较,来调整AG V 下一步的运动[1]. 在天津市自然科学基金的资助下,课题组利用T UT -1这个平台开展基于Internet 的AG V 遥操作系统的研究.为模拟AG V 的运动特性,利用Matlab 进行AG V 的动力学建模.同时,在虚拟现实环境下,利用Matlab 模型仿真AG V 的路径跟踪,研究和探索AG V 最优的控制和配置方案.1 实验和建模过程 如图1所示,T UT -1移动机器人在室内进行导航和避障的实验[2].AG V 通过磁导航传感器和CC D 摄像机跟踪磁条引导前进,当AG V 接近墙壁时,通过超声传感器引导.AG V 将实时采集到的磁条位置信息作为反馈,与给定的磁条标准位置信息进行比较来调整Ξ收稿日期:2003212225 基金项目:天津市自然科学基金资助项目(023615011) 第一作者:葛为民(1968— ),男,讲师,博士研究生 第20卷第1期2004年3月天 津 理 工 学 院 学 报JOURNA L OF TIAN JIN INSTITUTE OF TECHN OLOG Y V ol.20N o.1Mar.2004AG V 下一步的运动,达到实时控制AG V 跟踪磁条的目的.图1 TUT 21移动机器人Fig.1 TUT 21mobile robot 在仿真环境下,利用虚拟现实(VirtualReality )建模工具W orldUp 构建了AG V 运行的虚拟仿真环境场景,基于Matlab 构建AG V 仿真模型,通过模拟AG V 的动力学特性,来模拟AG V 的运动特行,通过在线修改虚拟AG V 的特性参数,来研究控制AG V 运动的最佳方案. 图2为AG V 车体结构简图[3].图2 车体结构简图Fig.2 Sketch of AGV body structure AG V 两后轮为驱动轮,分别由两台电机驱动,每台电机与后轮各构成一个速度闭环,为恒速输出.在工作载荷内,调节两电机的输入电压即可调节两后轮的转速;AG V 两前轮为随动轮,仅起到支撑车体的作用而无导向作用. 仿真算法原理是比较每一时刻AG V 所在位置的坐标值和终止坐标点的差别来计算处理两个坐标点之间的x 、y 值之间的误差,以当前AG V 姿态角和终止位置姿态角的差值作为输入量,来计算下一步AG V 的位移,也就是输出下一步AG V 到达的坐标和姿态角,从而控制AG V 向终点行进. 图3为AG V 运动学建模流程图.图3 AGV 动力学模型流程图Fig.3 F low ch art of the AGV dyamics model 现就其中的主要模块建模过程介绍如下[4]: 1)误差计算模块:本模块的作用是进行误差计算,通过比较机器人所在坐标点和终止坐标点的差别来计算处理两个坐标点之间的xy 值的误差和角度误差本模块接收5个信号(初始点的xy 坐标值,终止点的xy 坐标值,和角度值),输出两个信号(坐标值误差,角度误差). 初始点的y 坐标值与终止点的y 坐标值通过sum 模块进行求和运算,算出两个坐标值的差值,同时终止点的y 坐标值通过g oto 模块传出,同样的,对两个x 坐标值进行计算,求出差值.把计算出来的y 坐标值的差值与x 坐标值的差值通过T rig onometry 模块求出两值相除所得数的反正切函数,也就是求出倾斜角的弧度,所得值通过gain 模块与-1相乘,再通过sum 模块与角度值求出差值,所得差值通过Abs 模块求出绝对值,然后和π值比较(Relational operator 模块,如果满足条件,返回值为1),如果小于或等于π值,则直接与差值相乘,如果大于π值,则乘以2π然后和差值的绝对值相减,然后再与差值通过sign 模块所得的值相乘,最后两值相加,即为角度值的误差值. 2)PI D 控制模块:误差计算模块输出两个信号・04・天 津 理 工 学 院 学 报 第20卷 第1期 thetaError 和xyError ,两个信号分别通过PI D 控制模块,通过闭环回路控制,分别得出DeltaU 和Uavg ,计算公式为: theta-gain =theta-gain-pr 3theta-error (t -1)+theta-gain -int 3tinc 3sum (theta-error )+(theta-gain-der/tinc )3theta-error (t -1); y-gain =y -gain-pro 3y-error (t -1)+y-gain-int 3tinc 3sum (y -error )+(y-gain-der/tinc )3y -error (t -1); M ove-U (t -1)=theta-gain 3theta-gain-mult +y-gain 3y-gain-mult ; Delta-U (t -1)=sign (M ove-U (t -1))3in (abs (M ove-U (t -1)),23Max-M otor-V oltage ); U (t -1)=(23Max-M otor-V oltage -abs (Delta-U (t -1)))/2; 图4为PI D 控制在Matlab/Simulink下的仿真结构图.图4 PI D 控制模块仿真结构图Fig.4 Diagram of PI D simulation structure 3)扭矩计算模块:此模块用于计算AG V 轮子的扭矩,输入参数为“步进转速模块”的输出量、电动机本身的性能参数和减速器的传动比来算出扭矩,公式如下: Mn2(t -1)=G earbox-Ratio 3(K a 3U2(t -1)-K b 3omega-d2(t -1)); Mn1(t -1)=G earbox-Ratio 3(K a 3U1(t -1)-K b 3omega-d1(t -1)); 图5为扭矩计算在Matlab/Simulink 下的仿真模型结构图. 4)线性移动计算模块:此模块利用AG V 的物理参数,重量、轮子半径、轮子和地面摩擦力和在3)中输出的扭矩计算AG V 的速度和加速度.计算公式为: Accel-veh (t )=(Mn2(t -1)+Mn1(t -1)-23Front-Wheel-Friction (t -1)3Wheel-Radius )/(Mass-veh 3Wheel-Radius ); Vel-veh (t )=Vel-veh (t -1)+Accel-veh (t -1)3tinc ; Disp-veh (t )=Vel-veh (t )3tinc +0.53Accel-veh (t-1)3tinc^2; 图6为AG V 线性移动在Matlab/Simulink 下的仿真结构图.图5 扭矩计算模块仿真结构图Fig.5 Diagram of torque calc simulation structure图6 线性移动模块仿真结构图Fig.6 Diagram of linear motion calc simulation2 仿真运行 仿真系统运行环境为操作系统Windows2000Serv 2er ,虚拟现实插件为Micros oft VRM L Viewer 2.0,仿真建模和科学计算软件为Matlab Release13(Matlab V6.5/Simulink V5.0),运行界面见图7. 为检验虚拟AG V 的运行情况,现将磁条的位置坐标建立数据库,输入模型中作为路径跟踪的基准,用图形同时输出磁条路径和虚拟AG V 跟踪磁条运行的轨迹,用以直观比较.图8为经过一个周期运转后的轨迹图,左图为磁条基准路径,右图为虚拟AG V 的运行轨迹.・14・ 2004年3月 葛为民,等:基于Matlab 和VR 技术的移动机器人建模及仿真图7 仿真运行界面Fig.7 I nterface ofsimulation(a)(b )图8 基准路径和跟踪路径的比较Fig.8 Comp arison of the stand ardp ath and tracking p ath3 结 论 从图8的(b )图中可以看出,虚拟AG V 模型的运动轨迹基本上与(a )图的磁条轨迹相吻合,证明AG V 建模算法准确,参数选择合理,可以按照此参数配置修改真实AG V 属性各项指标,达到最优轨迹跟踪控制. 总之,利用Matlab 在虚拟现实环境下构建AG V 虚拟模型,达到了以下设计目标: 1)完成了真实AG V 与虚拟AG V 的匹配,真实反映了AG V 的运动学和动力学特征,为对AG V 的遥操作奠定了实现基础; 2)通过在线修改虚拟AG V 参数,快速检验对AG V的控制策略和最优配置的影响,同时减少了修改真实样机时间的延迟,降低了修改配置真实样机的费用.如AG V 的载荷问题,速度改变问题,传动比改变问题等造成的控制稳定性. 3)基于虚拟现实的仿真平台,由于VRM L 文件的特殊性,利于在Internet 上的运行分布式控制,故本仿真平台为基于Internet 的AG V 的遥操作进行了有益的尝试.参 考 文 献:[1] Weimin G e ,Zuolian Cao ,Shangxian Peng.Web -based teler 2obotics system in virtual reality environment [A].Proceedings of the SPIE Intelligent R obots and C om puter Vision C on ference [C].US A :SPIE Oct ,2003.[2] Weimin G e ,Zuoliang Cao ,Shangxian Peng.A T elerobotic Sys 2tem Based on Virtual Reality T echnique [A ].Proceedings of Virtual Reality Application in Industry [C ].US A :SPIE ,Oct ,2003.[3] 赵新华,曹作良.可移动机器人的运动学模型与控制原理[J ].机器人,1994,16(4):215—218.[4] 王沫然.S imulink 4建模及动态仿真[M].北京:电子工业出版社,2002.・24・天 津 理 工 学 院 学 报 第20卷 第1期 。
基于MATLAB 的七自由度机器人运动学及工作空间仿真徐小龙;高锦宏;王殿君;张立平【摘要】On the basis of the full investigation of advanced welding robot configuration design,designed a 7-DOF weld-ing robot based on UG three-dimensional modeling.The forward equation of kinematics was built based on the D-H matrix according to the body structure and motion features of 7-DOF welding robots.The workspace of manipulator was analyzed by numerical methods for random sampling.The cloud picture was completed based on MATLAB.Simulation results showed that the experimental results indicated that by using numerical methods for random sampling the analysis of weld ro-bot workspace changed smoothly without impact,which confirmed the reasonableness of structural design,and provided the basis for optimal design of robot control system and structural design of the latter.%在充分调研国内外先进机器人构型设计的基础上,设计出一种基于UG三维建模的七自由度机器人。
课程设计课程名称机器人学题目名称空间描点机器人建模仿真学生学院专业班级学号学生姓名指导教师目录1.课程设计要求 (1)2.空间描点机器人的设计 (2)2.1机器人构型及坐标 (2)2.2D-H参数表 (4)3.正运动学 (5)3.1齐次变换矩阵 (5)3.2 空间描点机器人工作空间 (6)4.几何法求逆解 (7)5.程序流程图 (8)6.总结分析 (9)7.Matlab程序附录 (10)7.1 Mov_6DOF_Rob_Lnya.m (10)7.2 DHfk6Dof_Lnya.m (12)7.3 IK_6DOF_Rob_Lnya.m (13)7.4 Build_6DOFRobot_Lnya.m (14)7.5 Erzhihua.m (14)7.6 draw_Workplace.m (15)7.7 Matrix_DH_Ln.m (16)7.8 Connect3D.m (17)1. 课程设计要求一,按照附件模板填写,要求有封面和目录,除签名处不能有手写。
二,主要内容包括下面几个部分,1,设计一款六自由度机器人,要求2,3,4,5关节中有一个是滑动关节,其余关节应为转动关节。
试构想该机器人的功能,并根据功能设定机器人的介绍参数(杆件长度及关节极限)2,建立机器人的正运动学模型,进行Matlab 运动仿真。
(分析机器人的工作空间,制作机器人各个运动的动画。
)注意事项:1)要求画出机器人的关节坐标系,列出DH 参数表,以及各个关节间的齐次变换矩阵。
2)Matlab仿真应画出工作空间的立体图和剖面图。
采用机器人产品的同学应与实际说明书的工作空间做对比。
自行设计的同学要做简单的分析讨论。
3)直接采用例程里面的三自由度机器人该部分得0 分。
3,实现逆运动学轨迹规划注意事项:1)这里特指机器人末端的轨迹规划,不是关节空间的轨迹规划。
2)要实现控制机器人末端在空间中完成某种轨迹。
(如直线,圆弧,心型,写字等)3)可以采用求解逆运动的方程或者是利用微分运动。
4)写出详细的推导过程(公式)。
5)要求有仿真截图及动画。
6)只能使用matlab 及本课程提供的例程,不能使用工具箱。
7)仅仅使用3自由度例程的同学本部分分数会很低4,自由发挥项(完成这一部分的同学才能够得到90分以上)1)机器人完整逆解的求解方式(数值解);2)寻找奇异点,分析奇异位型。
5,Matlab程序作为附录应添加在课程设计报告书的最后面。
要求在第一页附上程序流程图,注明函数调用过程,此外,程序要排好版。
2. 空间描点机器人的设计2.1机器人构型及坐标本课程设计通过matlab对一个六自由度的空间描点机器人进行设计,并对其进行仿真分析。
该机器人的第一关节为固定关节,主要是用于机器人本体的固定,第四关节为滑动关节,剩余关节为转动关节,在第六关节的连杆末端,可以带上各类的设备,在运行时带动连杆对进行空间三维描点或其他动作。
机器人的结构和大致效果示意图分别如如图1和图2所示:图1 机器人结构图图2 机器人大致效果图机器人关节坐标系和运行图如图3和图4所示:图3 机器人关节坐标系图4 机器人运行图2.2 D-H参数表根据本设计按摩机器人的各关节的坐标系及连杆长度,我们可以得到如下表1的DH 参数表。
表1 D-H参数表3正运动学3.1 齐次变换矩阵由课堂知识可易知,机器人关节n 到关节n+1的坐标变换步骤为如下的模式:()()()()1*0,0,*,0,0*nn n n n n n T A Rot a Trans d Trans a Rot n θα+==轴,轴,具体的齐次变换矩阵为:10010001001000001000100000010001001000000100010001001S 0000n n n nn n n nn n nn n n n n n n n nn n n n n n n n n C S a S C C S T d S C C C S S a C S C C S C a S S C d θθθθααααθαθαθθθαθαθθαα+-⎡⎤⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦⎣⎦--=1⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦由上述知识,以及根据第三节的D-H 参数表,可求得如下各个关节之间的齐次变化矩阵:1111112000*********01C S S C A T θθθθ⎛⎫ ⎪- ⎪== ⎪⎪⎝⎭(1) 222222300 00001800001C S S C A T θθθθ-⎛⎫ ⎪⎪== ⎪⎪⎝⎭(2)3333333340100010001000001C S C S C S A T θθθθθθ-⎛⎫⎪⎪== ⎪- ⎪⎝⎭ (3) 445100a450010000100001A T +⎛⎫⎪⎪== ⎪⎪⎝⎭(4)555555600000011000001C S S C A T θθθθ-⎛⎫ ⎪ ⎪== ⎪⎪⎝⎭(5)6666666670500500010001C S C S C S A T θθθθθθ-⎛⎫⎪⎪== ⎪⎪⎝⎭(6)3.2 空间描点机器人工作空间 通过matlab 程序仿真,我们可以得到如下结果:图5 立体图 图6 X-Y 视角图7 Y-Z 视图 图8 X-Z 视图4 几何法求逆解本课程设计所建立的机器人模型的逆解是通过几何法来进行求解的,总体的思路是第四个关节为滑动关节,第五、六关节为固定关节,所以当知道目标点的位置信息后,可以通过第四节中的各个关节间的齐次变换矩阵,求得14T ,接着的话便可以通过3自由度机器人几何法求逆解的方法求出相应的关节转动角度。
具体的公式推导过程如下:4456756755666556665656565656565656**100a45000050010000050**0010001100001000010001000105050a450S T T T T C S C S C S C S C S C C S S C S S S C C S S C C S θθθθθθθθθθθθθθθθθθθθθθθθθθ=+--⎛⎫⎛⎫⎛⎫⎪ ⎪ ⎪⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭----+++-=56565656050500011000001S S C C S C C S θθθθθθθθ⎛⎫ ⎪++ ⎪ ⎪ ⎪⎝⎭(7)由于本设计的机器人模型结构特殊,后两个关节变化角度为0,即12==0θθ,所以可得4710050a4500100001100001T ++⎛⎫⎪⎪= ⎪ ⎪⎝⎭(8)由于11234567234567*****T T T T T T T = (9)可得()1114477T T T -= (10)接着便可以通过课堂上三自由度机器人对前三个关节角度求逆解的几何法进行求解。
5 程序流程图本设计主要是两个功能,一个是通过所设计机器人末端在空间中画球,另外一个是通过所设计机器人末端对在空间中对加载的图片实现一个复现,把图片描出来。
大致的流程图如下:图9 程序流程图6 分析总结由matlab的实验结果来看,本次课程设计达到了实验的目的。
所设计空间描点机器人的工作空间也符合描点机器人工作的需要。
在本次课程设计中,虽然达到了实验要求的工作,可实现三维空间的描点,相对于前一次的大作业,本次课程设计有了很大进步。
可实现对目标点逆解的求解,在画工作空间中,采用的是通过齐次变换矩阵的计算,事先在matlab中画出工作空间点,最后再对该工作空间数组直接描点,大大提高了效率。
不过还存在着一些问题需要改进:1)在描字过程中,描出来的字并不算整齐。
2)在工作空间的X-Y视角图中,出现了一个空心点。
在本次课程设计中,通过对机器人建模,增强了对这方面的了解,对机器人有了更加全面的认识,我将会在此课程设计的基础上,进一步摸索解决上述还存在问题的原因,不断从中学习机器人的知识。
7 matlab代码附录7.1 Mov_6DOF_Rob_Lnya.m:close all;clear;num = 1ToDeg = 180/pi;ToRad = pi/180;L1=150;L2=100;L3=100;th1=180;th2=0;th3=0;d4=50;th5=0;th6=0;DHfk6Dof_Lnya(th1,th2,th3,d4,th5,th6,0);view(134,12);pause;stp=30;%%%%%%%%%%%%%%%%%%%正运动学%%%%%%%%%%%%%%%%%%%%%%%% for i=0:stp:360DHfk6Dof_Lnya(th1+i,th2,th3,d4,th5,th6,1);endfor i=0:stp:360DHfk6Dof_Lnya(th1,th2+i,th3,d4,th5,th6,1);endfor i=0:stp:360DHfk6Dof_Lnya(th1,th2,th3+i,d4,th5,th6,1);endfor i=0:60:360DHfk6Dof_Lnya(th1,th2,th3,d4+i,th5,th6,1);endfor i=360:-60:0DHfk6Dof_Lnya(th1,th2,th3,d4+i,th5,th6,1);endfor i=0:stp:360DHfk6Dof_Lnya(th1,th2,th3,d4,th5+i,th6,1);endfor i=0:stp:360DHfk6Dof_Lnya(th1,th2,th3,d4,th5,th6+i,1);endpause;%%%%%%%%%%%%%%%%%%%%%%%画球%%%%%%%%%%%%%%%%%%%%%%%% cla;global Link;point11=[];point12=[];point13=[];a=100;b=100;c=100;r=30;[x,y,z]=sphere(30);X=x*r+a;Y=y*r+b;Z=z*r+c;for i=1:1:31for j=1:1:31px=X(i,j); py=Y(i,j); pz=Z(i,j);[th1,th2,th3]=IK_6DOF_Rob_Lnya(L1,L2,L3,px,py,pz);th1=th1*ToDeg;th2=th2*ToDeg;th3=th3*ToDeg;DHfk6Dof_Lnya(th1,th2,th3,d4,th5,th6,1);point11(num) = Link(7).p(1);point12(num) = Link(7).p(2);point13(num) = Link(7).p(3);num = num + 1;plot3(point11,point12,point13,'k*');hold on;endend% %%%%%%%%%%%%%%%%%%%%描字%%%%%%%%%%%%%%%%%%%%%global Linkpoint21=[];point22=[];point23=[];num=1;ToDeg = 180/pi;load('FP.mat');[FPh,FPl]=size(FP);for i=1:FPh;[th1,th2,th3]=IK_6DOF_Rob_Lnya(L1,L2,L3,FP(i,2),100,FP(i,1));num=num+1;th1=th1*ToDeg;th2=th2*ToDeg;th3=th3*ToDeg;th4=0;th5=0;th6=0;if i==FPhDHfk6Dof_Lnya(th1,th2,th3,d4,th5,th6,0);elseDHfk6Dof_Lnya(th1,th2,th3,d4,th5,th6,1);endpoint21(num)= Link(7).p(1);point22(num)=Link(7).p(2);point23(num)=Link(7).p(3);plot3(point11,point12,point13,'k*');hold on;plot3( point21, point22, point23,'r.');hold on;endcla;plot3(point11,point12,point13,'k*');hold on;plot3( point21, point22, point23,'r.');hold on;7.2 DHfk6Dof_Lnya.mfunction pic=DHfk6Dof_Lnya(th1,th2,th3,d4,th5,th6,fcla) global LinkBuild_6DOFRobot_Lnya;radius = 10;len = 30;joint_col = 0;plot3(0,0,0,'ro');Link(2).th=th1*pi/180;Link(3).th=th2*pi/180;Link(4).th=th3*pi/180;Link(5).dx=d4;Link(6).th=th5*pi/180;Link(7).th=th6*pi/180;p0=[0,0,0]';for i=1:7Matrix_DH_Ln(i);Endfor i=2:7Link(i).A=Link(i-1).A*Link(i).A;Link(i).p= Link(i).A(:,4);Link(i).n= Link(i).A(:,1);Link(i).o= Link(i).A(:,2);Link(i).a= Link(i).A(:,3);Link(i).R=[Link(i).n(1:3),Link(i).o(1:3),Link(i).a(1:3)];Connect3D(Link(i-1).p,Link(i).p,'b',2); hold on;DrawCylinder(Link(i-1).p, Link(i-1).R * Link(i).az, radius,len, joint_col); hold on;endgrid on;axis([-600,500,-500,500,-500,500]);xlabel('x');ylabel('y');zlabel('z');drawnow;pic=getframe;if(fcla)cla;end7.3 IK_6DOF_Rob_Lnya.mfunction [th1,th2,th3]=IK_6DOF_Rob_Lnya(L1,L2,L3,px,py,pz)ToDeg = 180/pi;ToRad = pi/180;th1=atan2(py,px);P=[px,py,pz];J2=[0,0,L1];th3=pi-acos( ( L2^2+L3^2-norm(P-J2)^2)/(2*L2*L3) );th3=-th3;C1=cos(th1);S1=sin(th1);C3=cos(th3);S3=sin(th3);A=C1*px + S1*py;B=pz - L1;W1=(L2+C3*L3);W2=(L3*S3);fprintf('W1^2+W2^2=%4.2f \n',W1^2+W2^2);th2=atan2( (W1*B-W2*A),(W1*A+W2*B) );fprintf('th1=%4.2f \n',th1*ToDeg);fprintf('th2=%4.2f \n',th2*ToDeg);fprintf('th3=%4.2f \n',th3*ToDeg);7.4 Build_6DOFRobot_Lnya.mToDeg = 180/pi;ToRad = pi/180;UX = [1 0 0]';UY = [0 1 0]';UZ = [0 0 1]';Link=struct('name','Body','th',0,'dz',0,'dx',0,'alf',90*ToRad,'az',UZ ); % azLink(1)=struct('name','Base','th',0*ToRad,'dz',-200,'dx',100,'alf',0* ToRad,'az',UZ); %Base To 1Link(2)=struct('name','J1','th',180*ToRad,'dz',250,'dx',0,'alf',90*To Rad,'az',UZ); %1 TO 2Link(3)=struct('name','J2','th',0*ToRad,'dz',0,'dx',100,'alf',0*ToRad ,'az',UZ); %2 TO 3Link(4)=struct('name','J3','th',0*ToRad,'dz',0,'dx',100,'alf',-90*ToR ad,'az',UZ); %3 TO 4Link(5)=struct('name','J3','th',0*ToRad,'dz',0,'dx',50,'alf',0*ToRad, 'az',UZ); %4 TO 5Link(6)=struct('name','J3','th',0*ToRad,'dz',100,'dx',0,'alf',0*ToRad ,'az',UZ); %5 TO 6Link(7)=struct('name','J3','th',0*ToRad,'dz',0,'dx',50,'alf',0*ToRad, 'az',UZ); %6 TO 77.5 Erzhihua.mclear,clcA=imread('广工.png');B=rgb2gray(A);g_max=double(max(max(B)));g_min=double(min(min(B)));T=round((g_max-g_min)/2);D=(double(B)>=T);[Dm,Dn]=size(D);num=1;for m=1:Dmif mod(m,2)==0n=Dn;for ii=1:Dnif D(m,n)==0FP(num,1)=(Dm-m);FP(num,2)=(Dn-n);num=num+1;endn=n-1;endelsen=1;for ii=1:Dnif D(m,n)==0FP(num,1)=(Dm-m);FP(num,2)=(Dn-n);num=num+1;endn=n+1;endendendsave('FP.mat','FP');7.6 draw_Workplace.mclose all;clear;ToDeg = 180/pi;ToRad = pi/180;num=1;th_interval = 30;d_interval = 10;for th1=-180:10:180for th2=-90:th_interval:90for th3=-180:th_interval:0for d4=-40:d_interval:200for th5=-180:th_interval:180for th6=-90:th_interval:90theta1=th1*ToRad;theta2=th2*ToRad;theta3=th3*ToRad;theta5=th5*ToRad;theta6=th6*ToRad;A1 =[[ cos(theta1), 0, sin(theta1), 0] [ sin(theta1), 0, -cos(theta1), 0] [ 0, 1, 0, 250][ 0, 0, 0, 1]];A2 =[[ cos(theta2 ), -sin(theta2 ), 0, 0][ sin(theta2 ), cos(theta2 ), 0, 0][ 0, 0, 1,80][ 0, 0, 0, 1]];A3 =[[ cos(theta3), 0, -sin(theta3), 100*cos(theta3)] [ sin(theta3), 0, cos(theta3), 100*sin(theta3)] [ 0, -1, 0, 0][ 0, 0, 0, 1]]; A4 =[[ 1, 0, 0, 0][ 0, 1, 0, 0][ 0, 0, 1, d4 + 50][ 0, 0, 0, 1]];A5 =[[ cos(theta5), -sin(theta5), 0, 0][ sin(theta5), cos(theta5), 0, 0][ 0, 1, 0, 100][ 0, 0, 0, 1]];A6 =[[ cos(theta6), -sin(theta6), 0, 50*cos( theta6)] [ sin(theta6), cos(theta6), 0, 50*sin( theta6)] [ 0, 0, 1, 0] [ 0, 0, 0, 1]];A = A1 * A2 * A3 * A4 * A5 * A6;point1(num) = A(1,4);point2(num) = A(2,4);point3(num) = A(3,4);num = num + 1;endendendendendendplot3(point1,point2,point3,'r*');axis([-600,600,-600,600,-400,700]);grid on;7.7 Matrix_DH_Ln.mfunction Matrix_DH_Ln(i)global LinkToDeg = 180/pi;ToRad = pi/180;C=cos(Link(i).th);S=sin(Link(i).th);Ca=cos(Link(i).alf);Sa=sin(Link(i).alf);a=Link(i).dx; %distance between zi and zi-1d=Link(i).dz; %distance between xi and xi-1Link(i).n=[C,S,0,0]';Link(i).o=[-1*S*Ca,C*Ca,Sa,0]';Link(i).a=[S*Sa, -1*C*Sa,Ca,0]';Link(i).p=[a*C,a*S,d,1]';Link(i).R=[Link(i).n(1:3),Link(i).o(1:3),Link(i).a(1:3)];Link(i).A=[Link(i).n,Link(i).o,Link(i).a,Link(i).p];7.8 Connect3D.mfunction Connect3D(p1,p2,option,pt)h = plot3([p1(1) p2(1)],[p1(2) p2(2)],[p1(3) p2(3)],option); set(h,'LineWidth',pt)。