跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
MATLAB / OctaveAI算法

机器人标准 DH 与改进 DH 参数对比

对比了机器人学中的标准 DH(SDH)与改进 DH(MDH)参数法。主要区别在于连杆坐标系建立位置不同(SDH 在远端,MDH 在近端)及变换矩阵乘法顺序相反。MDH 适用于开链、树状及闭链结构,避免了 SDH 在复杂机构中的坐标系歧义问题。文中提供了基于改进 DH 的 MATLAB 几何雅可比矩阵计算代码示例。

岁月神偷发布于 2026/4/6更新于 2026/7/2572 浏览
机器人标准 DH 与改进 DH 参数对比

一、改进 DH 法

使用改进 D-H 参数(Modified DH, MDH),将连杆坐标系 $i$ 建立在连杆的前端关节处。

二、标准 DH 与改进 DH 法的区别

我们知道一个连杆有两端,一端离基座近,一端离基座远。简单来说,标准 DH(SDH)将坐标系 $i$ 建立在连杆 $i$ 离基座近的一端,而改进 DH 建立在离基座远的一端。

2.1 机器人连杆与关节的标号

先标号,再建系。

  • 连杆编号:基座为杆 0,从基座往后依次定义为杆 1,杆 2,…,杆 $i$;
  • 关节编号:杆 $i$ 离基座近的一端(近端)的关节为关节 $i$,远的一端(远端)为关节 $i+1$。

一句话总结:连杆近端关节的标号和连杆标号是一致的。

2.2 两种建系方法的区别

区别一:连杆坐标系建立的位置不同。 SDH 方法将连杆 $i$ 的坐标系固定在连杆的远端,MDH 方法把连杆 $i$ 的坐标系固定在连杆的近端。

区别二:执行变换的顺序不同。 按照 SDH 方法变换时四个参数相乘的顺序依次为 $d \to \theta \to a \to \alpha$,而 MDH 方法则按照 $\alpha \to a \to \theta \to d$(正好与 SDH 相反)。

三、为什么要用改进 DH 法,而不选标准 DH 法

对于树形结构或者闭链机构的机器人来说,按照 SDH 方法建立的连杆坐标系会产生歧义,因为 SDH 的建系原则是把连杆 $i$ 的坐标系建立在连杆的远端,这就导致连杆 0 上同时出现了两个坐标系。而 MDH 把连杆坐标系建立在每个连杆的近端,则不会出现坐标系重合的情况,这就克服了 SDH 方法建系的缺点。

四、总结

  1. SDH 适合应用于开链结构的机器人;
  2. 当使用 SDH 表示树状或闭链结构的机器人时,会产生歧义;
  3. MDH 法对开链、树状、闭链结构的机器人都适用,推荐使用。

五、公式推导差异

部分旧版教材使用的是标准 DH 参数法,因此在后面推导几何雅可比矩阵的时候,提到 $z_{i-1}$ 和 $p_{i-1}$ 分别由 $R^0_{i-1}$ 与 $T^0_{i-1}$ 得到。

但是如果你用的是改进 DH 参数法进行建模,核心公式有所不同。原因是原本的标准 DH 的坐标系 $i-1$ 对应的 $z$ 轴 $z_{i-1}$ 就是改进的 DH 的坐标系 $i$ 的 $z$ 轴 $z_i$。

下面是基于改进 DH 计算几何雅可比的代码示例:

function J_geo = geometric_jacobian_from_q_corrected(q) % 根据关节角度计算几何雅可比矩阵,匹配 MATLAB 工具箱的顺序
% 输入:q - 7×1 关节角向量 (弧度)
% 输出:J_geo - 6×7 几何雅可比矩阵
% Franka Panda 的 DH 参数 (Modified DH)
% 格式:[alpha, a, d, theta]
MDH = [0, 0, 0.333, q(1); -pi/2, 0, 0, q(2); pi/2, 0, 0.316, q(3); pi/2, 0.0825, 0, q(4); -pi/2, -0.0825,0.384, q(5); pi/2, 0, 0, q(6); pi/2, 0.088, 0.107, q(7)];

