机器人控制系列教程之D-H参数建模法

机器人运动学的研究依赖于机器人的模型的建立,目前较为多见的两种方法分别是Denavit-Hartenberg建模法(简称:D-H建模法)。该方法时由Denavit和Hartenberg于19955年提出的一种为关节链中的每一个杆件建立一个坐标系的矩阵方法,根据其建模过程中的参数设置不同,可分为标准D-H建模法和改进D-H建模法两种,下面将对上述两种不同的D-H建模方法进行阐述。

机器人连杆与关节的编号

  • 先标号,再建系。
  • 连杆编号:基座为杆0,从基座往后依次定义为杆1,杆2,…,杆i;
  • 关节编号:杆i离基座近的一端(近端)的关节为关节i,远的一端(远端)为关节i+1。
    为便于理解,这里我把连杆的近端用绿色表示,远端用橙色表示,且远端驱动近端转动。大家只要记住一句话,连杆近端关节的标号和连杆标号是一致的。

D-H建模相关参数介绍

运用D-H建模的基本步骤为:建立连杆坐标系->求解连杆间变换矩阵->求解机器人末端相对基座的位姿矩阵;机器人的每根连杆的几何尺寸都可以用四个参数来描述,这四个参数分别为: a 、 α 、 d 、 θ a、\alpha、 d、\theta aαdθ。其中:

  • a a a表示连杆的长度。
  • α \alpha α表示连杆的扭角。
    这两个参数描述连杆本身的特征。
  • d d d表示两个相邻连杆之间的距离。
  • θ \theta θ 表示两个相邻连杆之间的夹角。
    这两该参数描述相邻连杆之间的关系。对于旋转关节来说, θ \theta θ 就是关节变量, a 、 α 、 d a、\alpha、 d aαd是关节参数;对于平移关节来说, d d d 就是关节变量, a 、 α 、 θ a、\alpha、 \theta aαθ是关节参数,如下图所示。

标准D-H法和改进D-H法建模区别

主要区别一:连杆坐标系建立的位置不同。标准D-H建模法将连杆i的坐标系固定在连杆的远端,改进D-H建模法把连杆i的坐标系固定在连杆的近端。

主要区别二:执行变换的的顺序不同。按照标准D-H建模法变换时四个参数相乘的顺序依次为d—>θ—>a—>α,而改进D-H建模法则按照α—>a—>θ—>d(正好与标准D-H建模法相反)。详细区别可见下图,其中STD_DH表示标准D-H建模法,MOD_DH表示改进D-H建模法。

MATLAB中的建模实现

标准D-H建模法在MATLAB中编写如下程序:

%标准DH
%Link(DH,option):
%DH = [THETA D A ALPHA SIGMA]//我的代码中此处定义theta的初始值无效
L1 = Link([0 0.2 1 pi/4 0],'standard');
L2 = Link([0 0.2 1 pi/4 0],'standard');
L3 = Link([0 0 0.5 pi/4 0],'standard');
robot = SerialLink([L1 L2 L3]); %建立连杆机器人
robot.plot([0 0 0]) %显示并赋三个关节变量theta值都为0//此处才可以初始theta

对比代码中的D-H四个参数定义和上图坐标系建立关系,可知四个参数含义:

  • theta( θ i \theta_{i} θi):绕 Z i − 1 Z_{i-1} Zi1轴,从 X i − 1 X_{i-1} Xi1旋转到 X i X_{i} Xi的角度
  • D( d i d_{i} di):沿 Z i − 1 Z_{i-1} Zi1轴,从 X i − 1 X_{i-1} Xi1移动到 X i X_{i} Xi的距离
  • A( a i a_{i} ai):沿 X i X_{i} Xi轴,从 Z i − 1 Z_{i-1} Zi1移动到 Z i Z_{i} Zi的距离
  • alpha( α i \alpha_{i} αi):绕 X i X_{i} Xi轴,从 Z i − 1 Z_{i-1} Zi1旋转到 Z i Z_{i} Zi的角度

改进D-H建模法在MATLAB中编写如下程序:

