机器人修正DH参数(MDH)和标准DH(SDH)参数

本文详细介绍了Denavit-Hartenberg(DH)方法,包括修正和标准DH参数的定义、连杆坐标系的构建步骤,以及MDH和SDH在平面3R机器人中的应用。重点阐述了如何定义关节轴、连杆参数在不同坐标系中的表示以及坐标变换的推导过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Denavit-Hartenberg方法

1.1 修正DH参数——定义关节i的轴为 z i z_i zi轴(最后一个坐标系{n}在关节n处)

1.1.1 连杆坐标系定义

  • (a) 运动链中间位置连杆坐标系{ i {i} i}的定义

    固连在连杆i上的固连坐标系称为坐标系{ i i i}
    O i O_i Oi原点:关节轴i和i+1的交点或关节轴i和i+1公垂线与关节轴i的交点
    Z ^ i \hat{Z}_i Z^i轴:关节轴 i i i
    X ^ i \hat{X}_i X^i轴:沿 Z ^ i \hat{Z}_i Z^i Z ^ i + 1 \hat{Z}_{i+1} Z^i+1的公垂线 a i a_i ai方向由关节 i i i指向关节 i + 1 i+1 i+1,当 a i = 0 a_i=0 ai=0时, X ^ i \hat{X}_i X^i垂直于 Z ^ i \hat{Z}_i Z^i Z ^ i + 1 \hat{Z}_{i+1} Z^i+1所在的平面
    Y ^ i \hat{Y}_i Y^i轴:根据右手法则确定
    α i \alpha_i αi:根据右手定则,绕 X ^ i \hat{X}_i X^i轴从 Z ^ i − 1 \hat{Z}_{i-1} Z^i1 Z ^ i \hat{Z}_i Z^i

在这里插入图片描述

在这里插入图片描述

  • (b) 运动链首段连杆{ 0 0 0}坐标系的定义( Z ^ 0 \hat{Z}_0 Z^0 Z ^ 1 \hat{Z}_1 Z^1同向)

    固连于机器人基座(即连杆0)上的坐标系为坐标系{0},该坐标系可做参考坐标系。
    设定 Z ^ 0 \hat{Z}_0 Z^0沿关节轴1的方向,当关节变量1( d 1 d_1 d1 θ 1 \theta_1 θ1)为0时,设定参考坐标系{0}与{1}重合。总有 a 0 = α 0 = 0 a_0=\alpha_0=0 a0=α0=0,当关节1为移动关节时, θ 1 = 0 \theta_1=0 θ1=0,当关节1为转动关节时, d 1 = 0 d_1=0 d1=0

在这里插入图片描述

(c) 运动链末端连杆{ n n n}坐标系的定义( X ^ N \hat{X}_N X^N X ^ N − 1 \hat{X}_{N-1} X^N1同向)

{n}坐标原点选取在 X ^ N − 1 \hat{X}_{N-1} X^N1轴与关节轴n的交点位置,使得 d n = 0 d_n=0 dn=0,总有 a n = α n = 0 a_n=\alpha_n=0 an=αn=0
对于转动关节n,始终有 d n = 0 d_n=0 dn=0,当 θ n = 0 \theta_n=0 θn=0时,设定 X ^ N \hat{X}_N X^N X ^ N − 1 \hat{X}_{N-1} X^N1同向,选取坐标原点位置为 X ^ N − 1 \hat{X}_{N-1} X^N1轴与关节轴n的交点位置。
对于移动关节n,始终有 θ n = 0 \theta_n=0 θn=0,当 d n = 0 d_n=0 dn=0时,设定 X ^ N \hat{X}_N X^N X ^ N − 1 \hat{X}_{N-1} X^N1同向,选取坐标原点位置为 X ^ N − 1 \hat{X}_{N-1} X^N1轴与关节轴n的交点位置。

在这里插入图片描述

1.1.2 连杆参数在连杆坐标系中的表示方法

