当前位置:   article > 正文

机器人运动学及轨迹规划— (2)DH建模与正运动学方程_机器人运动学dh模型

机器人运动学dh模型

1、DH参数法建模

       可以将机器人各轴看成由一系列关节连接起来的连杆组成,将坐标系固连在每一个连杆关节上,则可以通过齐次变换来描述这些坐标系之间的相对位置和方向。这种通过齐次变换建立机构的运动学模型被称为D-H参数法,在DH参数模型下机器人各连杆的关系可以用a、alpha、d、theta 四个参数表示,其中theta为关节角度,d为相邻关节距离,a为连杆长度,alpha 为连杆扭角。

       目前DH参数法一般分为标准SDH(standard DH)与改进DH(modified DH),标准DH将固连坐标系定义在连杆的末端,而改进DH则是将坐标系定义在连杆的前端。MDH适用范围更广,更容易理解和推导,本文采用MDH对ABB的IRB2600-1.65型号机器人进行建模,由于后三轴坐标系建立在腕部,到法兰的距离在matlab机器人工具箱中难以体现,因此对MDH参数建模的验证在ABB的离线编程仿真软件RobotStudio中进行。

(1)SDH

        SDH的变换顺序为θ、d、a、α

        因此转换矩阵为: 

 

(2)MDH

      MDH的变换顺序为α、a、θ、d:

       则转换矩阵为:

       对于IRB2600型号机器人,首先确定各关节轴 J1-J6:

        此时Z轴方向已知确定X和Y轴方向:

        X轴方向为由(Z)关节轴线i指向i+1。

        Y轴方向由右手法则确定(右手握拳,螺旋方向与Z轴转向X轴方向一致,拇指指向为Y轴正方向)。

        求得的DH参数为:

2、建立正运动学方程

       正运动学是给定机器人关节空间下的各关节角度,来求解机器人末端位姿,即将关节空间的关节变量转换为笛卡尔空间的位置和姿态。

       将MDH参数代入转换矩阵_{i}^{i-1}\textrm{T}得:

        将矩阵输入matlab计算给定关节角度下的位姿:

  1. function [T06]=mymodfkine(theta)
  2. %改进DH参数建模 正运动学
  3. theta1 = theta(1,1);
  4. theta2 = theta(1,2);
  5. theta3 = theta(1,3);
  6. theta4 = theta(1,4);
  7. theta5 = theta(1,5);
  8. theta6 = theta(1,6);
  9. % theta d a alpha
  10. MDH=[theta1 0.445 0 0;
  11. theta2-pi/2 0 0.150 -pi/2;
  12. theta3 0 0.700 0;
  13. theta4 0.795 0.115 -pi/2;
  14. theta5 0 0 pi/2;
  15. theta6-pi 0 0 -pi/2];
  16. T01=[cos(MDH(1,1)) -sin(MDH(1,1)) 0 0;
  17. sin(MDH(1,1)) cos(MDH(1,1)) 0 0;
  18. 0 0 1 MDH(1,2);
  19. 0 0 0 1];
  20. T12=[cos(MDH(2,1)) -sin(MDH(2,1)) 0 MDH(2,3);
  21. 0 0 1 0;
  22. -sin(MDH(2,1)) -cos(MDH(2,1)) 0 0;
  23. 0 0 0 1];
  24. T23=[cos(MDH(3,1)) -sin(MDH(3,1)) 0 MDH(3,3);
  25. sin(MDH(3,1)) cos(MDH(3,1)) 0 0;
  26. 0 0 1 0;
  27. 0 0 0 1];
  28. T34=[cos(MDH(4,1)) -sin(MDH(4,1)) 0 MDH(4,3);
  29. 0 0 1 MDH(4,2);
  30. -sin(MDH(4,1)) -cos(MDH(4,1)) 0 0
  31. 0 0 0 1];
  32. T45=[cos(MDH(5,1)) -sin(MDH(5,1)) 0 0;
  33. 0 0 -1 0;
  34. sin(MDH(5,1)) cos(MDH(5,1)) 0 0;
  35. 0 0 0 1];
  36. T56=[cos(MDH(6,1)) -sin(MDH(6,1)) 0 0;
  37. 0 0 1 0;
  38. -sin(MDH(6,1)) -cos(MDH(6,1)) 0 0;
  39. 0 0 0 1];
  40. % 腕部到法兰
  41. T6TCP=[1 0 0 0;
  42. 0 1 0 0;
  43. 0 0 1 0.085;
  44. 0 0 0 1];
  45. T06=T01*T12*T23*T34*T45*T56*T6TCP;
  46. theta=[60*pi/180,-25*pi/180,40*pi/180,45*pi/180,-20*pi/180,60*pi/180];
  47. % [T06]=mymodfkine(theta)

       输入运行以上代码,然后命令行窗口输出注释行即可得到以下结果:

       由T06可以得到机器人末端的位置为(385,625.7,983.9),而姿态为以上旋转矩阵。在RobotStudio6.08中添加IRB2600型号机器人,各关节设置为(60°,-25°,40°,45°,-20°,60°),示教目标点后在机器人控制器中查看机器人当前位姿:

       控制器中机器人姿态采用欧拉角表示,而我们得到的结果为旋转矩阵,因此需要进行转换,可以自己写旋转矩阵转欧拉角公式:

  1. R=[ -0.6992 0.1693 0.6946
  2. 0.6781 -0.1505 0.7194
  3. 0.2263 0.9740 -0.0096 ];
  4. r11=R(1,1);r12=R(1,2);r13=R(1,3);
  5. r21=R(2,1);r22=R(2,2);r23=R(2,3);
  6. r31=R(3,1);r32=R(3,2);r33=R(3,3);
  7. Euler= [atan2(r21, r11); atan2(-r31, sqrt(r32 ^ 2 + r33 ^ 2)); atan2(r32, r33); ]*57.3

       也可以直接用matlab的转换函数rotm2eul(R):

  1. R=[0.6992 -0.1693 0.6946
  2. -0.6781 0.1505 0.7194
  3. -0.2263 -0.9740 -0.0096];
  4. Euler=rotm2eul(R)*57.3

       得到结果为:

       可以看到在相同的关节角度下,求得的机器人末端位姿与官方数据一致,证明建立的MDH参数与正运动学方程准确无误。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/1011921
推荐阅读
相关标签
  

闽ICP备14008679号