基于MATLAB机器人工具箱的KUKA youBot机械臂运动学建模——DH法

来源:互联网 发布:p图软件大全 编辑:程序博客网 时间:2024/05/02 00:36

        以实验室的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不一样的地方。

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([ 0  0.147  0  0 ],  'modified' );L(2) = Link([ 0  0  0.033 pi/2  ],  'modified'); L(3) = Link([ 0 0 0.155  0  ],  'modified');L(4) = Link([ 0  0 0.135 0],  'modified'); L(5) = Link([ 0  0.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计算机器人运动学正解


阅读全文
1 0
原创粉丝点击