机器人标准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

YOLOFuse Midjourney 提示词逆向生成工具设想

YOLOFuse Midjourney 提示词逆向生成工具设想 在城市消防演练的夜间热成像画面中,浓烟弥漫、能见度极低,一名救援人员的身影若隐若现。传统可见光摄像头几乎无法捕捉其轮廓,而红外图像虽能识别热源,却难以判断动作与姿态。如果此时有一套系统,不仅能精准检测出“一个正在移动的人体”,还能自动输出一句自然语言描述:“a glowing human figure walking through thick smoke, night vision style, thermal imaging”——这句提示词恰好可用于 Midjourney 生成高度还原真实场景的艺术图像。 这不是科幻,而是多模态感知与生成式 AI 融合的现实可能。随着 RGB-IR 双模态目标检测技术的成熟和 AIGC 工具的普及,我们正站在一个交叉创新的临界点上:让机器不仅“看得清”,还能“说得准”。 Ultralytics YOLO 系列因其高效性和部署便捷性,已成为工业界主流的目标检测框架。然而,标准

互联网大厂Java面试故事:AIGC场景下微服务、缓存与安全技术全流程解析

互联网大厂Java面试故事:AIGC场景下微服务、缓存与安全技术全流程解析 故事场景 主角谢飞机,一位风趣幽默的程序员,面试官则以严谨著称。这次面试设定在一家主攻AIGC(生成式AI内容)平台的大厂。面试围绕AI内容生成平台的高并发、微服务架构、安全与高可用等场景,进行系统技术提问。 第一轮:基础与AIGC平台高并发场景 面试官: 1. 平台AIGC内容生成服务需支持高并发请求,你会如何用Java SE与JVM参数进行优化? 2. AIGC平台服务众多,Spring Boot与Spring WebFlux各适合哪些场景? 3. 平台数据库访问压力大,Hibernate、JPA、HikariCP如何协同保证高性能? 谢飞机: 1. JVM参数可以配大点,线程池多开点,Java 8的Stream流也可以用用! 2. Spring Boot能快速起项目,WebFlux适合高并发,异步点的场景。 3. Hibernate和JPA都能查数据库,HikariCP是连接池,连一起用更快。 面试官(点头): 基础答得不错,JVM调优和连接池很关键,

从零开始学AI绘画:麦橘超然WebUI新手入门必看

从零开始学AI绘画:麦橘超然WebUI新手入门必看 你是不是也试过打开一堆AI绘画工具,结果卡在安装、报错、显存不足、界面找不到按钮……最后关掉网页,默默刷了半小时小红书?别急,这次真不一样。麦橘超然WebUI不是又一个“看着很炫、用着崩溃”的Demo,而是一个专为普通用户打磨出来的离线图像生成控制台——它不挑显卡,不折腾环境,打开浏览器就能画;它不堆参数,不讲原理,但每一步都稳稳出图;它甚至把最让人头疼的“模型下载”和“量化加载”全打包进镜像里,你只需要写一句话、点一下按钮。 这篇文章就是为你写的。没有术语轰炸,没有命令行恐惧,不假设你懂CUDA、不预设你有3090。哪怕你只有一块RTX 3060,或者刚配好一台带核显的笔记本,只要能跑Python,就能跟着这篇实操指南,15分钟内跑通属于你自己的Flux图像生成服务。我们不讲“为什么float8快”,只告诉你“为什么你点下按钮后30秒就出高清图”;不罗列DiT架构细节,只展示怎么用一句“雨夜赛博朋克街道”生成一张能发朋友圈的成片。 准备好了吗?我们直接开始。

知网2026年AIGC检测算法又升级了,这次该怎么应对?

知网2026年AIGC检测算法又升级了,这次该怎么应对?

知网2026年AIGC检测算法又升级了,这次该怎么应对? 最近不少同学反映:以前用降AI工具处理完能过的论文,现在又被知网标红了。 不是工具变差了,是知网的AIGC检测算法又升级了。2025年底到2026年初,知网至少做了两次检测系统更新。今天来聊聊这次升级改了什么、对我们有什么影响、怎么应对。 这次算法升级改了什么 根据最近的实测数据和公开信息,知网这次升级主要涉及三个方面: 1. 句式模式识别增强 以前知网主要看"词汇层面"的AI特征——某些词被AI高频使用,检测系统建了个特征词库。 现在升级到了"句式层面"。AI生成的文字有个特点:句式结构高度规律化。比如AI喜欢用"首先…其次…最后…"这种并列结构,喜欢把定语放在很长的从句里。 升级后的算法能识别这些句式规律,即使你把每个词都换了,只要句子结构还是AI风格的,照样标红。 2. 语义连贯性检测 新算法加入了语义连贯性分析。AI写的文字在段落之间的过渡非常"丝滑",每一段都完美衔接。