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

news2024/12/29 17:17:43

机器人运动学的研究依赖于机器人的模型的建立,目前较为多见的两种方法分别是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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VIO System 丨适用于控制器开发前期的测试系统

VIO综述 嵌入式软件的HIL测试需要复杂的测试系统及完整的ECU硬件,这导致通常只能在开发流程的后期阶段进行测试。全新推出的低成本解决方案VIO System,使得在开发前期不仅可以进行总线通讯测试,也可以同时进行I/O信号测试。 该系统旨在通过…

产品上市新闻稿怎么写?纯干货

一个产品的上市,想要达到一个非常好的宣传效果,前期的预热造势是必不可少的,投放产品上市新闻稿到权威专业的媒体,潜移默化去影响用户的心智,产品上市新闻稿怎么写?接下来伯乐网络传媒就来给大家分享一下&a…

MFC 解决Enter回车键和Esc取消键默认关闭窗口的三种方法

文章目录 问题描述问题原因解决办法方法一:在重载的PreTranslateMessage 函数中屏蔽回车和ESC 的消息方法二:重载OnOK函数方法三:将所有按钮类型设为普通按钮,并设置其中一个按钮为默认按钮 问题描述 一般情况下编写的MFC对话框程…

8086 汇编笔记(三):第一个程序

一、一个源程序从写出到执行的过程 第一步:编写汇编源程序 第二步:对源程序进行编译连接 第三步:执行可执行文件中的程序 二、源程序 codesg segment ; 定义一个段,段的名称为“codesg”,这个段从此开始…

day25-XML

1.xml 1.1概述【理解】 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者: Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为…

散射技术在AI去衣中的作用及其伦理考量

引言: 在人工智能的众多应用领域中,图像处理一直是一个热门话题。近年来,随着深度学习技术的飞速发展,AI去衣功能引起了广泛的关注和讨论。这项技术的核心在于利用先进的算法对图像进行处理,以实现从图片或视频中移除衣…

java家政上门系统源码,一套同城预约、上门服务的家政系统源码

一款同城预约、上门服务的家政系统源码,用户端、服务端、管理端各端相互依赖又相互独立,支持选择项目、选择服务人员的下单方式,支持多城市并且设置每个城市专属服务项目。 技术架构:java1.8springboot mysql htmlThymeleaf uni…

Spring Cloud Alibaba-09-Seata分布式事务

Lison <dreamlison163.com>, v1.0.0, 2024.5.03 Spring Cloud Alibaba-09-Seata分布式事务 文章目录 Spring Cloud Alibaba-09-Seata分布式事务分布式事务基础事务本地事务分布式事务分布式事务的场景 分布式事务的解决方案全局事务可靠消息服务最大努力通知TCC事务 Se…

【C++】vector和list的迭代器

目录 前言 一.迭代器的使用 1.vector迭代器 2.list迭代器的使用 二.迭代器失效问题 1.vector迭代器失效问题 2.list迭代器失效问题 三.vector和list的对比 前言 我们在学习CSTL部分的时候&#xff0c;在vector和list的部分初步认识了迭代器&#xff0c;以及在初学阶段…

autocad背景色、引线文字大小

一、改变背景 在命令行输入op&#xff0c;回车&#xff0c;弹出配置对话框&#xff1a; 二、改变引线文字大小 选中引线&#xff0c;右键选择【特性】&#xff0c;在文字选项卡中设置文字高度&#xff1a;

小程序项目创建与Vant-UI引入

一&#xff0c;创建小程序项目 AppID可先用测试号&#xff1b; 模板来源选择 ’全部来源‘ &#xff0c;’基础‘ 。模板一定JS开头的&#xff1b; vant-weapp 官网 vant-Weapp 二&#xff0c;下载vant-weapp 组件 1&#xff0c;在新项目中打开 ’调试器‘&#xff1b; 2…

2024年人工智能与机械自动化技术国际会议( ICAIMAT 2024)

2024年人工智能与机械自动化技术国际会议( ICAIMAT 2024) 会议简介 随着科技的飞速发展&#xff0c;人工智能和机械化自动化技术已成为全球产业升级和经济发展的重要动力。为了进一步促进国际交流与合作&#xff0c;推动人工智能和机械化自动化技术的创新与应用&#xff0c;我…

【IDEA】-使用IDEA查看类之间的依赖关系

1、父子类的继承、实现关系 1.1、使用CTRL Alt U 选择 java class 依据光标实际指向的类位置 用实心箭头表示泛化关系 是一种继承的关系&#xff0c;指向父类 可以提前设置需要显示的类的属性、方法等信息 快捷键 Ctrl Alt S &#xff0c;然后搜索 Diagrams 1.2、使用…

java期末突击

目录 1. 快速入门 2. 类 3. 成员方法 4. 构造器 5. 单例模式 6. 继承 7. 抽象类 8. 多线程&#xff08;Thread与Runnable&#xff09; 1. 快速入门 public class Hello {public static void main(String[] args){System.out.println("Hello,World&q…

对象转为Map

方案一&#xff0c;Jackson String json objectMapperFace.writeValueAsString(contract);Map<String,Object> map objectMapperFace.readValue(json, Map.class);方案二 &#xff0c; apache BeanUtils Map<String,String> beanMap null;try {beanMap BeanUti…

极简朋友圈rmoments多用户版

什么是 moments &#xff1f; moments 是仿照微信朋友圈开发的个人极简朋友圈。但目前不支持多用户。 什么是 rmoments &#xff1f; rmoments 复刻自 moments&#xff0c;除了支持全部原生功能外&#xff0c;最大的特点是支持多用户。 原版 moments 目前不支持多用户。rmoment…

整理GTX收发器示例工程(高速收发器十一)

前文分析了xilinx官方提供的GTX IP示例工程&#xff0c;该代码的结构比较混乱&#xff0c;本文将该代码进行梳理&#xff0c;形成一个便于使用的模块&#xff0c;后续如果要使用多通道的收发器&#xff0c;多次例化某个模块就行了。 下图是官方例程中GTX IP相关模块的RTL视图&a…

ArcGIS教程(02):创建多模式网络数据集

启动“新建网络数据集”向导 命名网络并选择源要素类 输入网络数据集名称【ParisMultimodal_ND】&#xff0c;点击【下一页】 点击【全选】网络数据集中的要素类 点击【下一页】 设置连通性和高程策略 点击【连通性】 Metro_Entrances 的每个要素与街道要素类的折点重…

九部门联合发文知识产权保护体系建设,微版权打造全链条知产保护

近日&#xff0c;国家知识产权局会同中央宣传部、最高人民法院、最高人民检察院、公安部、司法部、商务部、海关总署、国家市场监督管理总局等八部门联合印发《知识产权保护体系建设工程实施方案》(以下简称《方案》)&#xff0c;共同加强知识产权保护体系建设。 《方案》是新时…

如此简单,一文带你玩转接口自动化上(Python + Pytest + Requests + Allure )

一. 前言 哈喽大伙们好&#xff0c;好久不见距离上次更新博客已经有一年之久了&#xff0c;这将近一年的时间小编主要的时间都花在了实习和24届校招上面了&#xff0c;最终也是收获满满&#xff0c;选择了一个还不错的offer&#xff0c;感谢一路走来的自己和身边朋友的帮助&…