如果按照上述方法将两岸坐标系固定于连杆上时,连杆参数可以定义为

  1. a i − 1 a_{i-1} ai1:沿 X ^ i − 1 \hat{X}_{i-1} X^i1轴,从 Z ^ i − 1 \hat{Z}_{i-1} Z^i1移动到 Z ^ i \hat{Z}_{i} Z^i的距离,通常取正值;

  2. α i − 1 \alpha_{i-1} αi1:绕 X ^ i − 1 \hat{X}_{i-1} X^i1轴,从 Z ^ i − 1 \hat{Z}_{i-1} Z^i1旋转到 Z ^ i \hat{Z}_{i} Z^i的角度,采用右手法则判断正负;

  3. d i d_i di:沿 Z ^ i \hat{Z}_{i} Z^i轴,从 X ^ i − 1 \hat{X}_{i-1} X^i1移动到 X ^ i \hat{X}_{i} X^i的距离;

  4. θ i \theta_i θi:绕 Z ^ i \hat{Z}_{i} Z^i轴,从 X ^ i − 1 \hat{X}_{i-1} X^i1旋转到 X ^ i \hat{X}_{i} X^i的角度,采用右手法则判断正负;

在这里插入图片描述

1.1.3 建立连杆坐标系的步骤

现根据关节轴确定Z轴,再跟相邻关节轴之间的公垂线确定X轴。具体步骤如下:

  1. 找出各关节轴, 并标出(或画出)这些轴线的延长线。 在下面的步骤2至步骤5中,仅考虑两个相邻的轴线(关节轴 i i i i + 1 i+1 i+1);

  2. 找出关节轴 i i i i + 1 i+1 i+1之间的公垂线 a i a_i ai或关节轴 i i i i + 1 i+1 i+1的交点, 以关节轴 i i i i + 1 i+1 i+1的交点或公垂线 a i a_i ai与关节轴 i i i的交点作为连杆坐标系{ i i i}的原点;

  3. 规定 Z ^ i \hat{Z}_i Z^i轴沿关节轴i的指向;

  4. 规定 X ^ i \hat{X}_i X^i轴沿公垂线 a i a_i ai的指向, 如果关节轴i和i+1相交, 则规定 X ^ i \hat{X}_i X^i轴垂直于关节轴i和i+1所在的平面;

  5. 按照右手定则确定 Y ^ i \hat{Y}_i Y^i轴;

  6. 当第一个关节变量为 0 时, 规定坐标系{0}和{1}重合。 对于坐标系{N}, 其原点和的 X ^ N \hat{X}_N X^N方向可以任意选取。 但是在选取时, 通常尽量使连杆参数为0。

1.1.4 连杆变换的推导

通过定义三个中间坐标系{P},{Q},{R}建立坐标系{i}相对于坐标系{i-1}的变换:
{i}沿 Z ^ i \hat{Z}_i Z^i平移 d i d_i di得到{P},{P}绕 Z ^ P \hat{Z}_P Z^P旋转 θ i \theta_i θi得到{Q},{Q}沿 X ^ Q \hat{X}_Q X^Q平移 a i − 1 a_{i-1} ai1得到{R},{R}绕 X ^ R \hat{X}_R X^R旋转 α i − 1 \alpha_{i-1} αi1得到{i-1}

KaTeX parse error: \tag works only in display equations
其中,
KaTeX parse error: \tag works only in display equations
在这里插入图片描述

1.2. 标准DH参数——定义关节i的轴为 z i − 1 z_{i-1} zi1轴(最后一个坐标系{n}在连杆n的末端)

