0% found this document useful (0 votes)
145 views15 pages

Robotics Homework 2

The document provides a detailed analysis of the Kuka KR 5 ARC industrial robot, including its joint types, dimensions, and coordinate frames. It outlines the Denavit-Hartenberg (DH) parameters and presents the forward kinematic model derived from these parameters, along with MATLAB code used for calculations. Additionally, it discusses the validation of the kinematic model by calculating positions and orientations for specific joint configurations.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
145 views15 pages

Robotics Homework 2

The document provides a detailed analysis of the Kuka KR 5 ARC industrial robot, including its joint types, dimensions, and coordinate frames. It outlines the Denavit-Hartenberg (DH) parameters and presents the forward kinematic model derived from these parameters, along with MATLAB code used for calculations. Additionally, it discusses the validation of the kinematic model by calculating positions and orientations for specific joint configurations.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Question 1

Kuka KR 5 ARC, a 6 DOF industrial robot, is given in Fig. 1. For this robot manipulator system:

Figure 1: Kuka KR 5 ARC manipulator

a. The joint types and the dimensions of the robot.

It can be seen from figure 3 that the type of the joints is revolute -shown in figure 2- which
constrains the motion of two bodies to pure rotation along a common axis.

Figure 2: Revolute joint Figure 3: 6-DOF

1
For the dimensions, figure 4 shows the dimensions which is given in the data-sheet.

Figure 4: Size and dimensions of the robot arm

b. The coordinate frames of the robot manipulator.

To assign the coordinate frames, the kinematic diagram is sketched due to the rules given below
and the positive directions were taken the same as figure 3.

Assigning Coordinate Frames

Start:
for i = 0 to n − 1

STEP 1: Assign zi axes

end
STEP 2: Establish the base frame
for i = 0 to n − 1

STEP 3: Locate origin Oi


STEP 4: Assign xi axes
STEP 5: Assign yi axes

end
STEP 6: Establish the ”Tool Frame”
STEP 7: Create DH Table

end

2
Figure 5: Kinematic diagram

c. DH-table.

DH parameters can be divided into 2 groups;


- Link Parameters : ai , αi
- Joint Parameters : di , θi
Physical Basis for DH Parameters :
- ai : distance from intersection of zi−1 and xi to oi along xi
- αi : angle from zi−1 to zi around xi
- di : distance from oi−1 to intersection of zi−1 and xi along zi−1
- θi : angle from xi−1 to xi around zi−1

By applying the rules given above, the DH-table is found as given below.

3
n ai /mm αi / (◦ ) di /mm θi / (◦ ) θn / (◦ )

1 180 90 400 0 +/ − 155◦


2 600 0 0 90 +65◦ to −180◦
3 120 90 0 0 +158◦ to −15◦
4 0 90 620 0 +/ − 350◦
5 0 90 0 90 +/ − 130◦
6 0 0 115 0 +/ − 350◦

Table 1: D-H parameters of manipulator links

For the given table above, the initial condition of the joints is drawn using MATLAB and given
below,

(a) Manipulator in 3D view (b) Manipulator in X-Y view

(c) Manipulator in X-Z view (d) Manipulator in Z-Y view

Figure 6: Initial frame of the manipulator

4
d. The forward kinematic model of the robot manipulator by means of the DH
table

The forward kinematic model is found by,

T60 = T20 T42 T64


(1)
i−1
Ti+1 = Ai Ai+1

Where,
 
cθi −sθi cαi sθi sαi ai cθi  
   cos (θi ) − sin (θi ) cos (αi ) sin (θi ) sin (αi ) ai cos (θi )

 sθi cθi cαi −cθi sαi ai sθi
  
sin (θi ) cos (θi ) cos (αi ) − cos (θi ) sin (αi ) ai sin (θi ) 
  
Ai =  =
 

 (2)
0 sin (αi ) cos (αi ) di

 0 s αi cαi di   
   
0 0 0 1
0 0 0 1

By substituting in equation 2 (using the code given in page 7), A1 , A2 , A3 , A4 , A5 & A6 are found
as,
   
