PUMA560机器人运动学分析教学文稿
- 格式:ppt
- 大小:459.50 KB
- 文档页数:17


基于MATLAB的PUMA机器人运动仿真研究摘要:机器人运动学是机器人学的一个重要分支,是实现机器人运动控制的基础。
论文以D-H坐标系理论为基础对PUMA560机器人进行了参数设计,利用MATLAB机器人工具箱,对机器人的正运动学、逆运动学、轨迹规划进行了仿真。
Matlab仿真结果说明了所设计的参数的正确性,能够达到预定的目标。
关键词:机器人PUMA560 D-H坐标系运动学轨迹规划机器人运动学的研究涉及大量的数学运算,计算工作相当繁锁。
因此,采用一些工具软件对其分析可大大提高工作效率,增加研究的灵活性和可操作性。
对机器人进行图形仿真,可以将机器人仿真的结果以图形的形式表示出来,从而直观地显示出机器人的运动情况,得到从数据曲线或数据本身难以分析出来的许多重要信息,还可以从图形上看到机器人在一定控制条件下的运动规律[1]。
论文首先设计了PUMA560机器人的各连杆参数,然后讨论了正、逆运动学算法,轨迹规划问题,最后在MATLAB环境下,运用Robotics Toolbox,编制简单的程序语句,快速完成了机器人得运动学仿真。
设机械手起始位置位于A点,qA=[000000],即表示机器人的各关节都处于零位置处。
机械手在B点和C点相对于基坐标系的位姿可用齐次变换矩阵TB和TC来表示。
图2所示为机械手臂在A点时的三维图形。
可通过matlab编程来给出机器人由A运动到B,转动关节2和转动关节3的角度随时间变换的仿真图,如图3所示。
图4所示为末端关节沿x,y,z方向的运动轨迹。
取仿真时间为2s,采样间隔为0.056s。
从图3可以看出:在所取的仿真时间内,转动关节2由零逐渐变化到1.5708rad;转动关节3由零逐渐变化到-1.5708rad。
图4说明机器人由A运动到B,末端关节沿x,y,z方向位移矢量的变化轨迹,证明机器人可以实现不同方位的姿态。
通过仿真曲线可以观察到机器人从A运动到B时各关节的运动情况,且各关节运动情况均为正常,各连杆没有运动错位的情况,从而验证了所有连杆参数的合理性,且说明了各参数的设计能够实现预定的目标。
机器人运动学与动力学分析及控制研究近年来,机器人技术一直在飞速的发展,机器人的使用越来越广泛,特别是在工业领域。
随着机器人的发展,机器人运动学与动力学分析及控制研究变得越来越重要。
本文将介绍机器人运动学、动力学分析与控制研究的现状以及未来发展趋势。
一、机器人运动学分析机器人运动学分析主要研究机器人的运动学特性,包括机器人的姿态、速度以及加速度等方面。
机器人运动学分析的目的是确定机器人的运动学参数,同时确定机器人工作空间的大小。
机器人运动学分析的方法主要有以下几种:1、直接求解法。
直接求解法是指通过物理意义来推导机器人的运动学方程。
这种方法计算效率较低,但是精度较高。
2、迭代法。
迭代法是通过迭代计算机器人的运动学方程,精度较高,但是计算效率较低。
3、牛顿-拉夫森法。
牛顿-拉夫森法是一种求解非线性方程组的方法,可以用于求解机器人运动学方程。
此方法计算速度比较快,但是相对精度较低。
机器人运动学分析的结果可以用于机器人的路径规划,动力学分析以及控制研究。
二、机器人动力学分析机器人动力学分析主要研究机器人的动力学特性,包括机器人的质量、惯性矩以及外力等方面。
机器人动力学分析的目的是确定机器人的动力学参数,同时确定机器人的力/力矩控制器和位置/速度控制器。
机器人动力学分析的方法主要有以下几种:1、拉格朗日方程法。
拉格朗日方程法是一种描述机器人运动的数学方法,可以用于求解机器人的动力学方程。
此方法计算效率较低,但是精度较高。
2、牛顿-欧拉法。
牛顿-欧拉法是机器人动力学分析中的一种方法,一般用于计算运动学链中的运动学角速度和角加速度,并根据牛顿和欧拉定理将牛顿和欧拉方程转换为轨迹方程。
此方法计算速度较快,但是精度相对较低。
机器人动力学分析的结果可以用于机器人的力/矩控制器的设计,位置/速度控制器的设计以及控制研究。
三、机器人控制研究机器人控制研究主要研究机器人的控制算法,包括力控制算法、位置/速度控制算法、逆动力学算法等方面。
求解:①建立坐标系;②给出D-H参数表;③推导正运动学、逆运动学;④编程得出工作空间一、建立坐标系图1 坐标系建立二、给出D-H参数表表1 D-H参数表关节iθiαi l i d i运动范围190-9000-160°~160°200a2d2-225°~45°39090a30-45°~225°4 0 -90 0 d 4 -110°~170°5 0 90 0 0 -100°~160°6 0d 6-266°~266°三、正运动学推导坐标系O i 与于坐标系O i−1之间的齐次变换矩阵如下:1001i i i i i i i ii i i i i i i i i i i c c s s s l c s c c s c l s T s c d θαθαθθθαθαθθαα--⎡⎤⎢⎥-⎢⎥=⎢⎥⎢⎥⎣⎦由上式可得:将变换矩阵相乘得到PUMA560机械手变换矩阵:整理得:其中:四、逆运动学推导1.求解θ1设推导得:整理得:12arctan 2(,)arctan 2(,x y p p d θ=-2.求解θ2和θ3整理得:3.求解θ4得到:整理得:14112312323arctan2-,x y x y z s a c a c c c a s c c a s s a θ=+--+()4.求解θ5和θ6可得:整理得:)(555,2arctan c s =θ;),(2arctan 666c s =θ五、逆解编程求解工作空间代码如下:%%逆解求解 a2=431.8; a3=20.32; d2=149.09; d4=433.07; d6=56.25; syms flag; count = 1;for px=-1000:10:1000; for py=-1000:10:1000; for pz=-1000:10:1000;if (px*px + py*py -d2*d2) >= 0theta11 = atan2d(py,px) - atan2d(d2,sqrt(px*px + py*py - d2*d2)); theta12 = atan2d(py,px) - atan2d(d2,-sqrt(px*px + py*py - d2*d2)); if (a3*a3 + d4*d4 - k*k) >=0k = (px^2 + py^2 + pz^2- a2^2 - a3^2 - d2^2 - d4^2)/2/a2; theta31 = atan2d(a3,d4) - atan2d(k, sqrt(a3*a3 + d4*d4 - k*k)); theta32 = atan2d(a3,d4) - atan2d(k, -sqrt(a3*a3 + d4*d4 - k*k)); if -160<theta11&&theta11<160 theta1 = theta11;if -45<theta31&&theta31<225 theta3 = theta31; c1 = cosd(theta1); s1 = sind(theta1); c3 = cosd(theta3); s3 = sind(theta3);up_3 = -(a3 + a2*c3)*pz + (c1*px + s1*py)*(a2*s3 - d4); down_3 = (-d4 + a2*s3)*pz + (c1*px + s1*py)*(a2*c3 + a3); theta23 = atan2d(up_3,down_3);theta2 = theta23 - theta3;flag = 1;endif -45<theta32&&theta32<225theta3 = theta32;c1 = cosd(theta1);s1 = sind(theta1);c3 = cosd(theta3);s3 = sind(theta3);up_3 = -(a3 + a2*c3)*pz + (c1*px + s1*py)*(a2*s3 - d4);down_3 = (-d4 + a2*s3)*pz + (c1*px + s1*py)*(a2*c3 + a3);theta23 = atan2d(up_3,down_3);theta2 = theta23 - theta3;flag = 1;endendif -160<theta12&&theta12<160theta1 = theta12;if -45<theta31&&theta31<225theta3 = theta31;c1 = cosd(theta1);s1 = sind(theta1);c3 = cosd(theta3);s3 = sind(theta3);up_3 = -(a3 + a2*c3)*pz + (c1*px + s1*py)*(a2*s3 - d4);down_3 = (-d4 + a2*s3)*pz + (c1*px + s1*py)*(a2*c3 + a3);theta23 = atan2d(up_3,down_3);theta2 = theta23 - theta3;flag = 1;endif -45<theta32&&theta32<225theta3 = theta32;c1 = cosd(theta1);s1 = sind(theta1);c3 = cosd(theta3);s3 = sind(theta3);up_3 = -(a3 + a2*c3)*pz + (c1*px + s1*py)*(a2*s3 - d4);down_3 = (-d4 + a2*s3)*pz + (c1*px + s1*py)*(a2*c3 + a3);theta23 = atan2d(up_3,down_3);theta2 = theta23 - theta3;flag = 1;endendif flag == 1X(count) = px;Y(count) = py;Z(count) = pz;count = count + 1;endendendendplot3(X,Y,Z,'g.');工作空间求解如下:图2 工作空间图3 工作空间(XOY平面)图4 工作空间(XOZ平面)图5 可达工作空间(YOZ平面)。