机械臂建模之DH表

本文配图 取自哔哩哔哩机器人学视频 林沛群老师的PPT

机械臂几何直观描述

首先要知道DH表中四个参数的含义:

image-20241031215106374

对于 a 、 α 、 d 、 θ i a、 \alpha 、 d 、 \theta_i aαdθi 四个参数,上图采用MDH的方式,对于一个轴的这四个参数,都是在对应轴上定义的

  • 对于两轴之间,用 a a a α \alpha α 可定义二者之间的关系

    • a a a连杆长度——两轴线之间的公垂线长度

    • α \alpha α扭转角——两轴线的夹角

  • 对于多轴串联,需引入另外两个参数: d i d_i di θ i \theta_i θi

    • d d d连杆偏移——两公垂线在一条轴上的交点之间的偏移量、距离
    • θ i \theta_i θi关节角——两公垂线在一条轴上的夹角

机械臂坐标系建立

image-20241031233737475
  • 在每个轴处建立坐标系的步骤:

    • 首先根据转轴设置Z坐标指向(方向凭喜好选)

    • 然后根据公垂线设置X坐标指向(方向凭喜好选)

      若两个 Z Z Z 轴相交,则X轴指向两个 Z Z Z 轴组成平面的垂直方向

    • 最后根据右手定则设置Y坐标指向

  • 每个关节的运动描述

    每个关节的运动在其前一个轴的坐标系下进行描述,即每个关节所设置的坐标系,都是由前一个坐标系变换来的

  • 第一个关节的运动描述

    实际上,每个轴对应了一个关节

    由于第一个轴前面没有关节了,我们设置一个特殊的轴,即地轴,

    地轴的坐标系与第一个关节对应轴的坐标系,当变量(如 θ 、 d \theta 、 d θd)取0时一致,规定第一个轴的运动相对于地轴坐标系描述

  • 最后一个关节的坐标系建立

    根据前述的坐标系建立规则,由于最后一个关节对应的轴后面没有轴线了,因此无法按前述方式确定X轴

    规定最后一个关节对应的X轴的方向与前一个坐标系的X轴方向相同

另一种方式认识DH表四个参数

image-20241031220310517

前面建立了坐标系之后,像轴线、公垂线这种描述就可以更数学化来表示了

  • α i − 1 \alpha_{i-1} αi1 Z i − 1 Z_{i-1} Zi1 Z i Z_i Zi 之间的夹角(方向以 X i − 1 X_{i-1} Xi1轴方向看)
  • a i − 1 a_{i-1} ai1 Z i − 1 Z_{i-1} Zi1 Z i Z_i Zi 之间距离(方向以 X i − 1 X_{i-1} Xi1轴方向看)
  • θ i \theta_{i} θi X i − 1 X_{i-1} Xi1 X i X_i Xi 之间的夹角(方向以 Z i Z_{i} Zi轴方向看)
  • d i d_{i} di X i − 1 X_{i-1} Xi1 X i X_i Xi 之间的距离(方向以 Z i Z_{i} Zi轴方向看)

转换矩阵的计算方式

image-20241031222638455

对于MDH,由于坐标系0和第一个轴(关节)对应的坐标系1的零位是重合的,该轴的运动体现在该轴处的坐标系1

对于SDH,坐标系0就是第一个轴(关节)对应得坐标系,但该轴的运动体现在下一个轴处的坐标系,即坐标系1

不管哪种DH表示,坐标系0都是不变的

MDH和SDH转换矩阵的差异

  • 对于MDH,第一个转换矩阵的形式可能为

    image-20241031220518902
  • 对于SDH,第一个转换矩阵的形式可能为

    image-20241031220606022

这种差异来源于 a 、 α 、 d 、 θ i a、 \alpha 、 d 、 \theta_i aαdθi 四个参数定义方式的不同,因为对于SDH,其考虑了第一段连杆的长度 a a a ,而MDH的这个转换矩阵中是没有第一段连杆长度 a a a

感兴趣可自行了解SDH定义方法

MDH和SDH末端转换矩阵的含义

  • MDH

    image-20241031221341655

    对于MDH的末端转换矩阵,根据递推关系也可以知道,其代表最后一个轴(最后一个关节)在地轴(与第一个关节的零位重合)坐标系下的表述。

    对于机械臂末端的一个点,如上图(该例为平面、三轴)中的 P P P 点,其在最后一个轴的坐标系下的位置为 { L 3 , 0 , 0 } \{L_3, 0, 0\} {L3,0,0} ,因此要算 P P P 点在机器人基座标系下(这里为地轴坐标系)的坐标,需要对机器人末端转换矩阵再右乘一个转换矩阵,即:

    image-20241031221854360
  • SDH

    image-20241031222113905

    对于SDH的末端转换矩阵,由于其确定四个参数时坐标系的建立方式与MDH有差异,若最后一个坐标系就建立在点 P P P 处,那么转换矩阵在机器人基座标系下(这里为第一个轴(关节)的坐标系)的坐标就是这个转换矩阵的值。

    当然,如果这个 P P P 点和最后一个轴(关节)的坐标系原点重合,那么得到的转换矩阵就和MDH是一致的