%改进DH
%Link(DH,option):DH = [THETA D A ALPHA SIGMA]
L1 = Link([0 0.2 1 pi/4 0],'modified');
L2 = Link([0 0.2 1 pi/4 0],'modified');
L3 = Link([0 0 0.5 pi/4 0],'modified');
robot = SerialLink([L1 L2 L3]); %建立连杆机器人
robot.plot([0 0 0]) %显示并赋三个关节变量theta的初始值都为0

程序运行结果:

对比代码中的D-H四个参数定义和上图坐标系建立关系,可知四个参数含义:

  • theta( θ i \theta_{i} θi):绕 Z i Z_{i} Zi轴,从 X i − 1 X_{i-1} Xi1旋转到 X i X_{i} Xi的角度
  • D( d i d_{i} di):沿 Z i Z_{i} Zi轴,从 X i − 1 X_{i-1} Xi1移动到 X i X_{i} Xi的距离
  • A( a i a_{i} ai):沿 X i X_{i} Xi轴,从 Z i Z_{i} Zi移动到 Z i + 1 Z_{i+1} Zi+1的距离
  • alpha( α i \alpha_{i} αi):绕 X i X_{i} Xi轴,从 Z i Z_{i} Zi旋转到 Z i + 1 Z_{i+1} Zi+1的角度

:上文中所涉及到的程序运行时,需安装MATLAB机器人工具箱,安装方式见:https://mp.weixin.qq.com/s?__biz=MzU2OTUxNTA1OQ==&mid=2247487384&idx=3&sn=4436f84374a26791b36943050275e3ff&chksm=fcfcc2c4cb8b4bd212cdc7c1074049d06dd21b6ff692f115ec3153a3c6a782322d0484e8efb2&token=1932408492&lang=zh_CN#rd

在这里插入图片描述

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

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

相关文章

笔记92:离散LQR控制器详细推导

1)离散LQR的推导原理: 拉格朗日乘子法都是在等式约束下用的; 对这个性能函数J运用拉格朗日乘子法后,得到的函数是二次型函数(即转化为了最优化控制问题),二次型函数只有一个极值点而且是极小值点…

AI作画算法原理

1.概述 AI作画算法的原理相当复杂,涉及多个领域的知识,包括计算机视觉、机器学习和神经网络等。我们从以下几个方面来描述AI作画算法的基本原理。 2. 数据准备 在数据准备方面,AI作画算法通常需要大量的图像数据作为训练样本。可以是各种各…

LeetCode-78 子集

LeetCode-78 子集 题目描述解题思路代码 题目描述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:n…

浙江零排参加全国水科技大会暨技术装备成果展览会(成都)并作主论坛演讲

2024年5月13日-15日中华环保联合会、福州大学、上海大学等联合举办的2024年全国水科技大会暨技术装备成果展览会在成都顺利举办。浙江零排城乡规划发展有限公司司受邀参加,首日有幸听取徐祖信院士、任洪强院士、汪华林院士等嘉宾的主旨报告。主旨报告后,…

【初阶数据结构】栈和队列(附题目)

目录 1.栈 1.1栈的概念及结构 1.2栈的实现 1.2.2实现结构的选择 a.数组 b.链表 c.更优的选择 1.2.3实现结构 a.栈的结构体 b.栈的初始化 c.栈的销毁 d.入栈 e.出栈 f.获取栈顶元素 g.获取栈中有效元素个数 h.检测队列是否为空,如果为空返回非零结…

一、初识Qt 之 Hello world

一、初识Qt 之 Hello world 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 初识Qt 之 Hello world文章目录 一、Qt 简介二、Qt 获取安装三、Qt 初步使用四、Qt 之 Hello world1.新建一个项目 总结 一、Qt 简介 C &#xf…

【小程序 滚动条 滑块 音频 组件】