cos [θ1 ] 0 sin [θ1 ] 0.18cos [θ1 ] cos [θ2 ] −sin [θ2 ] 0 0.6cos [θ2 ]
   
 sin [θ1 ] θ −cos [θ1 ] 0.18sin [θ1 ]   sin [θ2 ] cos [θ2 ] 0 0.6sin [θ2 ] 
   
A1 = 

 , A2
 =



 0 1 0 0.4   0 0 1 0 
   
0 0 0 1 0 0 0 1
   
cos [θ3 ] 0 sin [θ3 ] 0.12cos [θ3 ] cos [θ4 ] 0 sin [θ4 ] 0
   
 sin [θ3 ] 0 −cos [θ3 ] 0.12sin [θ3 ]   sin [θ4 ] 0 −cos [θ4 ] 0 
   
A3 = 

 , A4
 =



 0 1 0 0   0 1 0 0.62 
   
0 0 0 1 0 0 0 1
   
cos [θ5 ] 0 sin [θ5 ] 0 cos [θ6 ] −sin [θ6 ] 0 0
   
 sin [θ5 ] θ −cos [θ5 ] 0   sin [θ6 ] cos [θ6 ] 0 0 
   
A5 = 


 , A6 =



 0 1 0 0   0 0 1 0.115 
   
0 0 0 1 0 0 0 1

The forward kinematic model is found as,

T60 = A1 A2 A3 A4 A5 A6 (3)

5
e. Proving that the forward kinematic model is correct.

i. Choosing two separate suitable operating points for all joints considering the range
of motion of the axes listed in the data-sheet of the robot manipulator.

Using the data-sheet, the table below is giving the range of the motion for each axis.

Axis Range of motion, softwarelimited Speed with rated payload


1 +/ − 155◦ 154◦ /s
2 +65◦ to −180◦ 154%
3 +158◦ to −15◦ 228◦ /s
4 +/ − 350◦ 343◦ /s
5 +/ − 130◦ 384◦ /s
6 +/ − 350◦ 721◦ /s

Table 2: Axis data

Due to that, the two operating points are taken as,

J1 = [70◦ , 0◦ , 10◦ , 90◦ , 100◦ , 50◦ ]


(4)
◦ ◦ ◦ ◦ ◦ ◦
J2 = [30 , 15 , 0 , 60 , 120 , 90 ]

6
ii. Calculating the position and orientation of the tip point with respect to the base
frame for each case using MATLAB symbolic toolbox.

The code given below is used to calculate the position and orientation of the tip point with respect
to the base frame for each case.

1 %define the symbolic expressions


2 sympref('FloatingPointOutput',true);
3 syms 'theta i' 'alpha i' 'a i' 'd i'
4 thetavec = sym('theta',[1 6]);
5 % A Matrix
6 A = ...
7 [cos(theta i),−sin(theta i)*cos(alpha i),sin(theta i)*sin(alpha i),a i *cos(theta i);
8 sin(theta i),cos(theta i)*cos(alpha i),−cos(theta i)*sin(alpha i),a i *sin(theta i);
9 0, sin(alpha i), cos(alpha i), d i;
10 0, 0, 0, 1];
11 % DH Table Values
12 avec = [ 0.18, 0.6, 0.12, 0, 0, 0];
13 alphavec = [ pi/2, 0, pi/2, pi/2, pi/2, 0];
14 dvec = [ 0.4, 0, 0, 0.62, 0, 0.115];
15 % A Matrices
16 A1 = subs(A,[a i,alpha i,d i,theta i],[avec(1),alphavec(1),dvec(1),thetavec(1)]);
17 A2 = subs(A,[a i,alpha i,d i,theta i],[avec(2),alphavec(2),dvec(2),thetavec(2)]);
18 A3 = subs(A,[a i,alpha i,d i,theta i],[avec(3),alphavec(3),dvec(3),thetavec(3)]);
19 A4 = subs(A,[a i,alpha i,d i,theta i],[avec(4),alphavec(4),dvec(4),thetavec(4)]);
20 A5 = subs(A,[a i,alpha i,d i,theta i],[avec(5),alphavec(5),dvec(5),thetavec(5)]);
21 A6 = subs(A,[a i,alpha i,d i,theta i],[avec(6),alphavec(6),dvec(6),thetavec(6)]);
22 % Forward Kinemetic Model
23 forwardModel = A1*A2*A3*A4*A5*A6;
24 % Operating Points
25 J1 = [70, 0,10,90,100,50]*(pi/180);
26 J2 = [30,15, 0,60,120,90]*(pi/180);
27 %Forward Kinematics of the Operating Points
28 AJ1 = subs(forwardModel,thetavec,J1);
29 AJ2 = subs(forwardModel,thetavec,J2);
30 % Det of the result matrices
31 dAJ1 =det(AJ1);
32 dAJ2 =det(AJ2);

