【标准DH法和改进DH法介绍及三自由度四足或双足机器人腿建模——MATLAB机器人工具箱使用】

这篇具有很好参考价值的文章主要介绍了【标准DH法和改进DH法介绍及三自由度四足或双足机器人腿建模——MATLAB机器人工具箱使用】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 前言

DH参数是机器人学习过程中常用的一种建模方法,通常情况下每一次坐标变换需要6个独立参数来描述坐标系i相对坐标系i-1的关系,即3个用来描述位置另外3个用来描述姿态。而DH参数法只需要4个参数,列出DH参数表并带入变换矩阵中可以轻易的得到机械手末端和基坐标系的位姿变换关系。
标准dh,matlab,算法,开发语言
而现在主要有两种DH参数建模方法,其中标准DH主要适用在开式运动链的机械结构上,如现在市面上串联的多轴机械臂,而对闭链机构建立坐标系会发生坐标系重合的风险从而产生歧义;而改进DH参数应用范围更广,在闭式运动链结构建模上(如并联四足狗腿等)会使运动求解过程更加简单。
标准dh,matlab,算法,开发语言
对于初学者只需记住标准DH和改进DH建模的主要区别为连杆上坐标系建立的位置不同。Standard DH方法将连杆的坐标系固定在连杆的后端,而Modify DH方法将连杆的坐标系固定在连杆的前端,见下图。标准dh,matlab,算法,开发语言

前面说DH参数法只需要4个参数而不是6个,是因为我们使用该方法时默认了两个限制条件。那就是坐标系之间没有沿Y轴的平移和绕Y的旋转!!!!
详情请见https://blog.csdn.net/zhelijun/article/details/85007805

2 两种建模方法步骤与应用

在此小的以一个三自由度串联腿为例采用两种方法分别进行进行建模带大家认识两者区别。(MATLAB代码见文末)

2.1标准DH法

建系之前注意两个要点如下:
(1) 坐标轴Xi与坐标轴Zi-1垂直
(2) 坐标轴Xi与坐标轴Zi-1相交
然后我们再以各旋转关节旋转轴或直线关节运动方向为相应的Z轴,以Zi-1和Zi轴的公垂线方向(一般为各自杆长方向)建立Xi轴,Yi轴按右手定则确定,最终确立各个连杆坐标系如下:
标准dh,matlab,算法,开发语言注:建立坐标系有一个易错点如下方两图,需要对照两种DH建模方法好好理解吃透。(对于标准DH法来说,坐标系是建立在相应杆件的后部,则其X轴方向是由前一坐标Z轴指向该关节Z轴的公垂线方向,所以下图左方才是符合标准建模方法的!!!)标准dh,matlab,算法,开发语言
根据DH四个参数的定义:

(1) 连杆长度a:zi-1轴与zi轴的公法线长度,为 杆i的连杆长(并不是物理意义上的两杆长)
(2) 连杆扭转角α:关节轴线zi-1到zi的转角,以xi轴为转轴(-pi~pi)
(3) 连杆偏距d:从xi-1轴与xi轴的公法线有向距离(正向沿zi-1方向)
(4) 关节转角θ:轴线xi-1到xi的转角,以zi-1轴为转轴(-pi~pi)

得到DH参数表:
表 1 DH参数

Link offset+θi-1 di-1 ai αi
1 pi/2+θ1 0 0 pi/2
2 -5pi/6+θ2 0 L2 0
3 - pi/2+θ3 0 L3 0

注:offset为MATLAB机器人工具箱中对应关节的初始偏角
建立模型如下图:
标准dh,matlab,算法,开发语言主要MATLAB代码如下:

% 定义各个连杆,默认为转动关节
%       theta      d        a        alpha 
f(1)=Link([  0      0       0          pi/2] ); f(1).qlim=[-pi,pi]; f(1).offset=pi/2;
f(2)=Link([  0      0      0.35           0] ); f(2).qlim=[-pi,pi]; f(2).offset=-5*pi/6;
f(3)=Link([  0      0      0.3            0] ); f(3).qlim=[-pi,pi]; f(3).offset= -pi/2;
sta=SerialLink(f,'name','标准');
sta.tool = transl(0 ,0 ,0);
sta.plot([0 0 0]);
sta.teach();   %机器人示教界面

2.2改进DH法

