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

文章目录

  • Denavit-Hartenberg方法
    • [1.1 修正DH参数------定义关节i的轴为 z i z_i zi轴(最后一个坐标系{n}在关节n处)](#1.1 修正DH参数——定义关节i的轴为 z i z_i zi轴(最后一个坐标系{n}在关节n处))
      • [1.1.1 连杆坐标系定义](#1.1.1 连杆坐标系定义)
      • [1.1.2 连杆参数在连杆坐标系中的表示方法](#1.1.2 连杆参数在连杆坐标系中的表示方法)
      • [1.1.3 建立连杆坐标系的步骤](#1.1.3 建立连杆坐标系的步骤)
      • [1.1.4 连杆变换的推导](#1.1.4 连杆变换的推导)
    • [1.2. 标准DH参数------定义关节i的轴为 z i − 1 z_{i-1} zi−1轴(最后一个坐标系{n}在连杆n的末端)](#1.2. 标准DH参数——定义关节i的轴为 z i − 1 z_{i-1} zi−1轴(最后一个坐标系{n}在连杆n的末端))
      • [1.2.1 连杆坐标系定义](#1.2.1 连杆坐标系定义)
      • [1.2.2 连杆参数在连杆坐标系中的表示方法](#1.2.2 连杆参数在连杆坐标系中的表示方法)
      • [1.2.3 建立连杆坐标系的步骤](#1.2.3 建立连杆坐标系的步骤)
      • [3.1.2.4 连杆变换的推导](#3.1.2.4 连杆变换的推导)
    • [1.3 MDH和SDH两者对比](#1.3 MDH和SDH两者对比)
      • [1.3.1 平面3R机器人](#1.3.1 平面3R机器人)

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^i−1到 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^N−1同向)

{n}坐标原点选取在 X ^ N − 1 \hat{X}_{N-1} X^N−1轴与关节轴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^N−1同向,选取坐标原点位置为 X ^ N − 1 \hat{X}_{N-1} X^N−1轴与关节轴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^N−1同向,选取坐标原点位置为 X ^ N − 1 \hat{X}_{N-1} X^N−1轴与关节轴n的交点位置。

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

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

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

  2. α i − 1 \alpha_{i-1} αi−1:绕 X ^ i − 1 \hat{X}{i-1} X^i−1轴,从 Z ^ i − 1 \hat{Z}{i-1} Z^i−1旋转到 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^i−1移动到 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^i−1旋转到 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} ai−1得到{R},{R}绕 X ^ R \hat{X}R X^R旋转 α i − 1 \alpha{i-1} αi−1得到{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} zi−1轴(最后一个坐标系{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} zi−1和轴 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} zi−1和轴 z i z_i zi相交时, X ^ i \hat{X}i X^i垂直于 Z ^ i − 1 \hat{Z}{i-1} Z^i−1和 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} zn−1垂直,但 z n z_n zn不是唯一定义的,当关节n是转动的, z n z_n zn依照 z n − 1 z_{n-1} zn−1的方向设置

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

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

  1. a i a_{i} ai:沿 X ^ i \hat{X}{i} X^i轴,从 Z ^ i − 1 \hat{Z}{i-1} Z^i−1移动到 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^i−1旋转到 Z ^ i \hat{Z}_{i} Z^i的角度,采用右手法则判断正负;

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

  4. θ i \theta_i θi:绕 Z ^ i − 1 \hat{Z}{i-1} Z^i−1轴,从 X ^ i − 1 \hat{X}{i-1} X^i−1旋转到 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} ii−1T(qi)=RZ(θi)DZ(di)RZ(αi)DX(ai)= cθisθi00−sθicθi00001000di1 10000cαisαi00−sαicαi0ai001 = cθisθi00−sθicαicθicαisαi0sθisαi−cθ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参数
    待补充
相关推荐
向阳逐梦18 小时前
基于STM32F4单片机实现ROS机器人主板
stm32·单片机·机器人
朽木成才1 天前
小程序快速实现大模型聊天机器人
小程序·机器人
聆思科技AI芯片1 天前
实操给桌面机器人加上超拟人音色
人工智能·机器人·大模型·aigc·多模态·智能音箱·语音交互
新加坡内哥谈技术2 天前
开源Genesis: 开创机器人研究的全新模拟平台
机器人·开源
野蛮的大西瓜2 天前
文心一言对接FreeSWITCH实现大模型呼叫中心
人工智能·机器人·自动化·音视频·实时音视频·文心一言·信息与通信
高克莱2 天前
【钉钉群聊机器人定时发送消息功能实现】
java·spring boot·机器人·调度任务
小俱的一步步2 天前
钉钉自定义机器人发送群消息(加签方式、http发送)
机器人·钉钉
三月七(爱看动漫的程序员)2 天前
Knowledge Graph Prompting for Multi-Document Question Answering
人工智能·gpt·学习·语言模型·自然语言处理·机器人·知识图谱
努力进修2 天前
【机器学习】当教育遇上机器学习:打破传统,开启因材施教新时代
人工智能·机器学习·机器人
高工智能汽车3 天前
踩准智能汽车+机器人两大风口,速腾聚创AI+机器人应用双线爆发
人工智能·机器人·汽车