7
The results of the code are given below, For,
 
cos (θi ) − cos (αi ) sin (θi ) sin (αi ) sin (θi ) ai cos (θi )
 
 sin (θi ) cos (αi ) cos (θi ) − sin (αi ) cos (θi ) ai sin (θi )
 

A= 

 (5)
 0 sin (αi ) cos (αi ) di 
 
0 0 0 1

The forward kinematics matrix is found as,

(6)
 
sin (θ1 ) (sin (θ4 ) cos (θ5 ) cos (θ6 ) − sin (θ6 ) cos (θ4 )) + cos (θ1 ) (sin (θ2 + θ3 ) sin (θ5 ) cos (θ6 ) + cos (θ2 + θ3 ) (sin (θ4 ) sin (θ6 ) + cos (θ4 ) cos (θ5 ) cos (θ6 ))) cos (θ6 ) (sin (θ4 ) cos (θ1 ) cos (θ2 + θ3 ) − sin (θ1 ) cos (θ4 )) − sin (θ6 ) (sin (θ1 ) sin (θ4 ) cos (θ5 ) + cos (θ1 ) (sin (θ2 + θ3 ) sin (θ5 ) + cos (θ2 + θ3 ) cos (θ4 ) cos (θ5 ))) sin (θ1 ) sin (θ4 ) sin (θ5 ) + cos (θ1 ) (sin (θ5 ) cos (θ2 + θ3 ) cos (θ4 ) − sin (θ2 + θ3 ) cos (θ5 )) 0.115 sin (θ1 ) sin (θ4 ) sin (θ5 ) + cos (θ1 ) (−0.12 sin (θ2 ) sin (θ3 ) + 0.62 sin (θ2 + θ3 ) + cos (θ2 ) (0.12 cos (θ3 ) + 0.6) − 0.115 sin (θ2 + θ3 ) cos (θ5 ) + 0.115 sin (θ5 ) cos (θ2 + θ3 ) cos (θ4 ) + 0.18)

T06 =
 
 sin (θ1 ) sin (θ2 + θ3 ) sin (θ5 ) cos (θ6 ) + cos (θ1 ) (sin (θ6 ) cos (θ4 ) − sin (θ4 ) cos (θ5 ) cos (θ6 )) + sin (θ1 ) cos (θ2 + θ3 ) (sin (θ4 ) sin (θ6 ) + cos (θ4 ) cos (θ5 ) cos (θ6 )) cos (θ1 ) (cos (θ4 ) cos (θ6 ) + sin (θ4 ) sin (θ6 ) cos (θ5 )) + sin (θ1 ) (cos (θ2 + θ3 ) (sin (θ4 ) cos (θ6 ) − sin (θ6 ) cos (θ4 ) cos (θ5 )) − sin (θ2 + θ3 ) sin (θ5 ) sin (θ6 )) sin (θ5 ) (sin (θ1 ) cos (θ2 + θ3 ) cos (θ4 ) − sin (θ4 ) cos (θ1 )) − sin (θ1 ) sin (θ2 + θ3 ) cos (θ5 ) sin (θ1 ) (−0.12 sin (θ2 ) sin (θ3 ) + 0.62 sin (θ2 + θ3 ) + cos (θ2 ) (0.12 cos (θ3 ) + 0.6) − 0.115 sin (θ2 + θ3 ) cos (θ5 ) + 0.115 sin (θ5 ) cos (θ2 + θ3 ) cos (θ4 ) + 0.18) − 0.115 sin (θ4 ) sin (θ5 ) cos (θ1 ) 
 
 