MDH和SDH对应的DH表的关系

继续上面平面三轴的例子:

  • 对于MDH

    image-20241031221341655 image-20241031223641856
  • 对于SDH

    image-20241031222113905 image-20241031223735825
  • 二者关系

    MDH表在SDH表的基础上,将 a 、 α a、 \alpha aα 两列向下移动了一行,最后一列放到第一列

    若我们将 L 3 L_3 L3 取值为0,可以发现上面的例子符合这一规律

UR5机械臂DH表举例

Universal Robots - DH Parameters for calculations of kinematics and dynamics

image-20241031224726949

官方UR5机械臂的坐标系建立与前面《机械臂坐标系建立》小结吻合

官方提供了UR5的SDH表

image-20241031225514973

SDH
θ \theta θ a a a d d d α \alpha α o f f s e t offset offset
000.089159 π / 2 \pi/2 π/20
0-0.42500 − π / 2 -\pi/2 π/2
0-0.39225000
000.10915 π / 2 \pi/2 π/2 − π / 2 -\pi/2 π/2
000.09465 − π / 2 -\pi/2 π/20
000.082300

根据前述的规则,我们容易得到对应的MDH为:

MDH表在SDH表的基础上,将 a 、 α a、 \alpha aα 两列向下移动了一行,最后一列放到第一列

MDH
θ \theta θ a a a d d d α \alpha α o f f s e t offset offset
000.08915900
000 π / 2 \pi/2 π/2 − π / 2 -\pi/2 π/2
0-0.425000
0-0.392250.109150 − π / 2 -\pi/2 π/2
000.09465 π / 2 \pi/2 π/20
000.0823 − π / 2 -\pi/2 π/20

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/905608.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flink CDC系列之:学习理解核心概念——Data Pipeline

Flink CDC系列之:学习理解核心概念——Data Pipeline 数据管道sourcesink管道配置Table IDroutetransform案例 数据管道 由于 Flink CDC 中的事件以管道方式从上游流向下游,因此整个 ETL 任务被称为数据管道。 管道对应于 Flink 中的一系列操作。 要描…

Git 本地操作(2)

会以下操作就可以完成本地的版本控制了,就不需要再复制文件每次改一个东西就复制整个工程保存下来啦! 建议先看上一篇文章噢 !!! 一、新建项目git本地操作 1、初始化仓库 创建一个 project 文件夹,将需…

Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景

介绍 网络爬虫(Web Crawler)是自动化的数据采集工具,用于从网络上提取所需的数据。然而,随着反爬虫技术的不断进步,很多网站增加了复杂的防护机制,使得数据采集变得更加困难。在这种情况下,Pyt…

Linux中NFS配置

文章目录 一、NFS介绍1.1、NFS的工作流程1.2、NFS主要涉及的软件包1.3、NFS的主要配置文件 二、安装NFS2.1、更新yum2.2、安装NFS服务2.3、配置NFS服务器2.4、启动NFS服务2.5、配置防火墙(如果启用了防火墙,需要允许NFS相关的端口通过)2.6、生…

MATLAB发票识别系统

课题介绍 该课题为基于MATLAB的发票识别系统。主要识别发票的编号。可定做发票的日期,金额等字段的识别。通过输入图片,校正,定位目标区域,分割,字符分割,模板匹配识别,得出结果。整个设计包含…

前端拖拽库方案之react-beautiful-dnd

近期,知名 React 拖拽库 react-beautiful-dnd 宣布了项目弃用的决定,未来将不再维护。这一决定源于其存在的缺陷与局限性,促使作者转向开发一个更加现代化的拖拽解决方案——Pragmatic drag and drop(下面会介绍)&…

Rust 力扣 - 643. 子数组最大平均数 I

文章目录 题目描述题解思路题解代码题解链接 题目描述 题解思路 我们遍历长度为k的窗口&#xff0c;我们只需要记录窗口内的最大和即可&#xff0c;遍历过程中刷新最大值 结果为窗口长度为k的最大和 除以 k 题解代码 impl Solution {pub fn find_max_average(nums: Vec<…

Linux——五种IO模型

目录 一IO基本理解 二五种IO模型 1五种IO模型示意图 2同步IO和异步IO 二非阻塞IO 1fcntl 2实现非阻塞IO 三多路复用 1select 1.1定位和作用 1.2介绍参数 1.3编写多路复用代码 1.4优缺点 2poll 2.1作用和定位 2.2介绍参数 2.3修改select代码 3epoll 3.1介绍…

php解密,sg11解密-sg15解密 如何由sourceGuardian11-sourceGuardian15加密(sg11加密~sg15加密)的源码