滚动条组件 1. scroll-view 视图容器内 2. scroll-x 允许横向滚动 3. scroll-y 允许纵向滚动 4. scroll-into-view“childs” 绑定子元素 5. scroll-top 竖向滚动条位置 6. scroll-left 横向滚动条位置 7. scroll-into-view 值应为某子元素id(id不能以数字开头&am…

NPM 发包的命名限制

每一个车手都有一个造车的梦想,作为一个前端工程师那必须要有一个造前端框架的梦想!所以最近尝试写了一个前端框架,本来包名是 ecojs,结果发包的时候居然遇见了以下的错误: 大概意思就是已经有包叫做 eco.js 了&#x…

身处加密娱乐时代,我们需要的是新技术还是新应用

撰文:Matti 编译:Yangz,Techub News 点击查看文章来源:Techub News 现实的情况会让你不禁自问,「我们是否需要更多的基础设施来吸引更多的用户?」答案是,相较于新应用,我们并不需…

Aigtek功率放大器的主要性能要求有哪些

功率放大器是电子系统中的重要组件,用于将低功率信号放大到高功率水平。功率放大器的性能直接影响到信号的放大质量和系统的整体性能。下面西安安泰将介绍功率放大器的主要性能要求。 增益:功率放大器应当具有足够的增益,即将输入信号的幅度放…

Java类图

1、idea设置 setting>tools>diagrams 2、勾选参数 3、效果

win10键盘按乱了,如何恢复?

今天键盘被宝宝给按乱了,好不容易给重新调整回来,记录备忘: 1、win10的asdf和方向键互换了: 使用Fnw键来回切换,OK! 2、键盘的win键失效,例如:按winD无法显示桌面。此时&#xf…

音视频开发14 FFmpeg 视频 相关格式分析 -- H264 NALU格式分析

H264简介-也叫做 AVC H.264,在MPEG的标准⾥是MPEG-4的⼀个组成部分–MPEG-4 Part 10,⼜叫Advanced Video Codec,因此常常称为MPEG-4 AVC或直接叫AVC。 原始数据YUV,RGB为什么要压缩-知道就行 在⾳视频传输过程中,视频⽂件的传输…

能拖拽生成几个图表,就叫BI,就叫低代码,顶多算个报表工具

一、什么是BI BI(Business Intelligence)是指通过数据分析和可视化工具来帮助企业做出决策的过程和技术。它远远不止于简单的拖拽生成图表,而是通过对数据的深入分析和挖掘,提供更全面、准确的信息支持。 BI(Business…

黑马es集群

1、为什么要做es集群 单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题 海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),存储到多个节点 单点故障问题:将分片数据在不同节点备份(replica) 2、搭建es集群 1、用…

【JMeter接口自动化】第3讲 Jmeter语言及外观配置

Jmeter语言配置 方法一:暂时生效,下次打开JMeter还会恢复默认配置 Jmeter安装后,默认语言是英文,可以在“选项”——“选择语音”中更改 方法二,修改配置文件,永久生效 修改jmeter.properties文件 Jmete…

element table表格行列合并span-method,根据数据动态行列合并

表格行列合并需要用到 table的方法 span-method 根据数据来进行动态的行列合并&#xff0c;实例如下&#xff1a; <el-table:data"tableData":span-method"objectSpanMethod" style"width: 100%"><el-table-columnprop"key"l…

JSON源码类学习

json源码学习 parse把json转换成Object parseObject转换为jsonObject parseArray从字符串数组解析成真正的数组 tojsonString把真正的json解析json 数组的方法 作用&#xff1a;类型转换 为什么要做类型转换 开发一个方法验证 这个方法先封装方法&#xff0c;是否为json …

成功解决“ImportError: cannot import name ‘mapping‘ from ‘collections‘”错误的全面指南

成功解决“ImportError: cannot import name ‘mapping’ from ‘collections’”错误的全面指南 成功解决“ImportError: cannot import name ‘mapping’ from ‘collections’”错误的全面指南 一、引言 在Python编程中&#xff0c;当我们尝试从某个模块中导入某个名称时&…

污水净化之旅:可视化技术揭秘城市“血液”的循环奥秘

在繁华的都市背后&#xff0c;有一个默默守护着我们的“肾脏”——污水处理厂。它悄无声息地处理着每天产生的污水&#xff0c;确保我们的生活环境洁净美好。但你知道这个“肾脏”是如何工作的吗&#xff1f;今天&#xff0c;就让我们一起走进污水处理的神秘世界&#xff0c;通…