以各旋转关节旋转轴或直线关节运动方向为相应的Z轴,Xi轴沿着Zi和Zi+1轴的公垂线(一般为各自杆长方向)由关节轴i指向关节轴i+1,如果关节轴i指向关节轴i+1相交,则Xi轴垂直于两轴平面建立,最终确立各个连杆坐标系如下图:标准dh,matlab,算法,开发语言
根据DH四个参数的定义:
(1) 连杆长度a:zi-1轴与zi轴的公法线长度,为杆i的连杆长(并不是物理意义上的两杆长)
(2) 连杆扭转角α:关节轴线zi-1到zi的转角,以xi-1轴为转轴(-pi~pi)
(3) 连杆偏距d:从xi-1轴与xi轴的公法线有向距离(正向沿zi方向)
(4) 关节转角θ:轴线xi-1到xi的转角,以zi轴为转轴(-pi~pi)

得到改进DH参数表:
表 2 改进DH参数

Link offset+θi di ai-1 αi-1
1 -pi/2+θ1 0 0 pi/2
2 pi/6+θ2 0 L2 -pi/2
3 - pi/2+θ3 0 L3 0

由于改进DH法是将坐标系建立在相应杆件头部,故采用MDH法建立的模型末端杆件只有头部转轴而没有杆长,为了模型和SDH建立的保持一致可以加一个工具坐标系,两种效果如图:
标准dh,matlab,算法,开发语言
标准dh,matlab,算法,开发语言相关代码如下:

d1 = 0.35;
d2 = 0;
d3 = 0;
d4 = 0;
 
a1 = 0.25;
a2 = 0;
a3 = 0.35;
a4 = 0.30;
 
alpha1 = pi/2;
alpha2 = -pi/2;
alpha3 = 0;
alpha4 = 0 ;
 
% 定义各个连杆,默认为转动关节
%           theta      d        a        alpha 
L(1)=Link([  0         d1      a1      alpha1] ,'modified'); L(1).qlim=[-pi,pi]; L(1).offset=-pi/2;
L(2)=Link([  0         d2      a2      alpha2] ,'modified'); L(2).qlim=[-pi,pi]; L(2).offset= pi/6;
L(3)=Link([  0         d3      a3      alpha3] ,'modified'); L(3).qlim=[-pi,pi]; L(3).offset=-pi/2;
 
% 把上述连杆整合
OLRob=SerialLink(L,'name','改进');
view(3);
% 定义机器人基坐标和工具坐标的变换
%OLRob.base = transl(0 ,-0.7 ,0);
OLRob.tool = transl(0.3 ,0 ,0);
view(77,22);
title('改进-有工具坐标');
OLRob.plot([0 0 0]);
OLRob.teach();   %机器人示教界面

最后附上所有代码如下:

%% 改进DH
clear ; clc; close all;
% 机器人各连杆DH参数
d1 = 0.35;
d2 = 0;
d3 = 0;
d4 = 0;

a1 = 0.25;
a2 = 0;
a3 = 0.35;
a4 = 0.30;

alpha1 = pi/2;
alpha2 = -pi/2;
alpha3 = 0;
alpha4 = 0 ;

% 定义各个连杆,默认为转动关节
%           theta      d        a        alpha 
L(1)=Link([  0         d1      a1      alpha1] ,'modified'); L(1).qlim=[-pi,pi]; L(1).offset=-pi/2;
L(2)=Link([  0         d2      a2      alpha2] ,'modified'); L(2).qlim=[-pi,pi]; L(2).offset= pi/6;
L(3)=Link([  0         d3      a3      alpha3] ,'modified'); L(3).qlim=[-pi,pi]; L(3).offset=-pi/2;

% 把上述连杆整合
OLRob=SerialLink(L,'name','改进');
view(3);
% 定义机器人基坐标和工具坐标的变换
%OLRob.base = transl(0 ,-0.7 ,0);
OLRob.tool = transl(0.3 ,0 ,0);
view(77,22);
title('改进-有工具坐标');
OLRob.plot([0 0 0]);
OLRob.teach();   %机器人示教界面

%% 标准DH方法
figure(2)
view(3);
% 定义各个连杆,默认为转动关节
%       theta      d        a        alpha 
f(1)=Link([  0      0       0          pi/2] ); f(1).qlim=[-pi,pi]; f(1).offset=pi/2;
f(2)=Link([  0      0      0.35           0] ); f(2).qlim=[-pi,pi]; f(2).offset=-5*pi/6;
f(3)=Link([  0      0      0.3            0] ); f(3).qlim=[-pi,pi]; f(3).offset= -pi/2;
sta=SerialLink(f,'name','标准');
sta.tool = transl(0 ,0 ,0);
sta.plot([0 0 0]);
sta.teach();   %机器人示教界面

参考资料
https://zhuanlan.zhihu.com/p/66066294文章来源地址https://www.toymoban.com/news/detail-783432.html

