操作臂简图

a)建立机构坐标系

写出三连杆平面操作臂的D-H参数

注意到由于所有的关节轴都是平行的,且所有的之轴都垂直纸面向外,因此α都为0。同样注意到,运动学分析最后总是归结到一个坐标系里,这个坐标系的原点位于最后一个关节轴上,因此在连杆参数里没有L3。

b)根据操作臂之间的连杆参数,推导出相邻变换矩阵 [公式] 如下:

[公式]

同时根据已知条件可以求出各相邻齐次变换矩阵:

syms t1 t2 t3    %θ1、θ2、θ3
a2 = [4 0 0];a3 = [3 0 0];
T01 = trotz(t1)
T12 = transl(a2)*trotz(t2)
T23 = transl(a3)*trotz(t3)

观察机构图可得 [公式] = [L3 , 0 ,0]' = [ 2 , 0 , 0]'.

c)利用matlab符号求解正运动学解 [公式]  [公式] .

%定义符号变量
syms t1 t2 t3 L1 L2 L3 pi
a2 = [L1 0 0];a3 = [L2 0 0];
T01 = trotz(t1);
T12 = transl(a2)*trotz(t2);
T23 = transl(a3)*trotz(t3);
T3H = transl([L3,0,0]);
T03 = T01*T12*T23;
T0H = T03*T3H;
%化简矩阵
T03 = simplify(T03)
T0H = simplify(T0H)
%求解ii)输入参数下的输出
T2 = eval(subs(T0H,{'t1','t2','t3'},[10 20 30]*pi/180))

d)利用机器人工具箱验证计算结果

syms t1 t2 t3 
% 定义各个连杆,默认为转动关节
%           theta      d        a     alpha 
L(1)=Link([  0         0        0       0],'modified'); L(1).qlim=[-pi,pi];
L(2)=Link([  0         0        4       0],'modified'); L(2).qlim=[-pi,pi]; 
L(3)=Link([  0         0        3       0],'modified'); L(3).qlim=[-pi,pi];
Robot3 = SerialLink(L,'name','R3');
T03 = Robot3.fkine([t1 t2 t3])
%求出特定输入参数下的旋转矩阵
T2 = Robot3.fkine([10  20 30],'deg')

把运行结果与c)中结果进行比较,得到结果一致。因此检验成功。