用工具箱确定D-H参数

确定D-H参数的经典方法是系统地为每个连杆分配一个坐标系。Puma机器人的连杆坐标系就是采用标准D-H形式进行设定的,如图下图所示。
【机器人学、机器视觉与控制】用工具箱确定D-H参数_机器人
然而,设定每一个坐标系上都有很强的约束,因为关节旋转必须围绕 z z z轴且连杆位移必须沿 x x x方向。这也为基座和末端执行器坐标系的设定施加了约束,进而最终决定机器人的零角度位姿。因此为一个全新的机械臂确定D-H参数和连杆坐标系要比想象的更加困难——即便是经验丰富的机器人专家。

工具箱还支持另一种方法,它简单地将机械臂描述为一系列从末端执行器基座到顶端的基本平移和旋转。有些基本操作是常数,如表示连杆长度或偏移量的平移,而一些操作是广义关节坐标 q q q的函数。不同于传统的方法,我们不对这些有可能发生旋转和平移的轴施加任何约束。

:
【机器人学、机器视觉与控制】用工具箱确定D-H参数_机器人_02

上所示为Puma机器人的一个例子。我们首先在基座上随便定义一个坐标系,然后把从基座到顶端的平移和旋转序列写入一个字符串

s='Tz(L1) Rz(q1) Ry(q2) Ty(L2) Tz(L3) Ry(q3) Tx(L6) Ty(L4) Tz(L5) Rz(q4) Ry(q5) Rz(q6)'

注意:第二个关节描述为Ry(q2),不是标准的DH形式。
该字符串输入一个符号代数函数:

dh=DHFactor(s);

它返回一个DHFactor对象,其中保存了已被分解的DH参数的机器人运动学结构。我们可以将该结构以一种可读形式显示出来:

dh.display

【机器人学、机器视觉与控制】用工具箱确定D-H参数_机器人_03

其显示的各关节DH参数顺序为 θ , d , a \theta,d,a θ,d,a α \alpha α。扭转角 θ \theta θ(一个加到或减去的常量,如 q 2 q_2 q2 q 3 q_3 q3)是自动生成的,基座和工具变换也是自动生成的,基座和工具变换也是自动生成的。这个对象还可以生成一个字符串,它是一个工具箱命令,用于创建一个名为"puma"的机器人:

cmd=dh.command('puma')
SerialLink([0, L1, 0, -pi/2, 0; 0, 0, -L3, 0, 0; 0, L2+L4, L6, pi/2, 0; 0, L5, 0, -pi/2, 0; 0, 0, 0, pi/2, 0; 0, 0, 0, 0, 0; ], 'name', 'puma', 'base', eye(4,4), 'tool', eye(4,4), 'offset', [0 pi/2 -pi/2 0 0 0 ])

这个命令可以被执行:

L1=1;L2=1;L3=1;L4=1;L5=1;L6=1; % 自定义连杆长度
robot=eval(cmd)

创建一个名为robot的工作空间变量,该变量是一个SerialLink对象。

实例:四足机器人