到了这里,关于【标准DH法和改进DH法介绍及三自由度四足或双足机器人腿建模——MATLAB机器人工具箱使用】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于STM32的自由度云台运动姿态控制系统

    目录 设计报告撰写内容 2 一、设计要求 2 1、掌握 MEMS 传感器 MPU6050 的应用方法; 2 3、二自由度云台运动姿态控制系统设计。 2 二、设计方案(要求给出详细的设计思路及其必要的论证) 2 1、硬件设计 3 1)电源系统 3 2)数字控制器 4 3)角度测量传感器 4 4)执行机构 5 5)系

    2024年02月15日
    浏览(34)
  • UnityVR--机械臂场景6-三自由度逆向解算1

    本文我们要做的是:给机器人一个末端坐标,使机器人自动调整姿态。为了使问题简单易懂,我们先以2自由度(XY平面中)的机器人为例,如下图为2自由度机器人的连杆机构模型。  其中P为末端点即手爪的位置,坐标为(x,y);L1、L2分别为两个手臂的长度,θ1、θ2分别为两

    2024年02月06日
    浏览(36)
  • 平面三自由度机器人动力学建模与仿真

    网上二自由度机器臂动力学分析有很多,三自由度比较少,碰巧本科课设需要完成相关项目,分享一些经验供参考。 实际的三连杆机器臂的结构相对较复杂,很难进行精确地描述,因此,在本文中利用简化的数学模型进行讨论。简化条件如下: 假设机器臂是刚性结构,不考

    2024年02月04日
    浏览(40)
  • Simulink搭建串联二自由度机器人并求解工作空间

    目录 引言 1.建立机器人模型 1.1机器人模型 1.2搭建机器人模型 1.3创建刚体树 1.4建立机器人模型 1.5正运动学  结论 使用Simulink搭建机器人并求解各工作空间的关系。首先需要借助simscape工具箱对机器人进行建模,之后在其工作空间驱动该机器人,借助算法来控制机器人旋转角

    2024年01月20日
    浏览(38)
  • 基于PID的树莓派控制二自由度舵机人脸追踪云台设计

    一、舵机控制概述 脉冲宽度与舵机转角: 在脉冲信号频率50Hz的条件下输入的脉冲信号宽度和舵机转角的对应关系图以如图1.所示,该转角的计算公式如下。树莓派端通过占空比信号对舵机进行角度控制,将该占空比信号通过树莓派端传输给PCA9685芯片来控制舵机,实现追踪人

    2024年02月13日
    浏览(25)
  • 6自由度机械臂雅克比矩阵求解,结果同jacob0函数

    雅可比矩阵描述了关节空间和笛卡尔空间的速度和角速度映射关系。 初学者入门通常会使用matlab中的robotics toolbox,在进行操作空间末端速度求解时会有疑问jacob0函数是怎样实现的。 在网上有很多人公布了jacobian求解的代码,但是都不能运行出正确的结果,本文给出了与机器

    2024年01月20日
    浏览(35)
  • 168基于matlab的六自由度并联摇摆台的反解控制算法

    基于matlab的六自由度并联摇摆台的反解控制算法,stewart平台,配有GUI界面,可以自定义角度,杆长等参数。设定动平台位姿即能得到电机参数。程序已调通,可直接运行。 168 六自由度并联摇摆台 反解控制算法 (xiaohongshu.com)

    2024年02月21日
    浏览(38)
  • 六自由度机器人(机械臂)运动学建模及运动规划系列(一)——简介

    毕业设计做了六轴机器人相关的课题,做完之后学到很多,在这里分享一下。本篇首先对六轴机器人及其研究内容进行简单的介绍。 六轴机器人中的六轴指个六自由度,由关节和连杆组成。常见的六轴机器人为 串联型旋转关节机器人 。这里以一款川崎机器人为例,展示一下

    2024年02月02日
    浏览(34)
  • 基于LabVIEW上位机以PWM控制16路舵机六自由度机械臂运动

    目录 一、功能设计 二、硬件分析 2.1 所需材料 2.2 串口通信协议 三、程序设计 四、VI实现结果 4.1 子vi字符串换算功能 4.2 软硬件联调验证 五、分析与总结           学校对于LabVIEW的学习进行的一次课程设计,设计内容主要是通过LabVIEW的VISA串口通信部分做出相对应的课题

    2024年02月04日
    浏览(45)
  • 视觉SLAM中,本质矩阵、基础矩阵、单应性矩阵自由度和秩分析

    由于基础矩阵和本质矩阵都是由对极约束来的 1.1 本质矩阵E的自由度为5,秩为2 1.1.1 自由度: 首先,旋转和平移一共6个自由度。 其次,由于对极约束的原因,本质矩阵是具有尺度等价性的,所以自由度减1。 所以,本质矩阵的自由度为5。 1.1.2 秩 性质:正交矩阵一定是可逆

    2024年02月12日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包