sin (θ2 + θ3 ) sin (θ4 ) sin (θ6 ) + cos (θ6 ) (sin (θ2 + θ3 ) cos (θ4 ) cos (θ5 ) − sin (θ5 ) cos (θ2 + θ3 )) sin (θ2 + θ3 ) sin (θ4 ) cos (θ6 ) + sin (θ6 ) (sin (θ5 ) cos (θ2 + θ3 ) − sin (θ2 + θ3 ) cos (θ4 ) cos (θ5 )) sin (θ2 ) (sin (θ3 ) (0.62 − 0.115 cos (θ5 )) + 0.12 cos (θ3 ) + 0.6) + cos (θ2 ) (0.12 sin (θ3 ) + cos (θ3 ) (0.115 cos (θ5 ) − 0.62)) + 0.115 sin (θ2 + θ3 ) sin (θ5 ) cos (θ4 ) + 0.4

 cos (θ2 + θ3 ) cos (θ5 ) + sin (θ2 + θ3 ) sin (θ5 ) cos (θ4 ) 
 
0. 0. 0. 1.

For the operating point J1


 
0.1907 0.2967 0.9357 0.4516
 
 0.8504 0.4262 −0.3085 0.9097 
 
T1 = 
  (7)
 −0.4904 0.8546 −0.1710 −0.2094 

 
0 0 0 1

This gives the rotation and position matrix as,


   
0.1907 0.2967 0.9357 0.4516
   
 
R1 =  0.8504 0.4262 −0.3085  , O1 =  0.9097  (8)
  
  
 
−0.4904 0.8546 −0.1710 −0.2094

For the operating point J2


 
0.4744 0.2315 0.8493 0.9948
 
 0.8513 −0.3663 −0.3757 0.4748 
 
T2 = 
  (9)
 0.2241 0.9012 −0.3709 −0.0552 

 
0 0 0 1

This gives the rotation and position matrix as,


   
0.4744 0.2315 0.8493 0.9948
   
 
R2 =  0.8513 −0.3663 −0.3757  , O2 =  0.4748  (10)
  
  
 
0.2241 0.9012 −0.3709 −0.0552

The determinant of both homogeneous transformation matrices are equal to one which proves the
correctness of the calculations.

8
Question 2

For Kuka KR 5 ARC robot manipulator,

a. Comparing the DH table found in Question 1 and DH table defined in the


RoboAnalyzer program.

The defined DH-table in the RoboAnalyzer program is given below,

Joint No Joint Type Joint Offset (b) m Joint Angle (θ) deg Link Length (a) m Twist Angle (α) deg Initial Value (JV) deg or m Final Value (JV) deg or m
1 Revolute 0.4 Variable 0.18 90 0 60
2 Revolute 0.135 Variable 0.6 180 0 60
3 Revolute 0.135 Variable 0.12 −90 0 60
4 Revolute 0.62 Variable 0 90 0 60
5 Revolute 0 Variable 0 −90 0 60
6 Revolute 0.115 Variable 0 0 0 60

Table 3: RoboAnalyzer Kuka KR 5 ARC manipulator DH-Table

There are three major differences between the previously found DH-table and the table defined in
the program. The first one is the initial values, which are by default taken as 0 for all joints. The
second difference is the twist angle (α), which is due to the different axis assignments. The positive
rotation in the data-sheet is different from the built-in on RoboAnalyzer program which results
this different values. The third one is the distance offset appearing in joint 2 and 3 that did not
taken into considirations while writing the D-H table given in table 1.

Figure 7: Initial Condition of Kuka KR 5 ARC manipulator

9
b. Defining an initial configuration for the joint parameters and calculating the
position and orientation of tip point with respect to base frame

The initial Configuration is given below,

n θi / ( ◦ ) θn / ( ◦ )

1 0 +/ − 155◦
2 90 +65◦ to −180◦
3 0 +158◦ to −15◦
4 0 +/ − 350◦
5 90 +/ − 130◦
6 0 +/ − 350◦

Table 4: Initial Confirmation

Figure 8: Initial Condition of Kuka KR 5 ARC manipulator

10
i. calculating the position and orientation of tip point with respect to base frame
in MATLAB using the forward kinematic model.

Using the pre-defined model,

