原文地址: https://blog.csdn.net/yaked/article/details/73030668
以实验室的KUKA youBot五自由度机械臂为切入点,记得当时和实验室的同学在这上面花费了好长时间,最后也没搞定,而这又算是基础中的基础,不能忽视。
DH一般分为标准DH和改进的DH,以John J.Craig的《机器人学导论》来说,它的是Modified DH,另一本孙富春翻译的《机器人学导论——分析、控制及应用》则是用的标准DH。通过Peter Corke的那本《Robotics,Vision and Control》(已有中文版)我才知道有这两个。区别很明显DH参数表的下标如果都是一样的则是标准DH,如果有一半不一样则是Modified DH。
这样的
文章图片
和
文章图片
这条臂比较特别的地方在于关节0和关节1之间有个偏置,特别是在于改进DH中的坐标系0和坐标系1的设置很特殊。
1. 标准DH 标准DH的介绍我是参考的孙富春翻译的《机器人学导论——分析、控制及应用》,后来接触到《Robot Modeling and Control》(已有中文版)也是标准DH。
一个刚体的自由度是6,而为什么标准DH只用四个参数呢?这里其实暗含了一个建立坐标系的原则:垂直和相交,刚好六个限制条件。这在《Robot Modeling and Control》这本书中有详细介绍。垂直相交的意思是说,建立坐标系的时候,后一个坐标系的X要与前一个坐标系的Z垂直且相交。如建立X1的时候需要与Z0垂直相交。
在孙的那本书的P62页,关于DH参数的解释如下图:
文章图片
文章图片
我举个例子,例如:
文章图片
我记的时候就是前一个Z,和后一个的X。如右边括号里的,而这里正是与后文的改进的DH不一样的地方。
【基于MATLAB机器人工具箱的KUKA youBot机械臂运动学建模——DH法】KUKA youBot机械臂的DH
文章图片
文章图片
文章图片
- %kuka youBot
- clear;
- clc;
- close all;
- d1=0.147;
- a1=0.033;
- a2=0.155;
- a3=0.135;
- d5=0.113;
- tool = 0.105;
- qlim1=[-169,169]*pi/180;
- qlim2=[-65,90]*pi/180;
- qlim3=[-151,146]*pi/180;
- qlim4=[-102.5,102.5]*pi/180;
- qlim5=[-167.5,167.5]*pi/180;
- L(1) = Link(‘d’, d1, ‘a’, a1, ‘alpha’, pi/2, ‘qlim’,qlim1);
- L(2) = Link(‘d’, 0, ‘a’, a2, ‘alpha’, 0, ‘qlim’, qlim2, ‘offset’, 1.57);
- %L(2) = Link(‘d’, 0, ‘a’, a2, ‘alpha’, 0, ‘qlim’, qlim2);
- L(3) = Link(‘d’, 0, ‘a’, a3, ‘alpha’, 0,‘qlim’,qlim3);
- L(4) = Link(‘d’, 0, ‘a’, 0, ‘alpha’, -pi/2,‘qlim’,qlim4, ‘offset’, -1.57);
- %L(4) = Link(‘d’, 0, ‘a’, 0, ‘alpha’, -pi/2,‘qlim’,qlim4);
- L(5) = Link(‘d’, d5, ‘a’, 0, ‘alpha’, 0,‘qlim’,qlim5);
- bot = SerialLink(L,‘name’,‘KUKA youBot’);
- bot.display();
- %bot.plot([0 0 0 0 0]);
- %bot.teach;
- %% forward kinematics.
- bot.tool= transl(0, 0, tool); % EEF
- bot.fkine([0 0 0 0 0]*pi/180);
- bot.fkine([0 0 -90 0 0]*pi/180)
- bot.fkine([0 0 90 0 0]*pi/180)
编好以后可以输入一些角度验证一下
文章图片
如上图中的这个姿态,第三关节转动90°,X为33 + (655 - 302)= 386mm,Z坐标为底座到第三关节长度为302mm与Figure2中显示的一致,说明DH建立没有问题。
2. Modified DH 改进的DH那就是如John J.Craig的《机器人学导论》上的,它与标准DH的区别在于:标准DH的Link0(大地)和Link1之间为J0。而Modified DH则是Link0上有J0,Link1上有J1,基座为坐标系{0},一般让{0}和{1}重合。
Craig的书中文版P52页
文章图片
P54页建立坐标系的步骤:
文章图片
文章图片
文章图片
举个例子:
文章图片
通常都是下标有一半是i -1,类似这样
文章图片
文章图片
文章图片
clc;
clear;
close all;
L(1) = Link([ 00.14700 ],‘modified’ );
L(2) = Link([ 000.033 pi/2],‘modified’);
L(3) = Link([ 0 0 0.1550],‘modified’);
L(4) = Link([ 00 0.135 0],‘modified’);
L(5) = Link([ 00.218 0 -pi/2],‘modified’) ;
youbot = SerialLink(L, ‘name’, ‘youbot’);
youbot.display()
youbot.plot([0 0 0 0 0]);
youbot.teach;
文章图片
相关链接:
- http://blog.csdn.net/pengjc2001/article/details/70156333 PUMA560机器人的DH建立过程
- http://blog.sina.com.cn/s/blog_a16714bf0102vae4.html MATLAB计算机器人运动学正解
- http://www.tekkotsu.org/Kinematics.html DH参数解释
推荐阅读
- 控制系统|基于重力补偿的 PD 控制
- 机器人动力学(牛顿欧拉推导)
- 机器人动力学(雅克比)
- 机器人学|人的手臂的自由度的数目以及六自由度机械臂的限制
- scara机器人雅克比矩阵
- scara机器人运动学正逆解