1.2.1 连杆坐标系定义

  • (a)运动链中间位置连杆坐标系{ i {i} i}的定义

    Z ^ i \hat{Z}_i Z^i轴:关节轴 i + 1 i+1 i+1
    X ^ i \hat{X}_i X^i轴:沿轴 z i − 1 z_{i-1} zi1和轴 z i z_i zi的公垂线 a i a_i ai方向由关节 i i i指向关节 i + 1 i+1 i+1,当 a i = 0 a_i=0 ai=0时,即轴 z i − 1 z_{i-1} zi1和轴 z i z_i zi相交时, X ^ i \hat{X}_i X^i垂直于 Z ^ i − 1 \hat{Z}_{i-1} Z^i1 Z ^ i \hat{Z}_{i} Z^i所在的平面
    Y ^ i \hat{Y}_i Y^i轴:根据右手法则确定
    O i O_i Oi点:在关节 i + 1 i+1 i+1的轴 Z i Z_i Zi轴与公垂线 a i a_i ai的交点

在这里插入图片描述
在这里插入图片描述

  • (b)运动链首段连杆{ 0 0 0}坐标系的定义

    设定 Z ^ 0 \hat{Z}_0 Z^0沿关节轴1的方向, O 0 O_0 O0 X ^ 0 \hat{X}_0 X^0可以任意选择

  • (c)运动链末端连杆末端执行器手部{ n n n}坐标系的定义

    对坐标系{n}而言,由于没有关节n+1,但x_n轴必须与轴 z n − 1 z_{n-1} zn1垂直,但 z n z_n zn不是唯一定义的,当关节n是转动的, z n z_n zn依照 z n − 1 z_{n-1} zn1的方向设置

1.2.2 连杆参数在连杆坐标系中的表示方法

如果按照上述方法将连杆坐标系固定于连杆上时,下标为i的连杆参数可以由坐标系 i i i和坐标系 i − 1 i-1 i1的位置和方向定义为

  1. a i a_{i} ai:沿 X ^ i \hat{X}_{i} X^i轴,从 Z ^ i − 1 \hat{Z}_{i-1} Z^i1移动到 Z ^ i \hat{Z}_{i} Z^i的距离,Link_i的长度,通常取正值;

  2. α i \alpha_{i} αi:绕 X ^ i \hat{X}_{i} X^i轴,从 Z ^ i − 1 \hat{Z}_{i-1} Z^i1旋转到 Z ^ i \hat{Z}_{i} Z^i的角度,采用右手法则判断正负;

  3. d i d_i di:沿 Z ^ i − 1 \hat{Z}_{i-1} Z^i1轴,从 X ^ i − 1 \hat{X}_{i-1} X^i1移动到 X ^ i \hat{X}_{i} X^i的距离,即 x i − 1 x_{i-1} xi1 x i x_i xi z i − 1 z_{i-1} zi1轴交点的距离;

  4. θ i \theta_i θi:绕 Z ^ i − 1 \hat{Z}_{i-1} Z^i1轴,从 X ^ i − 1 \hat{X}_{i-1} X^i1旋转到 X ^ i \hat{X}_{i} X^i的角度,采用右手法则判断正负;

在这里插入图片描述