1 J0 =[0,90,0,0,90,0]*(pi/180);
2 AJ0=subs(forwardModel,thetavec,J0)

the result is found as,  


1 0 0 0.800
 
 0 1 0 0 
 
Ti = 


 (11)
 0 0 1 1.235 
 
0 0 0 1
This gives the rotation and position matrix as,
   
1 0 0 0.800
   
 
Ri =  0 1 0  , Oi =  0  (12)
  
  
 
0 0 1 1.235

ii. calculating the position and orientation of tip point with respect to base
frame in RoboAnalyzer program.

By assigning the D-H parameters as shown below,

Joint No Joint Type Joint Offset (b) m Joint Angle (θ) deg Link Length (a) m Twist Angle (α) deg Initial Value (JV) deg or m Final Value (JV) deg or m
1 Revolute 0.4 Variable 0.18 90 0 60
2 Revolute 0.135 Variable 0.6 180 90 60
3 Revolute 0.135 Variable 0.12 −90 0 60
4 Revolute 0.62 Variable 0 90 0 60
5 Revolute 0 Variable 0 −90 90 60
6 Revolute 0.115 Variable 0 0 0 60

Table 5: Initial Confirmation of RoboAnalyzer Kuka KR 5 ARC Manipulator D-H Table

the result is found as,


 
1 0 0 0.800
   
  1 0 0 0.800
 0 −1 0 0 
     
 
Ti =   , Ri =  0 −1 0  , Oi =  (13)
 
0 
 0 0 −1 1.005 
     
 
  0 0 −1 1.005
0 0 0 1

11
The difference appearing in orientation and position matrices is due to the different frame assignments.
This is proved by giving the angle that makes the RoboAnalyzer Kuka KR 5 ARC Manipulator
tool frame in the same initial position for the pre-assigned axis frames as shown below,

(a) Manipulator in MATLAB (b) Manipulator in RoboAnalyzer

(c) MATLAB tool frame (d) RoboAnalyzer tool frame

Figure 9: Differences in Initial frame of the manipulator

By changing the initial value of revolute joint 5 to -90, the same position matrix is found as shown
below,

 
−1 0 0 0.800
 
 0 −1 0 0
 

Ti = 



 0 0 1 1.235 
 
0 0 0 1
   
−1 0 0 0.800
   
Figure 10: Changed the tool frame in
 
Ri =  0 −1 0  , Oi = 
 
 0  
 
RoboAnalyzer to match MATLAB model
 
0 0 1 1.235

12
c. Assigning two separate suitable trajectories starting from initial configuration
for all joints considering the range of motion of the axes listed in the datasheet
of the robot [Link] plotting tip point trajectories with respect to base
frame for each case.

For the operating points to be,

J1 = [70◦ , 0◦ , 10◦ , 90◦ , 100◦ , 50◦ ]


(14)
◦ ◦ ◦ ◦ ◦ ◦
J2 = [30 , 15 , 0 , 60 , 120 , 90 ]

The two trajectories are shown below using RoboAnalyzer.

(a) J1 trajectory (b) J2 trajectory

Figure 11: Suitable two different trajectories

i. plotting tip point trajectories with respect to base frame for each case in
MATLAB using the forward kinematic model.

Using the MATLAB code below,

1 nsteps = 100; J = J1;


2 xtr = zeros(1,100); ytr = zeros(1,100);ztr = zeros(1,100);
3 for i=1:nOS
4 Tsteps = subs(forwardModel,thetavec,i*(J/nOS));
5 F = double(Tsteps);
6 xtr(i) = F(1,end); ytr(i) = F(2,end); ztr(i) = F(3,end);
7 end

13
For J1,

Figure 12: Tip point trajectory plot for J1

For J2,

Figure 13: Tip point trajectory plot for J2

14
ii. plotting tip point trajectories with respect to base frame for each case in
RoboAnalyzer program via graph mode.

Figure 14: Tip point trajectory plot for J1

Figure 15: Tip point trajectory plot for J2

[Link] the graphs achieved in MATLAB and RoboAnalyzez program.

Although they having similarities, the graphs are not the same due to the difference in the initial
operating point orientation and position. Moreover, the acceleration information is not added to
the MATLAB plot.

15

You might also like