PUMA 560机器人正运动学
PUMA 560机器人正运动学TOC1、PUMA 560机器人介绍PMUA 560机器人属于关节式机器人,6个关节都是转动关节,前三个确定手腕参考点位置,后3个确定手腕的方位。2、D-H参数标定D—H参数是有两种标定方式的,一种是标准的D-H参数法,还有一种是改进的D—H参数法,大部分书上现在都用到的是改进的D-H法,但也有一些书上用的是标准的D-H法,但是D-H法只是一种对连杆的坐标描...
·
PUMA 560机器人正运动学TOC
1、 PUMA 560机器人介绍
PMUA 560机器人属于关节式机器人,6个关节都是转动关节,前三个确定手腕参考点位置,后3个确定手腕的方位。
2、D-H参数标定
D—H参数是有两种标定方式的,一种是标准的D-H参数法,还有一种是改进的D—H参数法,大部分书上现在都用到的是改进的D-H法,但也有一些书上用的是标准的D-H法,但是D-H法只是一种对连杆的坐标描述,最后的结果往往相同的参数就会有相同的物理含义在里面。
3、PUMA 560 机器人运动学分析
本文选用改进后得D-H参数法,按照前面坐标系定义的方法,得到PUMA 560机器人的连杆坐标系,如图所示:
连杆坐标系i-1到坐标系i的变化可经过以下几步完成:
第一步:绕x_(i-1)轴旋转α_(i-1)角,使得z_(i-1)轴和z_i轴共面。
第二步:沿着x_(i-1)轴移动a_(i-1)距离,使得z_(i-1)轴和z_i轴共线。
第三步:绕z_i轴旋转θ_i角,使得x_(i-1)轴和x_i轴共线。
第四步:沿着z_i轴移动d_i距离,使得前后两个坐标系得原点重合。
通过上诉几步,我们可以得到连杆的参数:
MATLAB 机械臂建模
在MATLAB 中完成机械臂的正运动学、逆运动学、工作空间等问题的求解
% Modified DH
% PUMA 560 robot
clear;
clc;
th(1) = 0; d(1) = 0; a(1) = 0; alp(1) = 0;
th(2) = 0; d(2) = 149.09; a(2) = 0; alp(2) = -pi/2;
th(3) = 0; d(3) = 0; a(3) = 431.8; alp(3) = 0;
th(4) = 0; d(4) = 433.07; a(4) = 20.32; alp(4) = -pi/2;
th(5) = 0; d(5) = 0; a(5) = 0; alp(5) = pi/2;
th(6) = 0; d(6) = 0; a(6) = 0; alp(6) = -pi/2;
% DH parameters th d a alpha sigma
L1 = Link([th(1), d(1), a(1), alp(1), 0], 'modified');
L2 = Link([th(2), d(2), a(2), alp(2), 0], 'modified');
L3 = Link([th(3), d(3), a(3), alp(3), 0], 'modified');
L4 = Link([th(4), d(4), a(4), alp(4), 0], 'modified');
L5 = Link([th(5), d(5), a(5), alp(5), 0], 'modified');
L6 = Link([th(6), d(6), a(6), alp(6), 0], 'modified');
robot = SerialLink([L1, L2, L3, L4, L5, L6]); %建立机械臂模型
robot.name='PUMA 650 Robot-6-dof';
robot.display() ;
% Forward Pose Kinematics
theta = [90, 0, -90, 0, 0, 0]*pi/180;
robot.plot(theta);
theta2 = [45, 0, 90, 20, 0, 0]*pi/180;
t0 = robot.fkine(theta2); %运动学正解
qi=robot.ikine(t0,theta,[1 1 1 1 1 1]) %运动学逆解
hold on
N=30000;
t1=-160*pi/180+(160*pi/180+160*pi/180)*rand(N,1);
t2=-225*pi/180+(225*pi/180+45*pi/180)*rand(N,1);
t3=-45*pi/180+(45*pi/180+225*pi/180)*rand(N,1);
t4=-110*pi/180+(110*pi/180+170*pi/180)*rand(N,1);
t5=-100*pi/180+(100*pi/180+100*pi/180)*rand(N,1);
t6=-266*pi/180+(266*pi/180+266*pi/180)*rand(N,1); %确定各个杆件的运动范围
for n=1:1:N
photo=robot.fkine([t1(n),t2(n),t3(n),t4(n),t5(n),t6(n)]);
plot3(photo(1,4),photo(2,4),photo(3,4),'b.','MarkerSize',0.5); %工作空间求解
end
三级目录
更多推荐
所有评论(0)