4 个参数中有2 个( a i a_i ai α i \alpha_i αi〉始终为常数,只取决于由连杆i建立的相继关节之间的几何连接关系。其他两个参数中只有一个是变量,取决于连接连杆i-1 和连杆i 的关节的类型。详述如下:

  • 如果关节i 是转动型的, 则变最为 θ i \theta_i θi
  • 如果关节i 是移动型的,则变量为 d i d_i di

1.2.3 建立连杆坐标系的步骤

在这里插入图片描述

3.1.2.4 连杆变换的推导

i i − 1 T ( q i ) = R Z ( θ i ) D Z ( d i ) R Z ( α i ) D X ( a i ) = [ c θ i − s θ i 0 0 s θ i c θ i 0 0 0 0 1 d i 0 0 0 1 ]   [ 1 0 0 a i 0 c α i − s α i 0 0 s α i c α i 0 0 0 0 1 ] = [ c θ i − s θ i c α i s θ i s α i a i c θ i s θ i c θ i c α i − c θ i s α i a i s θ i 0 s α i c α i d i 0 0 0 1 ] \begin{aligned} _i^{i-1}T(q_i)&=R_Z(\theta_i)D_Z(d_i)R_Z(\alpha_{i})D_X(a_{i})\\ & \left.=\quad\left[\begin{array}{cccc}c_{\theta_i} & -s_{\theta_i} & 0 & 0 \\ s_{\theta_i} & c_{\theta_i} & 0 & 0 \\ 0 & 0 & 1 & d_i \\ 0 & 0 & 0 & 1\end{array}\right.\right] \ \left[\begin{array}{cccc}1 & 0 & 0 & a_i \\ 0 & c_{\alpha_i} & -s_{\alpha_i} & 0 \\ 0 & s_{\alpha_i} & c_{\alpha_i} & 0 \\ 0 & 0 & 0 & 1\end{array}\right] \\ & \left.=\quad\left[\begin{array}{cccc}c_{\theta_i} & -s_{\theta_i}c_{\alpha_i} & s_{\theta_i}s_{\alpha_i} & a_ic_{\theta_i} \\ s_{\theta_i} & c_{\theta_i}c_{\alpha_i} & -c_{\theta_i}s_{\alpha_i} & a_is_{\theta_i} \\ 0 & s_{\alpha_i} & c_{\alpha_i} & d_i \\ 0 & 0 & 0 & 1\end{array}\right.\right]\end{aligned} ii1T(qi)=RZ(θi)DZ(di)RZ(αi)DX(ai)= cθisθi00sθicθi00001000di1   10000cαisαi00sαicαi0ai001 = cθisθi00sθicαicθicαisαi0sθisαicθisαicαi0aicθiaisθidi1

从坐标系 i 到坐标系i - 1 的变换矩阵是一个只与关节变量 q i q_i qi有关的函数,如果是
转动关节则变量为 θ i \theta_i θi, 如果是移动关节则变量为 d i d_i di

1.3 MDH和SDH两者对比

1.3.1 平面3R机器人

  • 标准DH参数

在这里插入图片描述

  • 修正DH参数
    待补充
在使用SDH(Serial Direct Drive)参数构建串联机器人模型时,首先需要了解机器人的关节坐标系以及各关节之间的变换关系。通常,Z轴表示工具坐标系的方向,末端执行器的位置由所有关节的角度决定。 假设我们有一个六关节串联机器人,每个关节对应一个旋转运动。为了计算末端执行器的齐次矩阵,我们需要使用关节变量\( q_1 \)到\( q_6 \),其中\( J1=45^\circ \), \( J2=60^\circ \), ..., \( J6=45^\circ \)。 对于SDH结构,每个关节的变换可以由旋转矩阵描述,例如\( T_i = R_{z}(q_i)T_{i-1} \),从第一个关节开始,直到最后一个关节。这里的\( R_z(\theta) \)是绕Z轴的旋转矩阵,\( T_i \)是关节\( i \)后的世界坐标系相对于关节\( i-1 \)的变换。 末端执行器的齐次矩阵\( H \)初始为 Identity 矩阵,然后通过递归乘法得到: \[ H = R_{z}(q_6) * R_{z}(q_5) * ... * R_{z}(q_1) \] 你可以用以下MATLAB代码实现这一过程: ```matlab % 定义旋转矩阵函数 Rz = @(theta) [cos(theta), -sin(theta); sin(theta), cos(theta)]; % 给定关节角度数组 angles = [45; 60; 30; 15; -30; 45]; % 度 % 初始化齐次矩阵 H = eye(4); % 逐关节计算并更新齐次矩阵 for i = 1:length(angles) H = Rz(deg2rad(angles(i))) * H; end % Robotics Toolbox 验证 % 如果有RTB包,你可以使用`transformFromJoint`函数 % 或者手动创建Link对象,然后计算末端位置姿态,对比两者是否一致 % 例如: % link = SerialLink('Name', 'SDH Robot'); % for i = 1:length(link.Joints) % link.Joints(i).Angle = angles(i); % end % toolFrame = transformFromJoint(link); % isHomogeneousEqual(H, toolFrame); % 判断两个矩阵是否相等 %
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值