Bao Cao Robot
Bao Cao Robot
1
Contents
1. INTRODUCTION...............................................................................................3
2. METHODOLOGY..............................................................................................3
3. KINEMATICS ANALYSIS.............................................................................10
5. CONCLUSION.................................................................................................21
6. REFERENCE....................................................................................................22
2
FORWARD AND INVERSE KINEMATIC OF ABB IRB 6620
INDUSTRIAL ROBOT
Nguyen Tran Huu Cuong, Vo Minh Hien
Ho Chi Minh City University of Technology and Education
1. INTRODUCTION
The ABB IRB 140 is a six-axis industrial robot with a wide range of applications in
manufacturing, assembly, and palletizing. Kinematics is the study of the motion of
robotic arms, and it is essential for controlling and programming the IRB 140.
Forward kinematics is the process of calculating the position and orientation of the
robot's end effector (tool) given the joint angles. This is a relatively straightforward
problem, and it can be solved using the Denavit-Hartenberg (DH) convention. The DH
convention is a systematic way of describing the geometry of a robotic arm, and it can be
used to derive the forward kinematic equations for any six-axis robot.
Inverse kinematics is the opposite problem of forward kinematics. Given the desired
position and orientation of the end effector, inverse kinematics calculates the joint angles
required to achieve that pose. This is a more challenging problem, and there is no single
solution that works for all robotic arms. However, there are a number of different inverse
kinematics algorithms that can be used to solve this problem.
Both forward and inverse kinematics are essential for controlling and programming the
IRB 140. Forward kinematics is used to calculate the position and orientation of the end
effector for any given set of joint angles. This information can then be used to verify that
the robot is moving as expected, or to calculate the joint angles required to reach a
specific target pose. Inverse kinematics is used to calculate the joint angles required to
achieve a desired end effector pose. This information can then be used to program the
robot to follow a specific trajectory, or to perform a specific task.
2. METHODOLOGY
2.1 TECHNICAL INFORMATION
The technical specifications of the robot are described in the following table. The basic
specifications and those that are relevant to the calculation of the robot’s kinematics are
listed.
3
Model name ABB IRB 140
Controlled axes 6
Reach 810 mm
Payload 5 kg
Mounting position Any angle
Manipulator 98 kg
Robot weight:
Controller 250 kg
Axis Range Speed
Axis 1 Rotation (J1) 360° 200°/s
Axis 2 Arm (J2) 200° 200°/s
Axis 3 Arm (J3) 280° 260°/s
Unlimited (400°
Axis 4 Wrist (J4) 360°/s
default)
Axis 5 Bend (J5) 240° 360°/s
Unlimited (800°
Axis 6 Turn (J6) 450°/s
default)
4
The dimension of the robot is also given in the technical document, presented in the
following Figure 2.
As for the movement the robot, below is the table of motion of each axis, as well as the
working range of the robot.
5
2.2 ROTATION AND POSITION TRANSFORM
[ ]
cos (θ1) −sin ( θ1) 0
A z= sin ( θ1) cos (θ1) 0
0 0 1
At θ1=60:
( )
257.5
G
R = 446
p
712
6
Joint 2: (the remaining joints stay):
We have the translation matrix for the (x1y1z1) coordination:
T
d G =[ 70 ,0,352 ]
[ ]
cos (θ2 ) 0 −sin (θ2 )
A y= 0 1 0
sin (θ2 ) 0 cos (θ2 )
At θ2=50 :
( )
80.264
G
R =
p 0
924.29
[ ]
cos (θ3 ) 0 −sin (θ3 )
A y= 0 1 0
sin (θ3 ) 0 cos (θ3 )
At θ3 =50:
( )
356.04
G
R =
p 0
1052.88
7
8
Joint 4 (the remaining joints stay):
We have the translation matric for the (x1y1z1) coordination:
T
d G =[ 70 ,0,712 ]
[ ]
1 0 0
A x = 0 cos (θ 4) sin (θ 4 )
0 −sin (θ4 ) cos ( θ4 )
At θ 4=30:
( )
515
G
R = 0
p
712
[ ]
cos (θ5 ) 0 −sin (θ5 )
A y= 0 1 0
sin (θ5 ) 0 cos (θ5 )
T
r Bp =[ 65 , 0 , 0 ]
( )
450
G
Rp = 0
777
9
[ ]
1 0 0
A x = 0 cos (θ6 ) sin (θ6 )
0 −sin (θ6 ) cos (θ 6)
T
r Bp =[ 65 , 0 , 0 ]
( )
515
G
r = 0
p
777
10
3. KINEMATICS ANALYSIS
3.1 DENAVIT HARTENBERG TABLE
We adhere to the following rules when establishing local coordinates:
The Z-axis always corresponds to the joint axis, serving as the axis of rotation for
rotational joints or the axis of movement for translational joints.
The X-axis is required to be perpendicular to and intersect both the new Z-axis and
the old Z-axis.
The placement of the Y-axis follows the right-hand rule based on the X and Z axes.
In reference to Figure 6, starting at joint 1, Z0 signifies the initial joint, which is a
revolute joint. X0 is selected to run parallel to the reference frame's x-axis.
Along the common normal between Z2 and Z3. Similarly, X4 aligns with the common
normal between Z3 and Z4.
Finally, Z5 and Z6 are parallel and collinear, and Z5 represents the movements of
joint 6, while Z6 represents the motions of the end effectors.
When the diagram is obtained, we are then able to determine D-H parameters. D-H
parameters include link length a i, link twist α i, link offset d i and twist angle θi . The four
parameters are defined as below:
Link length a i: distance between Oi−1 and Oi measured along x i axis.
11
Link twist α i: angle between z i−1 and z i measured about x i axis.
Link offset d i: distance between Oi−1 and Oi measured along z i−1 axis.
Twist angle θi : angle between x i−1 and x i measured about z i−1 axis.
The assigned coordinate frames are followed to fill out the parameters as shown in Table
I below.
Joint
1 0.07 90 0.352 θ1
2 0.36 0 0 θ2
3 0 90 0 θ3
4 0 -90 0.38 θ4
5 0 90 0 θ5
6 0 0 0.065 θ6
DH Table for ABB 140 robot arm
12
A matrix. This systematic approach facilitates a clear and efficient representation of the
complex relationships within a robotic system.
[ ]
cos θi −sinθ i cos α i sin θi sin α i ai cos θ i
i−1 sin θi cos θi cos α i −cos θi sin α i a i sin θi
A i=
0 sin α i cos α i di
0 0 0 1
For abbreviation and simplicity following notation substitutions will be used throughout
this report:
𝐶n = cos𝜃n
𝑆n = sin𝜃n
According to the general matrix, six homogenous transformation matrices are as below:
[ ]
C θ1 0 S θ1 a1 C θ 1
0 S θ1 0 −C θ1 a1 S θ 1
T 1=
0 1 0 d1
0 0 0 1
[ ]
C θ2 −S θ 2 0 a2 C θ 2
1 S θ2 C θ2 0 a 2 S θ2
T2=
0 0 1 0
0 0 0 1
[ ]
C θ3 0 S θ3 a3 C θ3
2 S θ3 0 −C θ3 a3 S θ3
T3=
0 1 0 0
0 0 0 1
[ ]
C θ4 0 −S θ 4 0
3 S θ4 0 C θ4 0
T 4=
0 −1 0 d4
0 0 0 1
[ ]
C θ5 0 S θ5 0
4 S θ5 0 −C θ 5 0
T 5=
0 1 0 0
0 0 0 1
13
[ ]
C θ 6 −S θ6 0 0
5 S θ6 C θ6 0 0
T 6=
0 0 1 d6
0 0 0 1
[ ]
0.707 0 0.707 0.04949
0 0.707 0 −0.707 0.04949
T 1=
0 1 0 0.352
0 0 0 1
[ ]
0 −1 0 0
1 1 0 0 0.36
T2=
0 0 1 0
0 0 0 1
[ ]
0.866 0 0.5 0
2 0.5 0 −0.866 0
T3=
0 1 0 0
0 0 0 1
[ ]
1 0 0 0
3 0 0 1 0
T 4=
0 −1 0 0.38
0 0 0 1
[ ]
1 0 0 0
4 0 0 −1 0
T 5=
0 1 0 0
0 0 0 1
[ ]
1 0 0 0
5 0 1 0 0
T 6=
0 0 1 0.065
0 0 0 1
The forward kinematic of the whole robot can now be obtained by taking the product of
the homogeneous transformation matrices of the links:
14
[ ]
nx sx ax px
n s ay py
❑06 T =❑01 T ❑12 T ❑23 T ❑34 T ❑45 T ❑56 T = y y
nz s z az pz
0 0 0 1
Where:
T
n=[ n x n y n z ] (Normal vector) represents the direction of x 6 axis in the base frame.
T
s= [ s x s y s z ] (Sliding vector) represents the direction of y 6 axis in the base frame.
T
a=[ a x a y a z ] (Approach vector) represents the direction of z 6 axis in the base frame.
T
p= [ p x p y p z ] represents the position of final point in the base frame.
In which:
𝑛𝑥 = 𝐶6 (𝐶5 (𝐶1 𝐶23 𝐶4 + 𝑆1 𝑆4) − 𝐶1 𝑆23 𝑆5) + 𝑆6 (𝑆1 𝐶4 − 𝐶1 𝐶23 𝑆4) (1)
𝑛𝑦 = 𝐶6 (𝐶5 (𝑆1 𝐶23 𝐶4 + 𝐶1 𝑆4) − 𝑆1 𝑆23 𝑆5) − 𝑆6 (𝐶1 𝐶4 + 𝑆1 𝐶23 𝑆4) (2)
𝑛𝑧 = 𝐶6 (𝐶23 𝑆5 + 𝑆23 𝐶4 𝐶5) − 𝑆23 𝑆4 𝑆6 (3)
s𝑥 = 𝑆6 (𝐶1 𝑆23 𝑆5 − 𝐶5 (𝑆1 𝐶23 𝐶4 + 𝑆1 𝑆4)) + 𝐶6 (𝑆1 𝐶4 − 𝐶1 𝐶23 𝑆4) (4)
s𝑦 = 𝑆6 (𝑆1 𝑆23 𝑆5 − 𝐶5 (𝑆1 𝐶23 𝐶4 − 𝐶1 𝑆4)) − 𝐶6 (𝐶1 𝐶4 + 𝑆1 𝐶23 𝑆4) (5)
s𝑧 = −𝑆6 (𝐶23 𝑆5 + 𝑆23 𝐶4 𝐶5) − 𝑆23 𝑆4 𝐶6 (6)
𝑎𝑥 = 𝑆5 (𝐶1 𝐶23 𝐶4 + 𝑆1 𝑆4) + 𝐶1 𝑆23 𝐶5 (7)
𝑎𝑦 = 𝑆5 (𝑆1 𝐶23 𝐶4 − 𝐶1 𝑆4) + 𝑆1 𝑆23 𝐶5 (8)
𝑎𝑧 = 𝑆23 𝐶4 𝑆5 − 𝐶23 𝐶5 (9)
𝑝𝑥 = 𝑑6 (𝑆5 (𝐶1 𝐶23 𝐶4 + 𝑆1 𝑆4) + 𝐶1 𝑆23 𝐶5) + 𝐶1 (𝑎1 + 𝑎2 𝐶2 + 𝑎3 𝐶23 + 𝑑4 𝑆23) (10)
𝑝𝑦 = 𝑑6 (𝑆5 (𝑆1 𝐶23 𝐶4 − 𝐶1 𝑆4) + 𝑆1 𝑆23 𝐶5) + 𝑆1 (𝑎1 + 𝑎2 𝐶2 + 𝑎3 𝐶23 + 𝑑4 𝑆23) (11)
𝑝𝑧 = 𝑎2 𝑆2 + 𝑑1 + 𝑎3 𝑆23 − 𝑑4 𝐶23 + 𝑑6 (𝑆23 𝐶4𝑆5 − 𝐶23 𝐶5) (12)
Thus,
[ ]
−0.365 0.7071 0.614 0.146725
0 0 1 2 3 4 5 −0.365 −0.7071 0.614 0.146725
❑6 T =❑1 T ❑2 T ❑3 T ❑4 T ❑5 T ❑6 T =
0.866 0 0.5 −0.03381
0 0 0 1
15
3.3 INVERSE KINEMATICS
The robot controller must deduce the joint angles necessary to attain a specific end-
effector position. This task is achieved through inverse kinematics calculations, a topic
we will explore in this session. The input variables for the inverse calculation include:
[ ]
nx sx ax px
n s ay py
T 06= y y
n z s z az pz
0 0 0 1
Joint 1:
From equation (8), (9), (10), (11):
We have the equations:
p x −d 6 a x =c 1 ( a1+ a2 c 2+ a3 c 23+ d 4 s 23)
( 13)
p y −d 6 a y =s1 ( a1 + a2 c2 +a 3 c 23 +d 4 s23 )
( 14)
θ1=arctan 2
( p y −d6 a y
p x −d6 a x )
Joint 2:
[ ]
nX sx ax p x −d 6 a x
n s ay p y −d 6 a y
T 04= y y
nz sz az p z −d 6 a z
0 0 0 1
Let:
X = px −d 6 ax
Y = p y −d 6 a y
Z= pz −d 6 a z
16
[ ]
C θ1 0 S θ 1 a1 C θ 1
0 −1 0 1 S θ1 0 −C θ1 a1 S θ1 0
(T ¿ ¿ 1 ) T 4=T 4 = T4¿
0 1 0 0
0 0 0 1
[ ]
C θ2 −S θ 2 0 a2 C θ 2
1 −1 1 2 S θ2 C θ2 0 a 2 S θ2 1
(T ¿ ¿ 2 ) T 4=T 4 = T4¿
0 0 1 0
0 0 0 1
[ ]
… … … p x 24
… … … p y 24
T 24=
… … … pz 24
0 0 0 1
Let:
A=Z−d 1
B= X c1−a1 +Y s 1
[ ]
c 3 c 4 −s3 −c 3 s 4 a3 c3 + d 4 s 3
2 2 3 c s c 3 −s3 s 4 a 3 s3 −d 4 c 3
T 4= T 3 T 4 = 4 3
s4 0 c4 0
0 0 0 1
( 17)
From (8),(9),(10):
Square r 14 , r 24 of the left sides, to determine θ2
2 2 2
( a 3 c3 +d 4 s 3) + ( a3 c 3−d 4 s3 ) =( s2 ( Z −d 1 )−a 2+ c 2 ( X c 1−a1+ Y s 1) ) +c 2 ( Z−d 1 ) −s 2 (X c 1−a 1+Y s1 )¿ ¿
2
(√ ) (√ )
2 2 2 2 2
A + B +a2−a3−d 4 2 a2 A
→ θ2=arcsi n 2 2
+arcos 2 2
( 2 a2 A ) + ( 2 a2 B ) ( 2a 2 A ) + ( 2 a2 B )
Joint 3:
From θ2 we have p x24 , p y 24 and (17):
17
{ p x 24=a3 c 3 +d 4 s3
p y 24=a 3 s3 −d 4 c 3
( )
p x 24 d 4
p y 24 +
a3
→ θ3=arcsin
d 24
a3 +
a3
Joint 4:
From θ3 we have ⃗
a3
a 4=⃗
⃗ a3x a⃗ =(−s23 c 1 a y + a z s 1 s 23 ; a z c 23 +a x c1 s 23 ;−ax c 1 s23−a y c 23)=(a x 4 ; a y 4 ; az 4 ¿
sin ( θ 4 )=⃗
o3 x ⃗
a 4=(−c 1 o z 4−s 1 o y 4 ; s 1 ox 4 ; c 1 o x 4)
cos ( θ4 ) =⃗
o3 .
a 4=s 1 o z 4 −c 1 o y 4 θ 4=arctan
⃗
( sin ( θ 4 )
cos ( θ 4 ) )
Joint 5:
sin ( θ5 ) =⃗
a3 x a⃗ =(−s 23 c 1 a y +a z s 1 s 23 ; a z c 23+ a x c 1 s 23 ;−a x c1 s 23−a y c 23 )
cos ( θ5 )=⃗
a3 . a⃗ =c 1 s 23 a x + s 1 s23 a y −c 23 a z
θ5 =arctan
( sin ( θ5 )
cos ( θ5 ) )
Joint 6:
From θ5 we have a⃗5:
a 5=( s23 c 4 s 5−c 23 c 5 ; c 5 ( s 1 c2 s 3 +c 3 s 1 s2 ) −s 5 ( c1 s 4 −s 1 c 4 c23 ) ; s5 ( s 1 s 4−c 4 c1 c 23 )+ c 5 c1 s 23 )=(a x 5 ; a y 5 ; a z 5 )
⃗
sin ( θ6 )=⃗
a 5 x a⃗ =(a y 5 a z−a z 5 a y ; a z 5 a x −a x 5 a z ; a x 5 a y −a y 5 a x )
cos ( θ6 )=⃗
a5 . a⃗ =a x 5 ax +a y 5 a y + a z 5 az
θ6 =arctan
( sin ( θ6 )
cos ( θ6 ) )
18
4. CALCULATION AND SIMULATION.
We will use matlab to calculate and robodk to examine our result
4.1 MATLAB CALCULATION:
To implement forward kinematics, we will create a straightforward script that accepts 6
theta values as input and produces the total transformation matrix.
(matlab code below:)
19
For the inverse, the script will take the result from the forward kinematic script as input:
20
4.3 VALIDATION USING ROBODK
Put the theta angle into the RoboDK simulation, we get similar result to our MATLAB
calculation. The angle put into the simulation have different signs due to different angle
axis convention.
21
5. CONCLUSION
In summary, this paper has effectively developed both a forward and an inverse
kinematic model for the ABB IRB 140 robotic arm. The forward kinematic modeling
involved a detailed analysis of eleven distinct movement points, resulting in a succinct
summary of calculations. Notably, the study generated a comprehensive Denavit-
Hartenberg (D-H) representation for both forward and inverse matrices. This
representation holds potential applications in various welding operations carried out by
the IRB 140 robotic arm. In conclusion, this research has successfully established and
elucidated both the forward and inverse kinematic aspects of the IRB 140, providing
valuable insights into its capabilities for industrial tasks.
22
6. REFERENCE
[1] Corke, P. I., and B. Armstrong-Helouvry. “A Search for Consensus Among Model
Parameters Reported for the PUMA 560 Robot.” Proceedings of the 1994 IEEE
International Conference on Robotics and Automation, 1608–13. San Diego, CA,
USA: IEEE Computer Soc. Press, 1994.
https://doi.org/10.1109/ROBOT.1994.351360.
[2] Forward and Inverse Kinematic Analysis and Validation of the ABB IRB 140 Doi:
10.17932/IAU.IJEMME.21460604.2017.7/2.1383-1401
23