% 计算每个关节的变换矩阵和位置
n = 7;
T = eye(4);
T_all = cell(n, 1);
p_all = zeros(3, n);
z_all = zeros(3, n);
for i = 1:n
    alpha = MDH(i, 1);
    a = MDH(i, 2);
    d = MDH(i, 3);
    theta = MDH(i, 4);
    % 改进 DH 变换矩阵 Ti
    Ti = [cos(theta), -sin(theta), 0, a;
          sin(theta)*cos(alpha), cos(theta)*cos(alpha), -sin(alpha), -d*sin(alpha);
          sin(theta)*sin(alpha), cos(theta)*sin(alpha), cos(alpha), d*cos(alpha);
          0, 0, 0, 1];
    T = T * Ti;
    T_all{i} = T;
    p_all(:, i) = T(1:3, 4);
    z_all(:, i) = T(1:3, 3);
end

% 末端执行器位置
p_ee = p_all(:, end);

% 计算几何雅可比 - 修正关节编号对应关系
J_geo = zeros(6, n);
for i = 1:n
    if i == 1
        % 关节 1:使用基坐标系
        p_i = [0; 0; 0];
        z_i = [0; 0; 1];
    else
        % 关节 i:使用连杆 i-1 的坐标系
        p_i = p_all(:, i); % 改进 DH:使用 i
        z_i = z_all(:, i); % 改进 DH:使用 i
    end
    % MATLAB 顺序:线速度在前,角速度在后
    J_geo(4:6, i) = z_i;
    J_geo(1:3, i) = cross(z_i, p_ee - p_i);
end
end

function T = forward_kinematics_mdh(q) % 改进 DH 正运动学
MDH = [0, 0, 0.333, q(1); -pi/2, 0, 0, q(2); pi/2, 0, 0.316, q(3); pi/2, 0.0825, 0, q(4); -pi/2, -0.0825,0.384, q(5); pi/2, 0, 0, q(6); pi/2, 0.088, 0.107, q(7)];
T = eye(4);
for i = 1:7
    alpha = MDH(i, 1);
    a = MDH(i, 2);
    d = MDH(i, 3);
    theta = MDH(i, 4);
    Ti = [cos(theta), -sin(theta), 0, a;
          sin(theta)*cos(alpha), cos(theta)*cos(alpha), -sin(alpha), -d*sin(alpha);
          sin(theta)*sin(alpha), cos(theta)*sin(alpha), cos(alpha), d*cos(alpha);
          0, 0, 0, 1];
    T = T * Ti;
end
end

目录

  1. 一、改进 DH 法
  2. 二、标准 DH 与改进 DH 法的区别
  3. 2.1 机器人连杆与关节的标号
  4. 2.2 两种建系方法的区别
  5. 三、为什么要用改进 DH 法,而不选标准 DH 法
  6. 四、总结
  7. 五、公式推导差异
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • JDK21 下载、安装及环境变量配置教程
  • Java 面试题及答案汇总
  • SPA 单页应用无刷新更新部署方案与实战优化
  • ROS1 机器人 SLAM:Gmapping 算法详解与实战
  • OpenClaw 实战:Tavily MCP、浏览器自动化与多智能体配置
  • 设计模式实战:过滤器模式(Criteria Pattern)详解
  • OpenClaw 2026.3.3 新增 AI 解析 PDF 功能实测
  • Android 实现类似朋友圈发说说功能:拍照、选图与多图上传(Retrofit2)
  • OpenClaw:AI 代理框架如何重塑产品思维与工作流程
  • C++ Boost 搜索引擎数据清洗与解析实现详解
  • Linux 线程控制详解:POSIX 线程库与多线程编程实践
  • 用 Rokid 灵珠平台做一个 AI Glasses 作业助手
  • Webnovel Writer:基于 Claude Code 的长篇网文 AI 创作系统
  • AI 驱动游戏:鸿蒙生态的机会在哪里?
  • RAG 系统知识投毒攻击研究:One Shot Dominance 论文解读
  • Python 开根号的 5 种常用方法及场景选择
  • Layui 下解决 Unity WebGL Tab 切换黑屏
  • 语言学习通用心法:享受过程、持续输入与词汇积累
  • 低成本运行 Claude Code:通过 LiteLLM 接入 GitHub Copilot Chat API
  • Diffusion Transformer (DiT) 详解:从 U-Net 到 ViT,应用于视频生成与机器人动作预测

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online