Professional Documents
Culture Documents
By:
Amit Raj Thatipalli
Raymond Manis
Table of Contents
Introduction.4
Procedure.4
Denavit-Hartenberg Convention Method.4
Thatipalli-Manis Simulation Method5
Robot Measurements6
Blender Codes.12
Results.17
Summary and Conclusion....17
Future Work.18
References18
Introduction
3
For the ME349 project, modeling and simulation of the Fanuc LR Mate 200i in the
robotics lab was chosen. Much insight and information about the manipulator was
gleaned from modeling and simulating the robot. Information about how the manipulator
moves in the workspace, how the links move in relation to each other, and an overall
knowledge of the total movement of the manipulator was found.
To model the manipulator, knowledge of the Denavit-Hartenberg Convention was used.
The convention gave a basis for how the manipulator moves in the workspace. Also, the
physical information, measurements and orientations, of the manipulator were found.
Afterwards, using Blender, a simulation was created to allow the input of angles and an
output of the manipulator simulation moving in the workspace.
Procedure
To begin with, the DH convention for the robotic manipulator was found. There are six
links and a tool on the LR Mate 200 I robotic manipulator. Figure 1 shows the DH
convention and Table I displays the table of DH variables.
z
y
a
0
0
-90
5.711
0
10.388
90
3.39
-90
8.81
90
1.374
d
14.321
0
0
0
0
0
1
2
3
4 + 90
5
6
y
z
y
z
y
z
y
z
y
z
y
x
y
x
10
11
12
import psyco
psyco.full()
except:
print 'For optimal performance on an x86 CPU, install psyco'
linkone= Object.Get('linkone')
linktwo= Object.Get('linktwo')
linkthree= Object.Get('linkthree')
linkfour= Object.Get('linkfour')
linkfive= Object.Get('linkfive')
linksix= Object.Get('linksix')
tool= Object.Get('tool')
toolpiston= Object.Get('toolpiston')
######initializing###############
max_angle=0
theta1=0.0
theta2=0.0
theta3=0.0
theta4=0.0
theta5=0.0
theta6=0.0
theta1_list=[] # creating empty list
theta2_list=[]
theta3_list=[]
theta4_list=[]
theta5_list=[]
theta6_list=[]
for line in open('angles.txt', 'r'):
## opens the text file which in the same folder if the
text file is in different folder give the path to it example: 'C:\\path to\\angles.txt'
theta1,theta2,theta3,theta4,theta5,theta6 = map( float, line.split(",")) # initializing all
the theta angles
theta1_list.append(theta1) #appending theta's to the list created
theta2_list.append(theta2)
theta3_list.append(theta3)
theta4_list.append(theta4)
theta5_list.append(theta5)
theta6_list.append(theta6)
15
tool= Object.Get('tool')
toolpiston= Object.Get('toolpiston')
######initializing###############
theta1=0.0
theta2=0.0
theta3=0.0
theta4=0.0
theta5=0.0
theta6=0.0
theta1_list=[]
theta2_list=[]
theta3_list=[]
theta4_list=[]
theta5_list=[]
theta6_list=[]
for line in open('angles.txt', 'r'): ## opens the text file which in the same forlder if the text
file is in difrent folder give the path to it example:'C:\\path to\\angles.txt'
theta1,theta2,theta3,theta4,theta5,theta6 = map( float, line.split(","))
theta1_list.append(theta1)
theta2_list.append(theta2)
theta3_list.append(theta3)
theta4_list.append(theta4)
theta5_list.append(theta5)
theta6_list.append(theta6)
####simulation loop#####
for j in range(0,len(theta1_list),1):
if j is 0:
theta1=float(theta1_list[j]/320.0)
theta2=float(theta2_list[j]/320.0)
theta3=float(theta3_list[j]/320.0)
theta4=float(theta4_list[j]/320.0)
theta5=float(theta5_list[j]/320.0)
theta6=float(theta6_list[j]/320.0)
theta1_inc=float(theta1_list[j]/320.0)
theta2_inc=float(theta2_list[j]/320.0)
theta3_inc=float(theta3_list[j]/320.0)
theta4_inc=float(theta4_list[j]/320.0)
theta5_inc=float(theta5_list[j]/320.0)
18
theta6_inc=float(theta6_list[j]/320.0)
for i in range (0 , 320 , 1):
linktwo.rot = [0, 0, float(radians(theta1))] ##### rotating link two around its
pivot point using euler angles
theta1=theta1+theta1_inc
linkthree.rot =[ 0, float(radians(theta2)), 0]
theta2=theta2+theta2_inc
linkfour.rot = [0, float(radians(theta3)), 0]
theta3=theta3+theta3_inc
linkfive.rot = [float(radians(theta4)), 0, 0]
theta4=theta4+theta4_inc
linksix.rot = [0, float(radians(theta5)), 0]
theta5=theta5+theta5_inc
tool.rot = [float(radians(theta6)), 0, 0]
theta6=theta6+theta6_inc
toolpiston.rot = [0, 0, 0]###### there is not rotation here but it is required to
update the object
Redraw()
The only major difference between the fast simulation and the slow simulation is the
maximum angle the manipulator has. The fast simulation moves through the points
created by dividing the angle of the link by the largest angle of the six input angles in a
single line of the text input; however, the slow simulation moves through the points
created by dividing the angle of the link by 320, which is the maximum angle of rotation
of the Fanuc LR Mate 200i robot.
Results
The simulation works very well. Using both codes, the manipulator moves fluidly
between sets of angle designations. Interfacing with Mr. Adam Nisbetts External Robot
Control Through a Microcontroller Interface[4] project, the robot moved through the
angles found in the angles.txt file, as did the simulation. The speed through which the
simulation and robot moved were different because of the speed variability of the robot,
and the simulation moved only as fast as the amount of interpolation points provided.
all, the simulation runs well, but more can be done to create a thorough model of the
Fanuc LR Mate 200i manipulator.
Future Work
The project is very open-ended. To begin with, the DH convention could be used to alter
the simulation, therefore allowing rotation matrices to be easily entered into the program
as well as angles. Also, the use of Jacobians could be integrated into the program to allow
control over speed and forces of the links, and perhaps yield a more thorough model of
the Fanuc LR Mate 200i. Also, the maximum angles through which each link can move
could be entered into the code. Singularities and collision detection could be added into
the simulation to ensure proper functioning of the simulation. Instead of angles, Jacobian
matrices can be used to create vectors to move the links around using attraction-repulsing
fields. Different tools can be modeled into the simulation, to allow simulation of material
or metal deposition, milling (Boolean operation available in Blender), etc.
References
[1] RobotWorx, May 13th, 2010,
http://www.robots.com/showimages.php?type=robots&tag=323&index=5.
[2] RobotWorx, May 13th, 2010, http://www.robots.com/showimages.php?
type=robots&tag=323&index=4.
[3] Introduction to Modeling, April 9th, 2010,
http://wiki.blender.org/index.php/Doc:Tutorials/Modeling/BSoD.
[4] Nisbett, Adam. External Robot Control Through a Microcontroller Interface, Spring
2010, Missouri University of Science and Technology.
20