Forward and inverse dynamics for robot, unable to build robot model.

4 views (last 30 days)
Hello, I'm learning kinematics and dynamics using Robotic Toolbox Matlab. To perform dynamics (inverse and forward), first I have to build robot model. For that, I took Puma560 data and tried. Code is given below:
%define link mass
L(1).m = 4.43;
L(2).m = 10.2;
L(3).m = 4.8;
L(4).m = 1.18;
L(5).m = 0.32;
L(6).m = 0.13;
%define center of gravity
L(1).r = [ 0 0 -0.08];
L(2).r = [ -0.216 0 0.026];
L(3).r = [ 0 0 0.216];
L(4).r = [ 0 0.02 0];
L(5).r = [ 0 0 0];
L(6).r = [ 0 0 0.01];
%define link inertial as a 6-element vector
%interpreted in the order of [Ixx Iyy Izz Ixy Iyz Ixz]
L(1).I = [ 0.195 0.195 0.026 0 0 0];
L(2).I = [ 0.588 1.886 1.470 0 0 0];
L(3).I = [ 0.324 0.324 0.017 0 0 0];
L(4).I = [ 3.83e-3 2.5e-3 3.83e-3 0 0 0];
L(5).I = [ 0.216e-3 0.216e-3 0.348e-3 0 0 0];
L(6).I = [ 0.437e-3 0.437e-3 0.013e-3 0 0 0];
%define motor inertia
L(1).Jm = 200e-6;
L(2).Jm = 200e-6;
L(3).Jm = 200e-6;
L(4).Jm = 33e-6;
L(5).Jm = 33e-6;
L(6).Jm = 33e-6;
%define gear ratio
L(1).G = -62.6111;
L(2).G = 107.815;
L(3).G = -53.7063;
L(4).G = 76.0364;
L(5).G = 71.923;
L(6).G = 76.686;
% motor viscous friction
L(1).B = 1.48e-3;
L(2).B = .817e-3;
L(3).B = 1.38e-3;
L(4).B = 71.2e-6;
L(5).B = 82.6e-6;
L(6).B = 36.7e-6;
% motor Coulomb friction
L(1).Tc = [ .395 -.435];
L(2).Tc = [ .126 -.071];
L(3).Tc = [ .132 -.105];
L(4).Tc = [ 11.2e-3 -16.9e-3];
L(5).Tc = [ 9.26e-3 -14.5e-3];
L(6).Tc = [ 3.96e-3 -10.5e-3];
% create links using D-H parameters
L(1).l = Link([ 0 0 0 pi/2 0], 'standard');
L(2).l = Link([ 0 .15005 .4318 0 0], 'standard');
L(3).l = Link([0 .0203 0 -pi/2 0], 'standard');
L(4).l = Link([0 .4318 0 pi/2 0], 'standard');
L(5).l = Link([0 0 0 -pi/2 0], 'standard');
L(6).l = Link([0 0 0 0 0], 'standard');
% set limits for joints
L(1).l.qlim=[deg2rad(-160) deg2rad(160)];
L(2).l.qlim=[deg2rad(-125) deg2rad(125)];
L(3).l.qlim=[deg2rad(-270) deg2rad(90)];
%build the robot model
puma560 = SerialLink(L, 'name','Puma 560');
But when I run this, it shows error. " _ Error using SerialLink (line 333) unknown type passed to robot_"
Can anybody suggest me what to do to complete my forward and inverse dynamics analysis and plotting them?
Thanks.

Accepted Answer

Naseeb Gill
Naseeb Gill on 8 Dec 2016
I solved this answer and code should be like this.
% create links using D-H parameters
L(1) = Link([ 0 0 0 pi/2 0], 'standard');
L(2) = Link([ 0 .15005 .4318 0 0], 'standard');
L(3) = Link([0 .0203 0 -pi/2 0], 'standard');
L(4) = Link([0 .4318 0 pi/2 0], 'standard');
L(5) = Link([0 0 0 -pi/2 0], 'standard');
L(6) = Link([0 0 0 0 0], 'standard');
%define link mass
L(1).m = 4.43;
L(2).m = 10.2;
L(3).m = 4.8;
L(4).m = 1.18;
L(5).m = 0.32;
L(6).m = 0.13;
%define center of gravity
L(1).r = [ 0 0 -0.08];
L(2).r = [ -0.216 0 0.026];
L(3).r = [ 0 0 0.216];
L(4).r = [ 0 0.02 0];
L(5).r = [ 0 0 0];
L(6).r = [ 0 0 0.01];
%define link inertial as a 6-element vector
%interpreted in the order of [Ixx Iyy Izz Ixy Iyz Ixz]
L(1).I = [ 0.195 0.195 0.026 0 0 0];
L(2).I = [ 0.588 1.886 1.470 0 0 0];
L(3).I = [ 0.324 0.324 0.017 0 0 0];
L(4).I = [ 3.83e-3 2.5e-3 3.83e-3 0 0 0];
L(5).I = [ 0.216e-3 0.216e-3 0.348e-3 0 0 0];
L(6).I = [ 0.437e-3 0.437e-3 0.013e-3 0 0 0];
%define motor inertia
L(1).Jm = 200e-6;
L(2).Jm = 200e-6;
L(3).Jm = 200e-6;
L(4).Jm = 33e-6;
L(5).Jm = 33e-6;
L(6).Jm = 33e-6;
%define gear ratio
L(1).G = -62.6111;
L(2).G = 107.815;
L(3).G = -53.7063;
L(4).G = 76.0364;
L(5).G = 71.923;
L(6).G = 76.686;
% motor viscous friction
L(1).B = 1.48e-3;
L(2).B = .817e-3;
L(3).B = 1.38e-3;
L(4).B = 71.2e-6;
L(5).B = 82.6e-6;
L(6).B = 36.7e-6;
% motor Coulomb friction
L(1).Tc = [ .395 -.435];
L(2).Tc = [ .126 -.071];
L(3).Tc = [ .132 -.105];
L(4).Tc = [ 11.2e-3 -16.9e-3];
L(5).Tc = [ 9.26e-3 -14.5e-3];
L(6).Tc = [ 3.96e-3 -10.5e-3];
% set limits for joints
L(1).qlim=[deg2rad(-160) deg2rad(160)];
L(2).qlim=[deg2rad(-125) deg2rad(125)];
L(3).qlim=[deg2rad(-270) deg2rad(90)];
%build the robot model
puma560 = SerialLink(L, 'name','Puma 560');
  1 Comment
James Patrick
James Patrick on 16 Jul 2020
Hello Naseeb.. I want to determine the inverse dynamic of my robot but I don't know the syntax. I can you help me with the syntax???

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!