机器人标准DH(SDH)与改进DH(MDH)

机器人标准DH(SDH)与改进DH(MDH)
首先说一下为什么要写这一篇博客,就是为了提醒大家要明确区分标准DH和改进DH。很多机器人初学者只知道用DH法建立串联机器人连杆坐标系,然后在看书或者使用DH的时候很糊涂的就模糊了这标准DH和改进DH的区别,最大的坑就是:一些比较老的机器人学教科书用的是标准DH,而现在比较新的机器人书或者说我们大部分用的都是改进DH,这就导致老的教科书里面的一些公式推导和新的网上找的代码不一致,就会比较麻烦。

一:改进DH法

建立连杆坐标系:

使用改进D-H参数,将

坐标系定义在i

连杆的前端关节:

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

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

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

先标号,再建系。

连杆编号:基座为杆0,从基座往后依次定义为杆1,杆2,…,杆i;

关节编号:杆i离基座近的一端(近端)的关节为关节i,远的一端(远端)为关节i+1。

为便于理解,这里我把连杆的近端用绿色表示,远端用橙色表示,且远端驱动近端转动。大家只要记住一句话,连杆近端关节的标号和连杆标号是一致的

图1连杆和关节标号

2.2 两种建系方法的区别

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

(a)SDH                                (b)MDH

图2 建系方法的不同

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

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

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

(a)SDH                                               (b)MDH

图3 坐标系分配的不同

四.总结

1.SDH适合应用于开链结构的机器人

2.当使用SDH表示树状或闭链结构的机器人时,会产生歧义;

3.MDH法对开链、树状、闭链结构的机器人都适用,推荐使用。

五.我遇到的坑

在下面这本教材里面

显然用的是DH参数法,因此在后面推导几何雅可比矩阵的时候

提到

z_{i-1}

p_{i-1}

分别由

R^0_{i-1}

T^0_{i-1}

得到:

但是如果你用的是改进DH参数法进行建模,核心公式(3.30)应该是:

原因是原本的标准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 = [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 % 

Read more

实战指南:Stable Diffusion模型部署问题排查与性能调优

实战指南:Stable Diffusion模型部署问题排查与性能调优 【免费下载链接】stable-diffusionA latent text-to-image diffusion model 项目地址: https://gitcode.com/gh_mirrors/st/stable-diffusion 在将Stable Diffusion模型投入生产环境时,技术团队常常面临显存溢出、推理速度慢、生成质量不稳定等实际问题。本文基于实际部署经验,提供一套完整的故障排查与性能优化方案。 显存不足的快速解决方案 当遇到CUDA out of memory错误时,首先需要分析显存占用情况。通过以下命令可以实时监控显存使用: nvidia-smi -l 1 显存优化策略 降低批次大小:将默认的--n_samples 4调整为--n_samples 1,可减少约75%的显存占用。 调整图像分辨率:使用--H 384 --W 384替代默认的512×512,显存需求降低约40%

PyCharm+GitHub Copilot零成本配置手册:学生认证/2FA/汉化疑难一次解决

PyCharm + GitHub Copilot 零成本配置手册:从学生认证到流畅编码的全链路实战 作为一名学生开发者,你是否曾羡慕那些能流畅使用AI编程助手的同行,却苦于复杂的认证流程、网络环境的掣肘,或是面对英文界面时的些许不适?将前沿的AI工具无缝融入日常开发工作流,本应是一个提升效率的愉悦过程,而非充满障碍的挑战。今天,我们就来彻底解决这些问题,打造一套专为学生群体设计、开箱即用的PyCharm与GitHub Copilot生产力解决方案。这套方案不仅会手把手带你完成从学生身份验证到IDE集成的每一步,更会聚焦于国内用户常见的“水土不服”问题,提供稳定的替代方案和优化技巧,让你真正零成本、零门槛地拥抱AI辅助编程。 1. 基石构建:GitHub学生认证与账户安全加固 在享受任何福利之前,一个经过验证且安全的GitHub账户是首要前提。学生认证是获取GitHub Copilot Pro免费使用权的钥匙,而双重身份验证(2FA)则是守护这把钥匙的保险箱。 1.1 高效通过GitHub学生认证 学生认证的核心在于向GitHub证明你当前的在读身份。整个过程需要细心,但绝非

昔日AI绘画框架王者Stable Diffusion WebUI,已死

昔日AI绘画框架王者Stable Diffusion WebUI,已死

写在前面 【WeThinkIn出品】栏目分享Rocky的认知思考与经验感悟,范围涵盖但不限于AI行业。 欢迎大家关注Rocky的公众号:WeThinkIn 欢迎大家关注Rocky的知乎:Rocky Ding AIGC算法工程师面试面经秘籍分享:WeThinkIn/Interview-for-Algorithm-Engineer欢迎大家Star~ 获取更多AI行业的前沿资讯与干货资源 AIGC时代的 《三年面试五年模拟》AI算法工程师求职面试秘籍独家资源:【三年面试五年模拟】AI算法工程师面试秘籍 Rocky最新撰写10万字Stable Diffusion 3和FLUX.1系列模型的深入浅出全维度解析文章:深入浅出完整解析Stable Diffusion 3(SD 3)和FLUX.1系列核心基础知识 AIGC算法岗/开发岗面试面经交流社群(涵盖AI绘画、AI视频、大模型、AI多模态、数字人等AIGC面试干货资源)欢迎大家加入:https://t.zsxq.com/33pJ0 大家好,我是Rocky。 “还记得我们第一次打开Stable Diffusion WebUI,用上第

知网vs维普AIGC检测:哪个更严格?实测数据告诉你答案

知网vs维普AIGC检测:哪个更严格?实测数据告诉你答案

知网vs维普AIGC检测:哪个更严格?实测数据告诉你答案 TL;DR:结论先放这里——知网AIGC检测在学术文本上更严格,维普在通用文本上更严格。同一篇论文,知网可能检测出AI率60%,维普可能检测出75%。但最终以学校指定平台为准。如果两边都要过,建议用嘎嘎降AI处理,它同时适配知网和维普,达标率99.26%。 知网和维普的检测原理有什么不同? 很多同学以为知网和维普只是名字不同,检测原理应该差不多。其实它们的底层算法和侧重点完全不一样。知网用的是AIGC检测算法3.0版本,主要依托自己的学术数据库,侧重分析学术文本的特征。它识别的重点是:句式模板化(比如「首先…其次…最后」这种套路)、高频词汇堆砌、逻辑结构固化、以及表达模式过于规整。简单说,知网对「写得太标准」的文本特别敏感。 维普的检测系统则基于自然语言处理和深度学习技术,会从词汇、语法、语义等多个维度分析文本特征。维普的数据资源更广泛,不仅覆盖学术文献,还包括新闻、网页等非学术内容,所以它在检测「通用AI写作」方面更敏感。