机器人学(MATLAB机器人工具箱10.x)——3.5-特殊问题

关节角偏移

机器人的零关节角位姿往往是某个很不寻常的(甚至是机械无法实现的)位姿。对于 Puma 机器人,其零角度位姿就呈现出一种不是很明显的 L 形状,机器人的上臂水平,下臂垂直向上,如图所示。
在这里插入图片描述
这一结果是由机器人的 D-H 参数形式所决定的。机器人的控制设计人员可能会选择零关节角位姿为一些更为明显的位形。关节坐标偏移提供了一种机制,它使我们可以设置任意位形作为零关节坐标。偏移向量 q 0 q_0 q0 要在任何运动学或动力学函数被调用之前被加到用户指定的关节角度上。例如:
ξ = K ( q + q 0 ) \xi=\mathcal{K}(q+q_0) ξ=K(q+q0)
类似地,它要在执行一次运算操作后被减去,如逆运动学:
q = K − 1 ( ξ ) − q 0 q = \mathcal{K}^{-1}(\xi)-q_0 q=K1(ξ)q0
偏移量设置是通过设定Link对象的offset属性来完成的。例如:

>> L = Link([0 0 1 0]);
>> L.offset = pi/4
 
L = 
Revolute(std): theta=q, d=0, a=1, alpha=0, offset=0.785398

或者

>> p560.links(2).offset = pi/2

如图所示
在这里插入图片描述

确定 D-H 参数

确定 D-H 参数的经典方法是系统地为每个连杆分配一个坐标系。Puma 机器人的连杆坐标系就是采用标准 D-H 形式进行设定的,如图所示。
在这里插入图片描述
然而,每一个坐标系都有很强的约束,因为关节旋转必须围绕 z z z 轴,连杆位移必须沿 x x x 方向。这也为基座和末端执行器坐标系的设定施加了约束,进而最终决定了前面讨论的零角度位姿。因此为一个全新的机械臂确定 D-H 参数和连杆坐标系要比想象的困难。
工具箱还支持另一种方法,它简单地将机械臂描述为一系列从末端执行器基座到顶端的基本平移和旋转。有些基本操作是常数,如表示连杆长度或偏移量的平移,而一些操作是广义关节坐标 q i q_i qi 的函数。不同于传统的方法,我们不对这些有可能发生旋转和平移的轴施加任何约束。
在这里插入图片描述
如上图所示的一个例子,我们首先在基座上随便定义一个坐标系,然后把从基座到顶端的平移和旋转序列写入一个字符串:

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

请注意,我们已经将第二关节描述为Ry(q2),即绕 y y y 轴的旋转,它不能使用 D-H 形式。
该字符串被输入一个符号代数函数:

>> dh = DHFactor(s);

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

>> dh
dh =
DH(q1, L1, 0, -90).DH(q2+90, 0, -L3, 0).DH(q3-90, L2+L5, L4, 90).DH(q4, L6, 0, -90).DH(q5, 0, 0, 90).DH(q6, 0, 0, 0)

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

>> cmd = dh.command('puma');
>> cmd
cmd =
SerialLink([0, L1, 0, -pi/2, 0; 0, 0, -L3, 0, 0; 0, L2+L5, L4, pi/2, 0; 0, L6, 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 ])

当定义了L1L6后,这个命令可以被执行:

>> robot = eval(cmd);

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

改进型 D-H 参数

1986年,克雷格[Craig 1986]首先提出了一种改进的 D-H 参数,如图所示
在这里插入图片描述

其中每个连杆坐标系被固接到该连杆的近端(靠近前一个连杆),而不是其远端。经过这种修改,使得参数符号在某些方面显得更加清晰和简洁,因而目前这种 D-H 参数法也更为常用。然而它的引入也增加了更多的混乱,特别是对那些机器人运动学的初学者。该问题的根源在于运动学、雅可比矩阵和动力学的算法都是依赖于其使用的运动学约定。根据克雷格的约定,连杆变换矩阵是
j − 1 A j = R x ( α j − 1 ) T x ( a j − 1 ) R z ( θ j ) T z ( d j ) ^{j-1}A_j=R_x(\alpha_{j-1})T_x(a_{j-1})R_z(\theta_j)T_z(d_j) j1Aj=Rx

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB(Matrix Laboratory,矩阵实验室)是一款强大的科学计算软件,它在科学研究、工程设计、数据分析和教学等领域都有广泛的应用。在机器人领域,MATLAB机器人工具箱(Robotics Toolbox for MATLAB)则是一款非常重要的工具箱,它可以实现机器人动力学模拟、控制器设计、路径规划和视觉处理等各种任务。本文将重点介绍MATLAB机器人工具箱中的建模与正逆运动学算法。 建模是机器人控制中非常重要的一步,在机器人工具箱中可以通过类似DH表示法的方式来对机器人进行建模。这里我们以一个三自由度的SCARA机器人为例进行说明。首先需要定义机器人的DH参数,比如对于SCARA机器人,可以采用以下方式定义: ```matlab L1 = Link([0, 0, 0, pi/2, 0]); L2 = Link([0, 0, 0.25, 0, 0]); L3 = Link([0, 0, 0.25, 0, 0]); SCARA = SerialLink([L1 L2 L3], 'name', 'SCARA'); ``` 其中Link表示机械臂链接,SerialLink表示串联链接,name表示机器人的名称。接着可以使用plot和animate方法来绘制机器人的3D模型,如图所示: ```matlab SCARA.plot([0, pi/4, pi/2]); %绘制机器人在三个角度下的姿态图 SCARA.teach(); %绘制机器人可交互的3D模型 ``` ![scara](https://img-blog.csdn.net/20170601140015099?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VpbGRlbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75) 接着我们再来介绍一下MATLAB机器人工具箱中的正逆运动学算法。 正运动学是指根据机器人各个关节的角度来计算机器人的末端执行器的姿态(位置和姿态角),可以通过以下代码来实现: ```matlab theta = [0, pi/4, pi/2]; %关节角度 T = SCARA.fkine(theta); %末端执行器的姿态 disp(T); ``` 其中fkine表示正运动学求解,返回机器人末端执行器的位姿矩阵T(4x4)。需要注意的是,机器人正运动学求解中必须使用李代数(Lie algebra)和指数映射(Exponential map)的方法,以保证运算的精度和稳定性。 逆运动学是指根据机器人末端执行器的姿态来计算各个关节的角度,可以采用以下方法来实现: ```matlab T = [1, 0, 0, 0.3; 0, 1, 0, 0.3; 0, 0, 1, 0.5; 0, 0, 0, 1]; %给定机器人末端执行器的位姿矩阵 q = SCARA.ikine(T); %计算机器人各个关节的角度 disp(q); ``` 其中ikine表示逆运动学求解,需要注意的是,机器人逆运动学求解中必须考虑机器人的奇异问题、避障问题和轨迹规划问题,以保证机器人的运动轨迹和效率。 总的来说,MATLAB机器人工具箱中的建模与正逆运动学算法为机器人控制和仿真提供了很好的工具和方法,可以大大简化机器人控制的难度和复杂度。未来随着机器人技术的不断发展和普及,MATLAB机器人工具箱的应用也将逐渐扩大。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值