sg11加密~sg11加密的PHP文件运行需安装SG11加密-SG15加密组件使用、支持WINDOW及LINUX各版本 sg11解密(SourceGuardian)-sg15解密(SourceGuardian)&#xff0c;号称目前最安全的组件加密已可以解密&#xff0c;解密率99.9%&#xff0c;基本可以直接使用&#xff0c;代码特征是…

Jetson OrinNX平台CSI相机导致cpu load average升高问题调试

1. 前言 硬件: Orin NX JP: 5.1.2, R35.4.1 用v4l2-ctl --stream-mmap -d0 命令去获取相机数据时, 用top查看cpu使用情况, CPU占用率很低,但load average在1左右, 无任何程序运行时,load average 为0 用ps -aux 查看当前进程情况,发现有两个系统进程vi-output, …

qt QIcon详解

1、概述 QIcon是Qt框架中的一个类&#xff0c;专门用于处理和显示图标。它提供了灵活的接口&#xff0c;支持从多种来源加载图标&#xff0c;如文件、资源或系统主题&#xff0c;并且支持多种图像格式&#xff0c;如PNG、JPEG、SVG等。QIcon类能够与Qt中的各种控件&#xff08…

【操作系统实验课】Linux操作基础

1. 打开Ubuntu Ubuntu-22.04 虚拟机安装-CSDN博客 打开虚拟机软件 启动其中的Ubuntu22.04 打开Ubuntu系统终端 2. 创建目录和文件 创建test3目录&#xff1a; 在终端中输入命令&#xff1a;mkdir /test3。此命令用于在根目录下创建test3目录。&#xff08;注意在命令中&…

【Linux-进程间通信】匿名管道的应用-进程池实现+命名管道的应用ClientServer通信

匿名管道的应用--进程池/C实现 当系统中需要处理众多任务时&#xff0c;可以将这些任务分配给多个子进程来分担工作。然而&#xff0c;频繁地创建和销毁进程会导致较高的时间成本。为减少这种开销&#xff0c;可以采取预先创建一组子进程的策略&#xff08;以避免在任务分配时…

java设计模式之创建者模式(5种)

设计模式 软件设计模式&#xff0c;又称为设计模式&#xff0c;是一套被反复利用&#xff0c;代码设计经验的总结&#xff0c;他是在软件设计过程中的一些不断发生的问题&#xff0c;以及该问题的解决方案。 **创建者模式又分为以下五个模式&#xff1a;**用来描述怎么“将对象…

数据库->数据库约束

目录 一、数据库约束 1.定义 2.约束类型 3.NOT NULL 非空约束 4. UNIQUE 唯一约束 5.PRIMARY KEY 主键约束 1.主键的使用 2.把表中的主键交给数据库自己维护 2.1主键列设置为null 则使用自增 2.2插入除了主键以外的所有非空列&#xff08;推荐方法&#xff09; 2.3自…

ValueError: Object arrays cannot be loaded when allow_pickle=False

文章目录 问题解决方法1&#xff1a;allow_pickleTrue解决方法2&#xff1a;降低numpy版本错误原因&#xff1a;python和numpy版本不兼容 问题 Traceback (most recent call last): File “D:\project\test_st\retrieval\read_npy.py”, line 4, in data np.load(‘mosi0__le…

HTML CSS

目录 1. 什么是HTML 2. 什么是CSS ? 3. 基础标签 & 样式 3.1 新浪新闻-标题实现 3.1.1 标题排版 3.1.1.1 分析 3.1.1.2 标签 3.1.1.3 实现 3.1.2 标题样式 3.1.2.1 CSS引入方式 3.1.2.2 颜色表示 3.1.2.3 标题字体颜色 3.1.2.4 CSS选择器 3.1.2.5 发布时间字…

Prometheus和Grafana的安装部署

初识Prometheus和Grafana 通常来说&#xff0c;对于一个运行时的复杂系统&#xff0c;如果系统出了问题是很难排查的。因为你是不太可能在运行时一边检查代码一边调试的。因此&#xff0c;你需要在各种关键点加上监控&#xff0c;通过监控获取的数据&#xff0c;指导我们进一步…

ubuntu20.04 加固方案-设置用户缺省UMASK

一、编辑/etc/profile配置文件 打开终端。 查看当前umask 使用文本编辑器&#xff08;如vim&#xff09;编辑/etc/profile文件。 sudo vim /etc/profile 二、添加配置参数 在打开的配置文件的末尾中&#xff0c;添加或修改以下参数&#xff1a; umask 027 三、保存并退出…

liunx网络套接字 | 实现基于tcp协议的echo服务

前言&#xff1a;本节讲述linux网络下的tcp协议套接字相关内容。博主以实现tcp服务为主线&#xff0c;穿插一些小知识点。以先粗略实现&#xff0c;后精雕细琢为思路讲述实现服务的过程。下面开始我们的学习吧。 ps&#xff1a;本节内容建议了解网络端口号的友友们观看哦。 目录…