机器人控制系列教程之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

在这里插入图片描述

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

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

相关文章

LeetCode-131 分割回文串

LeetCode-131 分割回文串 题目描述解题思路C 代码 题目描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串。返回 s 所有可能的分割方案。 示例 1: 输入:s “aab” 输出:[[“a”,“a”,“b”],…

HTML跳动的爱心

目录 写在前面 HTML简介 跳动的爱心 代码分析 运行结果

AI大模型简史:萌芽、沉淀、爆发!

近一年来,随着ChatGPT爆火,大模型热潮席卷全球并持续升温,国内越来越多的知名高校、科研院所和创新型企业加大研究力度,大模型技术不断迭代升级,模型能力不断加强,逐渐形成从底层算力、模型开发到行业应用的…

第9周 基于MinIO与OSS实现分布式与云存储

第9周 基于MinIO与OSS实现分布式与云存储 1. 基于mybatis-plus数据修改非空属性忽略更新2. 文件上传3. 分布式文件存储3.1 文件存储架构演变4. Minio docker安装5. 文件服务整合minio依赖minio API测试yml配置minio信息minio配置类业务:上传文件6. 云存储阿里OSS:要钱6.1 依赖6…

蓝桥杯--LCA1

树上前缀和LCA 暴力做法&#xff1a; 我们先把不删的sum维护出来&#xff0c;然后遍历跳过的点&#xff0c;假如a1,a2,a3&#xff0c;跳过2&#xff0c;那么答案就是sum-cost(a1,a2)-cost(a2,a3)cost(a1,a3). DFS暴力&#xff0c;下面是代码&#xff1a; #include<bits/s…

后端使用jar包部署完成后,前端访问不了,可以试试这个方法

这个项目我在部署完之后发现系统前端页面能出来&#xff0c;但是接口不通。报错404&#xff0c;那么这个时候你就要考虑你后端使用的端口是否开放&#xff0c;因为我这里是遇到了这个问题&#xff1a;我后端用的是5400端口&#xff0c;但是我检查后发现5400端口没有被开放&…

【Unity脚本】使用脚本操作游戏对象的组件

【知识链】Unity -> Unity脚本 -> 游戏对象 -> 组件 【知识链】Unity -> Unity界面 -> Inspector【摘要】本文介绍如何使用脚本添加、删除组件&#xff0c;以及如何访问组件 文章目录 引言第一章 游戏对象与组件1.1什么是组件&#xff1f;1.2 场景、游戏对象与组…

php使用openssl返回false报错0308010C

本地php使用openssl返回false, 但是在服务器上测试正常openssl_encrypt($jsonStr, DES-ECB, $key, OPENSSL_RAW_DATA, ); 查看错误 openssl_error_string(); error:0308010C:digital envelope routines::unsupported 原因是: 服务器上的openssl是1.1版本, 本地是3.0版本 通…

Imgs,GT,Edge,Gradient_all,Gradient_Foreground

保存一下&#xff1a; 做个记录&#xff1a; import cv2 import os import numpy as np# 对整张图片做canny检测 得到纹理图 def canny_all(input_path, output_path):# 遍历文件夹中的所有文件for filename in os.listdir(input_path):# 构造完整的文件路径image_path os.p…

GB-T 42929-2023 互联网金融智能风险防控技术要求

GB-T 42929-2023 互联网金融智能风险防控技术要求 互联网金融作为金融创新的重要领域&#xff0c;近年来发展迅猛&#xff0c;但同时也带来了诸多风险和挑战。为了规范互联网金融行业的健康发展&#xff0c;提高风险防控能力&#xff0c;中国国家标准委员会制定了《GB-T 42929…

C++回调函数

#include <iostream> #include <functional> // 为了使用 std::function // 声明一个回调函数类型 typedef std::function<void()> Callback11;// 调用函数&#xff0c;它接受一个回调函数作为参数 void process(Callback11 callback123) {// 在这里执…

直播领域新宠—第三代大模型无人直播系统:提升销售业绩的秘密武器

随着科技的飞速发展和人们对智能化生活的追求&#xff0c;直播领域也迎来了革新性的突破。第三代大模型无人直播系统&#xff0c;作为直播领域的新宠&#xff0c;正以其独特的魅力和优势&#xff0c;成为提升销售业绩的秘密武器。 首先&#xff0c;第三代大模型无人直播系统具…

2024山软创新实训:软件系统架构

软件架构 本文着重介绍本应用&#xff1a;基于开源LLM的易学大模型软件系统的架构。在经过2个月的探索、选型、实验、开发后&#xff0c;我们团队终于把整个系统的各块拼图搭建了起来&#xff0c;现在剩下的是集成、评测、优化和部署的工作。 1. Distributed System 整个项目…

5月31日,每日信息差

第一、小米汽车官方宣布&#xff0c;5 月新增 9 家门店&#xff0c;目前已在全国 30 城开业 70 家门店&#xff0c;6 月计划新增 19 家 第二、科技巨头谷歌、Meta、微软、AMD、英特尔、博通、思科和惠普成立了一个名为 「超级加速链路」 的联盟&#xff08;UALink&#xff09;…

【Android】

hint在text显示提示内容 设置主键&#xff0c;在mainactivity // 获取SharedPreferences对象存放的用户名和密码&#xff0c;并设为相应组件的值 //指定key的值&#xff0c;及获取不到值时使用的默认值 String sName sp.getString("name", "unknown")…

媲美苹果、三星uwb芯片,飞睿智能UWB SIP芯片方案,创新无线传输、测距、精准定位新纪元

超宽带&#xff08;UWB&#xff09;技术作为一种新兴的无线通信技术&#xff0c;以其高精度定位、低功耗、高安全性和强抗干扰能力等优势&#xff0c;在全球范围内得到了广泛关注和快速应用。 2019 年&#xff0c;苹果iPhone11搭载UWB芯片&#xff0c;火极一时的AirDrop隔空投…

MODIS L1B数据规格介绍

1.MODIS 仪器概述 MODIS是EOS AM-1系列卫星的主要探测仪器&#xff0c;也是EOS Terra平台上唯一进行直接广播的对地观测仪器。MODIS是当前世界上新一代“图谱合一”的光学遥感仪器&#xff0c;具有36个光谱通道&#xff0c;分布在0.4-14um的电磁波谱范围内&#xff0c;波段范围…

Docker Hub 国内镜像源配置

Docker Hub 国内镜像源配置 Docker Hub 国内镜像源是指在国内境内提供 Docker 镜像服务的镜像源。由于国际网络带宽等问题&#xff0c;国内用户下载 Docker 镜像通常速度较慢。因此&#xff0c;为了解决这个问题&#xff0c;一些国内的公司和组织提供了 Docker 镜像的国内镜像…

MySQL--MHA高可用及读写分离

一、什么是高可用 1.企业级高可用标准&#xff1a;全年无故障时间 全年无故障时间全年故障时间具体时间99.9%0.1%525.6 minkeeplive双主 &#xff08;切换需要人为干预&#xff09;99.99%0.01%52.56 minMHA &#xff08;半自动化&#xff09;99.999%0.001%5.256 minPXC、MGR、…

android Seekbar当点击的时候有一个圆圈

最近项目中Seekbar的时候遇到一个问题&#xff1a;点击进度条或者拖动进度条的时候&#xff0c;seekbar出现一个圆形的半透阴影/白色圆圈&#xff1a; <xxxxxxxxxSeekBarandroid:layout_width"wrap_content"android:layout_height"40dp"android:backgro…