2005_RAM_Robotic_Polishhing_Systems_BasanezRosell (1)
2005_RAM_Robotic_Polishhing_Systems_BasanezRosell (1)
The use of robots to automate some tasks involving sensors and motion
planning strategies is not yet widely extended due to the difficulty of their
programming. Therefore, there is the need of systems that allow the user to
easily specify a high level description of the task (i.e. what is to be done) and
that allow to automatically program the robot motions from this description
(i.e. how will it be done).
The paper presents a formal analysis of the problem and the solution
proposed, which is decomposed in two parts: the task specification module
and the task planning module. The task specification module is a graphical
user interface that allows the user to easily specify the polishing curves over
a CAD model of the part. The task planning module finds the time-optimum
sequence of collision-free trajectories to execute the task.
Overview
Problem Statement
Let us define:
• Polishing curve: Curve over the surface of a part to be polished
representing a strip that must be polished continuously. It is described
by an ordered set of reference frames over the surface of a part to be
polished. The z-axis of each reference frame is normal to the surface
and the x-axis points to the origin of the next reference frame.
• Polishing station: Set of locations over a polishing band which allows
the same surface finishing. Each location is described by a reference
frame.
• Trajectory: Set of ordered robot configurations, a configuration being
defined by the joint variables. They can be either a polishing trajectory,
that allows to follow a polishing curve at a given polishing location, or
a linking trajectory, that allows the robot to connect two polishing
trajectories through a collision-free path.
• Polishing motion sequence: The sequence of trajectories which allows
to follow all the polishing curves of a part in minimum time.
Proposed approach
The task specification module is a graphics user interface that copes with the
specification problem. The input file is a CAD model of the part to be polished
represented by a triangular mesh. The output of the specification module is
an ASCII file including information about the curves and the grasps:
• Each polishing curve is described by the following parameters:
The task planning module copes with the optimization and path planning
aspects. The input files to this module are:
• The description of the polishing cell given by a VRML file with the
geometry of a set of convex solids representing the objects in the cell
(Figure 1).
• The description of the polishing curves over the CAD model of the part
resulting from the specification module.
• Execution file: A program that allows the execution of the task by the
robot. The program (in the present case a V+ program for a Stäubli
RX-90 robot) is a sequence of motions between robot configurations,
defined as joint-space motions for linking trajectories and as
cartesian-space motions for polishing trajectories, with force
references to be used by an active compliant polishing station.
• Simulation file: A VRML file which contains the robot motions for the
simulation of the task.
The task planning module was introduced in [8]. The graphics user interface
built as task specification module is called Polishing Curves Generator
(PCG). It is intended to be a user-friendly tool to specify the polishing curves
over a CAD model of the part, able to be used by an operator with few
computer knowledge. It works under Windows and it is programmed in C
using the openGL graphics library:
Main Features
• Visualization: The model of the part to be polished is represented by
a triangular mesh specified as an input VRML 1.0 file. The part can be
visualized as a solid or wired model, and can easily be rotated in any
direction (Figure 2).
The edit menu allows to add or to delete the final subcurve of any
curve. Figure 4 shows a curve composed of two subcurves. The
current subcurve (i.e. the one being just defined by the user) is
interactively computed as the user drags its end point to the desired
final position.
An Example
There are different types of pieces that need a polishing process. Among
them, bath tabs and door knobs are some of the more usually found in
robotized polishing workshops. Figure 9 shows the polishing curves defined
over a door knob. There are eleven polishing curves with a total of 825 points
that totally cover the knob surface. The curves have been defined in less
than five minutes by a trained user.
The task planning module was introduced in [10]. Its main characteristics are
the following. The module synthesizes the robot program in two steps:
The cost of a trajectory represents the time needed for the execution of the
corresponding motions. It is computed as follows. Let ∆θ i be the angular
motion of joint i for a given linking trajectory, and vimax its maximum angular
velocity. The minimum time to perform the motion of joint i is ti = ∆θ i / vimax .
Then, the cost C of a trajectory is:
C = ti ti ≥ t j ∀i, j
The cost of the arcs of the graph is the sum of the cost of the linking
trajectory it represents and the cost of the previous polishing trajectory (i.e.
the one represented by the initial node of the arc).
The topology of the graph allows the use of the Bellmann algorithm [11] in
order to find the sequence of trajectories with minimum cost.
Due to the presence of an obstacle, the path planning module could modify a
linking trajectory with a considerable increase in the cost. In this case, all the
linking trajectories connecting the same two polishing curves should be,
probably, also modified. The costs of the modified linking trajectories replace
in the graph to the initial ones, and the optimization procedure is executed
again.
The path planning module is devoted to find collision-free paths between the
contact configurations corresponding to the end and to the beginning of two
consecutive polishing trajectories.
Let ci and c f be two of such configurations. Let c 'i and c ' f be two
configurations located, respectively, at a given distance d from ci and c f in
the direction of the z-axis of the reference frame of the corresponding
polishing location. The distance d is defined by the user.
Validate( s )
Discretize s into a finite set of configurations.
each segment of p into a finite set of configurations
FOR each configuration:
Use I-COLLIDE [13] to detect any collision between the robot
(including the grasped part) and the objects of the environment.
IF a collision is detected RETURN non-valid
END FOR
RETURN valid
END
Smooth( p )
1. Discretize each segment of p into a finite set of configurations
2. Generate a graph with these configurations as nodes, and with
the rectilinear paths connecting any two nodes as arcs
3. Apply the Dijkstra algorithm [?] to find the shortest path p '
connecting the initial and the final nodes
4. Validate( p ' )
5. IF p ' is not valid, eliminate the segments of p ' that are not valid
and GOTO 3
6. ELSE RETURN p '
END
3. Search tool: Given two configurations c 'i and c ' f finds a collision-free
path between them. Since the collision map is built in a very conservative
way, the two configurations c 'i and c ' f will probably not belong to any
free cell. However, it is assumed that a free path exists connecting them
to a free subspace, since the environment in a polishing cell will not be
very cluttered.
Path-Planning( ci , c f , d )
Find c 'i and c ' f as the configurations located at a distance d from ci
and c f , respectively, in the direction of the z-axis of the reference
frame of the corresponding polishing location.
pi : rectilinear path in Cartesian Space between ci and c 'i
ps : rectilinear path in Joint Space between c 'i and c ' f .
p f : rectilinear path in Cartesian Space between c ' f and c f .
Validate( ps )
IF ps is not valid THEN ps = Search( c 'i , c ' f )
RETURN ( pi ∪ ps ∪ p f )
END
A Case Study
This section presents the following example:
• The task is performed by a RX-90 Stäubli robot.
• The part to be polished is a semisphere.
• The polishing cell has two polishing stations, each one with only one
polishing location, and one obstacle (Figure 1).
• Four polishing curves have been described over the part (Figure 13):
o The first three, described by 10 reference frames, are to be
performed at polishing station number 1.
o The last one is a continuous curve described by 20 reference
frames; it is to be performed at polishing station number 2.
o All of them can be executed in either sense.
• Joint 6 has a finite range.
• The part can only be grasped in a way.
As a result of these initial conditions, and taking into account the inverse
kinematics, each polishing curve can be performed by 12, 8, 8 and 114
polishing trajectories, respectively.
The program runs in a Silicon Graphics workstation (175 MHz R10000
Indigo2). The two phases of the program synthesis are the following.
Otimization phase:
The graph is generated in 4.3 seconds and the optimum polishing trajectory
sequence is found in 0.01 seconds.
Path planning phase:
The modification of the Fulkerson algorithms allows to deal with rather big
graphs, making the grouping algorithm not critical.
The input and output files of this example, including the simulation, are
shown in http://www.ioc.upc.es/ rosell/polishing
Conclusions
References
[1] F. Nagata and K. Watanabe, “Teaching system for a polishing robot using
a game joystick,'' in Proc. of the 39th SICE Annual Conference, pp.179 -184,
2000.
Figure 12. Trajectory p obtained from the collision map (continuous line) and
trajectory p ' (dashed line) obtained by applying the smoothing procedure
to p .
Figure 13. Polishing curves defined over a semispherical part.