一、实验目的
1.了解四自由度机械臂的开链结构;
2.掌握机械臂运动关节之间的坐标变换原理;
3.学会机器人运动方程的正反解方法。
二、实验原理
本实验以SCARA四自由度机械臂为例研究机器人的运动学问题.机器人运动学问题包括运动学方程的表示,运动学方程的正解、反解等,这些是研究机器人动力学和机器人控制的重要基础,也是开放式机器人系统轨迹规划的重要基础。
机械臂杆件链的最末端是机器人工作的末端执行器(或者机械手),末端执行器的位姿是机器人运动学研究的目标,对于位姿的描述常有两种方法:关节坐标空间法和直角坐标空间法。
建立坐标系如下图所示:
连杆坐标系{i }相对于{ i−1}的变换矩阵可以按照下式计算出,其中连杆坐标系D-H 参数为由表1-1给出。
齐坐标变换矩阵为:
其中描述连杆i本身的特征;和描述连杆i−1与i之间的联系。对于旋转关节,仅是关节变量,其它三个参数固定不变;对于移动关节,仅是关节变量,其它三个参数不变。
表1-1 连杆参数表
其中连杆长l1=200mm,l2=200mm,机器人基坐标系为O-X0Y0Z0。根据上面的坐标变换公式,各个关节的位姿矩阵如下:
运动学正解:各连杆变换矩阵相乘,可得到机器人末端执行器的位姿方程(正运动学模型)为:
其中:z 轴为手指接近物体的方向,称接近矢量a (approach);y 轴为两手指的连线方向,称方位矢量o(orientation);x 轴称法向矢量n(normal),由右手法则确定,n=o*a。p 为手爪坐标系原点在基坐标系中的位置矢量。
运动学逆解:通常可用未知的连杆逆变换右乘上式:
令两式对应元素分别相等即可解出。
其中
将上式回代,可得,
式中:;
令第二行第四个元素对应相等,可得:
令第四行第三个元素对应相等,可得:
所以,
注意:关节运动范围:
θ1 0-180°
θ2 0-100°
d3 ±40mm
θ4 ±170
三、实验数据处理
步骤1.检查实验系统各部分的信号连接线、电源是否插好,完成后打开伺服驱动系统的电源开关。
步骤2.运行GRBserver程序,出现以下程序界面。
图1-6 机器人示教程序界面
步骤3.按下“打开控制器”按钮,按下“伺服上电”按钮。
步骤4.清理周围环境,避免机械臂运动时打到周围的人或物。检查末端执行器上的电线连接,避免第四个关节运动时电线缠绕而被拉断。
步骤5.按下“自动回零”按钮,机械臂自动回零。
步骤6.选择“关节空间”或“直角坐标空间”,选择“运动步长”,选择“运动速度倍率”为合适值。一般刚开始时尽量选择较小的值,以使运动速度不致太快。
步骤7.在“示教操作”区按下相应关节按钮,观察机械臂的运动情况。此时可以按下“记录”按钮,以便以后重复该次运动。
步骤8.重复步骤7,演示各种运动及功能。
四、实验结果及讨论
1、正解
输入 | 输出 | |||
θ1(度) | θ2(度) | d3(mm) | θ4(度) | |
30 | 40 | 40 | 170 | |
50 | 80 | -40 | -170 | |
90 | 50 | 40 | 170 | |
120 | 60 | -40 | -170 | |
82 | 60 | -40 | -170 |
输入 | 输出 | ||||||
θ1(度) | θ2(度) | d3(mm) | θ4(度) | px(mm) | py(mm) | pz (mm) | 手爪姿态(度) |
30 | 40 | 40 | 170 | 241.609712 | 287.938018 | 40 | 169.999650 |
50 | 80 | -40 | -170 | 0.001711 | 306.417777 | -40 | -169.999650 |
90 | 50 | 40 | 170 | -153.2088 | 328.557522 | 40 | 169.999650 |
120 | 60 | -40 | -170 | -299.999637 | 173.205709 | -40 | -169.999650 |
82 | 60 | -40 | -170 | -129.271379 | 321.385922 | -40 | -169.999650 |
输出 | 输入 | |||
θ1(度) | θ2(度) | d3(mm) | θ4(度) | |
30 | 40 | 40 | 170 | |
50 | 80 | -40 | -170 | |
90 | 50 | 40 | 170 | |
120 | 60 | -40 | -170 | |
82 | 60 | -40 | -170 |
输入 | 输出 | ||||||
px | py | pz | 手爪姿态 | θ1(度) | θ2(度) | d3(mm) | θ4(度) |
241.609712 | 287.938018 | 40 | 169.999650 | 29.999880 | 40 | 40 | 169.999650 |
0.001711 | 306.417777 | -40 | -169.999650 | 49.999680 | 80 | -40 | -169.999650 |
-153.2088 | 328.557522 | 40 | 169.999650 | 90 | 50 | 40 | 169.999650 |
-299.999637 | 173.205709 | -40 | -169.999650 | 119.999880 | 60 | -40 | -169.999650 |
-129.271379 | 321.385922 | -40 | -169.999650 | 81.911520 | 60 | -40 | -169.999650 |
MATLAB程序:
l1=200;
l2=200;
theta1=60;% theta1,theta2,theta4,d3为正解的输入数据
theta1=theta1/180*pi;
theta2=30;
theta2=theta2/180*pi;
theta3=0;
theta3=theta3/180*pi;
theta4=170;
theta4=theta4/180*pi;
d3=40;
alpha1=0;
alpha2=0;
alpha3=0;
alpha4=0;
T1=[cos(theta1),-sin(theta1)*cos(alpha1),sin(theta1)*sin(alpha1),l1*cos(theta1);
T2=[cos(theta2),-sin(theta2)*cos(alpha2),sin(theta2)*sin(alpha2),l2*cos(theta2);
T3=[cos(theta3),-sin(theta3)*cos(alpha3),sin(theta3)*sin(alpha3),0;
T4=[cos(theta4),-sin(theta4)*cos(alpha4),sin(theta4)*sin(alpha4),0;
T=T1*T2*T3*T4
2反运动学代码
MATLAB程序:
l1=200;
l2=200;
nx=-0.1736; % nx,ny,nz,ox,oy,oz,ax,ay,az,px,py,pz为反解的输入数据
ny=-0.9848;
nz=0;
ox=0.9848;
oy=-0.1736;
oz=0;
ax=0;
ay=0;
az=1;
px=100;
py=373.2051;
pz=-40;
m=(l1^2-l2^2+px^2+py^2)/(2*l1*sqrt(px^2+py^2));
theta1=atan(m/(sqrt(1-m^2)))-atan(px/py);
theta2=acos((px-l1*cos(theta1))/l2)-theta1;
d3=-pz;
theta4=(2*pi-acos(nx))-theta1-theta2;
theta1=theta1/pi*180
theta2=theta2/pi*180
d3
theta4=theta4/pi*180
五、对机器人运动学认识
本实验主要是对机器人运动位置求解的一个了解和熟悉,机器人的工作是由控制器指挥的,而关节在每个位置的参数是预先记录好的,当机器人执行工作任务时,控制器给出记录好的位置数据,使机器人按照预定的位置序列运动。实验过程中,我们可以要熟练掌握坐标变换的原理和具体计算,并能够做出正反解的答案。实验时要注意的取值,以防在正反解过程中使机器人出现卡死的现象。
通过本次实验,我掌握了机械臂运动关节之间的坐标变换原理,学会了机器人运动方程的正反解方法,并掌握了运用程序求机器人运动方程的方法,巩固了课堂上所学的理论知识,为今后的学习奠定了基础。