Robotics System Toolbox(RST)中的动力学仿真导入DH参数表遇到的问题

学习分享 专栏收录该内容
2 篇文章 0 订阅

出现的问题

一般使用Robotics System Toolbox(RST)中的动力学仿真使用到的都是标准DH参数表,而我导入了改进型DH参数表。本来仿真的目的是求解四关节机器人的力矩(1关节是旋转关节,2,3关节是移动关节,4关节是旋转关节),在速度和加速度都为0的情况下,反而求得移动关节有力矩值,而末端旋转关节力矩值一直为0,错误的代码和结果如下:

错误的代码

%     a      alpha   d    theta
dh = [0      0       0       0;
      0      0       0.150   0;
      0      -0.5*pi 0.250   0.5*pi;
      0.075  0       0.150   0;];
	%%  create rigid body tree
	robot = robotics.RigidBodyTree;
	...........................
	...........................
	%%  inverse dynamics
	robot.DataFormat = 'row';
	q = [0.5*pi 0.170 0.350 0.5*pi];   %   variables
	dq = [0.1 0.1 0.1 0.1]; %   velocity
	ddq = [0 0 0 0];    %   acceleration
	tau = inverseDynamics(robot, q, dq, ddq);
	tau

结果

tau =

    5.6575    0.0000  -95.0558    0.000

第四旋转关节力矩计算为0显然不对。错误原因在于使用了改进型DH参数表,修改成标准型DH参数表后的代码和结果如下:

正确的代码

%     a      alpha   d    theta
dh = [0      0       0     0;
      0      -0.5*pi 0.150   0;
      0.075     0    0.250   0.5*pi;
      0      0       0.150   0;];
%%  create rigid body tree
robot = robotics.RigidBodyTree;
...........................
...........................
%%  inverse dynamics
robot.DataFormat = 'row';
q = [0.5*pi 0.170 0.350 0.5*pi];   %   variables
dq = [0.1 0.1 0.1 0.1]; %   velocity
ddq = [0 0 0 0];    %   acceleration
tau = inverseDynamics(robot, q, dq, ddq);
tau

结果

tau =

 -101.8922   -0.0914   -0.0779    5.5029

此时的输出力矩才合理。

总结

标准DH参数表和改进型DH参数表是有区别的,在使用时要注意区分。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值