Enhanced Robot Programming Techniques
Enhanced Robot Programming Techniques
Industrial Robots
Christian Kohrt
This research programme was carried out in collaboration with the University of
Applied Sciences Landshut, Landshut, Germany
July 2013
Dedicated to my wife Erica.
This copy has been supplied on the understanding that it is copyright material and that no
quotation from the thesis may be published without proper acknowledgement.
Abstract
The use of robots and automation levels in the industrial sector is expected to grow, and
is driven by the on-going need for lower costs and enhanced productivity. The
manufacturing industry continues to seek ways of realizing enhanced production, and the
programming of articulated production robots has been identified as a major area for
improvement. However, realizing this automation level increase requires capable
programming and control technologies. Many industries employ offline-programming
which operates within a manually controlled and specific work environment. This is
especially true within the high-volume automotive industry, particularly in high-speed
assembly and component handling. For small-batch manufacturing and small to medium-
sized enterprises, online programming continues to play an important role, but the
complexity of programming remains a major obstacle for automation using industrial
robots. Scenarios that rely on manual data input based on real world obstructions require
that entire production systems cease for significant time periods while data is being
manipulated, leading to financial losses. The application of simulation tools generate
discrete portions of the total robot trajectories, while requiring manual inputs to link paths
associated with different activities. Human input is also required to correct inaccuracies
and errors resulting from unknowns and falsehoods in the environment. This study
developed a new supported online robot programming approach, which is implemented as
a robot control program. By applying online and offline programming in addition to
appropriate manual robot control techniques, disadvantages such as manual pre-processing
times and production downtimes have been either reduced or completely eliminated. The
industrial requirements were evaluated considering modern manufacturing aspects. A cell-
based Voronoi generation algorithm within a probabilistic world model has been
introduced, together with a trajectory planner and an appropriate human machine interface.
The robot programs so achieved are comparable to manually programmed robot programs
and the results for a Mitsubishi RV-2AJ five-axis industrial robot are presented.
Automated workspace analysis techniques and trajectory smoothing are used to accomplish
this. The new robot control program considers the working production environment as a
single and complete workspace. Non-productive time is required, but unlike previously
iv
reported approaches, this is achieved automatically and in a timely manner. As such, the
actual cell-learning time is minimal.
v
Acknowledgment
I thank my director of studies, Dr. Richard Stamp, and my supervisors, Dr. Antony Pipe
and Dr. Janice Kiely at the University of the West of England at Bristol. I also thank my
supervisor Dr. Gudrun Schiedermeier at the University of Applied Sciences Landshut.
Dr. Richard Stamp guided me through this work. I have learnt a great deal from him
about scientific working and writing. I am glad to have had a director of studies who was
willing to take a personal interest in his student.
Dr. Gudrun Schiedermeier made my PhD studies at the University of Applied Sciences
Landshut possible. I thank her for her guidance, her constant interest in my PhD studies
and for providing the robotics laboratory including its special equipment required for the
experiments; without that, I would not have been able to accomplish this work.
Dr. Anthony Pipe gave me his advice, valuable comments and constructive discussions.
Dr. Janice Kiely was always available for discussions during my PhD studies.
I also thank the persons at the University of the West of England who offered me the
opportunity to study for a PhD within the Faculty of Environment and Technology, and
who provided me with the academic support necessary to complete this work successfully.
In particular, I thank Matthew Guppy for his advice during the studies.
I am grateful to BMW AG Munich and Hans-Joachim Neubauer for setting the idea for
this work and also to Robtec GmbH for giving me insight to professional robot
programming and for their support and experience in the field of robotics.
I also thank my mother who always supported me during all these years. I also thank my
friends listening to me and motivating me during this part of my life.
vi
Finally, I thank my wife, to whom I dedicate this thesis, for her patience,
encouragement and support during the probably hardest time of this work.
Travelling costs for this work were partly funded by the “Bayerische
Forschungsstiftung” of the Bavarian Government, Germany.
vii
Contents
Contents
1 INTRODUCTION ............................................................................................................... 1
3 AIMS ..................................................................................................................................32
4 EXPERIMENTAL .............................................................................................................37
viii
Contents
5.6 The General Design of the Enhanced Online Programming System ....................................... 52
ix
Contents
x
Contents
REFERENCES........................................................................................................................ 208
xi
Contents
xii
I. Glossary
I. Glossary
xiii
II. List of Abbreviations
Acronym Definition
AD* Anytime Dynamic A*
BSP Binary Space Partitioning
CAD Computer-Aided Design
CASE Computer-Aided Software Engineering
COM Component Object Model
CORBA Common Object Request Broker Architecture
DDE Dynamic Data Exchange
DH Denavit Hartenberg
DLL Dynamic Link Library
DSP digital signal processor
DXF Drawing Exchange Format
EMF Eclipse Modelling Framework
EN Elastic Net
ES Evolution Strategy
FPGA Field Programmable Gate Array
GPP General purpose processor
GUI Graphical User Interface
HMI Human Machine Interface
HSV Hue, Saturation, and Value Colour Space
ICE Internet Communication Engine
IP Internet Protocol
JET Java Emitter Template
JNI Java Native Interface
JVM Java Virtual Machine
LED Light Emitting Diode
MDA Model Driven Architecture
MDG Model Driven Generation
NARC New Architecture Robot Controller
ODE Open Dynamics Engine
OMG Object Management Group
PC Personal Computer
PLC Programmable Logic Controller
RBF Radial Basis Function
RFID Radio-Frequency Identification
xiv
II. List of Abbreviations
xv
III. List of Figures
xvi
III. List of Figures
Figure 29: Experimental scenario (2D example in 3D world), with obstacle O3 being
unknown. .........................................................................................................................68
Figure 30: Illustration of the experimental scenario in the 3D world. .................................68
Figure 31:Data sources of the information fusion system. ..................................................69
Figure 32: Sensor fusion architecture. .................................................................................69
Figure 33: Sensor values derived from real sensors. ...........................................................71
Figure 34: Fused sensor data. ...............................................................................................71
Figure 35: Image stream processing chain. ..........................................................................73
Figure 36: The HSV colour space. .......................................................................................74
Figure 37: Colour calibration process. .................................................................................74
Figure 38: Simulink image acquisition block and colour conversion. .................................75
Figure 39: Image stream processing chain. ..........................................................................75
Figure 40: Image stream segmentation. ...............................................................................76
Figure 41: Blob analysis block.............................................................................................76
Figure 42: Blob analysis block.............................................................................................77
Figure 43: Blob analysis block.............................................................................................77
Figure 44: Schematic representation of forward and inverse kinematics ............................86
Figure 45: Revolute (left) and prismatic (right) joints .........................................................86
Figure 46: Mitsubishi RV-2AJ joints (from Mitsubishi documentation). ...........................87
Figure 47: Mitsubishi RV-2AJ dimensions .........................................................................87
Figure 48: Robot coordinate systems. ..................................................................................88
Figure 49: Law of cosine......................................................................................................89
Figure 50: Geometric inverse calculation for joint 1 ...........................................................89
Figure 51: Geometric inverse calculation for joint 2 and 3 .................................................90
Figure 52: Dubins airplane model. .......................................................................................93
Figure 53: Industrial manipulator ‘free flying’ model. ........................................................94
Figure 54: A Robotino robot from the company Festo. .......................................................95
Figure 55: Local coordinate axes of the Robotino robot......................................................95
Figure 56: Kinematics of a car like robot. ...........................................................................96
Figure 57: Robotino calculations. ........................................................................................96
Figure 58: The use cases of the support system. ................................................................101
Figure 59: Support system overview. ................................................................................103
Figure 60: Design of the Graphical-User-Interface. ..........................................................106
Figure 61: Communication system of the Graphical-User-Interface. ................................107
xvii
III. List of Figures
xx
IV. List of Tables
xxi
V. List of Listings
V. List of Listings
xxii
1 Introduction
1
1 Introduction
2
1 Introduction
production system be put offline and out of production for significant periods of time while
the data are manipulated, e.g. upload of or programming of robot programs. This leads to
production downtimes and financial loses. It also places a lot of pressure on the operators,
which may have an impact on the quality of the created programs. Once the programs are
created, it is difficult to make amendments. Nevertheless, conventional online
programming is widely used because of its intuitiveness and low initial cost. Advances in
online programming simplify the control of the robots, such as Master-Slave programming
and demonstrational programming (Demiris and Billard, 2007), but have not yet led to
crucial improvements.
On the other hand, offline programming reduces the production downtime, creating the
robot programs beforehand with a simulation system (Kain et al., 2008, Maletzki et al.,
2008). Many industries employ offline programming within a manually controlled and
specified work environment. This is especially true within the high-volume automotive
industry, particularly when it is related to high-speed assembly and component handling.
Therefore, it is widely accepted in high volume manufacture industries with proven
efficiencies and cost effective strategies. Its strength is in the programming of complex
applications, and when compared to online programming, it is more reliable and allows the
re-use of robot programs with ease. Because it relies on the modelling of the production
cell, additional manual modifications of the generated robot programs are necessary to
meet the accuracy requirements in production. Inaccuracies and errors resulting from
unknowns and falsehoods in the environment have to be altered manually. The simulation
of the production cell verifies the virtually programmed production process; subsequently,
the robot program may be generated and uploaded to the real robot cell. An online robot
programmer verifies and eventually modifies the programs to guarantee its actual function,
but this task can be time consuming. Manual modifications may be made, and may involve
a complete re-programming of the simulated robot. Possible reasons for this include
inaccuracies of the simulation data, last minute changes in the production process, and a
misunderstanding of the robot programs. The offline program developer and the online
robot operator are not usually the same person, and they tend to have different skills, which
may also be a source of misunderstanding. However, this is expensive, requires skilled
workers, and depends on an accurate modelling of the realistic scenario, which is often not
possible.
3
1 Introduction
Investigations have been carried out with the aim being to optimize the robot-
programming methodology for industrial high-volume and small-batch manufacturing. To
address this aim, two key aspects have been identified that are different but related. First,
the reduction of financial investments required that an analysis be made of the current
robot programming approaches in order to explore all possible cost reduction options.
Because production cost is measured in terms of the product cost, the production volume is
an important feature that highlights the difference in the requirements for small-batch and
high-volume production. In particular, in the area of small-batch production, the
investments required for offline programming are prohibitive, and attention has been
turned to developing approaches to online robot programming. High-volume production
would also benefit from a change to the online robot programming approach, given that
production downtimes are within the current range, and that the functionality of the current
offline approach is still supported. A new online robot programming approach has been
analysed, with the focus being on the fulfilment of requirements for both production
volumes. This has required significant investigations into existing approaches to robot
programming, including assisted interaction with the operator to help less experienced
operators use this system. An enhanced online robot programming support system has been
adopted for this task.
As the second key aspect, online robot programming is very demanding for a
requirements-driven trajectory-planning algorithm. This also includes the ability to handle
inaccurate information (which may be obtained by sensors) and the environment, as well as
pre-existing information. Research has been undertaken to develop a trajectory-planning
algorithm and to fuse inaccurate information into an in-memory occupancy grid to
represent the production environment. It is understood that the development of large
software systems requires a modern software development approach to integrate the entire
system that consist of robot control devices, sensors and software components. Research
has been carried out to implement a model-driven code generation toolchain.
The research started with a comparison of robot programming approaches and the
exploration of important requirements of the production industry, focusing on the
employment of robots. The chosen robot-programming approach, including the associated
requirements, is summarized in Chapter 5. The realization of the robot-programming
software application requires robot control capabilities for the articulated and mobile
robots used. Robot modelling with the ‘Denavit and Hartenberg’ formulation is applied
4
1 Introduction
throughout this study, which enables the execution of forward and inverse calculations
between the robot coordinate system and the world coordinate system. Robot control and
modelling are illustrated in Section 5.7. The environment in which the robot operates is
stored in a so-called world model, which is an in-memory occupancy grid. Information,
such as sensor data and pre-existing models, is fused into the grid to obtain coherent data.
The world model and information fusion are illustrated in Chapter 6. Based on robot
control and the in-memory occupancy grid, a trajectory-planning algorithm that supports
the chosen robot programming approach has been introduced. It also includes path finding,
trajectory generation and automated robot program creation that is ready to be uploaded to
the real system. The results are stated in Chapter 7. The implementation of the system
requires the incorporation of many software and hardware components. A modern software
development toolchain has been analysed and implemented to support the development of
the enhanced online robot programming support system. Chapter 9 addresses the
development toolchain.
Chapter 2 presents a review of the whole research activity covered in this investigation,
and it helps to collate important results that address the original aims of the study. The
conclusions made are itemised in Chapter 12. Sample source code is presented in
Appendix I. The investigation has highlighted particular aspects, many of which were
unknown at the beginning of the research described herein, and which could themselves
form the basis for additional studies. These are stated in Chapter 13.
Significant findings of this research have already been published, and Appendix A
presents a summary of these. The papers themselves are appended to this thesis. One
international journal paper were subject to peer-review and have now been published.
Selected findings have been presented by the author at international conferences, and five
papers were published between 2006 and 2012. The research was directed to the
enhancement of the car production at BMW AG, Munich, and discussed with the robot
programming company Robtec GmbH. Currently, the processes and techniques developed
are intended to be scientifically and commercially used in close co-operation with the
University of Applied Sciences Landshut, Germany. The system will be permanently
installed at the lab of the University of Applied Sciences Landshut, and further
improvements are planned for future study.
5
1 Introduction
The result of this work leads to an enhanced online robot programming system for robot
arms. The proposed system will be a novel, rapid, convenient and flexible method to
program industrial robots. Programming within the real environment becomes possible and
will decrease offline programming time and render offline simulation systems unnecessary
when physical production parts and fixtures are to hand either as real objects or as
Computer-Aided Design (CAD) data.
The system will have greatest benefit within the production industry, however its use
will not be restricted to this application area. It could also assist in areas as diverse as home
robots, surgery and health care assistant machines.
6
2 Literature Survey
7
2 Literature Survey
Pre-configured robot work cells produced in medium numbers at low cost for standard
manufacturing processes such as welding, painting and palletising may even be cost-
effective when operated below full capacity (Westkämper et al., 1999).
engineer in the office. It has its strength in the programming of complex systems, and it has
been proven to be more efficient and cost-effective for production with large volumes.
Pan et al. (2010) reviews modern robot programming approaches and summarizes
sensor-assisted online programming and offline programming approaches. Advancements
in online programming have led to a simplification of the control of the robots, such as
Master-Slave programming and demonstrational programming, but they have not yet led to
any significant improvements. Offline programming reduces the production downtimes by
creating the robot programs beforehand with a simulation system (Kain et al., 2008,
Maletzki et al., 2008, Pan et al., 2010). Nevertheless, the calibration phase and the offline
programming phase are still expensive, and result in significant programming effort, large
capital investment and long delivery times (Pan et al., 2010).
Online Programming
Online programming is carried out by skilled operators in the robot working-cell, and
requires that the production be offline. The robot is guided through the desired path using a
teach pendant to record specific points into the robot controller, which is further utilized
for the manual creation of movement commands (Pan et al., 2010). The robot operator
maintains the robot programs including the positions and orientations with a teach pendant.
Many coordinate systems like the world, tool and work piece coordinate systems have to
be tracked by the operator. This task is difficult and not intuitive. Guiding the robot
accurately through the working space without any collisions is usually a very difficult and
time-consuming task, especially when the work piece has a complex geometry or the
process itself is very complicated. The created robot program often lacks flexibility and
reusability. Online robot programming remains the choice for low and medium volume
production. Currently, more intuitive human machine interfaces and sensory interfaces are
being researched to reduce the reliance on the operator skill, and to improve automation
(Bjorn Solvang, 2008, Gonzalez-Galvan et al., 2007, Hu et al., 2007, Hui et al., 2006,
Myoung Hwan and Woo Won, 2001, Nicholson, 2005, Pan and Zhang, Schraft and Meyer,
2006, Sugita et al., 2004, Takarics et al., 2008). Pan et al. (2010) highlight that only the
research outcomes from Hui et al. (2006) have led to the development of a commercial
tool. Pan et al. also identified the limitation to specific setups as being one of the main
reasons for the failure to commercialize the remaining approaches. In particular, small-,
medium- and high-volume manufacture may benefit from enhanced sensor-assisted online
programming.
9
2 Literature Survey
Offline Programming
High-volume manufacture utilises offline programming to simulate and generate robot
programs with specialized simulation software. The software engineer evaluates the
reachability, fine-tunes properties of robot movements, and handles the process-related
information before generating a program that can be downloaded to the robot. The actual
robot is not required for programming, minimizing the production downtime. Usually,
robot programs are developed at the beginning of the product development and production
cycle. However, a simulation and programming phase executed by skilled engineers is time
consuming and requires specialized and expensive simulation software. Thus, small- and
medium-volume manufacture does not benefit from this technology (Pan et al., 2010),
whereas large companies, for example BMW AG in the automotive industry, apply offline
programming as a standard process. High volume production justifies the costly simulation
and programming phase in order to assure high quality production.
Offline programming incorporates models of the work pieces, the robots and the
environment. While the robot model is usually delivered by the manufacturer, the work
pieces and the environment have to be created manually or, for example, with laser
scanning (Bi and Sherman, 2007).
The creation of the trajectory connecting all application locations and paths is often
executed manually. Automatic solutions are usually not provided by the vendor of the
software package, and have to be incorporated by third party tools or developments.
Connecting large amounts of application locations and paths may result in the well-known
‘travelling salesman’ problem, which may be solved using various approaches (Al-
Mulhem and Al-Maghrabi, 1997, Fritzke and Wilke, 1991, Kim et al., 2002).
10
2 Literature Survey
The entire production cycle, or parts of it, can be simulated after robot program creation
to verify the production process without the physical production system (Heim, 1999).
Successively, the robot program can be uploaded and executed within the real production
environment. Extensions have been developed, for example by Wenrui and Kampker
(1999), to enhance the simulation and offline programming process. In practice,
inaccuracies and errors resulting from unknowns and falsehoods in the environment have
to be altered manually using the real production system.
11
2 Literature Survey
approaching humans, and presenting objects have to be performed. In the more difficult
case of physical contact with the human, typical skills would comprise compliant motion,
anthropomorphic grasping and manipulation. A suitable safety concept has to account for
the integrity of the system just as it must account for the integrity of its surroundings.
External events affecting the proper function of the system and internal error conditions
have to be identified beforehand and classified according to their inherent risk factors.
The Robotics Toolbox for Matlab (Corke, 1996) allows the user to create and
manipulate fundamental data types with ease, such as homogeneous transformations,
quaternion and trajectories. Functions provided for arbitrary serial-link manipulators
include forward and inverse kinematics, and forward and inverse dynamics.
In most cases, the manipulator has to be controlled in the workspace, which is defined
by external world coordinates and not in the configuration space, which is defined by
internal joint coordinates. Therefore, a transformation between world and configuration
space is required (Craig, 2003, Lenz and Pipe, 2003, Maël, 1996, Russell and Norvig,
2002).
The forward kinematics is a continuous mapping of the joint coordinates from the multi-
dimensional configuration space to the world coordinates, and is described in detail by
Craig (2003).
12
2 Literature Survey
The inverse kinematics problem involves finding joint coordinates so that a desired
world coordinate is reached. Calculating the inverse kinematics is generally hard,
especially for robots with many degrees of freedom. This problem is ill posed because the
solution does not have to be unique. In particular, considering an unreachable target, no
solution exists at all (Russell and Norvig, 2002).
The kinematics of a robot may also be seen as a non-linear system, which can be
approximated by mapping the input space to an output space of a function. Neural
networks have the ability to learn such mappings, and they are therefore called ‘function
approximators’. A general example with a Continuous Self-Organizing Map is given by
Aupetit (2000). Features of neural networks are utilized to learn the kinematics of a robot,
which is an open- or closed-loop kinematic chain, and is not often precisely known. Maël
(1996) proposes a hierarchical network for visual servo coordination which is based on the
publication of Ritter et al. (1992). The hierarchical approach allows the learning of
geometric models of realistic robots with six or more axes. The network consists of several
one-dimensional sub networks which learn the coordinate transform and rotation axis for
each joint below the visual error. A dynamically-sized radial basis function Neural
Network was developed by Lenz and Pipe (2003) to control a six-axis Puma 500 robot on a
slow 16-bit microcontroller. Following Ge (2004), given a nonlinear robot system, model-
based control is superior to non-model-based control. On the other hand, for complex
nonlinear systems, it is more difficult to obtain a realistic model than to design a working
control system in reality.
The ego-kinematic space of a robot has been defined in literature (Glavina, 1990,
Mínguez et al., 2002). A robot can be considered a 'free-flying robot' with no constraints.
13
2 Literature Survey
Thus, the path-planning algorithm does not need to take care of the configuration space of
the robot. This is realized by ego-kinematic transformations. Because the kinematic
constraints are embedded in the ego-kinematic transformation, the admissible paths are
mapped onto straight lines in the transformed space, and each point of the ego-kinematic
space may be reached by a straight-line motion of 'free-flying behaviour'.
The state space of the robot configuration space is often infinite. Sampling-based
planning algorithms may consider a small number of samples to reduce the running time
(LaValle, 2006). Therefore, path planners often use sampling strategies that are based on
the specific path planning problem and environment. Known strategies are random and
deterministic sampling schemes (LaValle, 2006). Random sampling schemes take samples
from the configuration space of the robot in a uniform manner; every state of the
configuration space must have an equal opportunity to appear in the sample. Deterministic
sampling schemes are pre-defined sampling techniques (LaValle and Kuffner, 2000). They
have the advantages of classical grid search approaches and a good uniform coverage of
the configuration space, but require long processing times (Branicky et al., 2001, Lavalle
et al., 2000, Lindemann and LaValle, 2004). Reif and Wang developed (2000) an
algorithm with non-uniform discretisation for motion planning, where the discretization is
greater in regions that are farther from all obstacles.
In robotics, the search space is most often the configuration space (LaValle, 2006).
Some path-planning algorithms try to compute the entire configuration space, which is
useful for low degree-of-freedom robots to find a global path (LaValle and Kuffner, 2000).
However, for systems with high degrees-of-freedom, the computing time rises
exponentially.
14
2 Literature Survey
Path planning often includes searching the shortest path within a given graph. This can
be accomplished with shortest-path search algorithms like the Dijkstra, A* or D* (Goto et
al., Likhachev et al., 2005, Xiang and Daoxiong, 2011). The A* algorithm is one of the
most important algorithms because its implemented heuristic enhances the search
algorithm by directing the search to the target node.
Visibility Graph
In a visibility graph, all obstacles are formed by polygons. These may be enlarged to
allow a minimum clearance of the robot to the obstacle. A graph is generated by
connecting the edges of the polygons and the start and target locations with linear polygon
lines. Subsequently, this graph is used to find an optimal path. An example is demonstrated
in Figure 1. The algorithm can be easily extended to a three-dimensional space, but it
requires all obstacles being available and real-time calculation of the trajectory seems
difficult, especially when new obstacles are detected.
15
2 Literature Survey
Start
Obstacle
Obstacle
Target
Start Obstacle
Obstacle
Target
16
2 Literature Survey
Cell decomposition methods generally divide the robot’s free space into cells. The
connectivity graph is built by connecting adjacent cells. A channel leading from the start to
the target configuration through the graph may then be computed. A path may be chosen
leading through the midpoints of the intersections of two successive cells. Examples of
grid-based approaches are cell decomposition methods, which convert the configuration
space of the robot in discrete cells. The cell division may be either object-dependent or -
independent. Both cases are shown in Figure 3. A path is required to connect the start and
the target node with a sequence of adjacent cells, which can be computed using a shortest-
path search algorithm.
Figure 3: Cell decomposition with black obstacles and free space (by author).
Voronoi Diagrams
According to Hoff et al., a Voronoi diagram consists of a given set of Voronoi sites,
which partitions space into regions, where each region consists of all points that are closer
to one site than to any other (Hoff et al., 1999). An example of a Voronoi diagram is
illustrated in Figure 4.
17
2 Literature Survey
Figure 4: A Voronoi diagram with regions, where each region consists of all
points that are closer to one site than to any other (by author).
Voronoi diagrams have been shown to be powerful tools in solving seemingly unrelated
computational problems, and therefore have increasingly attracted the attention of
computer scientists in the last few years. Efficient and reasonably simple techniques have
been developed for the computer construction and representation of Voronoi diagrams.
Voronoi-based path planning methods have been studied in literature (Bhattacharya and
Gavrilova, 2008, Fortune, 1986, Hoff et al., 2000, Hoff et al., 1999, Kim et al., 2009,
Vleugels et al., 1993). The basic properties of a Voronoi diagram are treated by
Aurenhammer (1991), who also recommended the publications of Preparata and Shamos
(1985) and Edelsbrunner (1987). Hoff et al. (1999) presented a computational algorithm
for generalized Voronoi diagrams, and did a survey of existing Voronoi computation
algorithms for two and higher dimensions. The presented Voronoi computations are the
divide-and-conquer algorithm (Shamos and Hoey, 1975) and the sweep line algorithm
(Fortune, 1986). Numerically robust algorithms for constructing Voronoi diagrams have
also been proposed in literature (Ingaki et al., 1992, Sugihara and Iri, 1994). Higher-order
Voronoi diagram computations have been summarized by Okabe et al. (2008) based on
incremental and divide-and-conquer techniques. The set of algorithms includes divide-and-
conquer algorithms for polygons (Lee, 1982, Martin, 1998), an incremental algorithm for
polyhedra (Milenkovic, 1993), and three-dimensional tracing for polyhedral models
(Culver et al., 1999, Milenkovic, 1993, Sherbrooke et al., 1995).
Hoff et al. (1999) stated that the computation of generalized Voronoi diagrams involves
representing and manipulating high-degree algebraic curves and surfaces and their
18
2 Literature Survey
intersections, and as a result, there are no known algorithms for their computation that are
both efficient and numerically robust. Many algorithms compute approximations of
generalized Voronoi diagrams based on the Voronoi diagram of a point sampling of the
sites (Sheehy et al., 1995). However, the derivation of any error bounds on the output of
such an approach is difficult, and the overall complexity is not well understood.
Recent work aimed at reducing the length of the path obtained from a Voronoi diagram
was presented by Yang and Hong (2007). The method involves the construction of
polygons at the vertices in the roadmap where more than two Voronoi edges meet. This
results in a smoother and shorter path than that obtained directly from the Voronoi
diagram. The authors Wein et al. (2005) created a new diagram called the Visibility-
Voronoi diagram to obtain an optimal path for a specified minimum clearance value.
Vleugels et al. have presented an approach that adaptively subdivides space into regular
cells, and computes the Voronoi diagram up to a given precision (Vleugels et al., 1996,
Vleugels and Overmars, 1995). Lavender et al. (1992) used an octree representation of
objects, and performed spatial decomposition to compute the approximation. Teichmann
and Teller (1997) computed a polygonal approximation of Voronoi diagrams by
subdividing the space into tetrahedral cells. All of these algorithms require considerable
amounts of time and memory for large models that are composed of a large number of
triangles, and therefore cannot be easily extended to handle dynamic environments
directly.
Probabilistic Roadmap
Sampling-based motion planners such as probabilistic roadmap methods (Kavraki and
Latombe, 1994) or those based on the rapidly exploring random tree (Kuffner and LaValle,
2000) provide good results for robot path planning problems with many degrees-of-
freedom. Its success is based on the sampling method of the configuration space, e.g. the
explicit characterization of configuration space obstacles is not required, and the aim of
avoiding collisions is reached only by checking sample configurations of the configuration
space. To improve the sampling efficiency and to find a path with as few configuration
space samples as possible, several variants have been proposed to bias the sampling
towards the most promising and difficult regions. For instance, a sample distribution is
defined such that it increases the number of samples on the border of the configuration
space obstacles (Boor et al., 1999) around the medial axis of the free configuration space
19
2 Literature Survey
(Wilmarth et al., 1999) or around the initial and goal configurations (Sánchez and
Latombe, 2002). In addition, the use of an artificial potential field was proposed to bias the
sampling towards narrow passages (Aarno et al., 2004, Kazemi and Mehrandezh, 2004a).
A probabilistic road map path planner was described by Sánchez and Latombe (2003)
with a single query, bi-directional and systematic lazy collision-checking strategy. It is
shown that this approach reduces planning times by ‘large factors’, making it possible to
efficiently handle difficult planning problems, for example problems involving multiple
robots in geometrically complex environments. This approach was successfully employed
for several planning problems involving robots with 3 to 16 degrees-of-freedom operating
in known static environments.
Narrow passages in configuration space can hardly be found. Results published by Hsu
et al. (1998) attempt to solve that problem using a new random sampling scheme. An
initial roadmap is built in a 'dilated' free space allowing some penetration distance of the
robot into the obstacles. This roadmap is then modified by re-sampling around the links
that do not lie in the true free space. Experiments have shown that this strategy allows
relatively small roadmaps to capture the free space connectivity reliably.
20
2 Literature Survey
Start
Target
Potential field methods have given good results, although not in high-dimensional
configuration spaces, since an approximated decomposition of the configuration space is
usually required (Barraquand and Latombe, 1991).
The cell-based method has been studied in combination with the potential field by
Kitamura et al. (1995), and has been successfully applied to arbitrarily shaped robots in
dynamic environments.
Yang and LaValle (2003) extended potential-field based methods to higher dimensional
configuration spaces, combined with a random sampling scheme. A similar approach
proposes global navigation functions over a collection of spherical balls of different radius
that cover the free configuration space (Yang and LaValle, 2004). Those balls are arranged
as a graph that is incrementally built following sampling-based techniques. The original
concept of potential-field navigation is summarized by Khatib (1986). The topological
properties of navigation functions are described by Koditschek and Rimon (1990).
21
2 Literature Survey
energy charging sites for positive reinforcement. The knowledge is stored in a Radial Basis
Function (RBF) neural network using techniques such as temporal difference (TD)
learning and evolution strategy (ES). Inherent features of this neural network type lead to
the creation of a potential-field structure that exerts appetitive and aversive ‘forces’ on the
robot while moving in the environment. Potential-field methods are powerful approaches
which appear to be promising, especially in a mixture of neuronal nets. Much more work
can be found in literature (Arkin, 1992, Arkin, 1989, Arkin, 1987, Arkin and Craig, 1989a,
Arkin and Craig, 1989b, Chuang, 1998, Ge and Cui, 2000, Koren and Borenstein, 1991,
Masoud and Masoud, 2000, Rao and Arkin, 1990a, Rao and Arkin, 1990b, Valavanis et al.,
2000).
The potential field approach requires the decomposition of the configuration space
(Barraquand and Latombe, 1991) that might lead to high processing times. In addition, in a
real-time scenario, where the obstacles are not known beforehand, a complete recalculation
of large portions of the potential field might be unavoidable. The algorithm may get stuck
in local minima.
Harmonic functions suffer from the same disadvantages like the potential field
approach, although they do not have local minima. Their extension to higher configuration
spaces is reported to be difficult (Kazemi and Mehrandezh, 2004b).
Vleugels et al. (1993) present a new probabilistic road map approach that combines a
neural network and deterministic techniques with the scope of solving the path-planning
problem with a coloured version of a Kohonen map. Random configurations of the robot
are inputted to the network, which constructs a road map of possible motions in the
23
2 Literature Survey
workspace, and approximates the obstacles. This road map is searched to find motions
connecting the given start and target configurations of the robot.
The sampling scheme of the presented algorithm by Vleugels et al. (1993) requires
random configurations of the robot, which is infeasible for a real-time path planning
approach.
In the geometric formulation of the movement problem, the robot is reduced to a point
on a two-dimensional surface with a behaviour that is similar to Dubins car (Dubins,
1957), which is only able to drive forward, and the radius of the steering is bounded. The
resulting paths must be differentiable and feasible for the robot. An extension of the
Dubins car is given with the Dubins airplane, which applies to three-dimensional spaces
(Chitsaz and LaValle, 2007).
24
2 Literature Survey
diagram using measurements of a laser telemeter. In addition, other approaches can also be
found in literature (Kagami et al., 2003).
Knuth (1973) employed a uniform grid to store the data. The space is divided into equal
sized cells, that is, squares and cubes for two- and three-dimensional data, respectively.
Hierarchical data structures were also presented (Gargantini, 1982a, Gargantini, 1982b,
Payeur et al., 1997, Schrack, 1992), and can be applied in order to save memory
consumption. The most important approach is a linear region quadtree or octree that
recursively subdivides the space into four or eight equal-sized space regions. Such space
partitioning data structures are used to store geometric data in a specified resolution. In
robotics, it is often useful to find the neighbours of a cell. Finding the neighbours either on
the same level or on a higher or deeper level within the hierarchy is explained in literature
(Balmelli et al., 1999, Bhattacharya, 2001, Lee and Samet, 2000, Samet, 1990, Schrack,
1992). Among other techniques such as Binary Space Partitioning (BSP) trees or -
Dimensional ( -D) trees, hierarchical data structures are also explained by Chang (2001).
Of the different existing neural network types, the growing neural network type is
discussed in many applications such as surface reconstruction (Ivrissimtzis et al., 2003)
and robot path planning (Fritzke, 1991, Fritzke and Wilke, 1991, Vleugels et al., 1993).
Also, a self-organizing neural network is often employed for data visualization, clustering
and vector quantization. The main advantage lies in its ability to find a suitable network
structure and size automatically. This ability can also be exploited to reconstruct objects
such as obstacles in the workspace of the robot.
25
2 Literature Survey
However, growing neural net adaptation rules are mostly based on different approaches
(Blackmore and Miikkulainen, 1993, Cheng and Zell, 1999, Fritzke, 1995, Fritzke, 1991,
Fritzke, 1993, Fritzke and Wilke, 1991, Ivrissimtzis et al., 2003, Lenz and Pipe, 2003).
Fritzke (1995) explained in detail the power of growing neuronal nets, which are able to
learn the important topological relations in a given set of input vectors by means of a
simple Hebb-like learning rule. The net grows and continue to learn and add units and
connections until a specified performance criterion has been met.
The concept of the coloured Kohonen map introduced by Vleugels et al. (1993) uses an
adapted version of the growing neural network presented by Fritzke (1991) to identify the
free and occupied working space for two different colours.
Another variant of the approach by Fritzke (1995) was proposed by Cheng and Zell
(1999). The goal of their paper was to speed up the convergence of the learning process. A
performance comparison between a Kohonen Feature Map and growing neural networks
was explained in depth by Fritzke (1993).
Blackmore and Miikkulainen (1993) presented a growing feature map that is able to
represent the structure of high-dimensional input data. An extension has been given with
the approach used by Rauber (2002), where a growing hierarchical self-organizing map is
built. This is an artificial neural network model with a hierarchical architecture, which is
composed of independent growing self-organizing maps. The motivation of the authors
was to provide a model that adapts its architecture during its unsupervised training process
according to the particular requirements of the input data.
The algorithm proposed by Ivrissimtzis et al. (2003) samples a target space randomly
and adjusts the neural network accordingly which also include the connectivity of the
network. The speed is virtually independent from the size of the input data, making it
particularly suitable for the reconstruction of a surface from a very large point set.
Triangle primitives are popular in computer graphics for surface reconstruction because
they are also used by graphics acceleration hardware (LaValle, 2006). Combining neural
network algorithms with triangle meshes leads to an algorithm for path planning, which is
presented by Vleugels et al. (1993). An optimization of the quadtree is presented by
Hwang et al. (2003) using triangles instead of a quadtree to improve object approximation.
26
2 Literature Survey
They presented a path-planning algorithm that simplifies the triangle mesh into a compact
and obstacle-dependent mesh to reduce the search space.
Data structures and algorithms of progressive triangle meshes were presented by Hoppe
(1998). For a given mesh, this representation defines a continuous sequence of level-of-
detail approximations, which allows smooth visual transitions among them and makes an
effective compression scheme.
Vision-based sensing is the most useful sense for dealing with the physical world
(Russell and Norvig, 2002). Extracting the pose and orientation of objects in images or an
image stream and the detection of motion delivers useful information for path planning.
Object recognition converts the features of an image into a model of known objects. This
process consists of segmentation of the scene into distinct objects, determining the
orientation and pose of each object relative to the camera, and determining the shape of
each object. Those features are given with motion, binocular stereopsis, texture, shading
and contour.
Motion estimation algorithms are presented in literature (Hsu et al., 2002, Lippiello,
2005) to estimate motions of obstacles online for realistic environments. An introduction
of image processing is given by Pollefeys (2000) and Russell and Norvig (2002). Peter
Corke's Machine Vision Toolbox for Matlab (Corke, 2005, MathWorks, 1997) allows
developers to use professional image processing capabilities with ease.
In many cases, the sensor data are redundant, uncertain, imprecise, inconsistent and
contradictory. The knowledge of the spatial relationships among objects is also inherently
uncertain (Nandi and Mitra, 2005). Those data should be considered to recognize errors. A
review of papers on uncertainty analysis in the context of manipulator control (Di et al.,
1998, Langlois et al., 2001, Mao-Lin and Meng, 2000, Smith et al., 1990) shows that a
27
2 Literature Survey
common step involved in all these systems is the interpretation of identical information
that has been acquired through multiple sensory units. The fused information needs to be
represented with minimized uncertainty, and the level of this minimization depends on
task-specific applications.
One solution is to ignore moving obstacles and to compute a collision-free path of the
robot among the static obstacles; the robot’s velocity along this path is tuned to avoid
colliding with moving obstacles (Kant and Zucker, 1986). However, the resulting planner
is clearly incomplete. The planner developed by Fujimura (1995) tries to reduce
incompleteness by generating a network of paths. The planner proposed by
Fraichard (1999) dealt concurrently with velocity and acceleration constraints and moving
obstacles, such as car-like robots. It extends the approach of Donald et al. (1993) and
Erdmann and Lozano-Perez (1987) to the state-time-space, which solves the trajectory-
planning problem for velocity- and acceleration-constrained movements. It also transforms
the problem of searching the time-optimal canonical trajectory to one of searching the
shortest path in a directed graph embedded in the state-time-space. The concept augments
the state space with the time dimension, and is useful for trajectory planning.
Hsu et al. (2002) presented a randomized motion planner for robots that avoids
collisions with moving obstacles under kinematic and dynamic constraints. The planner
does not pre-compute the roadmap; instead, for each planning query, it generates a new
roadmap to connect the start and target state-time points. A vision module estimates the
obstacle motions just before planning, and the planner is then allocated a small amount of
time to compute a trajectory. If a change in the obstacle motion is detected while the robot
executes the planned trajectory, the planner re-computes a trajectory on the fly (Boada et
al., 2005, Etzion and Rappoport, 2002, Kim et al., 2009, Kitamura et al., 1995, Lebedev et
al., 2003a, Nagatani and Choset, 1999, Vleugels and Overmars, 1995).
Another approach employed for collision detection was given by Sánchez and Latombe
(2003). To reduce the time needed to check collisions, this strategy postpones collision
checks until they are absolutely needed. Schwarzer et al. (2004) provided a collision-
28
2 Literature Survey
checking method that tests single straight-line segments, sequences of such segments, or
more complex paths in the configuration space. It was shown that this approach is faster
when compared to resolution-based approaches with a suitable resolution. The spatial
potential field by Chuang (1998) shows that potential functions and their gradients can be
derived, and may therefore facilitate efficient collision avoidance.
2.9 Summary
Industrial manufacturing requires more intuitive human-machine interfaces and sensory
interfaces to reduce reliance on the operator skill and to improve automation. Online robot
programming leads to a loss of production and reduces preparation times, which are
necessary for the counterpart of online programming, namely, offline programming. The
offline generation of robot programs needs a simulation and programming phase executed
by skilled engineers. This is time consuming and requires specialized and expensive
simulation software. Thus, small- and medium-volume manufacturing do not benefit from
this technology. Industrial production may be improved with enhanced online
programming for industrial robots.
This enhancement can be attained with an assisted online robot programming system,
which can be operated with ease. The required human-machine interface is closely
connected with the underlying trajectory-planning algorithm to support the robot-
programming task.
29
2 Literature Survey
The perception of the environment and the representation of the in-memory world
model play an important role in the efficient utilization of the environment information for
trajectory planning. Vision and perception has to be appended by other sensor types and
fused into the in-memory representation of the environment. Research is required,
especially for robot programing in the industrial surrounding to utilize existing data
sources.
The trajectory planner has to deal with both the available information and the
operational requirements of the enhanced programming system.
Cell-based planning methods often generate a path that connects the midpoints of the
cells. The publication by Hwang et al. (Hwang et al., 2003) identifies two limitations with
cell-based methods. First, the detection of small passages requires high accuracy of the
octree or quadtree. Secondly, the shortest path is not always identified since the distance
calculations of the cells often use the midpoints of the cells. Thus, the paths obtained by
the cell-based method are not optimal because of the connectivity limitations in a grid.
The potential-field approach has several limitations, as outlined in the work of Koren
and Borenstein (1991). In particular, the robot may get stuck at a local minimum and the
reported paths can be arbitrarily long.
Trajectories that are directly obtained from Voronoi-based path planning methods are
often long, and are not smooth. In recent years, much research has focused on improving
the quality of the path. Masehian and Amin-Naseri (2004) combine the Voronoi diagram
with the visibility graph and potential-field approach into a single path-planning algorithm
to obtain a trade-off between safest and shortest paths. The algorithm is complicated, but
the path length is shorter than the paths obtained from the potential-field method or the
Voronoi diagram.
Neural networks have the ability to learn from input vectors. Among its most important
benefits are object and environment recognition, generalization to new situations,
evaluation of situation-contexts, short and long-term memory and their real-time ability.
30
2 Literature Survey
Research of trajectory planning with neural networks for real robot systems has been given
less attention in the past.
The literature survey shows that a large amount of scientific work has been done in the
last decades. However, in the context of robot-program file generation for robot
manipulators in deterministic industrial environments, other prerequisites have to be taken
into consideration.
This work is focused on an intuitive expert system for industrial use and the acquisition
of industry requirements sets the basis for further investigations, such as the trajectory-
planning algorithm, the world model, the robot kinematics and a suitable software
development framework. The following aims chapter summarizes the aim and specifies the
objectives treated in this work.
31
3 Aims
32
3 Aims
3.1 Motivation
Industrial production systems within the high-volume automotive industry are highly
optimized. Further advancements may be achieved through a systematic improvement of
the production process. Existing online robot programming approaches have not been
completely accepted because of the required production downtime. Consequently, offline
programming is generally employed even if it requires serious financial investments in
terms of additional personnel and equipment costs. Furthermore, offline programming
requires expensive simulation systems and skilled operators who are able to create the
model of the specific production environment and to produce high-quality robot programs.
Exact modelling of the production environment is a time-consuming task, although models
of the production machines are most often provided by the manufacturer. Simulation
systems generally allow the use of modelled production parts and fixtures to optimize the
offline-programming process. This represents an improvement, especially when the models
are not available as physical objects. The quality of the robot programs is highly dependent
on the knowledge of the operator, who must be experienced in online robot programming
and in the use of simulation systems. Nevertheless, offline programming still requires
installation time to upload the robot programs and to adjust inaccuracies and errors
resulting from unknowns and inaccuracies in the environment. Finally, offline-created low-
quality robot programs are most often re-programmed online, presenting the risk of a
production loss. This also affects the performance of the robot programmer, set under high
pressure.
Costs may be reduced by the development of a new robot programming system which is
executed solely online, and which creates robot programs in a period of time that is
comparable to the time necessary for the installation of offline programming approaches. A
seamless integration into the existing industrial environment is required to reach a high
acceptance level. This may be realized by combining the advantages of existing robot
programming approaches and a new trajectory-planning algorithm, which is extended with
an intuitive user interface.
Robot use and automation levels in the industrial sector will continue to grow in future,
driven by the ever-present need for lower item costs and enhanced productivity. In order to
support this market-driven requirement, more capable programming and control
technologies will be necessary. Therefore, research has been undertaken to optimize the
33
3 Aims
robot programming process and to reduce personnel and equipment costs. Accordingly,
this work addresses the future needs of the production industry.
3.2 Objectives
This work aims to present a method that can substitute the current robot programming
approach with an enhanced robot programming system, in effect rendering offline
programming an unnecessary technology. Offline programming is still an accepted and
proven programming approach; the present production environment setup is well
established in industry. Therefore, an analysis of the current key aspects regarding robot
programming is required. The integration of those aspects into the new programming
approach guarantees a high acceptance level and future employment of the new
technology.
Online robot programming approaches are generally time critical since production
downtimes have to be minimal. A crucial aspect that is able to support the general need to
reduce the time lies in the development of a fast trajectory-planning algorithm. The
knowledge acquired during the process will be efficiently employed to optimize online
robot programming. This also includes the ability to handle inaccurate information, which
may be obtained through sensors, the environment and pre-existing modelled information.
The combination of the robot, the sensors and the software components requires a modern
software development approach, which supports their integration into the proposed
enhanced online robot programming system.
increase his or her productivity. An online robot programming system can also be easily
applied in small-batched productions, which is a field that is very sensitive to robot
programming speed, system flexibility and cost efficiency. The high quality results of the
system are reproducible, and the process itself still has the potential for further
optimization and modernization.
Objective two: Investigation into an efficient probabilistic world model for data
fusion. Trajectory planning relies on inexact information about the environment in which
the robot operates, although sensor information is almost incomplete and inaccurate.
Additional information such as the utilization of modelled data may be incorporated to
improve the in-memory environment representation. The information sources are fused
according to their reliability to provide cohesive information. A probabilistic world model
stores the information statistically, and considers the history of the information. Objective
two is to develop an efficient data-structure and information fusion algorithm which allows
statistical environment data to be stored. The world model and information fusion system
are described in Chapter 6.
Objective three: Research of the robot kinematics model and the robot control
capabilities. The use of industrial-scale experimental machinery robot systems such as the
Mitsubishi RV-2AJ manipulator is essential throughout the investigation to prove new
theories. Furthermore, autonomous mobile robots such as the Festo Robotino robot may
also be applied to verify control algorithms in a simplified two-dimensional space. This
requires a robot communications and control framework for both robot types. In particular,
the kinematics of the robots is required for forward and inverse calculations; they
transform positions of the real world into the robot coordinate system. In this work, the
35
3 Aims
robot geometry and the joint types are applied to create a kinematic model of the utilized
robots. The robot communications and control framework and the kinematics model of the
used robots are described in Chapter 7.
Much of the results have been published and the findings are appended.
36
4 Experimental
37
4 Experimental
The experiments regarding user interaction and the GUI design concentrated on usage
experiences and an evaluation of standard graphical interface design rules. The trajectory-
planning algorithm was first tested with an autonomous mobile robot to omit forward and
inverse robot position calculations and robot arm constraints. In the second step, the
experiments were extended to an industrial scenario, which includes an articulated arm.
These experiments were designed to prove the feasibility of the user-interaction and the
trajectory generation.
The experiments completed as a part of this investigation were carried out using the
Mitsubishi RV-2AJ manipulator and the autonomous mobile robot Robotino produced by
Festo (Festo, 2011).
The mobile robot is a platform equipped with wireless communication and infrared
distance measurement units, and it was employed for early algorithm tests. In addition, the
implementation of a simulated robot accelerated the algorithm development and the user-
interaction design because no direct connection to the real robot was necessary.
The manipulator is an advanced, but mature and industrially proven machine, and its
commercial viability has already been demonstrated in the manufacture of car sub-
assemblies, semiconductor memories and other industrial/consumer goods.
The connection to the robots was established using C# for the mobile robot (Festo,
2011) and a Java framework for the manipulator (Kohrt et al., 2008). The communication
and control capabilities of the manipulator were enhanced to extend sensor measurement
and robot movement capabilities. The Mitsubishi documentation regarding controller
commands is not complete. However, the data sent between the controller and the
38
4 Experimental
39
4 Experimental
Robot Tool
Centre Point
Marker
Graphical User
Interface
Vision
Workpiece Manipulator
Mobile Computer
Software System
Operator
Joystick
Pointing
Mobile Robot
Device
The operator utilizes a GUI that was developed with the Java Standard Widget Toolkit
(SWT) framework on a Windows operating system (Kohrt et al., 2006a). The buttons on
the GUI and the Joystick were applied to indicate collisions. Vision sensors are connected
and processed by a Matlab/Simulink generated C++ code. The GUI, the joystick and
pointing device allow the control of the employed robots.
The pointing device is a 50 cm long stick with a single coloured 2.5 cm-diameter red
ball that is used as a marker for position recognition. Different marker colours were
chosen, e.g. for the robot-arm and the pointing device, so that they can be distinguished
from each other.
Other sensory modalities, such as machine vision, distance measurement and ultrasonic
sensors, may also be included through the sensor fusion framework. The choice of sensor
types depends greatly on the application. The vision system was utilized for the recognition
of the markers.
40
4 Experimental
The software was installed on a mobile computer with a 32-bit Microsoft Windows 7
operating system running on an Intel Core i5 processor with a maximum frequency of
2.4 GHz. Other real-time capable systems, such as a PowerPC with a VxWorks operating
system, may improve the performance of the system.
41
5 Requirements for Adoption by Industry of
Online Programming
42
5 Requirements for Adoption by Industry of Online Programming
This chapter presents the findings from the investigation to the requirements for
adoption of online programming by industry. This is objective number one, as outlined in
Chapter 3. It identifies and specifies requirements for robot programming for small-
batched, medium sized and high-volume manufacturing industries.
In Section 5.1, a typical production cell in the automotive industry is introduced and in
the subsequent Section 5.2, offline programming approaches are analysed. The analysis
identifies industry requirements for robot programming, which are summarized in
Section 5.3. A new robot programming approach is presented in Section 5.4, which was
researched based on the identified requirements. Section 5.5 compares the proposed
programming approach with conventional online and offline programming. Moreover, a
first system design which implements the new robot programming approach is introduced
in Section 5.6. Finally, Section 5.7 summarizes the system requirements for the
implemented enhanced robot programming support system.
43
5 Requirements for Adoption by Industry of Online Programming
Cameras
External
Work Axis
Object
Robot
Robot
External
Axis
Robot Robot
44
5 Requirements for Adoption by Industry of Online Programming
Logic
Production Cell
Control
Mechanical Data Physical Data
(3D geometry,
(mass, inertia,etc.)
kinematics) Robot Control
Devices
(teachpendant, HMI)
Electrical Data Logical Data
(sensors, actuators) (behaviour models)
Production System
Product/Work Object
The control component may execute robot programs to control the robots. Increased
product diversity is realized by implementing work-object dependent robot program
execution. The identification of work objects is often achieved by bar codes or radio-
frequency identification (RFID) chips on the work objects. The increased flexibility is also
demanding for the material flow automation, since the correct production parts have to be
delivered just in time.
The flexibility of robots makes them important for production applications, especially
within the automotive industry. For example, Mercedes Benz uses robots for rear-axle
assembly tasks of their C-Class car (Kiefer et al., 2010). The analysis of a robot program in
Figure 10 indicates that 68% of the program is related to the production task (movement
instructions, variable declarations and syntactical instructions), while 32% are related to
external communication and assembly procedures (plausibility checks).
45
5 Requirements for Adoption by Industry of Online Programming
The automation of robot programming implies the automatic creation of the robot
program structure which is illustrated in Figure 10. The life cycle of a production cell from
the initial design to the operation stage is illustrated in Figure 11. To create and modify
robot programs, research focused on the ‘Installation & Initial Setup‘ and the ‘Operation
and Maintenance‘ phases.
46
5 Requirements for Adoption by Industry of Online Programming
Conventional online teach-in programming is carried out within a real robot cell without
any preparation. However, some robot programmers attempt to create the program
structure beforehand to speed up the programming task, and to minimize the production
downtimes. Nevertheless, this programming approach is often used when the expected
production downtimes are acceptable and all physical parts are available. This approach
may result in high production downtimes, and leads to high costs. All work objects have to
be available, and thus robot programming may not commence until these objects are
physically available. In contrast, this approach is simple, and has been approved and
widely accepted. It may be cost efficient when downtimes are acceptable, that is, when
robot programming is performed during regular production breaks.
47
5 Requirements for Adoption by Industry of Online Programming
The online programmer modifies the programs created offline within the real robot cell
to compensate for inaccuracies. If the offline robot program is not sufficiently accurate, or
if the program structure does not satisfy the online programmer, the entire robot program is
often created manually without the use of the offline program. This results in duplicate
costs for both offline and online programming of the whole program. Nevertheless, this
approach is mainly approved in industries because of the generally shorter production
downtimes, even though greater capital is required for robot-programming investments.
The high level of complexity of typical robot-programming tasks for human operators
has to be considered; consequently, the robot application-software presented in this study
takes over the most complicated task, which is robot motion planning. The remaining
manageable tasks which are related to the given mission, e.g. spraying, handling and
painting, remain the responsibility of the operator. For example, in a handling mission, the
operator provides information about what the robot has to do, e.g. placing objects in
specific positions in a specified order, while the online robot software application knows
how to control the robot.
48
5 Requirements for Adoption by Industry of Online Programming
Supported online programming must be fast and flexible to reduce possible production
downtimes. The generated trajectories must conform to the given requirements in terms of
quality, such as the smoothness and shortness, and the possible speed of the robot
movement.
Physical production parts and fixtures are often not available during online robot
programming, and the support system must therefore handle such situations to permit its
use.
Nevertheless, robot programs may be modified manually during their lifecycles due to
changes that may occur during production. Those robot programs are usually stored as
robot program files in a specific robot programming language on the robot controller.
Therefore, the generated programs must be readable and maintainable. The proposed
method helps to generate such robot programs, and it is therefore easy for these programs
to be manually changed by the human operator.
Using the robot application-software presented here, there is still some non-productive
time, but unlike previously reported approaches, this is mostly achieved automatically, and
therefore rapidly. As such, the actual cell-learning time is minimal, and consequently,
offline systems become unnecessary, leading to reduced costs for the offline preparation of
robot programs.
Visual feedback
Pre-Existing Data
(e.g. Model Data) Enhanced Robot
Programming
Operator
Support System
Mitsubishi RV-2AJ
The main disadvantages of offline programming are the investments that are required
for programming within the simulation system, including the required skilled operators,
computers and infrastructure. Therefore, online programming was further studied, leading
to the combination of online and offline programming properties. This required an expert
49
5 Requirements for Adoption by Industry of Online Programming
support system that is able to support the operator in robot programming. To enable online
robot programming, it should be simple to use and efficient. The support system is required
to lead the operator through the required steps to produce high quality robot programs. The
approach has to combine the flexibility of online programming and the speed of offline
programming. Additional aspects, which include a simple integration into the existing
environment, short production downtimes and high quality results have also had to be
considered. These aspects required a complete system solution, specialized path planning
and robot programming algorithms.
The proposed support system is used within the real robot cell. Changes within the
environment or to the equipment are considered immediately. The turnaround time to
produce robot programs with such changes is shorter compared to offline programming.
In offline programming, small changes are often made directly online, while the
corresponding offline simulation remains unsynchronized to the real production cell. Then,
changes to the robot program within the simulation system often require an additional task
to merge the robot program with the simulation. This task requires special skills and is not
reliable. Because the proposed system eliminates the simulation, this aspect is no longer
relevant.
This leads to fewer investments for skilled online and offline programmers, rendering
offline programming unnecessary. In the automotive industry, offline programming may
take up to several weeks. For example, the offline programming of a single robot cell with
two robots, each of which is installed on a conveyor for a painting application requires
about 10 person-days for offline simulation, 1 day for online programming, and a few days
50
5 Requirements for Adoption by Industry of Online Programming
for CAD data preparation. The cost incurred by ten person-days of a skilled online
programmer is about 7000 EUR plus the cost for equipment, infrastructure, offline
simulation systems and CAD data preparation.
Programming
No. Steps
Approach
Online Teach-In
1 Online-programming within the real cell
Programming
Offline-
Uploading of the
Programming Creation of the offline Manual amendment
2 Offline simulation programs into the real
Amended by Online robot programs of the robot program
cell
Teaching
Optional preparation
Enhanced Calibration of model
of data, that is, robot Start the assistant Run the assistant in
5 online data, teaching of the
kinematic or model within the real cell the real cell
programming locations
data
Approach 1, online teach-in, has already been evaluated as being insufficient with
respect to production downtimes for high-volume production.
The second approach requires high investments but it can be applied to reduce
downtimes of the production system.
It was assumed that offline integration, approach 3, would help the offline programming
expert to generate suitable trajectories automatically, while built-in special features of the
simulation tools are still applicable.
51
5 Requirements for Adoption by Industry of Online Programming
An evaluation considering the previously defined requirements has produced the results
in Table 2 for high-volume production. The summary column also supports the enhanced
online programming approach.
No.
Handling of
Integration
Downtimes
Production
model data
Quality of
Programs
Summary
Usability
Costs
Programming Approach
1
Online Teach-In Programming -2 -2 +1 +1 -2 -2 -6
2
Offline-Programming Amended by Online Teach-In -2 +1 0 +1 +2 -1 +1
3 Offline integration
-1 +1 0 +2 +2 0 +4
4 Online integration
-1 +1 +1 +2 +1 +1 +5
52
5 Requirements for Adoption by Industry of Online Programming
Environment Enhanced
Online
Programming
Mission-Plan System
Robot(s)
Robot Program
File
Operator
53
5 Requirements for Adoption by Industry of Online Programming
Robot Cell
Robot
Mission Planning
Obstacles
World Model External Sensors
Work Objects
The overview in Figure 17 shows the interconnected system components and devices.
The proposed support system is executed on a personal computer which is connected to the
robot controller via an Ethernet or serial connection, depending on the robot type and its
communication capabilities. In addition, a teach pendant and the robot are connected to the
controller. A vision system, a pointing device, and a joystick are plugged into the personal
computer. Model data may be imported from files. The hardware and devices are
introduced in detail in Appendix B.
54
5 Requirements for Adoption by Industry of Online Programming
5.7 Summary
The development of large software systems requires a structured and homogeneous
development strategy to cover aims like reusability, maintainability and testing. This
should be accomplished using a model-driven development toolchain. The toolchain
should allow the integration of hardware devices such as robots, joysticks, mice, keyboards
and pointing devices. Artefacts produced by other tools and toolchains, such as
Matlab/Simulink, should be integrable by dynamic link libraries.
The HMI should be simple and easy for inexperienced users to use. It should control all
parts of the software system including start and stop procedures, installation procedures
and life-cycle management of the connected software components. The GUI should be
easily extendable.
The world mode stores a model of the environment, especially the robot cell and the
working space of the robot. Information in the form of CAD and robot joint-space data
should be handled. Additional requirements are the access delay times to the stored
information and the storage size in memory. The information input should be fused to
overcome inaccuracies of the data and to provide cohesive information.
55
5 Requirements for Adoption by Industry of Online Programming
The mission planner is responsible for storing the mission data provided by the HMI
with several input possibilities. Each mission consists of a start and a target location, and
may have multiple application trajectories with application data such as for painting and
gluing. Those application trajectories should be connected to control the robot from the
start to the target position, including all application trajectories in a path-length optimized
manner. Known algorithms for the travelling-salesman-problem (TSP) should also be
considered.
The path planner should be controlled by the mission planner, and should create a
trajectory with given start and goal positions. Real robot control should be considered to
direct the robot from the start to the target position. Inputs from the operator and the
sensors should be possible during trajectory planning to incorporate collision indications.
The process of planning should also be fast, and the planned trajectories should have a
short trajectory length and the generated program should be readable, changeable and
similar to those that are manually programmed. Virtual objects should also be considered.
Vision should be incorporated using webcams to recognize the pointing device and the
robot-tool-centre-point. Further developments of image processing algorithms using
specialized tools such as Matlab/Simulink should be enabled.
A robot model is used throughout the software system. It should provide forward and
inverse calculations of the robot kinematic of the Mitsubishi RV2-AJ robot. Those
calculations should be based on the ideal, theoretic geometry of the robot.
56
6 Investigation into a Probabilistic Data Fusion
World Model
57
6 Investigation into a Probabilistic Data Fusion World Model
Path planning is based on data of the physical environment, as illustrated in Figure 18.
Information of the environment was retrieved with internal and external sensor perception
amended by pre-existing model data and stored within an in-memory model, the world
model. It is a hierarchically structured data storage which saves position and collision
information. A position can be given either in Cartesian (position and orientation) or robot
joint space (with joints of the robot). In addition, model data has to be stored as well. The
presented probabilistic data fusion world model is the data basis for the enhanced robot
programming system and it is illustrated in Figure 18 as ‘World Model’.
Robot Cell
Motion Planning
Internal Sensors
The Cartesian storage was realized by a linear octree which was introduced by
Gargantini (1982b), and detailed in Section 6.1. The robot joint space positions are stored
in a specialized hierarchical binary tree structure, which is presented in Section 6.2. Both
the octree and the joint position storage are able to deliver information with a specified
level of detail. Sensors such as vision systems, ultra-sonic detectors, and laser-distance
measurement systems can be employed to retrieve dynamic information. The proposed
system is equipped with a specific button for the operator on the control panel and a
joystick button to indicate collision points. The model data storage was implemented using
a Java3D scene graph, which is presented in Section 6.3. The model data was retrieved
utilizing CAD drawings of the working-cell construction process.
58
6 Investigation into a Probabilistic Data Fusion World Model
In general, real robot applications have demonstrated that sensors may deliver wrong
information (Hall and Llinas, 1997). The world model combines the different data sources
using a data fusion architecture. It includes sensor abstraction, algorithms and architectures
(Hall and Llinas, 1997), and was implemented as a voting system.
The data fusion architecture presented in Section 6.4 filters the data sources through a
simple moving average (SMA) filter and incorporates the reliability of the data sources. A
value is defined for each data source to reflect the reliability. Thus, the averaged weighted
sum of the sensor values was applied to deliver cohesive information.
The vision system presented in Section 6.5 both delivers information about the
environment and interprets the markers presented in Subsection 6.5.3. However, object
recognition is a major problem in path planning because of the sparseness of information.
A solely vision-based recognition system may not be capable of delivering enough
information within an industrial environment, and model data was incorporated into the
world model to utilize additional data, although models are often inaccurate.
The implemented linear octree is initialized with its octree size and accuracy. The
required number of subdivisions is automatically determined. Using this representation, the
encoding, decoding and determination of adjacent voxels within a specified radius are
implemented basic operations that can also be found in literature (Bhattacharya, 2001,
Samet, 1994, Schrack, 1992).
4 5
0 1
00 01 10 11
0 03
02 12 13
J
7
K
I
2 3
The indexing scheme is recursive from the root to the child cells. Child cells inherit the
index from their parent voxel and extend it by one digit. The cells may also be represented
in two dimensions, as illustrated in Figure 20, where the cells may be either empty, partly
or fully occupied.
60
6 Investigation into a Probabilistic Data Fusion World Model
Root
0 2 3 4 5 6 7
0 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Partly Fully
Empty
occupied occupied
Thus, for the example above, the cells were stored in an array with the octal code
indexing scheme entries as { }. Because of the strict
order of the indices, a fully occupied parent cell can be combined by encoding it with .
The array has therefore been shortened to { }, and is denoted as a mixed-octal
representation of octal digits { } and . Only fully and partly occupied cells of the
octree need to be stored. From the left to right, the octal digits within those indices
determine the path from the root to certain leafs of the octree, respectively.
Each voxel has neighbour relations to adjacent voxels if they do not exceed the
boundary of the robot world, that is, the borders of the root cell. Neighbours exist in
perpendicular and diagonal directions at each subdivision level.
In a uniform grid, the transition between cells may be considered to occur at edges
within a graph. This may be utilized to find the shortest path from a start to a goal cell, for
example with the A* search algorithm (Likhachev et al., 2005, Russell and Norvig, 2002).
61
6 Investigation into a Probabilistic Data Fusion World Model
In three-dimensional space, 26 directions are possible from the middle cell, leading to
Figure 24. The special case demonstrated in Figure 23 also applies in three dimensions.
62
6 Investigation into a Probabilistic Data Fusion World Model
Figure 24: Spatial space neighbour relationship of an octree cell, shown by the arrows.
Figure 25: The robot environment and relation of world and octree representation.
Cells may be represented by their world coordinate, (I, J, K) coordinate or index scheme
representation. All types may be converted into each of the other types, although the
conversion from world to (I, J, K) or index scheme representation leads to a loss of
accuracy. The reason for this is the fixed voxel sizes and the defined octree accuracy.
63
6 Investigation into a Probabilistic Data Fusion World Model
The octal point class is a sophisticated and intelligent data structure that was used
internally. This class provides a wide scope of knowledge about its environment, and
encapsulates a representation of the octal number as array structure. Within this structure,
child relations of the encapsulated points and all its neighbour relations in every direction
are stored by their respective octal representations. The necessary calculations were
executed during the creation of the octal point to minimize computational costs. The
neighbour relations are stored for all neighbours independent from their existence.
j2
j1
j0
[ ]
(1) [ ]
[ ]
64
6 Investigation into a Probabilistic Data Fusion World Model
The joint angle ranges may also overlap, which is the case here for . The storage
system implements a binary tree with an accuracy that is defined by its depth 𝑡. The
absolute angle range is subdivided by two on each depth level, as illustrated in Figure 27.
0
t1
0.0 0.1
t2
0.0.0 0.0.1 0.1.0 0.1.1
t3
Figure 27: General joint angle binary tree for a joint 𝑗 with depth 𝑡 .
The depth 𝑡 for each joint is calculated based on the required minimum accuracy
and the absolute joint range in equation (2). 𝑡 is rounded up to a natural number, which
increases the accuracy .
(2)
Therefore, the depth 𝑡 for a joint is calculated using the absolute range length in
equation (3).
(3) ⌈ ( )⌉
⌈ ( )⌉ ⌈ ⌉
(4) ⌈ ( )⌉ ⌈ ⌉
⌈ ( )⌉ ⌈ ⌉
An illustration may be given in equation (5) using the calculation of an example point
( ) in a binary tree with a simplified example accuracy of for
the joints 𝑗 𝑗 .
(5) ⌈ ( )⌉
65
6 Investigation into a Probabilistic Data Fusion World Model
⌈ ( )⌉
⌈ ( )⌉
The resulting binary tree position 𝑡 of the example positions are graphically
shown in Figure 28.
-200 0 200
j0 t=2
-180à0.0.0
0 50 100
j1 t=0
40à0
-180 0 +180
j2 t=2
0à0.1.0
The resulting binary tree index positions for are stated in equation (6).
{ ( ) } [ ]
(6) { ( ) } [ ]
{ ( ) } [ ]
(7) ( )
The external interface to this component defines methods to obtain and store robot arm
positions, including their occupancy values in the requested accuracy. If the requested
position does not exist within the binary tree, an occupancy value of zero is returned.
Positions are stored when they do not yet exist in the binary tree. Existing positions update
their occupancy values with the formula given in (7).
Storing joint positions in the presented way reduces the number of joint positions stored
per octree cell and allows storing the joint positions in a ‘natural’ way. Thus, joint
positions that are near together, and also their occupancy information can be summed up to
one binary tree cell. The joint positions are normalized.
66
6 Investigation into a Probabilistic Data Fusion World Model
The geometric models were imported from files with the Drawing-Exchange-Format
(DXF), which is a widely accepted format utilized by many computer-aided design
programs. This file consists of pre-existing static model information, which may either be
imported into the world model or directly be used within it. The import has been
accomplished with the help of Java3D by using collision test methods and storing each
position within the world model.
The model information was imported using a rasterization step with a predefined raster
size with . The raster size was set to . Although
pre-processing was not necessary, it was employed to reduce the running times of the
algorithm. Modelled obstacle data does not need to be complete, and it has been employed
to add already existing information to the in-memory world model.
67
6 Investigation into a Probabilistic Data Fusion World Model
-10 0 10
P1: Start O2
10 10
O3
0 0
P10: Target
O1
-10 -10
-10 0 10
Figure 29: Experimental scenario (2D example in Figure 30: Illustration of the experimental scenario in the
3D world), with obstacle O3 being unknown. 3D world.
The Java3D scene graph also supports collision detection, but only within the visualized
frames, and does not detect interpenetrating objects between two frames. The Open-
Dynamics-Engine (ODE) physical simulation engine supports collision detection between
frames (Smith, 2012). ODE is a free, industrial-quality library that is used for simulating
articulated rigid body dynamics in virtual reality environments. It was used for collision
detection of basic geometric objects, but collision detection with complex CAD data is
only supported at a basic level. The detection can be manually enhanced by implementing
the calculation of collision points and vectors. Nevertheless, for this work, the
requirements are fulfilled since only basic geometric objects are required. The Java binding
ODEJava (Comunity, 2012) was employed to implement a graphics engine to combine
ODEJava with Java3D.
68
6 Investigation into a Probabilistic Data Fusion World Model
Information Fusion
World Model
Operator
Detection &
Estimation
Sensor
a
Preprocessing
Sensor
OCell
b
Preprocessing Sensor Fusion
Sensor
i
Preprocessing
The raw data of commensurate sensors (that is, when the sensors measure the same
physical phenomena, such as two visual image sensors) can be directly combined.
Unfortunately, the sensors used in this work are not commensurate. Thus, data fusion is
required on a higher level.
69
6 Investigation into a Probabilistic Data Fusion World Model
The interpretation of the raw data of the applied sensors results in a single value, the
sensor occupancy , which is normalized between . Information
about the occupancy is directly obtained using two sensor types, namely the modelled
obstacle data and the collision indication button.
The employed data fusion strategy calculates the averaged weighted sum of the sensor
occupancy values according to their reliability, and applies the history of the so-
achieved values with an SMA. The advantage of the applied strategy is the fusion of
multiple sensors with different reliabilities by averaging and smoothing of the sensor
measurements. The fused sensor values are persistent in the in-memory world model, and
are ready for subsequent reuse.
in equation (8) represents the cell occupancy at the actual time step, and it is the
averaged weighted sum of the sensor occupancy values with a given number of sensors .
(8) ∑( )
∑
(9) ∑
The index ‘0’ always belongs to the actual values, ‘-1, -2 ...’ etc. to former values.
Sensor values are centred on the mean for static obstacles, and the lag behind the latest
sensor value may therefore be neglected.
Sensor values and the corresponding fused sensor values are illustrated in Figure 33 and
Figure 34. Three sensors were measured, with sensors 1 and 3 having a low (false) value in
70
6 Investigation into a Probabilistic Data Fusion World Model
measurements 3 and 4, respectively. In Figure 34, the fused average values for the cell
values were compared with the unfiltered sensor values.
The reliability of the fused sensor data for static obstacles was computed by the
similarity of the fused sensor data values, as described in equation (10) and equation (11).
Similar occupancies result in a probability of , where .
71
6 Investigation into a Probabilistic Data Fusion World Model
(10) | |
(11) ∑
Altogether, the cell occupancies and the reliabilities of the cell occupancies
were applied as a product of those cells, and equation (9) is redefined as
equation (12). The impact of the cell occupancies on path planning will be shown in
Chapter 8.
(12)
Attention has to be given to the sensor information type, which can be in configuration
space or world space. World coordinates are only relevant for the cell occupancy while
configuration space coordinates are additionally stored within the cell.
Active and passive marker types were evaluated for recognition. It was expected that
active ones would deliver good recognition results. Therefore, the luminescence emitter
diodes in the visible wavelength range and in the infrared wavelength range were
evaluated. The recognition of markers in the visible light range was difficult because of
interferences in the background which had to be filtered. Infrared markers showed promise
with respect to simplifying the recognition, but the camera required an additional infrared
filter to be able to detect only the infrared markers. The tested infrared filters also reduced
the intensity of the infrared light range, and therefore required strong active infrared
markers. The light emission of the luminescence emitter diodes is often directional for both
luminescence-emitter-diode types that emit infrared and visible light. Lampshades were
tested to produce a diffuse light source, but did not improve the recognition capabilities.
Therefore, passive markers have been further evaluated, and wooden balls with the
colours red, green, blue and yellow delivered acceptable results, even with background
interference, which was filtered.
72
6 Investigation into a Probabilistic Data Fusion World Model
The filter required image stream processing implemented with Matlab/Simulink (see
also Subsection 6.5.3) to generate a dynamic link library (DLL). The implemented image
stream processing chain is illustrated in Figure 35. The image stream source was a web-
camera.
The RGB colour space describes each colour as a combination of the base colours red,
green and blue. Each base colour value ranged from 0 to 255. The YCbCr colour-space
also has three values, but ranges from 0.0 to 1.0. The Y defines the luma component, and
Cb and Cr define the blue-difference and red-difference chroma components. The HSV
colour space encodes colours in a cylindrical space, as shown in Figure 36. As hue H
varies from 0.0 to 1.0, the corresponding colours vary from red through yellow, green,
cyan, blue, magenta, and back to red. As the saturation S varies from 0.0 to 1.0, the
corresponding colours (hues) vary from unsaturated (shades of grey) to fully saturated (no
white component). As the brightness value V varies from 0.0 to 1.0, the corresponding
colours become increasingly brighter.
73
6 Investigation into a Probabilistic Data Fusion World Model
Therefore, the HSV colour space defines colours using only the hue and saturation. The
brightness influences the maximum saturation of a colour, but it was shown that this effect
may be omitted when a minimum brightness is achieved.
74
6 Investigation into a Probabilistic Data Fusion World Model
element identifies a colour value in the device-dependent colour space, such as RGB, HSV
and YCbCr.
The developed image processing chain uses the HSV colour space. Because the image
acquisition block provides the stream in the YCbCr colour space, a colour space
conversion was required to convert the image stream from the YCbCr to the HSV colour
space.
Segmentation
Segmentation is realized by filtering the images of the image stream regarding their hue,
saturation and brightness colour-space component. Each pixel that complies with the
calibrated colour component ranges for hue, saturation and a minimum brightness are
labelled. Pixel labelling sets labelled pixels in the binary image stream output to 1 and
75
6 Investigation into a Probabilistic Data Fusion World Model
unlabelled pixels to 0. Pixel labelling leads to a conversion of the coloured image stream to
a binary image stream containing a single calibrated colour.
Detection
The binary image stream (BW) contains noise that is filtered by a median filter. The
filtered image stream may still contain gaps within objects that are closed with the closing
algorithm. The resulting image stream allows blob analysis to detect objects, for example
balls. It takes a given filtered binary image stream as the input, and outputs quantities such
as the Centroid, major and minor axis. The Centroid signal is a 2-by-N matrix, where the
columns represent the coordinates of the centroid of each blob and N is the number of
blobs.
There is still noise in the image stream that leads to false recognitions. Further
improvements were realized by utilizing an additional property of the ‘ball‘ markers. Their
projection onto the picture plane results in a circular shape from any direction and has been
taken into account. The major and minor axes of the blob analysis for each blob were
utilized to calculate the circularity of each blob, where a value
of was used as a threshold to indicate the circular shape of the blob.
76
6 Investigation into a Probabilistic Data Fusion World Model
Tracking
The identified blobs were sorted within the indexer block of Figure 43 to match the blob
positions of the previous iteration. This was realized by a distance measurement of each
new blob to all previous blobs to find its previous matching blob. Two blobs with the
shortest distances are assumed to be the same blob. It was shown that this method is only
valid when the movement of the blobs in each frame is sufficiently slow. In addition, blobs
were buffered so that missing blobs always keep their last position within a maximum
period of 1 second. This smoothed the recognized marker positions, especially when they
were not detected in several frames.
The sorted and buffered blob positions were sent to a Kalman filter, which reduces the
noise of the measurement data and outputs a vector with position and velocity information
in the and directions. Only the position information is utilized, and the selector block
therefore rebuilds the output vector. The indexer block may also utilize the predicted
position output X_prd of the Kalman filter to sort the blobs and to optimize the results.
6.6 Summary
This chapter addresses objective three and it presented an in-memory world model that
stores fused collision information regarding the collision indication button, the model data
and the robot. Collision points may be delivered in the Cartesian or robot joint space,
which are both handled by the world model.
The implemented SMA filter for the data fusion algorithm may lead to over-smoothing
of the sensor values, and there may therefore be a recognition delay for sudden events.
This depends mainly on the order of the SMA filter, which can be set individually for each
information source. Important sensors with a high reliability have a low SMA order.
77
6 Investigation into a Probabilistic Data Fusion World Model
Because the operator uses a collision indication button with a low order of the SMA filter,
collisions are always detected.
The image processing chain recognizes markers in an image stream. The colours to be
recognized were manually chosen during a pre-processing step. Coloured balls were used
as markers to differentiate the markers, e.g. to distinguish the pointing device and robot-
arm markers. The implementation in Matlab/Simulink allowed further improvements of the
algorithms without any necessary modifications to the remaining software system. The
image processing algorithms were compiled into a DLL for system integration. The
developed algorithm may deliver false results when the markers are moved too fast or
when the markers leave the camera view. Nevertheless, the marker recognition capabilities
are sufficient for the implementation of a prototypical robot-programming assistant.
The presented probabilistic data fusion world model was utilized as data basis for the
enhanced robot programming system, especially for the path and trajectory planning
algorithms. It was established to turn relevant information about the physical environment
into a cohesive and processible information source.
The outcome of this chapter was subject for various publications and the addressed
objective three has been met.
78
7 Research of the Robot Kinematics Model and
the Robot Control Capabilities
79
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
Research into the enhanced online robot programming approach was accomplished
using two types of robots. The first type is the industrial articulated manipulator, which is
described in Section 7.1, and which is also the intended target system for the enhanced
online robot programming system. The second robot type, which is detailed in Section 7.3,
is an autonomous mobile robot. The hardware of both robots is described in Appendix B.
Simulation of the two robot types and of a free-flying point robot is described in
Section 7.5.
The trajectory generation algorithm of the robot manipulator uses a “free flying point
robot” in one of the first steps to calculate the motion (see also Section 7.2.3 for the robot
model). The autonomous mobile robot can also be seen as a free flying robot in two
dimensions and it has therefore been used to test early implementations of the first
calculation steps of the algorithm.
The investigation shows that remote control of the industrial manipulator Mitsubishi
RV-2AJ and the mobile robot Festo Robotino is possible and has been published at a
conference. Forward and inverse calculations with the robot kinematics were analysed.
This chapter corresponds with objective two.
A robot control framework described by Kohrt et al. (2008) was developed to control
the Mitsubishi RV-2AJ robot manipulator and to exchange information such as sensor data
and the robot arm position. The framework enables direct robot control, serial/Ethernet
connection, robot parameter editing/reading/writing, program uploading and downloading,
real-time movement control, robot system backup/restore, external control over user
datagram protocol (UDP) and equipment control. The initial configuration of the robot was
automated on start-up of the system.
80
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
This section discusses the built-in communication modes Real-Time External Control
Mode, Controller Link Mode and a Data Link Mode. An additional, extended
communication mode was implemented with the Data Link Control Mode. The
development was based on the built-in communication modes to overcome the real-time
control limitations now being discussed.
The Data Link Control Mode allows bi-directional communication for control
commands and sensor information exchange at any time. Usually, the robot system allows
the sending of motion commands which have to be executed and finished before the next
command can be processed. Therefore, applications such as real-time joystick control of a
robot are not possible. This framework overcomes this limitation by installing a
communication server on the CR1 controller, which manages the communication to the
personal computer.
Each command is followed by a message that is sent by the controller, and contains status
information and the result. Table 3 states the pattern of the returning status information,
where each star stands for one digit. The framework verifies the correct transmission of the
robot command with the returned status information.
81
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
Commands Contents
82
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
Feed
U U U U U U
Phys.
Mode Command type back
C C C C C C
Layer
type
1 2 3 4 5 6
RTEC ETH SDO SDOX - - - - -
DL ETH SD SD- - - X X X
DL RS232 SD SD- - - X X X
CL ETH Robot command - X - - - -
CL RS232 Robot command - - X - - -
CL ETH Robot program - - - X - -
CL RS232 Robot program - - - - X -
(RTEC – Real Time External Control; DL – Data Link; CL – Control Link;
ETH – Ethernet; SDO – Serialized Data Object; SD – Serialized Data;
UC – Use Case)
Use-
Description
case
1 Direct robot control over Ethernet with feedback. Either the mentor or the path planning
system may move the robot manually. No controller calculations are involved.
2 Robot operation with single movement commands over Ethernet. The controller
calculates the path. Feedback data may be retrieved by Ethernet connection after
finishing movement.
3 Robot operation with single movement commands over serial port. The controller
calculates the path. Feedback data may be retrieved by serial port connection after
finishing movement.
4 Robot operation with robot programs over Ethernet. The controller calculates the path.
Feedback data may be retrieved either by Ethernet or by serial port connection.
5 Robot operation with robot programs over serial port. The controller calculates the path.
Feedback data may be retrieved either by Ethernet or by serial port connection.
6 Robot operation with two data-link channels. One sending channel over serial port and
one receiving channel over Ethernet. The robot has to be programmed so that it is
possible to send movement-type and data.
The most important requirements are the reception of the robot sensor information
during robot movement and the real-time controllability of the robot, mentioned in use
case 1. The extended Data Link Control mode explained in Subsection 7.1.3 was
developed to provide the required functionality defined in use case 1.
Multitasking was employed to run the Data Link Control Mode programs in parallel,
placed in program slots of the CR1 controller. Communication between the programs
83
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
running in parallel was realized using program external variables and user defined external
variables.
The main control program MULTITASK in Listing 2 is executed first in slot 1. It sets
the variables M_01 and M_02 to zero and starts the programs DATALINK and
CONTROLLINK in slot 2 and slot 3. The program waits for the variables M_01 and M_02
to be set from the other programs to stop execution in lines 80 and 90.
10 RELM
20 M_01=0
25 XLOAD 2,"DATALINK"
30 XRUN 2,"DATALINK"
40 WAIT M_RUN(2)=1
50 M_02=0
55 XLOAD 3,"CONTROLLINK"
60 XRUN 3,"CONTROLLINK"
70 WAIT M_RUN(3)=1
80 WAIT M_01=1
90 WAIT M_02=1
100 XSTP 2
110 WAIT M_WAI(2)=1
120 XSTP 3
130 WAIT M_WAI(3)=1
140 GETM 1
180 HLT
190 END
The DATALINK program in slot 3 (Listing 3) sends the timestamp, current joint
position, current speed of the tool centre point and current Cartesian position. Sending is
looped over lines 100 to 130, and is executed until a zero value is received. After closing
the communication port, the program notifies the MULITASK program by setting the
external variable M_02.
84
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
10 WAIT M_02=0
20 M_TIMER(1)=0
30 OPEN "COM2:" AS #2
35 INPUT #2,DATA
40 IF DATA = "0" THEN 160
100 PRINT#2, M_TIMER(1), "|", P_CURR, "|", J_FBC, "|", J_CURR, "|",M_RSPD(3)
130 GOTO 100
160 M_02=1
170 WAIT M_02=0
180 END
The CONTROLLINK program moves the robot manipulator by receiving and executing
movement commands. This program runs in cycle mode, and no user interaction, such as
moving the robot with the teach pendant, or by robot commands in controller
communication mode, is possible. Communication control is performed over the RS232
port, which results in a slow connection. However, it was still fast enough to directly send
and execute robot control commands. The movement control program is shown in Listing
4. The CNT command enables the robot to move to multiple movement positions
continuously without stopping at each movement position.
10 WAIT M_01=0
20 OVRD 100
30 GETM 1
40 CNT 1, 300
50 SERVO ON
60 OPEN "COM1:" AS #1
70 DEF JNT JNTPOS
80 INPUT #1, JNTPOS
90 MOV JNTPOS
100 GOTO 80
frequently applied in robotics. Denavit and Hartenberg (1955) showed that a general
transformation between two joints requires four parameters. These parameters, known as
the Denavit-Hartenberg (DH) parameters, have become the standard for describing robot
kinematics. Kinematics is classified as forward and inverse kinematics. The forward
kinematics problem is straightforward, and it is not complex to derive the equations.
Hence, a manipulator always has a forward kinematics solution. The calculation of the
inverse kinematics is computationally difficult, and generally takes a long time when
compared to real-time control contexts. Singularities, nonlinearities and multiple solutions
render the calculation more difficult. Thus, only a small class of manipulators with a
simple kinematics have complete analytical solutions (Kucuk and Bingul, 2004). The
relationship between forward and inverse kinematics is illustrated in Figure 44.
1 x
2 Forward Kinematics y
Joint (straight forward) Cartesian
Space
3 z
4
Inverse Kinematics
a Space
5 (complex) b
n c
The two main solution techniques for inverse kinematics calculations are analytical and
numerical methods. In the first type, the joint variables are solved analytically according to
given configuration data. In the second type, the joint variables are obtained on the basis of
numerical techniques.
Craig (2003) states that due to mechanical design considerations, manipulators are
generally constructed with joints which exhibit just one degree of freedom. Most
manipulators, like the employed Mitsubishi RV-2AJ, have revolute joints or have sliding
prismatic joints.
86
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
to simple robot structures such as the arm segments 1-3 of the employed robot in Figure 46
and Figure 47. The arm segments 4 – 6 of the most industrial articulated robots require
algebraic solutions. The joint axes cross at a single point, and geometric solutions are
therefore difficult.
d=72 c=160
b=250
a=300
87
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
The DH-parameters and the corresponding coordinate systems are shown in Table 6 and
Figure 48, respectively. The robot flange is the mechanical interface used to mount tools.
The tool centre point defines the application point of the tool. For example, a mechanical
hand may have its tool centre point in between its grippers. In the absence of tools, the tool
centre point is usually located in the middle of the flange surface. All calculations in this
subsection are executed without tools. The rules to derive the DH-parameters from the
robot geometry and variable explanations are stated in Appendix C.
Robot Arm d Θ a α
Link Number [mm] [rad] [mm] [rad]
1 300 π 0 π/2
2 0 π/2 250 0
3 0 0 160 0
4 0 π/2 0 π/2
5 72 π/2 0 0
Tool t 0 0 0 0
zt
yt xt
0
z5 y5
d=72 x5
z4 y4
x4
0
x3
z3
y3
c=160
x2 z2
b=250 y2
y1
x1 z1
a=300
z0 y0
x0
88
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
(Home position: )
(13) ( )
(14) ( ) ( ( )) ( )
Calculation of
89
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
(15) √
(16) ( )
(17) ( )
(18) ( ( ) ( )) ( )
√ √
Calculation of
The angle of joint 2 is calculated by considering , respectively arm segments b
and c.
90
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
(19) √ ( )
(20) ( )
(21) ( ) ( )
(22) ( ) ( )
(23) ( ) √ ( )
(24)
(25) ( ) ( ) ( ) ( ) ( )
(26) ( ) ( ) ( ) ( ) ( )
(27) 𝑡 ( ( ) ( ))
The joint angle must also consider the home position of the robot, as illustrated in
Figure 48. Thus, the angle must be subtracted from the angle value of to comply
with the defined home position of the robot.
(28) ( ( ) ( ))
Calculation of
is calculated by applying the 𝑡 function. The angle has to be subtracted
from the angle value of to comply with the defined home position of the robot.
(29) ( ) ( )
(30) ( ) √ ( )
(31) ( ( ) ( ))
(32)
91
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )
(33) ( )
( ) ( )
(34)
The tool coordinate system equals the coordinate system of the robot flange since no
tool is attached. It is given by equation (35).
(35) ( )
The angles to are already known from the geometric calculations above, and the
tool transformation is also known. Therefore, the transformation may be
calculated using equation (36) to achieve the angles and . is the computed target
matrix, which is also known. Generally, is given by equation (37).
(36)
( ) ( ) ( ) ( )
( ( ) ( ) ) ( ( ) ( ) )
( ) ( ) ( ) ( ) ( )
(37) ( ) ( ) ( ) ( ) ( )
( )
( ) ( )
( )
The joints and were found through comparison in equations (38) and (39).
(38) ( )
92
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
(39) 𝑡 ( )
The angles and are independent of the manipulator position, and they are only
dependent on the orientation of the tool centre point. Thus, those angles have to be set
correctly in order to reach a specified target location.
To calculate the reachability of a location, its orientation must be known. Otherwise, the
solution space may be large and an appropriate manipulator configuration must be chosen.
This is application dependent, and will be further discussed in Subsection 8.5.3.
An industrial manipulator can ‘fly’ curves in any direction, thus, a second parameter
was added for the orientation. The 5th-tupel ( ) with [ [ and
[ [ represents the configuration, while and represent the orientation, as shown
93
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
in Figure 53. is the angle between the x-axis of the frame and the airplane’s local
longitudinal axis in the plane. The orientation is equal to spherical coordinates
(Papula, 1998).
Industrial articulated robots do not have good movement capabilities when compared to
the industrial manipulator model. They most often provide joint, linear and circular
movement primitives. The circular movement is restricted to have a static radius during
circular movement. The restrictions on the steering angle are higher than on the classic
non-holonomic movement constraint.
Nevertheless, the industrial manipulator model, coupled with the restriction on the static
curvature radius were applied. Equally, the autonomous mobile robot has to meet the
constraints of the Dubins car coupled with the restriction to the static curvature radius to
allow direct comparison with the manipulator movements.
The provided robot control framework supports wireless local area network connections
to command the robot and to obtain sensor information. Commands, for example driving
commands, are generally sequentially executed until the end of the robot movement.
Driving commands allow the speed of each wheel of the Omni drive to be controlled. The
94
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
Omni drive controller also supports interpolated movement types such as linear and
circular movements by setting the linear speed in the plane, the 𝑡⃗ and ⃗⃗ direction, and a
rotational speed about the plane normal ⃗, as illustrated in Figure 56.
front
t
n
e
Figure 54: A Robotino robot from the company Figure 55: Local coordinate axes of the Robotino
Festo. robot.
95
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
y
n
t
e
R
P
z x
96
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
Circular movements may be executed using an angular speed that results in a circular
speed . The robot turns around the given local ⃗ axis and moves forward along the 𝑡⃗ axis
at the same time. It drives linearly forward when and . Equations (41) and
(42) are obtained with the given parameters 𝑡, , , , ⃗⃗ and , which are further
described in (40).
(40)
⃗ ( )
( )
(41) 𝑡
(42)
The orientation calculation of to the new orientation was carried out by computing
equation (43). The parameter is the actual orientation and position, 𝑡 is the Rotation
around the given axis ⃗⃗, is the translation of , so that ( ) ( ) and
is the back translation.
(43) 𝑡
Additional constraints are given in equations (44) and (45). The tangent direction is
continuous and the turning radius respects a minimum constraint. These paths may be
followed by a real vehicle without stopping, and therefore have a continuous curvature
profile in their motion.
̇
(44)
̇
(45)
These relations are non-holonomic (Barraquand and Latombe, 1989) and restrict the
shape of the paths of the mobile robot. Autonomous mobile robots with these constraints
applied are called Dubins car in (Dubins, 1957).
97
7 Research of the Robot Kinematics Model and the Robot Control Capabilities
7.6 Summary
Robot control applications require a connection to the real robot system. Sending robot
control commands as well as receiving information from the robot, such as the position,
speed and orientation, is necessary, especially for path-planning applications that focus on
algorithm development. This framework enables the utilization of a standard industry robot
system, an autonomous mobile robot, and a simulated robot. The kinematics computation
for each supported robot, including the simulated robot, was implemented.
The framework extends the Mitsubishi CR1 controller family robot system and employs
a new communication mode. It receives robot information during movement, and sends
robot commands during movement of the robot manipulator without stopping between the
commands.
98
8 Investigation into a Trajectory Planning
Algorithm to Support Intuitive Use of the
Robot Programming System
99
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
This chapter corresponds to objective four, which is the research and development of an
enhanced online robot programming support system that generates static robot programs
for industrial robot manipulators. The most important findings have been published in one
journal paper and one conference paper.
From the requirements described in Chapter 5, a method was researched to combine the
maintainability of the robot program and the shortness of the robot trajectory. In terms of
the clarity and changeability of the generated robot program, the maintainability is
important in industry, and enables the flexibility to modify existing robot programs
manually. The system provides the connection to external devices such as the robot, the
vision system, the joystick and the pointing device, and also integrates the required
software components.
Section 8.1 explains the usage scenarios of the robot programming system which has to
be supported by the developed system. An overview of the main components of the system
is described in Section 8.2. The probabilistic world model and the robot kinematics and
control framework have already been introduced in Chapters 6 and 7. The interaction with
the operator required assistance leading through the necessary steps to generate the robot
program. This assistance is based on a suitable HMI, which is described in Section 8.3, to
enable inexperienced operators to work with the system. The mission defines the overall
aim of the robot task, which can include gluing, handling or pick-and-place tasks. The
mission planner presented in Section 8.4 controls the trajectory planner, enabling it to fulfil
the given mission. Existing trajectory planning algorithms often execute path smoothing
after path finding, although these tasks are competitive. The proposed trajectory planner in
Section 8.5 allows the simultaneous execution of both tasks. In subsequent steps, these
trajectories have to be generated to a robot program file, which can be directly employed to
the industrial production system. Section 8.6 describes a geometric approach to
accomplishing this transformation step. The most important findings are summarized in
Section 8.7.
100
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
execution to reduce the need for special knowledge. The diagram in Figure 58 shows a
graphical representation of the considered use cases.
>>
ds
xte
en
>
d s>
nd
xt
e
en
s>>
<<
e xt
<< Import Start & Target
end s>> Locations and Path Data
<<ext
Im-/Export Pre-
Existing Data
s>>
nd
e xte Show
<< <<e
Locations xte
ten ds>> nd s>>
<<ex Pointing
Device
Create Mission
<<extends
>>
Teach Start & Target
Locations and Path Data
Input >
Joystick
s> Control
te nd
Place ex
<<
s>
>
Modelled s>
nd
<<extend
<<
e xte
Objects xte e
>
nd << Teachpendant
s>
>
te n d s>
> Control
<<ex
ds
>>
>
Keyboard
s>
Operator Workspace
<<e
Exploration x tend
s>>
Control
Manual
<<
ex
ten Exploration
ds
>>
Random
Auto <<extends>>
Exploration
Exploration
Plan Mission <<
ex
<<e ten
xte ds
nd s>> >>
Generate Robot Program
Robot Program Exploration
101
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
The use cases have to be subsequently executed in order to generate the robot program.
Thus, the workflow in Listing 5 has been defined to summarize the use cases.
1. Set up an online path planning and the enhanced online robot programming system
including hardware.
2. Importation of pre-existing data such as robot geometry and CAD data.
3. Create a mission using import, robot movements, CAD locations, pointing devices
or simulations.
4. Execution of the support system.
5. Robot program generation.
6. Uploading of the robot program file to the robot.
7. Removal of the support system.
102
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Collision
Mission Planner
Indication
World Model
Data Fusion
Operator
Human-Machine-Interface
Robot Control
Model Data
Model Data Import/ Trajectory
Positioning Planner
Locations
from Model Robot(s)
Mission Plan Visual Robot Robot Program Robot
Data
(Locations, Control Generation Kinematic
application
information) Locations from
Positioning
Robot Program
File
In general, the system provides an HMI that consists of a GUI, a joystick and a pointing
device. The main task of the system is to generate a robot program file from a given
mission. The definition of the mission still relies on the operator, who provides knowledge
of the application such as painting, gluing or pick-and-place tasks. A mission consists of
application locations and paths that include application information, such as the colour for
painting. Both can be provided within the model data or may be amended within the
support system. The application locations can be manually determined.
The robot control component controls the manipulator, the mobile robot and the
simulated robot. The robot kinematic component provides forward and inverse
calculations. Both components are described in Chapter 7. The robot system is equipped
with a teach pendant to control the robot movement manually. Additional input devices,
e.g. joystick, GUI of the robot programming system, visual servo-control, mouse and
keyboard, have been connected to simplify manual robot control.
103
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
The visual servo-control applies a pointing device to indicate the target location to the
robot using the marker recognition component. The robot moves automatically towards the
given location with the help of a neural network, and stores the position. Subsequently, the
network transforms picture coordinates into robot control commands, as described in
Subsection 8.3.2.
The importation of model-based CAD data was employed to represent the world model
more accurately. CAD data from simulation systems, such as RobCAD (Tecnomatix,
2011), can be exported as DXF files including all locations attached. Usually, CAD data
already exist in simulation tools and modelling software. They are taken from laser-scan-
or construction-processes. This model data was placed within the real robot cell, hence
improving the accuracy of the world model. In addition, these objects allow the use of
physically unavailable objects.
Data fusion combines all information sources to deliver cohesive data to the world
model. The data sources also include the robot positions from existing robot programs to
explore the working space. It was also explored by random or manually controlled
movements. Collisions are always processed during exploration so that free and occupied
areas of the workspace are explored throughout its movements by manual collision
indications. Thus, the world model becomes more accurate during the exploration process.
The mission and path planner presented in Sections 8.4 and 8.5 together handle the
planning of a motion in real-time, including shortest-path calculation and collision
avoidance. Finally, the entire robot motion is stored within the support system in the form
of a trajectory that consists of connected particles. Its transfer to a robot-specific program
file is achieved in two steps: first, the translation into a robot program of solely the
provided trajectory; secondly, the generation of the specific robot program enriched by
additional configuration commands and specific linguistic syntaxes. The two-step
generation, described in Section 8.6, also supports other robot types and languages.
All software components were created with the developed code generation toolchain
presented in Chapter 9. Each of those components is an independent component with a
clear interface to the software framework. This simplified the use of third party work, such
as for DLL integration. All components may be developed independently as soon as the
interface and information exchange are specified. Each component provides life-cycle and
104
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
105
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Attributes
Commands Composites
Toolbar
The GUI is structured into five main components, as shown in Figure 60. During the
development phase of the system, debugging was required to implement the user
interaction. The debugging-related widgets, the attributes, the commands, and the log
window are not shown in the final version.
The robot program generation-related widgets are placed within the ‘Composites’ area
in Figure 60. A composite is a Java class containing SWT widgets that are required by a
software component to allow user input with a GUI. Each individual software component
that requires user input encapsulates its own composite, which is dynamically integrated
into the GUI. The fixed tab ‘Workflow’ dynamically displays all state dependent
composites. For each state change, the appropriate composite is displayed. The ‘Vision’
tab shows the camera views and the ‘Scene’ tab contains a graphical representation of the
world model, which is visualized by a Java 3D viewer.
Each connected software component may provide attributes which are displayed within
the ‘Attributes’ area. The message-based communication of these components allows the
106
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
display of all allowed messages within the ‘Commands’ area, and can be directly executed
during debugging.
The Finite-State-Machine
The Finite-State-Machine was realized using UniMod (eVelopers Corporation, 2011),
which is an open-source application. It allows the developer to design an application
logically with the help of state-chart diagrams and the generation of Finite-State-Machine
Extensible Markup Language (XML) description files. The XML-description files are
executed using a Finite-State-Machine runtime framework.
Application
Finite-State- Incoming message
Machine
Framework Outgoing message
Internal message
Event
Provider Internal data flow
Controlled GUI
Object Adapter
The UniMod resource of the GUI consists of three parts. The event provider transforms
received messages into events that can be processed. The controlled object connects the
Finite-State-Machine with the ‘GUI Adapter’ to control the GUI. The ‘GUI Adapter’ is a
Java class that was required to decouple the GUI source code from the user code. The
Jigloo SWT/Swing GUI builder (Cloudgarden, 2011) was utilized to create the user
interface.
107
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
As shown in Figure 62, the finite state machine was employed to control the GUI.
Buttons on the GUI send messages to the finite state machine and cause a state change.
This leads to a GUI change in the toolbar and the composites.
108
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
109
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Dynamic Toolbar
The toolbar is dependent on the underlying finite state machine and presents three fixed
elements on its left: ‘Exit’, ‘Previous state’ and ‘Next state’. These elements are fixed for
all states. The buttons ‘Previous state’ and ‘Next state’ lead the user through predefined
usage guidelines. The ‘Exit’ button shuts down the robot programming system and closes
the GUI.
State dependent buttons are dynamically added to the toolbar. They represent the
possible state transitions to connected states from the current state. If one of these buttons
is clicked, the trigger activates the transition to the desired state. All buttons are
represented by a symbol and the associated name of the state as tool tip text.
An important aspect of the finite state machine concept is the parsing of the state
machine for connected main states to display the workflow in the toolbar, as illustrated in
Figure 63.
The finite state machine is separated into main states (‘ms_’) which represent individual
composites, and general states (‘s_’) which have internal functions. Every main state has a
state number that is defined by the standard path through the finite state machine, which is
proposed to the user as a standard workflow. Within each parent state, its child states are
numbered starting from zero, as demonstrated in Figure 64. The operator may leave the
proposed workflow, for example by following the dashed path. The next and previous
states along the proposed workflow have to be calculated in order to lead the operator
along the proposed path.
This was done for the previous state by obtaining the previous state with the highest
number which is smaller than the current state number. For the calculation of the state prior
to the first state within a parent state, the previous state of the parent state is calculated in
the same manner.
110
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
The next state is calculated by obtaining the subsequent state number that is greater than
the current state number. For the next state calculation of the last state within a parent state,
the next state of the parent state is calculated.
ms_0_state_a
ms_0_state_b
ms_1_state_c
ms_0_state_e
ms_2_state_d
ms_1_state_f
ms_1_state_g
111
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
function network. The robot moves automatically towards the given location. An overview
of the visual servo control application is given in Figure 65.
Joint angles
Processing unit
Robot
The neural network is trained with randomly chosen target locations. The target location
is monitored from the cameras and their signals are applied to the neural net. Each neuron
is responsible for a subspace of the robot cell. An activated neuron provides control signals
to the robot controller. Each camera of the vision system delivers a two-dimensional image
coordinate of the viewing pane, and the neural network learns the transformation to control
signals for the five robot joints. The robot moves to incorrect robot positions at the
beginning of the learning process, but the accuracy is improved with each learning position
and the difference between the robot positions and the target positions. There was no need
for more information about the robot, the cell, the cameras or its positions in space. This is
the typical behaviour of an autonomous learnable system.
112
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
the mission planner and the path planer are interconnected to exchange mission planning-
related data.
113
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Mission
(including Tasks)
&
Trajectory
Local Obstacles & Planner
Workpieces
Sensor
Input
Robot &
Environment
114
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Robot Cell
Mission Robot
Robot
Planning Program
Manipulator
En- Robot-Control-
Commands
hanced Motion
Online Planning Effector
Robot Internal Sensors
(position/velocity)
Program-
ming
System
Environment
GUI
Obstacles
World
External Sensors
Model
Workpieces
control
Mission Path
Planner path length Planner
115
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
planner. In the proposed system, a brute-force algorithm was used, and as such, it is
desirable for a demonstration system, although it is limited to operation with few
application paths.
Mission and path planning was based on the object model presented in Figure 69. A
mission consists of one start and one target location as well as a number of application
paths. A path is subdivided into roads that connect the start and the target, in addition to
crossing locations and application locations. The final trajectory is the result of the path
and trajectory planning calculations. An application path may also contain application
information, e.g. movement type, application type, colour and other information required
for spraying, painting or other tasks.
Road R4 Target
Road R5 L2 LT
L5 L6
R3 C1
A2 L9
L4
Obstacle Application
Path P1 Obstacle
O1
O2
A1 L8
L3 Crossing Application
Location Node
L1 C1 R2 L7
Location
Road R6
LS
Road R1
Start
Figure 69: Definition of the roadmap elements. A1 and A2 set the start and end location of the application path.
To accomplish a mission, the optimal route must be found that connects each
application path from the start to the target location, as illustrated in Figure 70.
116
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Application
Target
Node
Application
Path L1
Obstacle L3
Obstacle
L2
Start
Figure 70: Illustration of possible path connecting three application path for mission task planning.
Because no exact data is known beforehand, the path distances between each sub-goal
are not known, and may be estimated and subsequently calculated by trying to connect
each sub-goal with each other using robot movements. In the case of lines, the end of the
application lines must be fully connected to the target location and starting locations of
other application lines. An example can be given with a mission that consists of three lines
for a welding application ( , and ). The resulting combinations (in this case 12
connections) have to be planned to achieve the connection length for mission planning, as
illustrated in Table 7.
to Goal
from
Start O X X X
X O X X
X X O X
X X X O
The lengths of linear and circular application paths are known beforehand. The
connection length is the length of the trajectory that connects two locations. This is found
with the path planner, which tries to connect these locations. Once a path is connected,
complete path length information is available, which can be utilized for mission planning.
117
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Path planning generally relies on inexact data of the robot and the environment, which
are stored into the in-memory world model with the help of sensor information. Vision
may help to increase the knowledge of the world model. The world model employed in this
study was introduced in Chapter 6. The mathematical treatment of forward and inverse
kinematics, as well as the control of the employed robots was presented in Chapter 7.
The interaction of the path planner and the mission planner are described in Section 8.4.
While the path planner focuses on the creation of the trajectory, the mission planner
handles a higher level of path planning. The path planner calculates a path, and controls the
robot along that path until a collision is detected, the kinematics constraints are not met or
until the target is reached. In each case, the updated path length information is delivered to
the mission planner, which re-plans the mission on a higher level.
A robot trajectory is a path in the working space of the robot. Each point on the path is
described as a vector with the position and the time. The trajectory planning task is to find
a collision-free movement of the robot from the start to the target location, considering the
motion constraints of the robot (e.g. a car that cannot move sideways), while also
satisfying the requirements for readability, maintainability and changeability of the derived
robot program.
The presented algorithm is executed in three steps. First, it analyses the topology of the
working space to create a roadmap with the Voronoi-based approach described in
118
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Section 8.5.5, which also considers obstacles and the reachability of the utilized robot. This
roadmap is employed in the second step to find the shortest path connecting the start and
target locations. At this stage, the found solution path does not fulfil the requirements of
the robot program features. Thus, in the third step, the solution path is adapted, modified
and smoothed to represent a trajectory with basic circular and linear movement primitives.
The general trajectory planning workflow is presented in Subsection 8.5.1. The robot
manipulator reachability and discretization of its configuration space are discussed in the
Sections 8.5.1 and 8.5.3, respectively. Path planning with exact search algorithms are
generally time consuming, and approximation methods have therefore become more
important. Neural networks have demonstrated good approximation capabilities and are
analysed in Section 8.5.4 to be employed for path planning. Neural network path planning
results have shown that the principles identified in this way may also be employed for a
cell-based path planning approach, which is detailed in Section 8.5.5. For path planning
with dynamic obstacles, the state time space was considered, and is detailed in
Section 8.5.7. The transformation of a given path to a trajectory by concatenating circular
and linear movement primitives with the help of particles is explained in Section 8.5.8.
The trajectories were generated by calculating the shortest path within the roadmap joint
positions from the start to the goal. In a subsequent step, the identified path was
transformed to a trajectory consisting of movement primitives. Transformation into a
trajectory was achieved by applying equidistance, rotation and shrink forces on the joint
space positions (Kohrt et al., 2006b). This lead to a trajectory formed by canonically
ordered movement primitives, which had linear and circular movements. The trajectory
generated in this way avoids obstacles and reduces their clearance.
A linear octree (Gargantini, 1982b) was utilized to represent the working space of the
robot and a roadmap in a spatial in-memory world representation. Information
concerning the environment in which the robot operates, including obstacles, was captured
within the octree. The octree was improved during trajectory planning with real sensory
119
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Finally, the robot was moved along the found trajectory until either a collision or a
robot kinematic constraint violation occurs, a shorter path is found by the search algorithm,
or the target is reached. This often triggers a re-planning of the trajectory if a shorter path
is recognised. Because real robot movements are involved, this should not happen too
often. To prevent this, a hysteresis is applied. The hysteresis was also utilized to employ an
additional exploration of the workspace, which improves the knowledge of the world
model.
120
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
121
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Various approaches for discretizing the configuration space have been reported in
literature. The approaches reported by Reif and Wang (2000), Yang et al. (2011) and
Zacharias et al. (2007) use hierarchical structures, capability maps or non-uniform
discretization to optimize the search space to enable efficient searching. Thus, optimization
can generally be reached by minimizing or ordering the search space specifically for the
applied search algorithm.
The planning algorithm described here was executed in the constrained configuration
space to improve the search algorithm. The reachability of the robot was required to
calculate these constraints. In addition, the mechanically valid positions were utilized to
minimize the discretized space.
Henrich et al. () and Reif and Wang (2000) describe an optimal discretization approach
that sets the resolution along each configuration coordinate (robot axis) according to the
maximum movement of the robot end-effector for each step that the robot moves along this
coordinate. The discretization resolution is determined with
( ) of a -dimensional configuration space. A uniform discretization for
all joints of the robot manipulator can be defined with for some constant .
With a reasonable joint resolution of , the uniform discretization results in very large
configuration spaces. For example, a discretization of the joints of the Mitsubishi RV-2AJ
with ( ) results in a configuration space with states.
122
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
The algorithm presented in this work is based on equation (46), where is the distance
between the centre of joint to the farthest point to which the end-effector can reach, and
is a pre-set distance that the robot may move for one step along the coordinate.
(46)
The optimal discretization results in Cartesian movements of joint , which meet the
condition , where { }. For
of a Mitsubishi RV-2AJ, the optimal discretization equals to equation (47).
(47) ( )
The size of the corresponding configuration space obtained considering the mechanical
constraints of the utilized Mitsubishi robot is states. This is times less
than the uniform discretization with ( ) and
states.
123
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
with given information regarding its position and orientation. Because the orientation can
be arbitrarily chosen, inverse calculations lead to intensive computation.
This problem was studied in (Yang et al., 2011, Zacharias et al., 2007), and a simple
pre-calculation step was proposed to generate and to preserve the required information in a
look-up table by performing forward calculations of the robot arm configuration to the
points in space. The look-up table may generally be used if the robot kinematics is static
and known beforehand. However, since this algorithm is used in an industrial environment,
both statements are fulfilled. The aim of the look-up table is to represent the reachability
using a limited number of joint positions to reduce the search space for a path-
searching algorithm. The number of joint positions has a direct impact on the running
time of the path-searching algorithm and the required pre-calculation time of the look-up
table. The limitation exists because of the employed search algorithm described in
Subsection 8.5.6.
The implemented linear octree - the world model - has a defined depth , which
enables the calculation of the smallest octree cell size. This can be further employed to
estimate the robot link dependent accuracies , which have to be carefully chosen. To
guarantee that the path-searching algorithm will successfully complete the search task, a
sufficient number of discretized positions are ensured to be stored for each octree cell
on the deepest level.
The octree accuracy does not need to be very high because the employed trajectory
planning approach discussed in Subsection 8.5.6 only applies to the octree for path
searching. The trajectory generation algorithm actively requests additional positions, and
operates almost independently from the octree.
probability distribution with its topology-preserving feature. The weight vectors are
adapted and moved towards the input vector. This unfolds in an approximated robot
configuration-space model represented by the neural network.
125
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Location
Ob-
stacle
Obstacle
Location
Obstacle
Figure 72: Workspace approximation of the obstacles and the free space with robot configuration locations.
Integration of Forces
In general, the weight adaptation rules of the Colored Kohonen Map are applied on the
winner node including its neighbouring nodes (Blackmore and Miikkulainen, 1993, Cheng
and Zell, 1999, Fritzke, 1995, Fritzke, 1991, Fritzke, 1993, Fritzke and Wilke, 1991,
Ivrissimtzis et al., 2003, Vleugels et al., 1993).
The weight adaptation equation (48) (see also equation (120) in Appendix F) has been
extended by Vleugels et al. (1993) to create a coloured version of the neural network. This
has mainly been accomplished by modifying the weight adaptation term ( ) of
equation (48).
(48) ( 𝑡) ( )( )
This extension was further used to integrate additional weight adaptations which
represent forces on the nodes. Thus, the first extension by Vleugels et al. (1993) is a force
to generate a roadmap in the Voronoi form, which is used to find a shortest path from the
start to the target location. The second extension is a force to approximate the obstacles.
As illustrated in Figure 73, the Coloured Kohonen map applies only forces on unsafe
nodes if the input vector, which is illustrated as a cross in the figure, is safe, so that the
126
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
nodes move towards the safe position without violating the obstacle boundary. If the input
vector is unsafe, forces on safe nodes are applied so that the particle moves away from the
unsafe position.
Figure 73: Forces on the safe and unsafe nodes for random inputs, marked as crosses.
Node Movement
Weight adaptation results in movements of the particles and may violate constraints,
e.g. when a roadmap node collides with an obstacle. Care was taken for collisions of safe
nodes with approximated obstacles, which are represented by unsafe nodes. Collision
checks were performed by simple vector-vector (2D) or vector-polygon (3D) collision
checks. The movement of a node does not violate the border of its neighbouring nodes.
Those checks have only been applied on edges and polygons of adjacent nodes to reduce
processing time. The movement vector that collides with an edge or polygon must be
recalculated so that its direction is parallel to the edge or polygon surface, allowing a drift
along the obstacle boundary. The calculations can be found in Appendix G.
127
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
The architectural changes also include edge removal and addition. An edge is removed
if two unsafe nodes are connected and have no common neighbour. If the safe node loses
all of its edges, it is also removed. If new nodes are added, the connectivity to its
neighbours is built by new edges.
The adaptations of the neural net were separated into scene-based and error-based
modifications. Black nodes are generally unsafe nodes, white nodes are safe nodes and
grey nodes are the new nodes. Error-based modifications are executed after iterations
during the neural network learning process. A new node is generally placed between the
node with the highest error and its furthest safe neighbour. A second node is generally
placed between the node with the highest error and its furthest unsafe neighbour.
A new node is placed on long edges between the node with the highest error and its
furthest safe neighbour with two common safe neighbours (Figure 74). The new node is
also connected to all common neighbours.
If no such neighbour exists, a safe node is added on the edge to its furthest unsafe
neighbour. It is connected to both unsafe and safe nodes (Figure 75). Nodes that are near to
the boundary are not changed (Figure 76).
128
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
¼ Sampling
¼ ½
An unsafe node is added at the ½ position and is connected to all neighbours when
the ¼ and ½ samplings are both unsafe (Figure 77).
A new unsafe node is added at ½ to the furthest unsafe node that has at least one
common safe neighbour when the node is located on the boundary. Nodes are on the
boundary when the ¼ sampling is safe (Figure 78). The new unsafe node is connected to
all neighbours. If the node is not on the boundary, an edge is added halfway to the furthest
safe neighbour when that configuration is located in the unsafe space.
129
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Scene-based unsafe node addition takes place at the collision configuration when a safe
node is pulled by a safe node into forbidden space. The new unsafe node is connected to all
neighbours.
Figure 80: Scene-based unsafe node addition. Figure 81: Scene-based unsafe node addition.
If a safe node is pulled by an unsafe node into forbidden space, an unsafe node is added
at the collision configuration and it is connected to all neighbours.
If an edge between two unsafe neighbours is partially within safe space, a safe node is
added. This is tested with three random tests along their connection.
130
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Figure 83: Workspace approximation of the obstacles and the free space.
Roadmap generation forces simplify the roadmap with the aim of reducing the number
of nodes and straightening the roads. The roadmap then represents the connectivity of the
space and forms the topological map, as shown in Figure 84. The Voronoi form was
installed with the aim to maximize the clearance of the robot to all obstacles during robot
movement.
131
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Shrinking forces apply on all nodes with either more or less than two connections, but
not exactly two connections. Nodes with two connections are in the desired form, and do
not need to be further collapsed. This will shrink nodes that are either alone or individually
connected, such as end points or multiple connected nodes. Simplification is realized by
collapsing nodes until only two connections remain for every node. Nodes that represent
mission locations such as the starting location of an application path are excluded.
For each safe node that has exactly two unsafe neighbours, the vector is calculated
with the equation (49) to move the particle in the middle of two unsafe particles.
⃗⃗⃗⃗⃗ ⃗⃗⃗⃗⃗
(49)
(⃗⃗⃗⃗⃗ ⃗⃗⃗⃗⃗)
The two vectors ⃗⃗⃗⃗⃗ ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ and ⃗⃗⃗⃗⃗ ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗, which represent the vectors to the two unsafe
nodes, were added and normalized, and finally multiplied with a small constant .
Summary
In fact, implementation tests of the algorithm presented by Vleugels et al. (1993) have
shown that the Voronoi form is rarely reached. Adjustments of the parameters by trial and
error, as suggested by the authors of (Vleugels et al., 1993), have also not led to any
improved results. In addition, real-time robot control with this kind of neural network
requires processing of the neurons to adapt to the environment including the obstacles.
Because random positions are not available in real environments, the proposed approach
was no longer applied here.
132
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
The octree stores its cells in a predefined maximum accuracy defined by the octree
depth. Each cell stores a reachability value, which indicates whether or not the robot can
move its tool-centre-point (e.g. the robot hand) into the cell area. The general reachability
is stored in a pre-calculation step described in Subsection 8.5.3.
In addition, each cell also stores an occupancy value. Cells are defined as fully
occupied, partially occupied or free, depending on the obstacles within the working space.
This information is input by external sensors through the data fusion framework presented
in Section 6.4. A collision button and CAD data for the construction process of the
working cell were utilized in the test environment to detect obstacles. The choice was
made because model data is often available, and the operator itself is a reliable source that
can detect collisions. Additionally, more advanced sensors such as machine vision can also
be applied to increase the recognition performance.
The occupancy and the reachability information are incorporated to create a roadmap
within the reachable free space of the octree. The roadmap forms a Voronoi diagram,
which is created by a cell-based algorithm within the octree.
Hence, the concept on which the Voronoi form is based was extended and applied to a
grid-based algorithm. First, the obstacle and border cells are added to an open list. Then,
all neighbour cells are iterated for all elements in the open list in order to mark them with
the obstacle number based on the currently examined element of the open list. The
133
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
currently examined element is moved from the open to the closed list, and extended cells
are added to the open list to be examined in the next iteration.
1. Store all border, obstacle and extended cells in the open list
2. While open list element count > 0
2.1. Take first cell from the open list
2.2. Inspect all neighbour cells of and mark each extended neighbour
cell according to the following conditions:
2.2.1. If the extended cell is located between two or more obstacles
[Link]. If the cell is not reachable it is marked ‘0’
[Link]. Else it is marked ‘-1’
2.2.2. Else copy the mark from cell
2.3. Add all neighbour cells of , which are not in the closed list, to
the open list
2.4. Move cell from the open list to the closed list
3. Wend
134
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
10 10 10
10 10 10
10 10 10 21
10 10 10
10 10 10
10 10 10
10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 10
10 -1 3 3 3 23 3 3 3 3 3 3 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 -1 -1 -1 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 2 2 2 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 2 2 2 -1 -1 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 2 2 2 2 2 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 2 2 2 2 2 -1 -1 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 2 2 2 2 2 2 2 -1 10
10 -1 3 3 3 3 3 3 3 3 3 -1 -1 2 2 2 2 2 2 2 -1 -1 -1 10
10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 2 2 2 2 2 2 2 2 2 -1 10
10 -1 2 2 2 2 2 2 2 2 2 22 2 2 -1 10
10 -1 2 2 2 2 2 2 2 2 2 2 2 2 -1 10
10 -1 2 2 2 2 2 2 2 2 2 2 2 2 -1 10
10 -1 -1 -1 -1 -1 2 2 2 2 2 2 -1 -1 -1 10
10 -1 2 2 2 2 2 2 -1 10
10 -1 -1 -1 -1 -1 -1 -1 -1 10
10 10
10 10
10 10
10 10
10 10
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
The grid used in the implementation is a three-dimensional octree, which allows the
addition of obstacles during runtime, while recalculation is only necessary for their
neighbouring areas. The octree also provides the opportunity to use its hierarchy to speed
up the algorithm. Application of this cell extension approach builds a roadmap that
supports the real-time development of the topology and connectivity of the robot
workspace.
This algorithm is applied to the tool centre point of the robot. The maximum clearance
of the whole robot arm to the obstacles is indirectly considered because reported collision
indication positions are stored as robot posture data in the cell. The cell occupancy is
135
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
always calculated based on all postures, and its occupancy value is therefore calculated
accordingly.
As described in Chapter 6, the octree exhibited two limitations (Hwang et al., 2003) in
path planning. First, the detection of small passages requires a highly accurate
octree/quadtree. Secondly, the shortest path is not always identified since the distance
calculations of the cells always use the midpoints of the cells.
The first aspect requires the involvement of many cells; consequently, the planning
stage may have a long processing time. Hwang et al. (2003) proposed the use of an
obstacle dependent grid to overcome this limitation. However, the octree representation is
used here to interface between world and joint space coordinates. The number of cells is
reduced by the transition to the not occupied joint positions which are assigned to each
cell, and by only subdividing needed cells.
The second aspect is solved using joint positions within a cell and the joint distance
metric for the A* search. The joint positions deliver exact distance lengths, even on higher
levels of the octree. The octree cell size is therefore decoupled from distance
measurements.
136
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
10
-1 -1 -1 -1 21
-1 23 -1 1 -1
-1 3 -1 -1 -1
10 -1 -1 -1 2 -1
23 -1 10 -1 -1 22
-1 -1 10 -1 -1
10 10
Figure 87: Level 1, edge Figure 88: Level 2, edge Figure 89: Level 3, edge
length: . length: . length: .
10 10 10
10 10 10 10 10 10
Not reachable
Not reachable
10 10 21
10 10 10 10 10
10 10 10
10 10 10 10 10
10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 10
-1 -1 -1 -1 -1 -1 1 -1 1 -1
10 -1 3 3 3 3 3 3 3 3 3 3 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 10
-1 3 3 3 3 -1 -1 -1 -1 -1
10 -1 3 3 3 3 3 3 3 3 3 3 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 10
10 -1 3 23 3 3 3 -1 10
10 -1 3 3 3 23 3 3 3 3 3 3 -1
Omitted 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 -1 -1 -1 -1 10
10 -1 3 3 3 3 -1 -1 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 2 2 2 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 2 2 2 -1 -1 -1 10
10 -1 3 3 3 3 -1 2 -1 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 2 2 2 2 2 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 2 2 2 2 2 -1 -1 -1 10
10 -1 3 3 3 3 -1 2 2 -1 -1 10
10 -1 3 3 3 3 3 3 3 3 3 3 -1 2 2 2 2 2 2 2 -1 10
10 -1 3 3 3 3 3 3 3 3 3 -1 -1 2 2 2 2 2 2 2 -1 -1 -1 10
10 -1 -1 -1 -1 -1 -1 2 2 2 -1 -1 10
10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 2 2 2 2 2 2 2 2 2 -1 10
10 -1 2 2 2 2 2 2 2 2 2 22 2 2 -1 10
10 -1 2 2 2 2 22 -1 10
10 -1 2 2 2 2 2 2 2 2 2 2 2 2 -1 10
10 -1 2 2 2 2 2 2 2 2 2 2 2 2 -1 10
10 -1 -1 -1 2 2 -1 -1 10
10
Omitted -1 -1 -1 -1 -1 2 2 2 2 2 2 -1 -1 -1 10
Omitted
10 -1 2 2 2 2 2 2 -1 10
10 -1 -1 -1 -1 10
10 -1 -1 -1 -1 -1 -1 -1 -1 10
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
Figure 90: Level 4, edge length: . Figure 91: Level 5, edge length: .
137
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
The cell is marked by an occupation value according to the reported and fused sensor
value . A probability threshold of is applied in equation (50) to transform the
cell occupancy value to the binary value required by the Voronoi roadmap
generation algorithm.
𝑡
(50) {
Parent cells are either updated to partly or fully occupied, depending on the occupation
of the child cells of the parent. Parts of the Voronoi roadmap have to be recalculated if new
collision information is processed. A minimum distance of the robot TCP is
introduced to those obstacles, and is used to clear surrounding extended groups of cells
within the distance . An example is illustrated in Figure 92.
138
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
10
10
10
10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
10 -1 4 4 4 4 4 4 4 4 4 4 4 4
10 -1 4 4 4 4 4 4 4 4 4 4 4 4
10 -1 -1 -1 -1 4 4 4 4 4 4 4 4 4 4
10 -1 -1 1 1 -1 4 24 4 4 4 4 4 4 4 4
10 -1 1 1 1 -1 4 4 4 4 4 4 4 4 4 -1
10 -1 21 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
10 -1 -1 -1 -1 -1 5 5 5 5 5 5 5 5 -1
10 -1 2 22 2 -1 -1 -1 25 5 5 5 -1 -1 -1
10 -1 2 2 -1 -1 3 -1 25 5 5 -1 -1
10 -1 -1 -1 -1 23 3 -1 25 5 -1 -1
10 -1 23 -1 -1 25 -1 -1
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
10
10
10
10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
10 -1 4 4 4 4 4 4 4 4 4 4 4 4
10 -1 4 4 4 4 4 4 4 4 4 4 4 4
10 -1 -1 -1 -1 4 4 4 4 4 4 4 4 4 4
10 -1 -1 1 1 -1 4 24 4 4 4 4 4 4 4 -1
10 -1 1 1 1 -1 4 -1 -1 -1 -1 -1 -1 4 -1 -1
10 -1 21 1 1 -1 4 -1 26 6 6 6 -1 -1 -1
10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
10 -1 2 22 2 -1 3 -1 25 5 5 5 -1 -1
10 -1 2 2 -1 -1 3 -1 25 5 5 -1 -1
10 -1 -1 -1 -1 23 3 -1 25 5 -1 -1
10 -1 23 -1 -1 25 -1 -1
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
Figure 92: Dynamic and fast cell extension example (before and after update).
The cell in position (9, 6) is updated and marked as occupied (see second figure, cell
number 26). A radius of cells is considered. As a result, the group information
and the Voronoi path are recalculated.
The second example in Figure 93 focuses on the defined distance and shows how the
distance affects the Voronoi path generation. The distance to the occupied cells should be
maximised within the given boundary of . The occupied cell ‘27’ (only its extended
cells ‘7’ are visible) is next to the newly added occupied cell ‘26’, and the Voronoi path is
therefore adapted. The guaranteed space between the Voronoi path and the newly added
139
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
cell is ⁄ because the cell extension mechanism starts from the given distance and
grows from both sides in order to meet in the middle of .
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
4 4 4 4 4 4 4 4 4 -1 7 7 7 7 -1 4 4 -1 6 6 6 6 6 6 6 6 6 -1 7 -1
4 4 4 4 4 4 4 4 4 -1 7 7 7 7 -1 -1 4 4 -1 6 6 6 6 6 6 6 6 6 -1 7 -1 -1
4 4 4 4 4 4 4 4 -1 -1 -1 -1 7 7 7 -1 -1 4 4 -1 6 6 6 6 6 26 6 6 6 -1 7 7 -1 -1
4 4 4 4 4 4 4 -1 -1 -1 -1 7 7 7 -1 4 4 -1 6 6 6 6 6 6 6 6 6 -1 7 7 7 -1
4 4 4 4 4 4 -1 -1 -1 -1 7 7 7 4 4 -1 6 6 6 6 6 6 6 6 6 -1 -1 7 7 7
-1 -1 -1 -1 -1 -1 -1 -1 -1 7 7 -1 -1 -1 6 6 6 6 6 6 6 6 6 -1 -1 -1 7 7
5 5 5 5 -1 -1 -1 -1 7 5 5 -1 6 6 6 6 6 6 6 6 6 -1 -1 -1 7
5 5 5 -1 -1 -1 -1 5 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
5 5 -1 -1 -1 5 5 -1 -1 -1
5 -1 -1 5 -1 -1
-1 -1 -1 -1
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
The algorithm is summed up in Listing 9, where the group information is updated for
each obstacle addition.
140
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Roadmap Elements
Target
Trajectory
Node
Route
Obstacle
Start
Node Road
Application Obstacle
Node
Trajectory
Segment
Cross
Node
The roadmap elements are represented in Figure 94. A mission provides specific
mission data, such as start and target locations of application paths and additional
application specific information. The roadmap consists of roads, paths and nodes. A road is
a connection of two nodes that have to be start, target or cross nodes. An application node
location is defined in the mission data, and is the start or target location of an application
path. The connection between two nodes is a path, where two types of paths are possible:
an application path and a transfer path, which is not a part of an application. An application
road consists of application paths. A trajectory may be calculated from a route between
two nodes. A route consists of roads. Trajectory segments are roads that are transformed
into a trajectory. The roadmap was utilized to calculate the trajectory during the execution
of the path planning system.
141
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
of the working space. The calculation of the heuristic directly influences the calculation
time of the algorithm.
The A* search algorithm is utilized to search within the joint positions of the Voronoi
roadmap in order to connect the start to the target locations. During the planning of a
trajectory, an improvement of the roadmap takes place with collision information to
improve the approximation of the obstacles within the working space.
The start and target locations are handled as obstacles and the Voronoi roads are
generated around them. The extended cells of the start and target cells are added to the
search space to connect the location with the Voronoi roads.
The employed algorithm finds the shortest path with the help of heuristics to direct the
search towards the target. The heuristic should not overestimate the distance to the goal.
Therefore, the joint distance metric is utilized as the heuristic for the A* algorithm. The
connectivity of the joint positions is given by the octree cell connectivity. All joint
positions of one octree cell are connected to all joint positions of the neighbouring octree
cells. This may result in high running search times if too many joint positions are stored
within the octree cells. The discretization calculation described in Subsection 8.5.2 has to
consider this by choosing the parameter within the equation (46) accordingly.
This is highly dependent on the robot geometry.
As mentioned in Chapter 6, the occupancy probabilities of the cells and of the binary
tree joint positions are considered as movement costs during path planning. Because the
search is not executed within the cells, but within the joint positions, each joint position is
allocated the probability given by ( ).
The connectivity of the octree cells includes direct and diagonal neighbours so that each
non-boundary cell has 26 neighbours. The octree is an extension of the quadtree, which has
highlighted two limitations (Hwang et al., 2003) in path planning. First, the detection of
small passages requires high accuracy of the octree/quadtree. Secondly, the shortest path is
not always identified since the distance calculations of the cells always use the midpoints
of the cells.
142
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
The first aspect requires the involvement of many cells. Consequently, the planning
stage may take a great deal of processing time. Hwang et al. (2003) proposed the use of an
obstacle-dependent grid to overcome this limitation. However, in the newly proposed
approach, the octree representation is used to interface between world and joint space
coordinates. The number of cells is reduced by the transition to the joint positions which
are assigned to each cell, and by only subdividing the required cells.
The second aspect is solved using joint positions within a cell and the joint distance
metric for the A* search. The joint distance between two joint positions is directly
computed by the difference of these joint positions. The distance measurement is executed
on the joint positions and not on the cells; therefore the octree cell size is decoupled from
the distance measurements.
The roadmap itself is not changed during the trajectory calculation process, except for
additional knowledge that has been gained during the exploration process of the robot.
Exploration is always carried out when the robot moves within the working space, and
additional information is stored within the world model.
The trajectory is calculated based on the found route, and it is followed by the robot. It
is the most optimal trajectory based on the level of knowledge in the world model. The
global optimality of the path is not yet assured, since forces are still applied to the nodes of
the routes and obstacles may still be found, making the re-planning of the trajectory
necessary. The system always tracks the estimated distances to the target.
Moreover, the application of the A* algorithm to a real robot results in the re-planning
of the path itself each time a collision occurs. Collisions force the robot to undo its
movement to the start location. Because real robot movements are involved, this should not
happen too often. Therefore, an additional exploration of the working space is executed.
Consequently, the system obtains environment information stored within the world model.
Together with the probabilistic occupancy map projected on joint positions, the A* path
planning method always delivers the shortest roadmap Voronoi road, if one exists. The
search space is reduced by the Voronoi form in world space, and the reachability
calculation is dependent on the robot geometry. The joint positions are carefully distributed
143
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
along the roadmap paths. By applying this approach, good performance of the search stage
is assured.
Kant and Zucker (1986) suggest the separation of obstacle types into static and dynamic
obstacles. Dynamic obstacles within a robot cell were further subdivided considering their
state-time within a production cycle. The state of an object describes its position and
orientation. The state-time space is the combination of the time dimension, measured from
the start of the production cycle, with the state of the object.
An object may have a predictable and defined trajectory, which may also be
programmed. If this trajectory is controlled by the production control logic in a coordinated
manner with the robot program, this object is timely synchronized. For example, such an
object can be the door of the body of a car that is opened by the robot at a specified time in
the program cycle. The production control logic normally takes input signals, e.g. when a
robot escapes a defined robot cell space or from production devices, to control the
workflow. These events are synchronization points, and are depicted in Figure 95.
Obstacle 1 Obstacle 2
Movement Movement
144
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Static obstacles are a special case, and are derived from dynamic, timely synchronized
obstacles with predictable movements. An overall object-type definition is given in
Table 9.
1. Predictable movement
a. Timely synchronized
i. Static obstacles
ii. Dynamic obstacles
b. Timely unsynchronized
i. Dynamic obstacles
2. Unpredictable movement
The state time space is introduced by Fraichard (1999). It allows the transfer of the
roadmap in state space into a graph in state time space by considering the time dimension.
A reproducible movement can be transferred to the state-time space, and can be considered
by the mission planner during path planning. Therefore, the static- and timely synchronized
obstacles with predictable movements can be mapped into the state-time space. The static
obstacles do not require the time dimension. The timely synchronized obstacles with
predictable movements always occupy the same states in state-time space relative to the
synchronization point. An additional collision indication button for dynamic obstacles
could be added to the GUI for the operator to separate those two obstacle types. The state-
time space may be further extended by multi-robot-operation support. Other robots may be
seen as timely synchronized obstacles with predictable movements.
145
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
The calculations for each particle were locally performed with no global knowledge of
the trajectory. The generated result consists of canonically ordered movement primitives,
which are linear and circular movements. The transformation automatically considers the
reachability and obstacles.
The topology of the free working space is obtained and stored within the roadmap and
its cells (including joint positions). The path-searching algorithm calculates a path that
consists of particles, which are linked joint-space coordinates. Those particles have been
transformed into world coordinates by simple forward kinematic calculations. The path of
connected particles in world space forms the trajectory.
The Dubins car (Dubins, 1957) model (see also Subsection 7.2.3) of the robot with a
bounded maximum steering angle (see Figure 96) was employed for the two dimensional
case. The robot is able to move around curves with a minimum radius of , and along lines
which represents a linear movement. No other manoeuvres are allowed. Furthermore, the
robot moves only in a forward direction.
146
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Figure 96: Correlation between e and the radius r in a Figure 97: Correlation between e and the radius r in a
circle (2D). polygon (2D).
(51)
(52) 𝑡 ( )
(53)
𝑡 ( )
Installed forces
As shown in Figure 98, three forces are installed on the particle path illustrated in
Figure 99. The first force keeps the distances between the particles
equidistant. The second force , which is actually the average of the four forces
, , and , moves the particles on a circle with
the neighbouring ‘particle’ as the midpoint. The last force, , allows the path to
147
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
shrink in the direction of a straight line. The direction and value of the forces are
influenced by the three neighbouring angles , and (see Figure 97 and Figure 98).
Equidistance forces
These forces push the particles in a tangential direction. influences the
other forces, especially the rotational forces, as little as possible. To reach the equidistance
of all points, the tangential force is utilized. The absolute value of the force is the
difference in the distance to the neighbouring points (54).
⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗
(54) ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ (̅̅̅̅ ̅̅̅̅ )
⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗
Rotational forces
The steering angle (see Figure 96) may be changed at any time within its boundaries.
Curves with a fixed would result in circular curves. To build a circle of particles, it may
be seen as a polyhedron, as shown in Figure 97. A polyhedron has straight lines between
the neighbours, and a circle may be approximated by more particles. attempts to
148
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
keep the angles of three neighbouring particles equal. Every line tries to minimize the
difference of the angles , and with a small rotation (see Figure 99).
The force of the rotation is orthogonal to its rotation axis. This leads to the formulas for
the motion of point B in Figure 98:
(55)
(56)
⃗⃗⃗⃗⃗⃗⃗⃗
(57) ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ ( ⃗⃗⃗⃗⃗⃗⃗⃗ ) ( )
| |
⃗⃗⃗⃗⃗⃗⃗⃗
(58) ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ ( ⃗⃗⃗⃗⃗⃗⃗⃗ ) ( )
| |
⃗⃗⃗⃗⃗⃗⃗⃗
(59) ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ ( ⃗⃗⃗⃗⃗⃗⃗⃗ ) ( )
| |
⃗⃗⃗⃗⃗⃗
(60) ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ ( ) ( )
|⃗⃗⃗⃗⃗⃗|
Shrink forces
is a constructed force at each ‘particle’ to build a straight line. This may be
achieved by a simple vector addition of the two position vectors of the neighbours of each
particle (see Figure 98) while considering the equidistance constraint.
149
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Forming lines
Every particle’s position lies on an edge of the polyhedron. The overall force leads to a
curved connection, where all ‘particles’ are ordered as equidistant and the steering angle e
always lies within its boundaries. The path does not yet have straight lines. If the steering
angle e is very small, the radius of the curve is very large and may be considered to be a
straight line. The algorithm considers this to be a switch for the calculation of the positions
of each particle. Shrink forces may be used to form a line. It is a simple vector addition of
the two neighbouring lines of B to A and C (see (62) and Figure 98). A radius threshold
is introduced, which controls when the formulas for a line or a curve are used. is
the value for the maximum radius. The angle threshold 𝑡 was obtained from equation
(52). If the statement | | 𝑡 is true for , the particles will be shrunk to a
line. Otherwise, the rotational forces are applied.
Overall force
It is possible to construct a path from a start position to a target position with straight lines
and curves with equal radius for each curve automatically. The threshold 𝑡 is the only
parameter which is responsible for the decision of whether a line or a curve is to be built. If
the formula (63) is applied, the path construction algorithm is divergent.
⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ | | 𝑡
(63) ⃗ ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ {
⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ | | 𝑡
is identified to produce incorrect results if the particles have not yet been ordered.
The order may be measured in terms of particle movement, which is defined as a particle
movement error. The overall elastic net movement error of the elastic net was
introduced. The term responsible for rotational forces is modified to order the particles
dependent to the error . The factor , with , calculated using equation (64) is
dependent on the error . For high error values, the factor is near 1, while for low values,
is near 0.
(64)
| |
150
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
The overall formula is shown in (65), which considers the error and it applies either the
shrink forces or the rotational forces. The shrink forces order the particles while the
rotational forces move them to form a circular line.
( ) ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ ( ) ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ | | 𝑡
(65) ⃗ ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ {
⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ | | 𝑡
Results
are parameters used to normalize and measure each force. Throughout the
experiments, the following values showed good results (Table 10):
Parameter
Value 0.8 4.0 0.1 0.1 200.0
The topology of the map is obtained by another algorithm, such as a Voronoi diagram.
An A* algorithm can be used to find a suitable path. Often, the shortest path is chosen. In
these examples, a path is found within the topology map, which has to be optimized from a
random state of the ‘particles’.
In Figure 100, ta,min is set to zero, and the minimal steering angle e is therefore zero. The
path is a smooth curve and there is no straight line. In contrast to Figure 100, the parameter
ta,min in Figure 101 is set to a value greater than zero. Thus, the path tends to have more
straight lines and narrow curves.
151
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
For the enhanced online robot programming system, the robot is controlled along the
trajectory described by movement commands. In this study, fixed body dynamics was
assumed, and trajectories are therefore independent of the speed of the movement. The
trajectory is required to be continuous and smooth to conform to the physical nature of the
robot’s movement possibilities. As described in Section 8.5.7, a robot trajectory is
assembled from path segments with assigned movement types. The standard movement
primitives of industrial robots are usually linear, circular and joint movements.
Finding a path is accomplished by the path planning system. It sends a linked list of
nodes forming the movement primitives. The nodes store their Cartesian and joint space
positions, and they are equidistant to their neighbouring nodes. The robot program
generator constructs a trajectory from a list of nodes, and considers node position
tolerances that may be delivered by the path planner. It further transforms the trajectory to
robot program files in a specific robot programming language or direct movement
commands transferred to the robot controller. It was accomplished by the separation of the
152
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
trajectory into movement primitives. The movement primitive extraction from a trajectory
is implemented as a Matlab script, and it is generated to a shared library. Joint movements
are deferred until a later stage because it is assumed that these kinds of movements are
somewhat more complicated, but are manageable as an extension to the actual
functionality.
Line and curve matching is the foremost challenge of the trajectory generation
algorithm. Furthermore, the optimal calculation of junction points between the movement
primitives is important for the line and curve-matching algorithm. A junction point
connects two movement primitives so that the end node of a geometric figure is the start
node of the next figure in a differentiable way.
The following subsections describe the transformation of the path to a trajectory by the
approximation and alignment of the movement primitives. Subsequently, the trajectory was
utilized for robot program generation, which is the final artefact of the enhanced online
robot programming system. The robot programming language used for the Mitsubishi RV-
2AJ robot is Mitsubishi Melfa Basic IV (Mitsubishi-Electric, 2002b). A simple command
example may be given by Listing 10, where the MVR command is used for circular
movements (where P1 and P2 are the start and end points and M is the midpoint), and
MVS is used for linear movements (where P3 is the end point).
153
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
In the following steps, the construction of a linear movement line is shown in the case
of two dimensions. It was extended to three dimensions in the implemented algorithm.
Figure 102 shows three points, which, regarding the tolerance, are lying on a line. is the
start node and is fixed. The circles around and display the tolerance sphere, and the
red area is a corridor that have to be touched by all nodes. The corridor describes all
allowed positions of the line, and it is recalculated for each new sphere. Furthermore, the
figure shows the angles which were used to calculate the corridor.
As shown in Figure 103, node does not touch the corridor and is therefore not a part
of the line. The algorithm stops, and the calculation of a new movement type starts from
node .
154
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Figure 102: Linear Movement corridor (highlighted in red) calculation with three points P0-2.
(66) √
(67) ( )
(68) 𝑡 ( )
155
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
𝑡 ( )
𝑡 ( )
𝑡 ( )
(69) 𝑡 ( )
|⃗ (⃗⃗⃗⃗ 𝑡⃗)|
(70)
| ⃗|
Because the distance must not be greater than a given , the maximum allowed distance
between a node and the resulting linear movement line is defined in equation (71) with
𝑡⃗ ( ) as
Because the line goes through the first node, and the line is only given as a unit vector with
|⃗⃗⃗| , the declaration in equation (72) was defined as
(74) |⃗⃗⃗⃗⃗| ( )
(75)
√
( )
The direction is calculated for both angles and in the x-z and the x-y planes.
156
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Corridor Calculation
The allowed corridor was calculated by the intersection of all sectors, and was formed
by the direction angles and of the tangents of each sphere through . and
are the two upper angles which consider the new corridor. Analogue, and are
for the lower angles. and are the two angles that count for the actual corridor, and
and are the angles of the tangents of the actual node.
(76)
(77)
(78)
(79)
The allowed corridor is calculated iteratively for each new node as follows, with ,
and , being new possible corridor bounds.
(80) ( )
(81) ( )
(82) ( )
157
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
(83) ( )
Each new node is first checked to be within the corridor. On subsequent checks, the
corridor is recalculated using the new node. The corridor size decreases with each iteration.
The iteration stops when a new node is not lying within the allowed corridor. In this case,
the final node is calculated and a new movement primitive is started from the final point.
| |
(84)
| |
(85)
The Cartesian coordinate of the endpoint is calculated using the resulting final direction,
which is actually the bisecting line of the corridor between and . The length of the
line is the distance between the start point and the last valid point. Thus, the end-point is
calculated by equation (86).
( ) ( )
(86) ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ ( ( ) ( ))
( )
If the start node is not the origin, the vector to the start node must be regarded. In
addition, if there is no third node within the corridor, the final point is set to the second
node.
158
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Nodes on a Plane
The framework calculates circular movement primitives that are located on a three-
dimensional plane. The nodes have to be located on a plane with a pre-defined tolerance.
The tolerance for constructing the plane is given with a tolerance on the normal vectors of
each plane, which is constructed with every new node, allowing little rotation when
compared to the subsequent normal vectors. The rotation is calculated using the angle
between the normal vector and the subsequent normal vector, as explained in the next
paragraph.
Three connected non-collinear nodes are required to construct a normal vector. The
initial plane was constructed by the first three nodes, including the plane normal. In the
following iterations, each normal vector is compared to its successor normal vector. Figure
104 shows four nodes and the three normal planes spanned from the points. The angles
between the normal vectors , and and their respective unit vectors , and are
used to calculate the corridor.
The tolerance of the nodes on the plane is added by allowing the unit normal vector
to be within a defined angle . For each new plane, the normal is calculated by
equations (87) and (88).
(87)
(88)
( )
159
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
The resulting plane is obtained by the last bisecting vector , where is the last node of
the movement segment. In Figure 105, is the resulting vector of the actual iteration
(calculated from and ) and is the resulting normal vector of the last iteration.
Furthermore, is the actual normal vector. Because only the angle between the normal
vectors and is relevant, the calculation is also valid in three-dimensional space. The
normal of the resulting plane is , and is used for the calculation in the next iteration.
Let be the corridor angle, which equals to equation (89), and let be the angle
between and . For each , the allowed corridor is checked, corresponding to the
inequality in equation (90).
(89) | | | |
(90)
If the inequality in equation (90) is true, the bisecting vector between and is
calculated in equation (91).
(91)
( )
The angle between and is applied to calculate the new tolerance with
160
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
(92)
Calculation of
To calculate the minimum tolerance, which is the minimum radius in a two-
dimensional space, the position of is given by equation (93).
161
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
(94)
(95)
(96) ( ) ( ) ( )
Equation (97) results in and from applying the equations (94) and (95) to
equation (96).
( ) ( ( ) ( ) ) ( )
(97)
( )
(98)
(99) ( )
( ) ( )
(100)
( ( ) ( ) )
Calculation of
To calculate the maximum tolerance, which is the maximum radius in two-
dimensional space, the position of is given by equation (101).
(101) ⃗ ⃗⃗⃗⃗⃗ ⃗
(102)
(103)
(104) ( ) ( ) ( )
162
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Equation (105) results in and from applying equations (102) and (103) to
equation (104).
( ) ( ( ) ( ) ) ( ) ( )
(105)
(106)
(107) ( )
( ) ( )
(108)
( ( ) ( ) )
(109) ( )
(110) ( )
When the calculated radius is not within the corridor, and thus does not satisfy the
inequalities stated in equations (111) and (112), a new movement segment is started.
(111)
163
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
(112)
Figure 6 shows the final point calculation for a circular movement section. For the
vector ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗, the vector ⃗⃗⃗⃗ is calculated using equation (113) with being given by the
radius calculation previously presented.
⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗
(113) ⃗⃗⃗
( ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ )
For a given normalized ⃗⃗ and , ⃗⃗⃗⃗⃗⃗, which is the rotation around the ⃗⃗- axis with an
approximated angle of , was first calculated. The approximation was established
because may eventually be off the circle. The final point was therefore calculated by the
equations in (114).
164
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ ⃗ ⃗⃗⃗
(114) ⃗ 𝑡 ⃗⃗⃗⃗⃗⃗
| |
For a given normalized ⃗⃗⃗⃗, the vector ⃗⃗⃗ and radius were calculated in equations (115)
and (116).
(116) ‖ ⃗⃗⃗‖ 𝑡( )
Figure 108 illustrates the transition of two linear movement primitives. To ensure that
the path is continuous and smooth, two linear movement primitives were connected using a
circular movement primitive. Calculations were omitted because the Mitsubishi robot
system has an option for smooth robot position transitions and ensures a continuous path.
165
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
The remaining combinations are illustrated in Figure 109, Figure 110 and Figure 111.
166
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Figure 109: Connecting a linear and a circular Figure 110: Connecting a circular and a linear
Movement. movement.
8.7 Summary
The development of the enhanced online robot programming system driven by the
requirements presented in Chapter 5 began with an evaluation of usage scenarios. The
scenarios demonstrated that it should be easy to utilize the system, and it has to be
removed after generating the robot program. The aim of the system was to generate a static
robot program that is comparable to manually programmed robot programs.
The ease of utilization of the system was guaranteed by an expert system that supports
the operator during robot programming. In practice, the ability to control the robot
manually has become very important to the execution of manual exploration, in order to
define the mission and to place virtual objects in the working cell. The expert system itself
is efficiently employed only when the mission is at least defined, which can either be done
online or offline using a simulation system or with known locations.
167
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
The mission planner plans the mission and controls the path planner, which provides
trajectory length information to the mission planner. The mission planner in turn re-plans
the mission with an applied hysteresis. Planning a trajectory online always utilizes the real
production system, which is executed throughout the robot-program generation process.
Thus, the hysteresis on the trajectory length was applied to prevent the production system
from executing re-planning too often.
The trajectory planner connects two given locations, and reports the trajectory length to
the mission planner. The in-memory world model plays an important role because it also
provides the roadmap that was, in the first instance, planned to store just geometric data for
the trajectory planning neural network.
The trajectory planning neural network approximated the obstacles and created a
roadmap within the free space. Obstacle approximation was optimized by object
simplification, surface reconstruction and progressive mesh algorithms. The road map
generation is easy to calculate, the possibility of parallel computing is presented, and
higher dimension calculations are possible. The roads are simplified to a topological map
and forces are applied to straighten and shrink the roads.
Calculation of the node movement was computationally intensive because many nodes
have had to be considered for each calculation iteration. In addition, the calculation of
collisions also produced a high processor load. The calculations of node movements
depended on random inputs, which are hard to generate for online systems. Random inputs
lead to a slow convergence of the neural network, even in a simulation environment. The
proposed Coloured Kohonen map rarely formed a Voronoi diagram, and required further
improvements.
168
8 Investigation into a Trajectory Planning Algorithm to Support
Intuitive Use of the Robot Programming System
Nevertheless, the basic principle was transferred to a cell-based approach, which stored
joint locations within the roadmap cells. In fact, the combination of the cell-based roadmap
with joint locations together with the Elastic Net trajectory generation approach realized
the proposed enhanced online robot programing system. The generation to a robot program
was accomplished by analysing the created trajectory.
The new motion-planning algorithm plans with only local knowledge smooth
trajectories that consist of linear and circular movement primitives and generates a static
robot program. The system considers objects with predictable movements. Timely
synchronized objects that support the generation of events were also supported within the
generated (static) robot program.
169
9 Research of a Software Development
Framework for Complex Systems
170
9 Research of a Software Development Framework for Complex Systems
The motivation for the model driven code generation framework is based on the
requirement to rapidly connect distributed software components which are written in
different programming languages. They also required to run on different platforms, sensors
and third party tools such as Matlab (TheMathworks, 2011) across a network without the
need for the time-consuming development of data communication and tool connection
infrastructure.
A model-driven approach was chosen in order to increase the usability of the framework
with a domain specific modelling language which was derived from the Real-Time Object-
Oriented Modelling (ROOM) language (Selic, 1996a, Selic, 1996b, Selic et al., 1994). This
language also defines the run-time behaviour of the generated software components.
The commercial tool Rational Rose Real-Time from IBM (IBM Corp., 2011), formerly
known as ObjecTime, was a toolset supporting the ROOM language. Unfortunately, this
toolset is no longer available, and therefore makes it necessary to re-implement the code-
171
9 Research of a Software Development Framework for Complex Systems
In the proposed framework, a component can be developed in Java, C#, C++ and C, and
can be deployed on different processing units. The processing unit may be a general-
purpose processor, digital signal processor or a field-programmable gate array (FPGA),
where each processing unit may have its special system architecture that influences, for
example, the handling of threads.
172
9 Research of a Software Development Framework for Complex Systems
The developer writes user programs for state transitions where the component has to
perform an action. Additionally, each state may have an entry and an exit function, which
are executed when the component enters or exits the state, respectively. Advantages are
that components may be distributed on different nodes with ease and better encapsulation
is reached, because only the component interfaces, and not the type of the component, are
required in order to interact with it.
ROOM also defines a message service that controls the logical message flow within a
physical thread, while a middleware, which is further described in Section 9.2, is
responsible for transmitting the messages. The implemented message service is optimized
for speed in the local delivery of messages through the utilization of operating-system
specific communication mechanisms. It should be sufficiently abstract to be used by any
operating system, and should be concrete enough to fulfil requirements of speed, code size
and memory consumption. The implemented message service is included together with the
code execution model in a runtime library. An instantiated message service is identified by
the network port number and the internet protocol (IP) address of the host.
Thread 2
Comp. MS Comp.
B D
173
9 Research of a Software Development Framework for Complex Systems
message service, which handles local and remote message passing. A message from the
port of component A to the port of component C (see dashed arrow) may be passed
through both message services until it gets to the target port. In this example, messages
from component B may only be sent to component A.
The transport level is simply a pipe to send data streams or packets without any
formatting specification, such as serial ports or TCP/IP. Direct socket communication
requires the development of a proprietary protocol and exception handling, which involves
significant effort. Furthermore, marshalling and de-marshalling have to be implemented,
and this is particularly complex because of the requested compatibility between the
different programming languages. For example, if it is required that a C++ object be
transformed into a Java object.
Message passing adds structure to the packets to define the content, but it still requires
the user software to build and send the messages. ZeroC Ice (ZeroC Inc., 2011) and
CORBA are middleware systems that build an abstract communication layer.
174
9 Research of a Software Development Framework for Complex Systems
Behaviour Model
(State-Machines) (ROOM)
Run-Time Code
Library Generation
Runnable
System
The generated source code can be synchronized with the written source code of the user
to simultaneously allow modelling and code implementation. Finally, the source code can
be compiled to a runnable application for the target system, e.g. a personal computer with a
Windows operating system or an embedded system with a PowerPC operating system.
175
9 Research of a Software Development Framework for Complex Systems
The Code Merger tool utilizes JMerge (Eclipse Foundation, 2011a), and runs as a
headless eclipse application, which starts a minimal eclipse framework in the background.
It merges the generated source code with the existing one.
The toolchain supports the automatic generation of eclipse Java projects for each
component and the runnable system. These projects may be imported into the eclipse
workspace. All link dependencies including the link to the run-time library were
automatically set, and a UniMod state machine (eVelopers Corporation, 2011) was
generated using each component project to define the behaviour of the component.
The runtime library was implemented in a platform-dependent manner, and includes the
ROOM code execution model and the middleware from ZeroC Ice (ZeroC Inc., 2011).
The middleware supports a target abstraction layer, which simplifies the creation of the
platform specific library. This framework also enables the use of specialized tools such as
Matlab/Simulink, as further described in Section 9.5.
Socket
connection
Code Generator
(JET)
176
9 Research of a Software Development Framework for Complex Systems
A direct integration of specialized development tools was reached through tool specific
integration technologies. For example, Matlab may be connected through the Microsoft
Component Object Model (COM) or Dynamic Data Exchange (DDE) technology for
message passing, which is described by Kohrt et al. (2006a). The middleware can also be
directly utilized with an S-function to establish communication with the distributed
components.
177
9 Research of a Software Development Framework for Complex Systems
A ‘Plugin Manager’ software component was developed to utilize shared libraries with
Java in a generic manner. The component allows the generic use of shared libraries, DLLs
on Windows machines and libraries on Linux machines. The component encapsulates the
Java/DLL intercommunication as well as the usable functions of the libraries. A function
call is initiated by a synchronous message. The message contains all of the data that is
necessary to call the library function, e.g. function name and parameters. The call-back
functionality allows the native libraries to call Java functions. The calling sequence is
illustrated in Figure 118. The Plugin Manager is further described in Appendix H.
Plugin
Java dll / lib
Manager
load
execute callback
transfer and execute function
callback in Java
178
9 Research of a Software Development Framework for Complex Systems
deployed. Physical threads are modelled to allow thread deployment. Components are
finally deployed to those threads (Figure 117), while their connectivity is modelled in a
thread-independent manner, as illustrated in Figure 119. The interface definition of the
‘Manual Movement Deployable Component’ in Figure 120 describes the provided and
required interfaces, which are fixed to component ports. The ‘Control Port’ provides
component life-cycle interfaces such as ‘Control In’ in Figure 121 to start, stop, initialize,
release and locate the component. Additional component property management is
implemented with the set and update property signals. Synchronous and asynchronous
message passing is supported. Each interface defines allowed signals that have to be
modelled in the UniMod finite state machine, as depicted in Figure 122. A message is
received via the port interfaces through the port to the state machine of the component,
which fires a transition.
The executed transition method contains the user code. The generation process
generates methods such as the initialization methods shown in Listing 11, which was
derived from the ‘Init’ transition. JMerge uses code tags such as ‘@generated not’, or is
overwritten by the code generation process.
179
9 Research of a Software Development Framework for Complex Systems
180
9 Research of a Software Development Framework for Complex Systems
/**
* Init the component.
* @generated
*/
protected void init()
{ }
Other tags such as ‘@unmodifiable’ may also be used to control the merge
functionality.
9.7 Summary
This chapter highlights important aspects in the development of the proposed model
driven toolchain. The various model-to-model transformation stages and tools are
presented from graphical ROOM models to the runnable application. The toolchain may
generally be used for software development, and for specific problem domains such as
robotics. The extensibility of the domain specific language allows domain-oriented
engineering. The level of abstraction is a significant issue for the handling of large
software systems. The abstraction level is raised by using a model driven toolchain.
Standard designs and concepts may be easily integrated and used by the developers who
need only the graphical front end to such extensions. Encapsulation results in the reuse of
the so-called black box, which is a favourable form of it, since the economics of scale
allow more focus to be made on software design, software reviews and software testing.
181
9 Research of a Software Development Framework for Complex Systems
182
10 System Implementation
183
10 System Implementation
The online path planning and programming support system is an approach that can
reduce the robot programming time, including preparation and installation. It generates
acceptable robot programs and considers the modern industrial basic goals of flexibility,
speed and optimization, which are mentioned in Chapter 8. It finds a trade-off between
shortest-path finding and trajectory forming and maintainability. Finally, it generates a
downloadable robot program file.
In this section, the general execution of the programming assistant is described, and a
scenario (see Figure 126 and Figure 127) was chosen to demonstrate the proposed
approach. The system is executed with a real five-axis industrial scale, articulated
Mitsubishi RV-2AJ robot (Kohrt et al., 2008). The algorithm utilizes an octree as the world
model (as described in Chapter 6) and joint positions attached to the octree cells. During
implementation, the algorithm was tested in simulated two-dimensional space using a
quadtree as world model and world positions attached to the quadtree cells. The proposed
algorithm works in real surroundings. The illustrations shown in this section are simplified
to support the understanding of the algorithm.
In the chosen real scenario, the two obstacles O1 and O2 are provided as CAD objects,
and they have been imported into the in-memory environment model. The obstacle O3
should be unknown to the system, and was therefore not imported. The chosen scenario
consists of a mission with the start and target positions P1 and P10.
First, the general workflow of online robot programming is described in Section 10.1,
followed by the data import in Section 10.2 and mission preparation in Section 10.3.
Subsequently, the roadmap was generated within the world model in Section 10.4, and is
utilized as a corridor for the configuration space positions of the robot. Shortest-path
planning is applied for those positions in Section 10.5, which may lead to a path from the
start to the target, which is transformed to a trajectory. Section 10.7 illustrates the path
planning behaviour with an additional obstacle, which leads to the re-planning of the path.
Finally, the robot program is generated in Section 10.8 and the robot programming
durations are compared to manual programming in Section 10.9.
184
10 System Implementation
The system first tries to explore the working space to build the in-memory topology.
Subsequently, a robot path to the target position is computed. Target positions are either
application locations or are part of an application path, which may be a part of a mission. A
mission may have multiple application paths and locations, which results in the well-
known travelling-salesman-problem. The planning problem is solved in order to minimize
the overall path length. This also includes the path-planning algorithm.
The movement of the robot is slow enough to allow the operator to detect collisions.
The environment is stored within a world model, which is capable of storing collision
positions. It creates a roadmap in the Voronoi form, and supports path searching and
trajectory generation by combining the world and joint spaces. The robot movement
benefits from the roadmap generation by maximizing the clearance to the obstacles using
collision detection. A hysteresis that reduces re-planning is applied to reduce real robot
movements. In addition, this hysteresis also increases the knowledge of the environment by
adding sensor data to the world model.
-10 0 10
P1: Start O2
10 10
O3
0 0
P10: Target
O1
-10 -10
-10 0 10
186
10 System Implementation
10 10 10
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 21 21 21 21 21 21 21 21 21 21 21 21 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1
-1 -1 4 -1 2 2 2 2 2 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1
10 -1 -1 4 -1 -1 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1
10 -1 24 -1 -1 2 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1 10
P1: Start
10 -1 -1 -1 2 2 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1 10
10 -1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21 21 1 -1 10
10 -1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21 21 1 -1 10
10 -1 22 22 22 2 2 2 22 22 22 2 2 -1 -1 -1 -1 -1 -1 -1 -1 1 1 21 21 21 21 21 1 -1 10
10 -1 22 22 22 2 2 2 22 22 22 2 2 2 2 2 2 2 2 2 -1 -1 1 1 1 1 1 1 1 -1 10
10 -1 22 22 22 22 22 22 22 22 22 2 2 2 2 2 2 2 2 2 2 -1 1 1 1 1 1 1 -1 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 -1 -1 -1 -1 -1 -1 -1 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 3 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 -1 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 23 3 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3
P10
3
: -1Target 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 -1 3 3 3 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 -1 -1 -1 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 10
10 -1 -1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -1 10
10 -1 -1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -1 10
10 -1 -1 2 2 2 2 2 2 2 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 10
10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 10
10 10
10 10
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
187
10 System Implementation
-1 -1 21 21 21 21 21 21 21 21 21 21 21
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 21 21 21 21 21 21 21 21 21 21 21
-1 -1 4 -1 2 2 2 2 2 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21
-1 -1 4 -1 -1 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21
-1 24 -1 -1 2 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21
P1: Start
-1 -1 -1 2 2 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21
-1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21
-1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21
-1 22 22 22 2 2 2 22 22 22 2 2 -1 -1 -1 -1 -1 -1 -1 -1 1 1 21 21 21 21
-1 22 22 22 2 2 2 22 22 22 2 2 2 2 2 2 2 2 2 -1 -1 1 1 1 1 1
-1 22 22 22 22 22 22 22 22 22 2 2 2 2 2 2 2 2 2 2 -1 1 1 1 1 1
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 -1 -1 -1 -1 -1 -1
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 23 3
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2
P210:-1Target
3 3 3 3
188
10 System Implementation
10 10 10
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 21 21 21 21 21 21 21 21 21 21 21 21 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1
-1 -1 4 -1 2 2 2 2 2 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1
10 -1 -1 4 -1 -1 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1
10 -1 24 -1 -1 2 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1 10
P1: Start
10 -1 -1 -1 2 2 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1 10
10 -1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21 21 1 -1 10
10 -1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21 21 1 -1 10
10 -1 22 22 22 2 2 2 22 22 22 2 2 -1 -1 -1 -1 -1 -1 -1 -1 1 1 21 21 21 21 21 1 -1 10
10 -1 22 22 22 2 2 2 22 22 22 2 2 2 2 2 2 2 2 2 -1 -1 1 1 1 1 1 1 1 -1 10
10 -1 22 22 22 22 22 22 22 22 22 2 2 2 2 2 2 2 2 2 2 -1 1 1 1 1 1 1 -1 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 -1 -1 -1 -1 -1 -1 -1 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 3 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 -1 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 23 3 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3
P10
3
: Target
-1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 -1 3 3 3 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 -1 -1 -1 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 10
10 -1 -1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -1 10
10 -1 -1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -1 10
10 -1 -1 2 2 2 2 2 2 2 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 10
10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 10
10 10
10 10
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
189
10 System Implementation
-1 -1 21 21 21 21 21 21 21 21 21 21 21
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 21 21 21 21 21 21 21 21 21 21 21
-1 -1 4 -1 2 2 2 2 2 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21
-1 -1 4 -1 -1 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21
-1 24 -1 -1 2 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21
P1: Start
-1 -1 -1 2 2 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21
-1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21
-1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21
-1 22 22 22 2 2 2 22 22 22 2 2 -1 -1 -1 -1 -1 -1 -1 -1 1 1 21 21 21 21
-1 22 22 22 2 2 2 22 22 22 2 2 2 2 2 2 2 2 2 -1 -1 1 1 1 1 1
-1 22 22 22 22 22 22 22 22 22 2 2 2 2 2 2 2 2 2 2 -1 1 1 1 1 1
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 -1 -1 -1 -1 -1 -1
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 23 3
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2
P2 10:-1 Target
3 3 3 3
The elastic net algorithm is parameterized with respect to its shrink forces. These forces
(shown as arrows in Figure 128) move the particles on a straight line, and thus push the
trajectory to the obstacles. The stronger the force, the more the trajectory is moved towards
the obstacles, and the greater will be the number of collisions that may occur. The path-
planning system first controls the real robot along a trajectory with low shrink forces
applied to reduce the number of collision indications until either a collision is indicated or
the target is reached. After the final trajectory is found, the shrink force may be raised to
optimize the trajectory.
190
10 System Implementation
21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 22 22
21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 22 22
1 1 1 1 1 1 1 21 21 21 21 1 1 1 1 1 1 1 21 21 21 21 2 2 2 2 2 2 2 22 22 22 22
1 1 1 1 1 1 1 21 21 21 21 1 1 -1 -1 -1 -1 1 21 21 21 21 2 2 2 2 2 2 2 22 22 22 22
-1 -1 -1 -1 -1 1 1 21 21 21 21 -1 -1 -1 4 4 -1 -1 21 21 21 21 2 2 2 2 2 2 22 22 22 22 22
2 2 2 2 -1 -1 1 1 1 1 1 2 2 -1 -1 4 4 -1 -1 1 1 1 2 2 2 2 22 22 22 2 2 2 2
2 2 2 2 2 -1 1 1 1 1 1 2 2 2 -1 -1 24 4 -1 -1 1 1 2 2 2 22 22 2 2 2 2 2 2
22 22 22 22 2 -1 -1 -1 -1 -1 -1 22 22 22 22 -1 4 4 4 -1 -1 -1 22 22 22 22 2 2 2 -1 -1 -1 -1
22 22 22 22 2 2 -1 3 3 3 3 22 22 22 22 -1 -1 4 -1 -1 3 3 22 22 22 22 2 2 -1 -1 3 3 3
22 22 22 22 2 2 -1 3 3 3 3 22 22 22 22 2 -1 -1 -1 3 3 3 22 22 22 22 2 2 -1 3 3 3 3
22 22 22 22 2 2 -1 3 3 23 3 22 22 22 22 2 2 -1 3 3 23 3 22 22 22 22 2 2 -1 3 3 23 3
22 22 22 22 2
P210:-1Target
3 3 3 3 22 22 22 22 2
P210:-1Target
3 3 3 3 22 22 22 22 2
P210:-1 Target
3 3 3 3
10 -1 -1 4 -1 -1 2 2 2 2 2 2 2 2 2 2 22 22 22 22 22 22 22 22 22 22 22
10 -1 24 -1 -1 2 2 2 2 2 2 2 2 2 2 2 22 22 22 22 22 22 22 22 22 22 22
P1: Start
10 -1 -1 -1 2 2 2 2 2 2 2 2 2 2 2 2 22 22 22 22 22 22 22 22 22 22 22
10 -1 22 22 22 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 22 22 22 22
10 -1 22 22 22 2 2 2 22 22 22 2 2 2 2 2 2 2 2 2 2 2 2 22 22 22 22
10 -1 22 22 22 2 2 2 22 22 22 2 2 2 2 2 2 2 2 2 2 2 22 22 22 22 22
10 -1 22 22 22 2 2 2 22 22 22 2 2 2 2 2 2 2 2 2 22 22 22 2 2 2 2
10 -1 22 22 22 22 22 22 22 22 22 2 2 2 2 2 2 2 2 22 22 2 2 2 2 2 2
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 -1 -1 -1
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 -1 3 3 3
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 P-110:3 Target
3 3 3
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 23 3
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 -1 3 3 3
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 -1 -1 -1
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1
10 -1 -1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -1
10 -1 -1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -1
10 -1 -1 2 2 2 2 2 2 2 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
10
10
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
191
10 System Implementation
Robot arm parameters were not considered in this approach and illegal positions were
considered as collisions.
P1: Start O2
O3
O1
P10: Target
P7 P8
The trajectory planning results are depicted in Figure 132, and are compared to the
manually-programmed trajectory. The duration of the robot programming task is
summarized in Section 10.9.
O3 O3
O1 P2 O1
Figure 132: Automatically planned path. Figure 133: Manually planned path.
The program generation of the automatically planned path is template-based. Thus, only
the dynamic content of the file is shown in Listing 12 and Listing 13:
192
10 System Implementation
10 MOV P2 10 MOV P2
20 MVR P2,P3,P7 20 MVR P2,P3,P4
30 HOPEN 1 30 MVS P5
40 MVS P8 40 MVR P5,P6,P7
50 MVR P8,P9,P10 50 HOPEN 1
60 MVS P8
40 MVR P8,P9,P10
Listing 12: Manually-programmed Melfa Basic IV Listing 13: Automatically generated Melfa Basic
file. IV robot program file.
The movement primitives circular and linear are respectively identified as MVR and
MVS robot commands. The program, which is composed of 6-movement primitives, is still
readable by a human. The final movements of the robot are comparable to the manually
programmed ones. Manual modifications may still be carried out within the program, even
for larger missions.
193
10 System Implementation
The times shown in Table 11 may be divided into fixed and task-dependent times.
Usually, within an industrial setting, it is not required to place numerous models into the
workspace; therefore, they may be seen as fixed.
Moreover, it should not be necessary to set the locations, although program generation
is highly dependent on the size of the program (see rows 4-6 in Table 11).
194
10 System Implementation
Table 12 illustrates the online programming time only and Table 13 represents the
overall programming time for each programming method. Offline programming must be
separated into minimum, maximum and normal values, which represent the online
modification of the offline-generated program within the robot cell. The normal values
may vary within the minimum and maximum values, depending on the quality of the
offline generated robot program. Online programming can be applied very quickly, and
should be used for small program sizes since the programming time significantly increases
relative to the program size. Supported online programming requires an equal amount of
time and a small fixed installation time when compared to normal values of the offline
programming method.
Table 13 illustrates the online programming time including the preparation times, and it
shows an additional preparation time for offline programming also mentioned in Table 11,
row 0. The offline preparation time can be omitted entirely to save offline programming
expenses, since the speed of programming for offline and supported online programming is
equal. This is highly dependent on the quality of offline-generated programs, and may
affect the ‘offline (normal)’ values in Tables 2 and 3. In the small example scenario
presented, a total of 2 hours of offline programming, including the operator and the
simulation tool, could be omitted, leading to cost savings. Therefore, supported online
programming is recommended, especially for small batched manufacturing and high-
volume production.
195
10 System Implementation
10.10 Summary
A trajectory planning approach has been presented based on the properties of the
roadmap generation algorithm and the elastic net. The pre-calculated configuration space is
deterministically sampled and stored within the octree cells. To reduce the search space,
only configurations within the roadmap are considered during the A* search. The
generated roadmap is based on the maximization of the clearance to obstacles in world
space. It can be calculated simply and quickly, applying the proposed cell-based algorithm.
New obstacle locations are dynamically added to the world model, which allows re-
planning of the path. The elastic net optimizes the robot configurations of the found path to
generate a manageable trajectory consisting of circular and linear movement primitives. It
adapts itself to obstacles and to unreachable regions. Through the applied forces of the
elastic net algorithm, the extent of adaptation is controlled. The presented algorithm is
applicable for mobile and articulated robots working in a high-dimensional space.
One of the main benefits derived from this approach resides in the real time capability,
which enables online robot programming. The Voronoi creation algorithm optimizes the
Voronoi edges during real-time, which is an important aspect for practical use. Compared
to offline programming, the presented approach does not require any pre-processing of
information. The presented robot programming support system utilizing the trajectory-
planning approach takes over the most complicated tasks, considering the basic knowledge
of the operator. It renders offline systems as unnecessary, and helps to minimize robot-
programming costs.
196
11 Discussion
197
11 Discussion
The general research aim was to establish an enhanced online robot programming
system, which helps the robot operator to create robot programs in an industrial production
environment. Its use must be kept simple for the operator and it has to function with the
delivered sensor data. The created robot program has to be manually changeable and
maintainable. The framework is defined by the employed algorithm and the usage of the
robot programming support system in real environments, together with the limited sensory
input.
This work helps operators to improve their productivity. The acceptance of the robot
programming system is dependent on its usability. The techniques applied in the system
are of a complex nature, but are not transparent to the user. The interface only offers up
front the information that is really needed and what is considered to be the most valuable
information. The robot programming system is designed in such a way that it guides the
operator throughout the process, and gives advice regarding the optimum manufacturing
strategy and mission and trajectory planning.
The development of the system started by evaluating key requirements for the
production industry to enhance online robot programming, especially when compared to
198
11 Discussion
the offline programming approach. One important outcome of this work was the
connection of the Mitsubishi RV-2AJ manipulator, together with its kinematics
calculations and control. It also introduced a probabilistic world model which fuses sensor
information required for automated path planning. The world model generates a roadmap
that allows path planning in real-time, even with inaccurate and less sensor information.
The found path is further transformed by an elastic net algorithm into a robot trajectory,
and is subsequently generated into a robot program. A model-driven code generation
framework helps to overcome the software implementation complexity.
The identified requirements for industrial robot programming include a fast robot
programming approach that delivers high-quality results, and which is paired with intuitive
usage. Considering the additional requirements of maintainability and reusability, a
software design was proposed and implemented in this study.
The achieved algorithm employs Voronoi roadmaps in the first instance. This allows a
high probability for collision-free movements of the robot through the workspace,
considering a minimum knowledge of obstacles within the environment. The Voronoi
199
11 Discussion
roadmap supports path planning with only little sensory input, which is most often
obtainable in real environments. While the robot is moving along the Voronoi path,
collision information indicated by the operator or other sensors is used to improve the
roadmap, and exploration of the environment therefore takes place. A trajectory planning
approach has been presented based on the properties of the roadmap generation algorithm
and the elastic net for the planning of missions with multiple goals. The pre-calculated
configuration space is deterministically sampled and stored within the world space. Only
configurations within the roadmap are considered during path searching to reduce the
search space. The generated roadmap is based on the maximization of the clearance to
obstacles in world space; thereby reducing the requirements for accuracy. It can be
calculated quickly and easily by applying the proposed cell-based algorithm. New obstacle
and collision locations are dynamically added to the world model, which allows the re-
planning of the path.
Shortest path planning is executed on points along the Voronoi edges, and is optimized
in the second stage to generate the trajectory. Although other solution candidates may be
shorter after optimization, this approach presents a good approximation. This two-stage
approach allows the use of low accuracies in the search stage, which speeds up the
algorithm. The accuracy of the octree controls the capability of the path-searching
algorithm to find small passages. The creation of discrete configuration-space elements is
optimised for accuracy. An excess of discrete positions may lead to increased path
planning times, whereas too few positions prevent the path planner from finding a solution.
The application of the elastic net both transforms the found path into a trajectory and
optimizes that trajectory. It deforms and stretches the path to reduce the clearance to the
obstacles, and the world model is thereby updated. This is an important feature to stretch or
shorten the generated trajectories along Voronoi edges, which are otherwise not short and
smooth.
The developed elastic net moves the robot configurations of the found path so that a
trajectory consisting of circular and linear movement primitives is generated. It adapts
itself to obstacles and to unreachable regions. Through the applied forces of the elastic net
algorithm, the extent of the adaptation is controlled. Together with the Voronoi based
roadmap, this path-planning approach provides a customised solution that handles
inaccurate information.
200
11 Discussion
The movement primitives are stored within the robot program file which considers the
special syntax of the target robot programming language and can be uploaded directly to
the robot system.
The tool is applicable to real industrial scenarios where articulated robots work in multi-
dimensional spaces. One of the main benefits derived from this application is its real-time
capability. By creating the opportunity to work successfully online, offline simulation
systems become unnecessary; moreover, the overall time required for larger missions
decreases. This support system is based on two specifics: the Voronoi roadmap and the
elastic net, which both target the planning of missions with multiple goals. The new
approach transforms the user interaction into a simplified task that generates acceptable
trajectories which are applicable for industrial robot programming. In addition, it works
successfully with only a basic knowledge of the operator, and requires the use of only the
software application. The trade-off’s optimality, path planning & smoothing, and
maintainability are considered in the new approach. The new criteria maintainability and
reusability were introduced, and the experiment has demonstrated that the system
successfully addresses and satisfies the modern requirements emanating from the industrial
market. The process is optimized, offline programming time may be saved, and online
programming becomes easier.
201
12 Conclusions
202
12 Conclusions
The general research aim was to establish an enhanced online robot programming
system, which helps the robot operator to create robot program files in an industrial
production environment and which renders offline robot programming unnecessary.
Objective two was addressed in Chapter 6 and the results showed that besides
processing of the inexact sensor data to make them consistent, the types of information
sources were important. Not only six dimensional position and orientation data in spatial
space was required, but also robot joint space coordinates and CAD model data. In fact,
this lead to three different world models merged into one. The merged world model
provides the occupancy information to the trajectory planning system.
Objective three was addressed in Chapter 7 and the results showed the control of the
Mitsubishi RV-2AJ robot manipulator and the Festo Robotino robots were possible. The
robot control capability was important because the mission and trajectory planning
algorithm moves the robots during online robot programming to explore the environment
and to find a shortest trajectory. The robot kinematic model was important for the
trajectory planner for forward and backward calculations during trajectory computations.
Objective four was addressed in Chapter 8 and the results showed that the required
simple and efficient use of the system and the feasibility of trajectory planning within a
real industrial environment were successfully solved with a cell based trajectory planning
algorithm. It is based on Voronoi diagram approximation within a hierarchical data
structure for the world model that also combines the robot joint and Cartesian space. The
so found paths were transformed to particles in order to create trajectories, which were
then transformed with templates to a robot program file. By combining the robot joint and
Cartesian space, the search space was reduced to the cells only in order to allow the
203
12 Conclusions
Voronoi diagram approximation. The robot joint coordinates were then further used for the
shortest path-finding algorithm.
Objective five was addressed in Chapter 9 and the results showed that domain specific
modelling might simplify complex software systems but require a large amount of time for
its implementation. In this work, the time for its implementation was larger than its benefit,
thus, it will become more important for large projects and development teams or recurring
projects in a specific domain.
Finally, on a general scientific level, this work shows that technical solutions require a
good usability in order to be practically applicable. The knowledge transfer between the
human operator and the expert system has been implemented through a fluent workflow
with a graphical user interface to guide the operator. The developed algorithms are targeted
to an application in the real production system, but they can also be applied to offline robot
programming systems to help the offline simulation expert to generate feasible and high
quality robot trajectories. The implemented software development system for complex
systems is not restricted to robotic applications and can be used for software development
in general. The generic results of this research may be used in a wide variety of alternative
applications in which trajectory planning is required. Not only in small to medium sized
and high volume production industry but also in the diverse fields of research and
development for further investigations into robot trajectory planning, home robots, surgery
and health care assistant machines.
204
13 Future Work
205
13 Future Work
The investigations introduced new findings in the field of assisted online robot
programming, and proposed a new robot programming approach in the production
industry. Further works can be undertaken based on the results of this study and in related
areas.
This study introduced a new system for the enhancement of assisted robot
programming. The operator benefits by obtaining advice regarding all robot programming
tasks including trajectory planning, and the throughput is therefore increased. Further work
is still required to enable the system to be applicable in different areas than manufacturing.
The enhanced online robot programming system should be integrated in the entire
process as tightly as possible. One possibility would be the enhancement of the HMI to
improve manual robot control and the pointing device. Manual robot control functionalities
should be further developed, including the use of neural networks. For example, the
joystick may be extended to move the robot, while unreachable portions of the world space
may be automatically avoided.
The handling of dynamic obstacles should be further researched and the synchronization
with the support system should be automated. Other cooperating robots are types of
dynamic obstacles, which support information exchange for further integration into the
mission-planning algorithm and the world model. This may enable the formation of a
single, holistic world model of the production cell including all robots sharing their local
world model and multi-robot control. This requires the exchange of world models and
planning information. Because every robot has its own world model, these models have to
be calibrated to obtain the absolute positions of each of the models.
Dynamic collision avoidance may lead to the permanent use of the proposed system.
The flexibility of industrial robots can be optimized by allowing production robots to avoid
moving obstacles while executing their pre-programmed task. Therefore, the identified
obstacle types mentioned in Subsection 8.5.7 come into play. While this thesis handles
only static and timely synchronized objects with predictable movement, other obstacle
types such as timely unsynchronized obstacles or obstacles with unpredictable movement
may also be considered.
The standard A* algorithm used may be extended in the future to the Anytime Dynamic
A* (AD*) algorithm (Likhachev et al., 2005). The uniform sampling scheme that was
206
13 Future Work
applied in this work tends to have more joint coordinates within the corridor than are
necessary. This has a direct impact on the performance of the path-finding algorithm. The
proposed algorithm should be extended to use a non-uniform configuration space-sampling
scheme.
The robot kinematic may be provided using a software module. However, it is not
always possible to access those software modules. A learnable robot kinematic module
may be employed to use any robot type, regardless of its geometry. Function approximator
neural networks have also shown good results. Through supervised and unsupervised
online learning, the input and output of the kinematic learning module may be optimized
during runtime.
Mission- and task-specific extensions to the software have not yet been incorporated.
These include application path information for welding, adhesive bonding and handling.
The definition of the robot application path, e.g. spraying, gluing, painting, handling and
cutting, should be further investigated to provide additional application-specific
configurability. This gives the operator the ability to modify the outcome.
The complete software package was developed as a mixture of Java and C++ code, and
required an additional communication layer, for example to call native functions directly
from Java. For the integration of GUIs, only the middleware is sufficient, and it renders the
communication layer obsolete. Therefore, it is intended to transfer the remaining software
to Matlab/Simulink in order to improve the quality of the software.
207
References
AARNO, D., KRAGIC, D. and CHRISTENSEN, H.-I. (2004) Artificial Potential Biased
Probabilistic Roadmap Method. IEEE International Conference on Robotics and
Automation. 461–466.
208
References
CHENG, G. and ZELL, A. (1999) Multiple Growing Cell Structures. Neural Network
World. 5, 425-452.
CORKE, P. I. (1996) A Robotics Toolbox for Matlab. IEEE Robotics and Automation
Magazine. 3, 24-32.
CORKE, P. I. (2005) Machine Vision Toolbox. IEEE Robotics and Automation Magazine.
12, 16-25.
209
References
DI, X., GHOSH, B. K., NING, X. and TZYH, J. T. (1998) Intelligent robotic manipulation
with hybrid position/force control in an uncalibrated workspace. Proceedings IEEE
International Conference on Robotics and Automation. 2, 1671–1676.
DONALD, B.-R., XAVIER, P.-G., CANNY, J.-F. and REIF, J.-H. (1993) Kinodynamic
Motion Planning. Journal of the ACM. 40, 1048-1066.
EURON. 2012. Web Page of the European Robotics Research Network (EURON)
[Online]. Available: [Link] [Accessed 13.6.2013].
210
References
FRITZKE, B. (1991) Let It Grow: Self-Organizing Feature Maps with Problem Dependent
Cell Structure. Proceedings of ICANN. 403-308.
FRITZKE, B. and WILKE, P. (1991) FLEXMAP A Neural Network for the Traveling
Salesman Problem with Linear Time and Space Complexity. IEEE International
Joint Conference on Neural Networks. 2, 929 - 934.
GANDHI, D. and CERVERA, E. (2003) Sensor covering of a robot arm for collision
avoidance. IEEE International Conference on Systems, Man and Cybernetics. 5,
4951 - 4955.
GE, S. S. (2004) Differential neural networks for robust nonlinear control. International
Journal of Adaptive Control and Signal Processing. 18, 315–316.
GE, S. S. and CUI, Y. J. (2000) New potential functions for mobile robot path planning.
IEEE TRANSACTIONS ON ROBOTICS AND AUTOMATION. 16.
211
References
GUTMANN, J. S., WEIGEL, T. and NEBEL, B. (2001) A fast, accurate, and robust
method for self-localization in polygonial environments using laser-range-fingers.
Advanced Rabotica. 14, 651-668.
HAEGELE, M., NEUGEBAUER, J. and SCHRAFT, R.-D. (2001) From Robots to Robot
Assistants. International Symposium on Robotics.
HENRICH, D., WURLL, C. and WORN, H. Online path planning with optimal C-space
discretization. IEEE/RSJ International Conference on Intelligent Robots and
Systems, 13-17 Oct 1998. 1479-1484.
HOFF, K., CULVER, T., KEYSER, J., LIN, M. C. and MANOCHA, D. Interactive motion
planning using hardware-accelerated computation of generalized Voronoi
diagrams. International Conference on Robotics and Automation, 2000. IEEE,
2931-2937.
HOFF, K. E., CULVER, T., KEYSER, J., LIN, M. and MANOCHA, D. Fast Computation
of Generalized Voronoi Diagrams Using Graphics Hardware. SIGGRAPH '99,
1999. ACM Press/Addison-Wesley Publishing Co.
212
References
HSU, D., KINDEL, R., LATOMBE, J. and ROCK, S. (2002) Randomized kinodynamic
motion planning with moving obstacles. The International Journal of Robotics
Research. 21, 233-255.
HU, Z., MARSHALL, C., BICKER, R. and TAYLOR, P. (2007) Automatic surface
roughing with 3D machine vision and cooperative robot control. Robotics and
Autonomous Systems. 55, 552-560.
HUI, Z., HEPING, C., NING, X., ZHANG, G. and JIANMIN, H. On-Line Path Generation
for Robotic Deburring of Cast Aluminum Wheels. International Conference on
Intelligent Robots and Systems, 2006. IEEE/RSJ, 2400-2405.
HWANG, J. Y., KIM, J. S., LIM, S. S. and PARK, K. H. (2003) A fast path planning by
path graph optimization. IEEE Transactions on Systems, Man and Cybernetics,
Part A. 33, 121-129.
KAGAMI, S., KUFFNER, J. J., NISHIWAKI, K., OKADA, K., INABA, M. and INOUE,
H. Humanoid arm motion planning using stereo vision and RRT search. Intelligent
Robots and Systems, 2003. IEEE/RSJ, 2167 - 2172.
KANT, K. and ZUCKER, S. W. (1986) Toward efficient trajectory planning: The path-
velocity decomposition. Int. I. of Robotics Research. 5(3), 72-89.
213
References
KHATIB, O. (1986) Real-time obstacle avoidance for manipulators and mobile robots. Int.
J. Rob. Res. 5, 90-98.
KIM, K.-Y., KIM, D.-W. and NNAJI, B. O. (2002) Robot arc welding task sequencing
using genetic algorithms. IIE Transactions. 34, 865-880.
KUCUK, S. and BINGUL, Z. (2004) The Inverse Kinematics Solutions of Industrial Robot
Manipulators. IEEE Conferance on Mechatronics. 274-279.
CUBERO, S. (ed.) KUCUK, S. and BINGUL, Z. 2006. Robot Kinematics: Forward and
Inverse Kinematics. In: Industrial-Robotics-Theory-Modelling-Control. Pro
Literatur Verlag, 964.
214
References
LEE, D. T. (1982) Medial Axis Transformation of a Planar Shape. Pattern Analysis and
Machine Intelligence, IEEE Transactions on. PAMI-4, 363-369.
LENZ, A. and PIPE, A. G. (2003) A dynamically sized radial basis function neural
network for joint control of a puma 500 manipulator. IEEE International
Symposium on Intelligent Control. 170 - 175.
215
References
MYOUNG HWAN, C. and WOO WON, L. A force/moment sensor for intuitive robot
teaching application. Robotics and Automation, 2001. Proceedings 2001 ICRA.
IEEE International Conference on, 2001 2001. 4011-4016 vol.4.
NICHOLSON, A. 2005. Rapid adaptive programming using image data. PhD, University
of Wollongong.
OKABE, A., BOOTS, B., SUGIHARA, K., CHIU, S. N. and KENDALL, D. G. 2008.
References. In: Spatial Tessellations. John Wiley & Sons, Inc., 585-655.
PAN, Z., POLDEN, J., LARKIN, N., DUIN, S. V. and NORRISH, J. (2010) Recent
Progress on Programming Methods for Industrial Robots. Robotics (ISR), 2010 41st
International Symposium on and 2010 6th German Conference on Robotics
(ROBOTIK). 1-8.
216
References
PIPE, A. G. (2001) An architecture for learning 'potential field' cognitive maps with an
application to mobile robot navigation. Journal of Adaptive Behaviour. 8(2), 173-
204.
PIRES, J. N., GODINHO, T. and FERREIRA, P. (2004) CAD interface for automatic
robot welding programming. Industrial Robot: An International Journal. 31, 71 -
76.
RANGANATHAN, A. and KOENIG, S. PDRRTs: Integrated Graph Based and Cell Based
planning. Intelligent Robots and Systems, 2004. IEEE/RSJ, 2799 - 2806.
RAO, T. M. and ARKIN, R. C. 3D path planning for flying crawling Robots. SPIE 1195,
1990b.
RAUBER, A., MERKL, D. and DITTENBACH, M. (2002) The Growing Hierarchical Self
Organizing Map Exploratory Analysis of High-Dimensional Data. IEEE
Transactions on Neural Networks. 13, 1331 - 1341.
RITTER, H., MARTINETZ, T. and SCHULTEN, K. 1992. Neural Computation and Self-
Organizing Maps, Addison-Wesley.
ROSELL, J. and INIGUEZ, P. (2005) Path planning using Harmonic Functions and
Probabilistic Cell Decomposition. Proceedings of the 2005 IEEE International
Conference on Robotics and Automation. 1803- 1808.
RUSSELL, S.-J. and NORVIG, P. 2002. Artificial Intelligence: A Modern Approach (2nd
Edition), Prentice Hall.
217
References
SAMET, H. 1994. The Design and Analysis of Spatial Data Structures, 0201502550,
Addison Wesley.
SCHRACK, G. (1992) Finding neighbors of equal size in linear quadtrees and octrees in
constant time. CVGIP: Image Underst. 55, 221-230.
STOPP, A., BALDAUF, T., HANTSCHE, R., HORSTMANN, S., KRISTENSEN, S.,
LOHNERT, F., PRIEM, C. and RIISCHER, B. The Manufacturing Assistant: Safe,
Interactive Teaching of Operation Sequences. Robot and Human Interactive
Communication, 2002. Proceedings. 11th IEEE International Workshop on, 2002.
386 - 391.
218
References
WARREN, C. W. Global path planning using artificial potential fields. Robotics and
Automation, 1989. 316 - 321.
WAYDO, S. Vehicle motion planning using stream functions. Robotics and Automation,
2003. IEEE, 2484 - 2491.
219
References
XIANG, L. and DAOXIONG, G. A comparative study of A-star algorithms for search and
rescue in perfect maze. Electric Information and Control Engineering (ICEICE),
2011 International Conference on, 15-17 April 2011 2011. 24-27.
YANG, D.-H. and HONG, S.-K. (2007) A roadmap construction algorithm for mobile
robot path planning using skeleton maps. Advanced Robotics. 21, 51-63.
CETTO, J. A., FILIPE, J. & FERRIER, J.-L. (eds.). YANG, J., DYMOND, P. and
JENKIN, M. 2011. Exploiting Hierarchical Probabilistic Motion Planning for
Robot Reachable Workspace Estimation. In: Informatics in Control Automation
and Robotics. Springer Berlin Heidelberg, 229-241.
ZLAJPAH, L. (1999) On-line obstacle avoidance control for redundant robots using tactile
sensors. IASTED Int. Conf. Control and Applications. 533-538.
220
A. List of Publications
The following is a list of publications produced by the author during the course of the
investigations outlined in this thesis.
1. KOHRT, C., PIPE, A., SCHIEDERMEIER, G., STAMP, R. and KIELY, J. 2012.
A Flexible Model Driven Robotics Development Framework. The 43rd
International Symposium on Robotics (ISR). Taipei, Taiwan.
This publication is based on investigations accomplished as part of objective five.
221
A. List of Publications
3. KOHRT, C., PIPE, A., SCHIEDERMEIER, G., STAMP, R. and KIELY, J. 2011.
An Online Robot Trajectory Planning and Programming Support System for
Industrial Use. Journal of Robotics and Computer-Integrated Manufacturing.
This publication is based on investigations accomplished as part of objective one.
4. KOHRT, C., PIPE, A., SCHIEDERMEIER, G., STAMP, R. and KIELY, J. 2008.
A robot manipulator communications and control framework. Proc. IEEE Int. Conf.
on Mechatronics and Automation ICMA.
This publication is based on investigations accomplished as part of objective three.
222
A. List of Publications
Abstract - The use of industrial scale experimental machinery robot systems such as
the Mitsubishi RV-2AJ manipulator in research to experimentally prove new
theories is a great opportunity. The robot manipulator communications and control
framework written in Java simplifies the use of Mitsubishi robot manipulators and
provides communication between a personal computer and the robot. Connecting a
personal computer leads to different communication modes each with specific
properties, explained in detail. Integration of the framework for scientific use is
shown in conjunction with a graphical user-interface and within Simulink as a
Simulink block. An example application for assisted robot program generation is
described.
224
B. Materials & Equipment
The proposed support system is applied on a 5-axis industrial-scale, articulated
Mitsubishi RV-2AJ robot with an additional Ethernet card installed. It is a nonlinear
system with five rotary joints. The robot is equipped with the Mitsubishi CR1 controller
and a teach pendant. The main areas of the robot are assembly, manufacture, pick & place
and handling tasks. Communication between this system and a personal computer is
possible (Kohrt et al., 2008); the commercial viability has already been demonstrated
(Mitsubishi-Electric, 2008). The equipment is shown in Figure 134.
225
B. Materials & Equipment
Sciences Landshut, Germany. The robot is equipped with the Mitsubishi CR1 controller
and a teach pendant.
These robots are advanced, but mature and industrially proven machines; their
commercial viability has already been demonstrated in the manufacture of car sub-
assemblies, semiconductor memories and other industrial/consumer goods within
companies such as Jaguar and Audi. The main areas of application are:
Assembling / manufacturing,
handling in laboratories,
semiconductor manufacturing and monitoring,
blank manufacturing and monitoring,
pick and place and
robot training.
The robot type RV-2AJ is an articulated robot (R) that operates vertically (V) with
maximum payload of 2 kg. It is the Mitsubishi robot series S with 5 joints. Data of the
robot arm RV-2AJ:
Repeatability 0.02 mm
Max. payload 2 kg
Max. velocity 2,100 mm/s
Reach 410 mm
226
B. Materials & Equipment
robot weight 17 kg
The Controller
The controller Mitsubishi CR1 Mitsubishi CR1 is a New Architecture Robot
Controller (NARC).
228
C. Robot Control
This appendix summarizes the protocol format of the Mitsubishi CR1 Controller for
transmitting and receiving.
Controller Parameters
Table 14 has been used to set up the controller for each communication mode.
229
C. Robot Control
230
C. Robot Control
COM1
9600 baud
8 data bits
even parity
stop bits
DTR on
RTS/CTS on
XON/XOFF off
231
C. Robot Control
When the program is edited from the PC, the edit slot is used. The slot
number of the edit slot is parameter TASKMAX+1. In this case, because
an initial value of TASKMAX is 8, the number of the edit slot is 9. It is
possible to omit it. The standard value is 1.
<Command> <Argument>
These arguments are command specific.
Receive data
Commands Contents
QoK**** Normal status
Qok**** Error status
QeR**** Illegal data.(with error number (4 digit))
Qer**** Error status and illegal data. (with error number (4 digit))
QoK<Answer>
This argument differs in each command. Refer to the explanation of each
command.
Qok<Error status>
This argument replies the error number when the command may not be
executed. Refer to the troubleshooting manual of the robot for the
description of the error number.
232
D. Denavit-Hartenberg-Parameter
The DH-parameters are the standard method used to define the direct kinematics of a
manipulator (Paul, 1981). A robot model is described with four DH-parameters for each
rotational or translational joint. The joint axis for a rotational or translational degree-of-
freedom is always defined by the z-axis of the coordinate system. The transformation
defined with the DH-parameter is a combination of the following four successive
transformations:
The parameter for a rotational joint, and is non-constant for a translational joint.
The final transformation matrix that depends on the four parameters is as follows:
( )
( ) ( ) ( ) ( ) ( ) ( )
(117)
( ) ( ) ( ) ( ) ( ) ( )
( )
( ) ( )
The DH-parameters are defined by construction rules for the joint coordinate system
and their relations.
Jointi Jointi+1
Armi-1 θi θi+1
Armi Armi+1
zi xi
ai αi
Oi
di
zi-1
ai-1
Oi-1 θi
xi-1
233
D. Denavit-Hartenberg-Parameter
Basic rules for constructing the coordinate systems and the DH-parameters:
Arm is the connection between the -th and the ( )-th articulation.
The coordinate system is dedicated to the i-th arm.
The coordinate system is the fixed basic-coordinate system.
The - axis is applied along the movement-axis of the ( )-th articulation.
The - axis is the normal to the axis and is pointed away from it.
The - axis is defined such that a legal framework is produced.
Special Cases:
Distance along the axis between the origin and the intercept of the
axis and the axis.
Articulation angle around the axis from the axis to the projection
of the axis towards the , plane.
Shortens the connection between axis and axis.
Angle of rotation around the axis which levels the axis with the
axis.
234
E. Execution Model
An execution model consists of a set of rules that define the system behaviour. The
execution model described in the ROOM standard (Selic, 1996a, Selic, 1996b, Selic et al.,
1994) was employed. ROOM is a visual modelling language with formal semantics and it
was developed by ObjecTime. It is optimized for the specification, visualization,
documentation and automation of the construction of complex, event-driven and
potentially distributed real-time systems. The actor is the basic building block used to
describe the structural design of a distributed system.
Ports of an Actor
An actor communicates with its environment only via ports, as described in Figure 139.
Ports are used to define dedicated points of interaction between the actor and its
environment. Ports may either provide or require a service, which is specified by an
interface. By connecting the ports of several actors, an interaction flow via messages can
be established between them. The service provided by a port may either be realized by the
actor itself (EndPort) or delegated to the port of a contained actor (RelayPort). The port of
the contained actor has to provide the same service as the port of the (outer) actor.
Communication via ports may be either synchronous or asynchronous. However,
synchronous communication limits the ability of the port to deploy the actor.
Communication or delegation between actors is allowed only via ports.
By employing ports, the actors can be more easily distributed on different nodes, and
the role of an actor is clearly defined and better encapsulation (to interact with it, only the
port is required, and not the type of the actor) has been accomplished..
235
E. Execution Model
Behaviour of an Actor
An actor defines behaviour that is specified by operations and optionally by a UniMod
state machine. A state machine represents one part of the implementation of the actor,
which is hidden from external observers. Operations can be either hidden or public, based
on their usage. Direct synchronous calls can be executed on that actor operation when the
method is public. Because the operation is called within the thread of the calling actor, the
call has to be thread-safe. This has to be verified by the user. If the method is called
synchronously over the ports, no additional synchronization is required because it is
handled by the execution model. A complex actor may combine the state machine with an
internal network of collaborating sub-actors that are joined by connectors.
Message Service
The message service manages communication between processing units for real-time
applications either on single or distributed processors. It is a middleware between software
components that communicate synchronously or asynchronously with other message
services or actors.
C, C++ or Java. The introduced Message Service has a runtime library for each processing
unit/programming language combination that is used by the software components to
communicate with other components in the same thread, between threads on the same
processing unit or between processing units either synchronously or asynchronously.
Node
Thread
Programming language
Java Runtime Environment
Operating system (Windows, Linux, PowerPC and Integrity)
Synchronous/asynchronous method calls
237
E. Execution Model
Thread 3 Thread 3
Message Message
Service ICE Service
(full connected)
Running Loop
Within a thread, the endless loop is controlled by a while loop which has a blocking call
to read from one or more external queues. ‘Blocking’ means that it waits for a message on
the external queue. If there are no messages, the thread sleeps and does not consume
processing time.
Blocking read of
Endles loop one or more external
queues
Thread {
Init();
while (1){
Receive (…..,WAIT_FOREVER);
switch(msg){
case 1:
Statemachine ...
break;
case 2:
…
break;
}
}
238
E. Execution Model
Scheduling
The scheduling is illustrated in Figure 142. First, internal events are processed, followed
by external events. This execution model provides a ‘run to completion’ feature in order to
first complete the internal state machine before processing external events.
Check internal
queue
Process
message
Empty
No
Process
message
Yes
Check external
queue
Thread Priorities
The priorities of threads may be settable on a processing unit. Within the execution
model, thread priorities are used to allow more control over the runtime behaviour of the
system. Threads with higher priorities are always executed first, and then the processing
time is given to other threads. This complies with the pre-emptive threading model.
239
E. Execution Model
Actorclass
Actorclass
Thread {
Init();
while (1){
Receive(..,WAIT_FOREVER); Actorreference
switch(msg){
case 1:
...
break;
case 2:
…
break; Actorreference
}
} Actorclass
Msg Prio
Msg Prio
Internal Queue Internal Queue
OS Queue OS Queue (optional) OS Queue (optional)
HW
Hardware events
Hardware events, for example from the joystick, have to be transformed into a message
format which conforms to the execution model. This is realized in interrupt routines. In
Windows, the Java programming language has a hardware abstraction layer, which usually
uses a listener concept. The listener implementation is then used to transform the event to a
message. The message is processed either in an interrupt routine or in an event listener,
which sends the message to a predefined port of an actor (see Figure 144).
240
E. Execution Model
[Link](); Thread 2
[Link](interruptPort); run to completion
Actorclass
InterruptPort
HW
Message concept
Messages are passed instead of calling methods directly. These messages have the
required information to be delivered to the receiver. This makes the system more generic,
and message handling is executed only within the sender, receiver and the message service.
The message service routes the messages to the right receiver. A message service runs in
its own thread and it is identified by the IP address and the port of the host.
Thread-Internal-Communication
A thread contains one or more actors that may communicate either synchronously or
asynchronously. For communication, messages are sent to the message service, which
routes the message to the receiver port. Only programming language specifics are utilized.
Inter-Thread-Communication
Between two different threads on one node, the message services have to be able to
exchange messages, and this is accomplished by adding messages to the external message
queue of the receiver message service. This approach therefore considers inter thread
timing.
241
E. Execution Model
Inter-Node-Communication
The most complex work was carried out for inter node communication, where the nodes
have to be capable of connecting to other nodes. CORBA is a famous communication
middleware that was developed for such cases. However, since CORBA is quite complex,
the ICE middleware was chosen. When compared to CORBA, it was found to be simpler
to use and faster, although it is not standardized.
Parameter Description
Signal The signal name is the minimal information that has to be sent within a message
and is provided by the ports.
Message Additional data may be sent with the message. This data may be structured
Data individually.
Internal messages are used for the communication within the actor. These messages
may be sent from anywhere within this actor. The construction of a simple internal
message is shown in Listing 14. A new internal message with message data is created
using the signal ‘StartIn’. It is sufficient to know the message service that is available for
each actor. The message is sent directly to the Finite-State-Machine without using any
ports to the internal queue.
[Link](_JoystickDeviceControlPort._StartIn, msgData);
242
E. Execution Model
External messages are used for communication with other deployable actors. An
example of a broadcast external message is shown in Listing 15. This message is sent to all
the deployable actors that are connected to the port. In this example, the signal ‘StartIn’ is
sent. Moreover, the sending port is selected through port definitions. This asynchronous
message does not contain message data.
_JoystickDevicePort.sendBroadcast(_JoystickDeviceControlPort._StartIn);
_JoystickDevicePort.sendMessage(_JoystickDeviceControlPort._DeviceInitFailedOu
t);
_JoystickDevicePort.invokeMessage(_JoystickDevicePort._SetStatus);
243
F. Kohonen Map
The neural network algorithm performs a search for each data input vector to find the
best matching unit , which is the neuron with the minimum distance to the input
vector. and its neighbouring neurons are adapted by learning rules and update
their weights. The network was designed as a two-layered network consisting of an input
layer of neurons that are directly and entirely connected to an output layer. The output
layer was organized as a two-dimensional grid, as depicted in Figure 145. is the weight
vector associated to the neuron placed at position on the grid.
(118) ( ) ‖ ‖ .
The neuron with the closest weight vector to is the best matching unit of the
competition.
(119) ( ( ))
(120) ( 𝑡) ( )( )
244
F. Kohonen Map
Figure 145 illustrates the weight change process of neuron in the original input
space. In equation (120), (𝑡) is the learning rate, a real parameter that decreases linearly
with the learning process with equation (121).
(121) (𝑡) ( )( 𝑡 )
245
G. Node Movement Calculation
The two-dimensional case is calculated in equation (122) with the illustration in Figure
146, where ⃗⃗⃗⃗⃗⃗⃗ is the movement vector, ⃗ is the movement result vector and ⃗⃗⃗⃗⃗ is the
obstacle node connection vector.
For the three-dimensional case, the collision is between a vector and a polygon. A
vector that collides with a polygon must be recalculated so that its direction is parallel to
the polygon surface.
246
G. Node Movement Calculation
Below, the projection of a vector onto a polygon is calculated. The formulas for the
parametric form of a layer and a straight line are given in equation (123) and (124),
respectively.
(124) ⃗ ⃗⃗⃗⃗⃗⃗⃗
where ⃗⃗ the normal vector of the layer. Two helping straight lines are defined in (125)
and (126). The intersection of the helping straight lines with the layer are named and .
(125) ⃗ ⃗⃗
(126) ⃗ ⃗⃗
(127) ⃗ ⃗ ⃗⃗⃗⃗⃗⃗⃗
247
G. Node Movement Calculation
(129) ⃗⃗ ( ⃗⃗⃗⃗⃗)
The intersection of the auxiliary straight line 1 given in (125), and the layer given in
(129) is calculated using the formulas (130) and (131):
⃗⃗ ( ⃗ ⃗⃗⃗⃗⃗)
(130) ⃗⃗ ( ⃗ ⃗⃗ ⃗⃗⃗⃗⃗) ⃗⃗ ( ⃗ ⃗⃗⃗⃗⃗) ⃗⃗
⃗⃗
(131) ⃗⃗⃗⃗ ⃗⃗ ⃗⃗
The intersection of the auxiliary straight line 2 given by (126) and the layer given in
(129) is calculated in the formulas (132) and (133).
⃗⃗ ( ⃗ ⃗⃗⃗⃗⃗)
(132) ⃗⃗ ( ⃗ ⃗⃗ ⃗⃗⃗⃗⃗) ⃗⃗ ( ⃗ ⃗⃗⃗⃗⃗) ⃗⃗
⃗⃗
(133) ⃗⃗⃗⃗ ⃗ ⃗⃗
248
H. Plugin Manager
The Java side ‘Plugin Manager’ component includes four functions, and is a Java
component that is able to call C/C++ functions of DLLs, which allowed source code reuse.
The init function is responsible for setting the library path and loading the
PPA_Plugin_Manager.dll, which is the gateway between Java and native libraries.
Additional methods are provided to execute a library function call, and the choice of
function to be used depends on the expected return type. ‘Invoke(…)’ is used when a single
value is expected (e.g. int). If an array or a two-dimensional array is expected
‘invokeArray(…)’ and ‘invoke2DArray(…)’ are used, respectively. Each of these functions
has almost the same parameters. Listing 17 shows the ‘invoke(…)’ method.
The parameter returnType shows which type of data is expected as return value. The
possibilities are VOID, INT, FLOAT, DOUBLE, STRING, INT_1D, FLOAT_1D,
DOUBLE_1D, INT_2D, DOUBLE_2D, FLOAT_2D and BOOLEAN. Each of the functions
expects three parameters. The first and the second ones are the name of the library file to
load and the function name to be called (String dllName, String function), respectively. The
third parameter is a linked list from the Java collection framework (LinkedList<Object>
params), and contains the parameters that are passed to the library function. The generic
type is ‘Object’, because the list may contain different variable types. To allow the native
method to do a call back, an instance of the calling class is passed as the final argument
(Object jobj).
A function call is executed as follows. First, a linked list with arguments is created, and
second, the library file is loaded. After these two steps, one or more functions from the
library can be executed. Finally, the library file is again unloaded to de-allocate the used
recourses.
249
H. Plugin Manager
The ‘dyncall’ (Adler and Philipp, 2011) library provides a clear and portable C application
interface to dynamically issue calls to foreign code using small call kernels written in
assembler. It was utilized within the plugin manager.
JNI Usage
The Java Native Interface (JNI) is a programming framework that allows Java code
running in a Java Virtual Machine (JVM) to call and to be called by native applications.
The latter are programs specific to a hardware operating system platform as well as
libraries written in other languages, such as C++.
The JNI framework lets a native method utilize Java objects in the same way in which
Java code uses these objects. A native method may create Java objects and then inspect and
use these objects to perform its tasks.
Because JNI should communicate with the GenericRuntimeLib, it is used to create C++
header files with javah. Within a C++ development environment such as Visual Studio,
they then define the interfaces required to implement the main program. During the build,
the post build event copies the dll and pdb (debug information for debugging) to the Java
project root directory, where they may be used with JNI.
250
H. Plugin Manager
JNIEnv*
A JNI interface pointer (JNIEnv*) is passed as an argument to each native function.
This allows interaction with the JNI environment within the native method. For example, it
may be used to determine the class name of a passed object or to create new Java objects
from native code. The JNI interface pointer remains valid only in the current thread. Other
threads must first call AttachCurrentThread() to attach themselves to the JVM and obtain a
valid JNI interface pointer. Once attached, a native thread works like a regular Java thread
running within a native method, and remains attached to the JVM until it calls
DetachCurrentThread(). Listing 18 and Listing 19 show how threads are attached to, and
detached from the JVM.
JNIEnv *env;
(*g_vm)->AttachCurrentThread (g_vm, (void **) &env, NULL);
(*g_vm)->DetachCurrentThread (g_vm);
Implementation
This subsection describes the implementation of the call chain shown in Figure 118.
The Java program uses the Plugin Manager, which is a library file, and was developed in
C++ using Visual Studio. It implements the header files that were generated by javah, and
has the ability to load further library files containing functions for execution. After
execution, the result is passed back to the java program. The plugin manager contains the
interface between Java and the native code shown in Listing 20.
The arguments that are passed to the function are listed in Table 19.
251
H. Plugin Manager
The plugin manager may perform a successful execution only if it knows of the data
types of the arguments and the result. While this is required to allow the allocation of
sufficient memory for the native function, the result has to be converted to a correct Java
object before it is passed back. Because the allocation of dynamic arrays is not possible in
C or C++, the array length also has to be passed. To determine which data type to use,
these are mapped to a predefined integer value, and can thus be correctly instantiated.
Table 20 shows the mapping from the integer value to the data type.
Arguments are passed within a LinkedList<Object>, which should contain the type of
the argument, as shown in the table above, and then the argument. For example, a string
and an integer array are passed in the linked list, as shown in Listing 21.
252
H. Plugin Manager
Before executing the native function, the plugin manager first determines the size of the
passed argument list, which has to be a multiple of two because there is always a pair
containing the data type definition and data given. After this, each object from the passed
LinkedList<Object> is changed to the corresponding native type, depending on the type
given in the LinkedList. The native types are saved in a structure (‘struct st_param’), and
they are then pushed to the native method using ‘dyncall’.
After the execution, the return value is changed back to the expected type, and it is
passed back to the Java Program.
The Plugin Manager also throws exceptions, which are passed back to the java program,
so that the user is informed about errors that occurred. Exceptions are thrown when the
library file or the function may not be found. Furthermore, the size of the argument list has
to be a multiple of two (always a pair of return type and argument), and it is detected when
there is an incorrect argument number, either at the return type or in the argument list. An
exception may also be thrown when the maximum number of loadable library files is
reached. The plugin manager is now capable of loading up to 10 library files.
253
I. Sample Source Code
@Override
public String getInternetAdress() {
return internetAdress;
}
@Override
public String getInternetPort() {
return internetPort;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (([Link] == null) ? 0 :
[Link]());
254
I. Sample Source Code
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != [Link]())
return false;
MessageService other = (MessageService) obj;
if ([Link] == null) {
if ([Link] != null)
return false;
} else if ()
return false;
if ([Link] == null) {
if ([Link] != null)
return false;
} else if ()
return false;
return true;
}
try {
iceAdapter =
[Link]("Adapter" + ip + port, "tcp -h "
+ ip + " -p " + port);
iceObject = this;
[Link](iceObject, [Link](ip +
port));
[Link]();
} catch ([Link] e) {
[Link]();
} catch (Exception e) {
[Link]([Link]());
}
[Link]();
if (serverIceCommunicator != null) {
[Link]();
[Link]();
// [Link]();
iceObject = null;
}
[Link]();
255
I. Sample Source Code
if ([Link](this))
[Link](this);
}
if ([Link](msgService)) {
String mes = "It is not allowed to create multiple message services
(more than one) on a single node.";
[Link](mes);
throw new Exception(mes);
} else
[Link](msgService);
while (![Link])
[Link](100);
}
if (deployableActors != null) {
// Init deployable actors
for (DeployableActor deployableActor : deployableActors) {
[Link](msgService);
}
}
startMsgServiceThread(msgService);
return msgService;
}
@Override
public void addMessageServiceListener(IMessageServiceListener listener, String name)
{
[Link](name, listener);
[Link]([Link], listener);
}
@Override
public void run() {
try {
[Link] = true;
while (true) {
if (disposed == true) {
if ([Link]() == 0)
break;
}
pollMessage();
}
close();
} catch (Exception e) {
[Link]();
}
}
@Override
256
I. Sample Source Code
String ip = [Link];
String ownIp = getInternetAdress();
return !([Link]==null || [Link](ownIp) ||
[Link](""));
}
if (msg == null)
return;
try {
IMessageServiceListener listener =
[Link]([Link]);
if (listener != null) {
/*
* Send message through listener notification.
*/
[Link](msg);
} else {
listener = [Link]([Link]);
if (listener != null) {
[Link](msg);
257
I. Sample Source Code
} else {
/*
* ERROR
*/
[Link]("Receiver '" +
[Link] + "' not found!");
}
}
}
} catch (MessageServiceOverrun e) {
[Link]();
} catch (Exception e) {
[Link]();
}
}
@Override
public MsgData processMsg(MsgIce msg, [Link] current) throws Error {
try {
return invokeMessage(msg);
} catch (Exception e) {
throw new Error([Link]().toString());
}
}
if(isSentToOtherNode(msg) || isSentToOtherThreadOnSameNode(msg)) {
return doInterThreadCall(msg);
} else if (isSentToSameThread(msg)) {
return doInnerThreadCall(msg);
} else {
throw new Exception("Unknown message service error!");
}
}
@Override
public MsgData invokeMessage(SignalInOut signalName, PortId senderPort,
Vector<PortId> receiverActorPorts, MsgData msgData) throws Exception {
if ([Link]() > 1)
throw new Exception("Sync methods do not support multiple target
ports! (" + [Link] + ")");
if ([Link]() == 0)
throw new Exception("No target port connected! (" +
[Link] + ")");
@Override
public void sendMessage(SignalOut signalName, PortId senderPort, Vector<PortId>
receiverActorPorts, MsgData msgData) throws Exception {
if([Link]()==0)
[Link]("The port " + [Link] + " ("+[Link]+")
has no receiver. Is a receiver connected?");
try {
proxyIdent = [Link] + [Link];
proxy = [Link](proxyIdent);
258
I. Sample Source Code
} catch (Exception e) {
[Link](e);
}
if (proxy == null)
throw new Exception("Could not find the proxy " + proxyIdent + "!");
if ([Link]([Link])) {
return [Link](msg);
} else if ([Link] == [Link]) {
[Link] r = proxy.begin_processMsg(msg);
try {
return proxy.end_processMsg(r);
} catch (Error e) {
[Link]();
return null;
}
} else if ([Link]([Link])) {
return [Link](msg);
} else {
return null;
}
}
if ([Link] == [Link]) {
// Synchron
if ([Link] == null || [Link] ==
"") {
throw new Exception("Broadcast sync Message is not
allowed!");
}
IMessageServiceListener listener =
[Link]([Link]);
if (listener != null) {
/*
* Send message through listener notification.
*/
return [Link](msg);
} else {
/*
* ERROR
*/
throw new Exception("Receiver '" + [Link]
+ "' not found!");
}
[Link](msg);
return null;
/*
* Receiver is known
*/
IMessageServiceListener listener =
[Link]([Link]);
if (listener != null) {
return [Link](msg);
} else {
/*
* ERROR
*/
throw new Exception("Receiver '" + [Link]
+ "' not found!");
259
I. Sample Source Code
} else {
[Link]("Communication mode " + [Link] + " is unknown!");
return null;
}
}
@Override
public void releasePort(ActorPort port) throws Exception {
removeMessageServiceListener(port);
}
@Override
public Communicator getCommunicator() {
return serverIceCommunicator;
}
@Override
public void sendMessage(SignalOut signalName, PortId senderPort, Vector<PortId>
receiverActorPorts) throws Exception {
for (PortId receiverActorPort : receiverActorPorts) {
MsgIce msg = new Msg(signalName, senderPort, receiverActorPort,
[Link], null);
invokeMessage(msg);
}
}
@Override
public void sendMessage(SignalIn signalName) throws Exception {
MsgIce msg = new Msg(signalName, [Link], null);
invokeMessage(msg);
}
@Override
public void sendMessage(SignalIn signalName, MsgData msgData) throws Exception {
MsgIce msg = new Msg(signalName, [Link], msgData);
invokeMessage(msg);
}
@Override
public MsgData invokeFsmMessage(SignalInOut signalName, PortId senderPort,
Vector<PortId> receiverActorPorts, MsgData msgData) throws Exception {
if ([Link]() > 1)
throw new Exception("Sync methods do not support multiple target
ports! (" + [Link] + ")");
if ([Link]() == 0)
throw new Exception("No target port connected! (" +
[Link] + ")");
@Override
public void sendReplyMessage(SignalOut signalName, PortId replyPort, PortId
senderPort) throws Exception {
sendReplyMessage(signalName, replyPort, senderPort, null);
}
@Override
public void sendReplyMessage(SignalOut signalName, PortId replyPort, PortId
senderPort, MsgData msgData) throws Exception {
MsgIce msg = new Msg(signalName, senderPort, replyPort,
[Link], msgData);
invokeMessage(msg);
}
260
I. Sample Source Code
if (disposed != true)
{
synchronized (lock) {
try {
[Link](i*1000);
if(disposed==false)
throw new Exception("MessageService not
disposed in '" + i + "' seconds!");
} catch (InterruptedException e) {
[Link]();
[Link](1);
}
}
}
}
}
j1 = [Link](0) + [Link];
j2 = [Link](1) + [Link] / 2.;
j3 = [Link](2) + 0;
j5 = [Link](4) + [Link] / 2.;
j6 = [Link](5) + [Link] / 2.;
261
I. Sample Source Code
Inverse Calculation
public Vector<JointPosition> inverseKinematic(CartesianWorldPosition p) {
int z = 10;
if (p == null) {
[Link]("Cartesian world position is NULL!");
return new Vector<JointPosition>();
}
int[] c1 = { 1, -1 };
int[] c2 = { 1, -1 };
if (!error)
continue;
calculateAuxilaryAxes(tetas, p);
if (!contains(v, ro)) {
printAllRobotJoints(ro);
if (checkRobotJointRanges([Link](0), [Link](1),
[Link](2), [Link](4), [Link](5))) {
[Link](ro);
} else
[Link]("Position not allowed!");
}
}
}
return v;
262
I. Sample Source Code
[Link](1, 0, [Link](teta));
[Link](1, 1, [Link](alpha) * [Link](teta));
[Link](1, 2, -[Link](alpha) * [Link](teta));
[Link](1, 3, a * [Link](teta));
[Link](2, 0, 0);
[Link](2, 1, [Link](alpha));
[Link](2, 2, [Link](alpha));
[Link](2, 3, d);
[Link](3, 0, 0);
[Link](3, 1, 0);
[Link](3, 2, 0);
[Link](3, 3, 1);
return m;
}
I. Sample Source Code
if ([Link]([Link]())) {
if ([Link]([Link]())) {
generateFile(new T_mitsubishi_program_bas(), "[Link]",
[Link], trajectory);
generateFile(new T_mitsubishi_positions_bas(),
"[Link]", [Link], trajectory);
} else if ([Link]([Link]())) {
generateFile(new T_pseudo_program_bas(), "[Link]",
[Link], trajectory);
generateFile(new T_pseudo_positions_bas(),
"[Link]", [Link],
trajectory);
} else if ([Link]([Link]())) {
generateFile(new T_simulator_program_bas(),
"[Link]", [Link], trajectory);
generateFile(new T_simulator_positions_bas(),
"[Link]", [Link],
trajectory);
} else {
fireEvent(_RaiseError, new MsgDataRaiseError("Robot type '" +
[Link] + "' not defined!"));
}
} else if ([Link]([Link]())) {
// TODO
} else {
fireEvent(_RaiseError, new MsgDataRaiseError("Output type not
defined!"));
}
fireEvent(_FinishExport);
}
I. Sample Source Code
try {
[Link]([Link](), start);
[Link]([Link](), goal);
[Link]([Link]());
[Link](0);
[Link](0);
[Link]=0;
[Link]=0;
[Link](startJointCell);
[Link](goalJointCell);
Object[] o = [Link]();
int i = 0;
for (Object obj : o) {
i++;
NPoint op1 = ((JointNode) obj).op;
OctalPoint op = (OctalPoint)op1;
Point cp = [Link]();
}
} catch (Exception e) {
[Link]();
[Link](1);
}
return t;
}
J. Attachments
J. Attachments
KOHRT, C., PIPE, A., SCHIEDERMEIER, G., STAMP, R. and KIELY, J. 2012. A
Flexible Model Driven Robotics Development Framework. The 43rd Intl. Symp. on
Robotics (ISR2012). Taipei, Taiwan.
The 43rd Intl. Symp. on Robotics (ISR2012),Taipei, Taiwan,
Taiwan, Aug.
Aug. 29-31,
29-31, 2012
2012
590
The 43rd Intl. Symp. on Robotics (ISR2012),Taipei, Taiwan,
Taiwan, Aug.
Aug. 29-31,
29-31, 2012
2012
ROOM language together with code generators and specific communication mechanisms. It must be abstract
tooling for model editing. enough to be used by any operating system, but fur-
A major goal of the proposed framework is to enable thermore concrete enough to fulfill requirements in
sensor-based robot control applications to be built from speed, code size and memory consumption. The imple-
libraries of reusable software components. For this pur- mented message service is included together with the
pose, the framework provides standard interface speci- code execution model in a runtime library. An instanti-
fications for implementing reusable components. A ated message service is identified by the network port
well-written and debugged library of software compo- number and the IP of the host.
nents facilitates rapid development of reliable sen-
sor-based control systems. Processing Unit 1 Processing Unit 2
Existing robot control frameworks introduce Thread 1 Thread 3
re-configurable software components as well as special Comp. Comp.
communication and code execution models [10-12]. A C
MS MS
While these approaches try to enhance configuration of
the components for re-use and the running system itself, Thread 2
this paper proposes additionally to enhance the usability Comp. MS Comp.
by graphical modeling and code generation. B D
ROOM defines a visual modeling language with for- The ROOM communication system illustrated in
mal semantics and a code execution model, which is a set Fig. 2 consists of processing units, threads, components
of rules defining the system behavior [5-7]. The visual and message services (MS) along with its connectivity.
modeling language is optimized for specifying, visual- The ports of each component may communicate with
izing, documenting and automating the construction of other components via connections to the message service,
complex, event-driven, and potentially distributed re- which handles local and remote message passing. A
al-time systems. By connecting several components, an message from the port of component A to the port of
interaction flow via messages may be established be- component C (see dashed arrow) may be passed through
tween them. both message services until it gets to the target port. In
In the proposed framework, a component can be de- this example, messages from component B may only be
veloped in Java, C#, C++ and C, deployed on different sent to component A.
processing units. A processing unit may be a gen-
eral-purpose processor, digital signal processor or a III. COMMUNICATION MIDDLEWARE
field-programmable gate array, where each processing
unit may have its special system architecture that influ- Currently available communication mechanisms may
ences for example the handling of threads. generally be separated into three categories: transport
In addition, a component may also be a complete de- level, message passing and remote procedure calls.
velopment environment, which allows direct communi- Transport level is simply a pipe to send data streams or
cation to existing components during development time. packets without any formatting specification, such as
The integration of tools is explained in chapter VI. serial ports or TCP/IP. Direct socket communication
The component behavior is described as a hierarchical requires the development of an own protocol and excep-
state machine, which provides a number of powerful tion handling which entails large effort. Furthermore,
features, including group transitions, transitions to his-
marshaling and de-marshaling have to be implemented:
tory, state variables, initial points, and synchronous
this is particularly complex because of the requested
message communications.
compatibility between the different programming lan-
The developer writes user programs for state transi-
tions, where the component has to perform an action. guages. For example, it is required that a C++ object may
Additionally, each state may have an entry and an exit be transformed into a Java object.
function, which are executed when the component enters Message passing adds structure to the packets to de-
or exits the state respectively. This presents various ad- fine the content but still requires the user software to
vantages: components may be distributed on different build and send the messages. ZeroC Ice [13] and CORBA
nodes with ease and better encapsulation is reached, be- are middleware systems that build an abstract commu-
cause only the component interfaces, not the type of the nication layer.
component, are required in order to interact with it. Remote-procedure-calls attempt to expose functions
ROOM also defines a message service that controls or full objects across a process or network boundary
the logical message flow within a physical thread, while a without the user software being aware of the boundary.
middleware, further described in chapter III, is respon- Remote method invocation may be given as an example.
sible to transmit the messages. The implemented message A comparison among the different communication
service is optimized for speed in the local delivery of middlewares supports the choice of the ZeroC Ice mid-
messages through the utilization of operating-system dleware. Its implementation is available on various
591
The 43rd Intl. Symp. on Robotics (ISR2012),Taipei, Taiwan,
Taiwan, Aug.
Aug. 29-31,
29-31, 2012
2012
platforms, including embedded systems, and for different on Java Emitter Templates (JET) [16] transforms the
programming languages such as Java, C++ and C# as model to Java source code.
well. CORBA might be an alternative but it seems to be The Code Merger tool utilizes JMerge [15] and runs as
complex and it does not have the ability of transmitting headless eclipse application, which starts a minimal
objects and therefore allows only primitive data types, eclipse framework in the background. It merges the
while ZeroC Ice may handle object transmission. In ad- generated source code with the existing one.
dition, ZeroC provides Eclipse support, which simplifies The toolchain supports automatic generation of
the usage of ZeroC Slice, the interface definition lan- eclipse Java projects for each component and the runna-
guage. ble system. These projects may be imported into the
eclipse workspace. All link dependencies including the
IV. THE TOOLCHAIN link to the run-time library have been automatically set
and a UniMod state machine [17] is generated with each
Behaviour Model
(ROOM)
component project to define the behavior of the compo-
(State-Machines)
nent.
The runtime library has been implemented in a plat-
Run-Time Code form dependent manner and includes the ROOM code
Library Generation
execution model and the middleware from ZeroC
Ice [13].
User Code Source Code The middleware supports a target abstraction layer,
which simplifies the creation of the platform specific
library. This framework also enables the use of special-
Runnable ized tools such as Matlab/Simulink as further described in
System
chapter VI.
Fig. 3. Code generation workflow.
A general overview of the workflow is given in Fig. 3. Create Vizual Enterprise Architect
Model Plug-In
The toolchain creates and synchronizes source code from
a given graphical model, which includes the modeled Socket
connection
behavior of each component. The visual modeling lan-
guage ROOM is represented as graphical elements in the ecore Editor Model Repository
commercial off-the-shelf editor Enterprise Architect from
SparxSystems [14]. This graphical model is utilized to
create source code with the help of the eclipse modeling Code Generator
framework (EMF) [15] and its code generation capabili- (JET)
592
The 43rd Intl. Symp. on Robotics (ISR2012),Taipei, Taiwan,
Taiwan, Aug.
Aug. 29-31,
29-31, 2012
2012
593
The 43rd Intl. Symp. on Robotics (ISR2012),Taipei, Taiwan,
Taiwan, Aug.
Aug. 29-31,
29-31, 2012
2012
594
J. Attachments
KOHRT, C., PIPE, A., KIELY, J., STAMP, R. and SCHIEDERMEIER, G. (2012) A
Cell Based Voronoi Roadmap for Motion Planning of Articulated Robots Using Movement
Primitives. International Conference on Robotics and Biomimetics.
Proceedings of the 2012 IEEE
International Conference on Robotics and Biomimetics
December 11-14, 2012, Guangzhou, China
Abstract— The manufacturing industry today is still focused activity with those of another. Human input to correct
on the maximization of production. A possible development inaccuracies as well as errors resulting from unknowns and
able to support the global achievement of this goal is the falsehoods in the environment is needed. In addition,
implementation of a new support system for trajectory- simulation tools are complex and require highly skilled
planning, specific for industrial robots. This paper describes
workers. Offline robot program generation is time intensive
the trajectory-planning algorithm, able to generate trajectories
manageable by human operators, consisting of linear and also due to inaccuracies; even then its correct operation is
circular movement primitives. First, the world model and a not guaranteed.
topology preserving roadmap are stored in a probabilistic This has led to the vision of an enhanced online robot
occupancy octree by applying a cell extension based algorithm. programming software application to support the robot
Successively, the roadmap is constructed within the free programmer. An overview for online robot programming is
reachable joint space maximizing the clearance to the obstacles.
given in [3] and it is stated there that only one approach has
A search algorithm is applied on robot configuration positions
within the roadmap to identify a path avoiding static obstacles. led to a commercial tool.
Finally, the resulting path is converted through an elastic net Investigations have been undertaken with the aim of
algorithm into a robot trajectory, which consists of canonical developing an online robot software application, by
ordered linear and circular movement primitives. The considering the working production environment as a single
algorithm is demonstrated in a real industrial manipulator whole workspace. Use is made of automated workspace
context.
analysis techniques and a trajectory planning algorithm,
described in this paper, to realize the robot software
I. INTRODUCTION
application.
OBOT use and automation levels in the industrial In this article, we consider the high level of complexity of
R sector will inexorably grow in future, driven by the
present need for lower item costs and enhanced
typical robot-programming tasks for human operators;
consequently, the robot application-software we present
productivity. Synonymous with this projected increase will here, takes over the most complicated task, which is robot
be the requirement for capable programming and control motion planning. The remaining manageable tasks related to
technologies. Many industries employ offline programming the given mission, e.g. spraying, handling or painting,
within a manually controlled and specified work continue to be the responsibility of the operator. In a
environment. This is especially true within the high-volume handling mission for example, the operator provides
automotive industry, particularly when related to high-speed information about what the robot has to do, e.g. placing
assembly and component handling, but also in the case of objects to specific positions in a specified order, while the
medium sized and small batch manufacture. Any scenarios, online robot software application knows how to control the
reliant on manual data input, based on real world robot. This is accomplished with the help of the trajectory
obstructions, necessitate the complete production system planning algorithm presented here.
being offline for an appreciable time while data is input. This trajectory planning algorithm is an important integral
These production downtimes consequently cause financial part of the enhanced online robot programming application
losses. Published research appears to be concentrated on the to find suitable robot trajectories in order to generate the
application of simulation tools to generate discrete portions robot program with the required features. A robot trajectory
of the total robot trajectories [1, 2], whilst necessitating is a path in the working space of the robot. Each point on the
manual input to link paths associated with one particular path is described as a vector with the position and the time.
The trajectory planning task here is to find a collision free
movement of the robot from the start to the target location
Manuscript received October 15, 2012.
Christian Kohrt is with UWE - University of the West of England, considering the motion constraints of the robot (e.g. a car
Bristol, UK (e-mail: christian@[Link]). that cannot move sideways), whilst also satisfying the
Anthony G. Pipe is with UWE - University of the West of England, requirements for readability, maintainability and
Bristol, UK (e-mail: [Link]@[Link]).
Gudrun Schiedermeier is with UASL – University of Applied Sciences changeability of the derived robot program.
Landshut, Germany (e-mail: gschied@[Link]). Laboratory tests in Section IV have demonstrated that the
Richard Stamp is with UWE - University of the West of England, so achieved trajectory represents a trade-off between path
Bristol, UK (e-mail: [Link]@[Link]).
Janice Kiely is with UWE - University of the West of England, Bristol, shortness of the trajectory and readability, maintainability
UK (e-mail: [Link]@[Link]). and changeability of the resulting robot program.
,((( 1542
II. LITERATURE OVERVIEW on the obstacles within the working space. This information
Trajectory planning is a fundamental problem and is input by external sensors through a sensor fusion
significant research has been conducted during the last framework. A collision button and computer-aided design
decades either in static or in dynamic environments [4]. For data of a construction process of the working cell have been
example, roadmap methods [5] do not compute the whole utilized in the test environment to detect obstacles. The
configuration space, they rather try to generate a roadmap of choice is based on the fact that model data is often available
suitable configurations. Apart from roadmap based and the operator itself is a reliable source to detect collisions.
techniques, the potential field approach [6, 7] and cell based Additional more advanced sensors, such as machine vision
methods [8] are two popular path planning approaches. can be applied as well to increase the recognition
The cell based method in combination with the potential performance, but this work is beyond the scope of this
field has been studied in [8] and has been successfully article.
applied to arbitrary shaped robots in dynamic environments. The occupancy and the reachability information are
The computation time of the potential field has been reduced employed to create a roadmap within the reachable free
by introducing hierarchical subdivision approaches such as space of the octree. The roadmap forms a Voronoi diagram,
quadtree and octree based methods [9]. Cell based methods which is created by a cell-based algorithm within the octree.
often generate a path connecting the midpoints of the cells. A search algorithm is executed on the joint positions
The publication [10] identifies two limitations with cell located within the roadmap to identify the shortest path from
based methods. First, the detection of small passages the start to the target position. Subsequently, the so derived
requires high accuracy of the octree or quadtree. Second, the path is turned into a trajectory through the application of the
shortest path is not always identified since the distance elastic net, presented in [19].
calculations of the cells often use the midpoints of the cells. The employed algorithm facilitates only kinematic
Thus, the paths obtained by the cell based method are not forward calculations to avoid ambiguities and to reduce
optimal because of the connectivity limitations in a grid. computation time of the inverse kinematic calculation.
The potential field approach has several limitations as A. World Model
outlined in [6]. In particular, the robot may get stuck at a
Path planning is based on data about the physical
local minimum and the reported paths can be arbitrarily
environment stored within the world model. It is
long. implemented as a linear octree [9] that stores pre-existing
Voronoi based path planning methods have been studied
and dynamic information of the environment.
in [11-17]. However, the quality of the path obtained directly The computer-aided design data of a construction process
from the Voronoi diagram is long and not smooth. In the
of the working cell is adopted as information source whereas
recent years, improving the quality of the path has been an
a collision indication button, held by a human operator, is
active area of research. In [18], the Voronoi diagram was utilized as a real-time sensor. During the execution of the
combined with the visibility graph and potential field
path planner, the operator indicates upcoming collisions not
approach to path planning into a single algorithm to obtain a
predicted by the automated system through the real-time
trade-off between safest and shortest paths. The algorithm is sensor. Robot type information is particularly important
fairly complicated but the path length is shorter than those
allowing the use of a simulation model of the robot to afford
obtained from the potential field method or the Voronoi forward and inverse kinematic pre-calculations.
diagram.
The world model handles the information and combines
Most of the algorithms have limitations in real-time path
the CAD data and real-time data mentioned above. The
planning where the world model with unknown obstacles is deriving data fusion is carried out as a voting system [4].
updated during runtime. These algorithms work best on
Real robot applications have demonstrated that sensors may
given maps including full knowledge of all obstacles. deliver wrong information [20]. Therefore, each sensory
source is classified through the reliability weight between
III. TRAJECTORY PLANNING
0.0 and 1.0 and an applied simple moving average filter
The trajectory-planning algorithm plans a trajectory delivers cohesive information.
between two given joint positions. A linear octree [9] is used
to represent the working space of the robot in a spatial world B. Reachability Calculation
space. The octree stores its cells in a predefined maximum The configuration space of an articulated robot is often
accuracy defined by the octree depth. Each cell contains a discretized in order to execute a path searching algorithm on
binary tree to store the robot joint positions and stores a the discretized search space. The discretization plays an
reachability value, which describes if the robot can move its important role since the accuracy of the search algorithm is
tool-center-point (e.g. the robot hand) into the cell area often coupled with the accuracy of the discretization. The
without collision. The general reachability is stored in a pre- approaches in [21-23] use hierarchical structures, capability
calculation step described in Section III.B. maps or non-uniform discretization to optimize the search
In addition, each cell stores an occupancy value as well. space to enable efficient searching.
Cells are defined as fully, partly or not occupied, depending Optimization can in general be reached by minimizing or
1543
ordering the search space specifically for the applied search ο ൌ ሺοଵ ǡ ǥ ǡ οୈ ሻ of a -dimensional configuration
algorithm. The planning algorithm described here is space. A uniform discretization for all joints of the robot
executed in the constrained configuration space to improve manipulator can be defined with ο୧ ൌ for some constant
the search algorithm, as will be seen in the next sections. .
The reachability of the robot is required to calculate these With a reasonable joint resolution of ͳι, the uniform
constraints. discretization results in huge configuration spaces. For
The reachability of a robot in world space can be example, a discretization of the joints of the Mitsubishi RV-
calculated by transforming the robot configurations from the 2AJ with ο ൌ ሺͳιǡ ͳιǡ ͳιǡ ͳιǡ ͳιሻ results in a configuration
tool center point coordinates to world coordinates or vice space with ͺͻǤͶʹ ή ͳͲଵ states.
versa. This transformation can be applied with forward or The algorithm presented in this article is based on
inverse calculations of the robot kinematics. An efficient equation (1), where ୧ is the distance between the centers of
inverse calculation can only be achieved for world joint ݅ to the farthest point the end-effector can reach, and
coordinates with given information about its position and ݁ݒܯݔܽܯis a pre-set distance the robot may move at one
orientation. Since the orientation can be arbitrarily chosen, step along the coordinate.
inverse calculations lead to intensive computation. ݁ݒܯݔܽܯ
This problem has been studied in [21, 22] and a simple οݍ ൌ ʹ ή (1)
ʹ ή ݈
pre-calculation step is proposed to generate and persist the The optimal discretization results in Cartesian movements
required information in a look-up table by forward οݔ of the joint ݅, which meets the condition
calculations of the robot arm configuration to the points in οݔ௫ ݁ݒܯݔܽܯwhere οݔ௫ ൌ ሼοݔ ǡ ݅ሽ.
space. The look-up table may, in general, be used if the For ݁ݒܯݔܽܯൌ ͳͲ݉݉ of a Mitsubishi RV-2AJ
robot kinematics are static and known beforehand. Since this industrial robot, the optimal discretization equals to
algorithm is used in an industrial environment, both ο ൌ ሺͲǤͺͲιǡ ͲǤͻͺιǡ ͳǤ͵ιǡ ͵Ǥ͵͵ιǡ ͷǤ͵ιሻ.
statements are fulfilled. The aim of the look-up table is to The size of the corresponding configuration space
represent the reachability with a limited number of joint considering the mechanical constraints for the utilized
positions ୖ to reduce the search space for a path-searching Mitsubishi robot is ͵ǤͶʹ ή ͳͲଵ states. This is ͳǤͺͻ
algorithm. The number of joint positions ୖ has direct magnitudes less compared to the uniform discretization with
impact on the running time of the path searching algorithm ο ൌ ሺͲǤͺιǡ ͲǤͺιǡ ͲǤͺιǡ ͲǤͺιǡ ͲǤͺιሻ and ʹͶǤͻͻ ή ͳͲଵ states.
and the required pre-calculation time of the look-up table. The configuration space is computed with forward
The limitation is possible because of the employed search calculations of the robot manipulator and the joint positions
algorithm described in Section III.E. The discretization of ܲோ are stored within the octree. This calculation has to be
the configuration space has been implemented with a robot done once per robot.
link dependent accuracy ୬ (with is the link number),
which identifies the link importance and considers the sweep C. Occupancy Calculation
occupation volume of the robot links as well as the The occupancy calculation is done beforehand and online
mechanical constraints of the robot joints. by sensors during path planning to update the world model.
The implemented linear octree - the world model - has a The first information source is modeled data, which has been
defined depth , which allows calculation of the smallest applied to the in-memory world model and handled as a
octree cell size. This can be further employed to estimate the sensor. This information source is amended by a binary
robot link dependent accuracies ୬ , which have to be collision indication button of the operator and it has turned
carefully chosen. In order to guarantee that the path- out to be sufficient for the proposed trajectory planning
searching algorithm will complete the search task algorithm.
successfully, it has to be ensured that enough discretized
D. Voronoi Based Roadmap Generation
positions ܲோ are stored per octree cell on the deepest level.
Roadmap methods generally identify a set of roads, which
The octree accuracy does not need to be very high
may be safely travelled along without incurring collisions
because the employed trajectory planning methodology
with obstacles. The method here adopted has been inspired
discussed in Section III.E only applies to the octree for path
by [16], based on the Voronoi form [25, 26]. This choice has
searching. The trajectory generation algorithm actively
been taken after considering two important aspects. First, the
requests additional positions and operates almost
Voronoi form may be applied either in the world space or in
independently from the octree.
the joint space of the robot. Second, it maximizes the
Various methodologies for discretizing the configuration
clearance of obstacles, so that the path-planning algorithms
space are presented in the literature. An optimal
do not have to be particularly accurate. The second point
discretization methodology that sets the resolution along
may be perceived as a negative characteristic too, since the
each configuration coordinate (robot axis) according to the
derived roads are not short, smooth or continuous enough to
maximum movement of the robot end-effector at each step
guarantee an enhancement [18, 27] (see Section III.E). In
that the robot moves along this coordinate is described in
fact, implementation tests of [16] have shown that a Voronoi
[24]. The discretization resolution is determined with
1544
form is rarely reached. Adjustments of the parameters by 1. Store all border, obstacle and extended
cells ܥin the open list
trial and error, as suggested by the authors of [16], have not 2. While open list element count > 0
led to any improved results either. In addition, real-time 2.1. Take first cell ܥ from the open list
robot control with this kind of neural network requires 2.2. Inspect all neighbour cells of ୧ and
mark each extended neighbour cell
processing of the neurons to adapt to the environment according to the following conditions:
including the obstacles. Since random positions are not 2.2.1. If the extended cell is located
available in real environments the proposed approach has between two or more obstacles
[Link]. If the cell is not reachable
not been followed here any further. it is marked ‘0’
Hence, the concept at the basis of the Voronoi form has [Link]. Else it is marked ‘-1’
2.2.2. Else copy the mark from cell ୧
been extended and applied to a grid-based algorithm. First,
2.3. Add all neighbour cells of ୧ , which are
the obstacle and border cells are added to an open list. not in the closed list, to the open list
Successively, all neighbor cells are iterated for all elements 2.4. Move cell ୧ from the open list to the
closed list
in the open list in order to mark them with the obstacle 3. Wend
number according to the currently examined element of the Listing 1. Cell extension algorithm.
open list. The currently examined element is moved from the 1. Get the robot posture for a collision
open to the closed list and extended cells are added to the indication
open list to be examined in the next iteration. 2. Execute forward calculation to get the world
position
The general grid-based algorithm described in Listing 1 3. Store the joint position to the responsible
produces the approximated Voronoi diagram. The primary octree cell
4. Calculate the occupation value for the cell
aim is to approximate a Voronoi form between the obstacles 5. Update the parent cells
and the border cells in joint space. 6. Recalculate the cell region ݀ to obtain the
The grid used in the implementation is an octree in three updated Voronoi diagram
Listing 2. Obstacle addition algorithm.
dimensions. It allows adding obstacles during runtime while
recalculation is only necessary for neighboring 10
10
areas (see III.D). The octree also provides the opportunity to 10
10 -1 -1 -1 -1 4 4 4 4 4 4 4 4 4 4
time development of the topology and connectivity of the
10 -1 -1 1 1 -1 4 24 4 4 4 4 4 4 4 4
robot workspace. 10 -1 1 1 1 -1 4 4 4 4 4 4 4 4 4 -1
10 -1 2 2 -1 -1 3 -1 25 5 5 -1 -1
indication positions are stored as robot joint positions into 10 -1 -1 -1 -1 23 3 -1 25 5 -1 -1
calculated. 10
10
information of the working space and the obstacles is 10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
which are the collision button and the computer aided design 10 -1 4 4 4 4 4 4 4 4 4 4 4 4
10 -1 -1 1 1 -1 4 24 4 4 4 4 4 4 4 -1
structure in the steps described in Listing 2.
10 -1 1 1 1 -1 4 -1 -1 -1 -1 -1 -1 4 -1 -1
position into the octree cell that is responsible for the world 10 -1 2 22 2 -1 3 -1 25 5 5 5 -1 -1
position region. 10 -1 2 2 -1 -1 3 -1 25 5 5 -1 -1
10 -1 -1 -1 -1 23 3 -1 25 5 -1 -1
The cell is marked with an occupation value in 10 -1 23 -1 -1 25 -1 -1
accordance to the reported and fused sensor value େୣ୪୪ . A 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
probability threshold of ൌ ͲǤͺ is applied in equation (2) to Figure 1. Dynamic and fast cell extension example (before and after
transform the cell occupancy value to the binary value update).
େୣ୪୪ా౨౯ required by the Voronoi roadmap generation
Parent cells are updated to either partly or fully occupied
algorithm. depending on the occupation of the child cells of the parent.
ͳ Parts of the Voronoi roadmap have to be recalculated if new
େୣ୪୪ా౨౯ ൌ ቄ େୣ୪୪ (2) collision information is processed. A minimum distance ୫୧୬
Ͳ
of the robot TCP is introduced to those obstacles, which is
1545
used to clear surrounding extended groups of cells within the based on the roadmap and accuracy of the octree,
distance ୫୧୬ . An example is illustrated in Figure 1. considering all the joint positions within the cells of the
roads. The accuracy of the road cells are uniformly at the
The cell in position (9, 6) is updated and marked as highest level. This also defines the minimum size of small
occupied (see second figure, cell number 26). A radius of passages that may be captured.
୫୧୬ ൌ ͷ cells is considered. As a result, the group
information and the Voronoi path are recalculated. Path planning consists of two steps. First, within the
roadmap the shortest path from the start to the goal is
The second example in Figure 2 focuses on the defined calculated within the joint space. As a second step, the
distance and shows how the distance influences the Voronoi algorithm transforms the identified path into a trajectory
path generation. The distance to the occupied cells shall be consisting of movement primitives, described in Section
maximized within the given boundary of ୫୧୬ . The occupied III.F. The trajectory avoids obstacles and reduces the
cell ‘27’ (only its extended cells ‘7’ are visible) is next to the clearance to them. This is done by forces applied on the
newly added occupied cell ‘26’ and, thus, the Voronoi path roads within the map [19].
is adapted. The guaranteed space between the Voronoi path
and the newly added cell is ୫୧୬ Τʹ because the cell Information about the environment in which the robot
extension mechanism starts from the given distance and operates and about the objects it has to avoid is captured
grows from both sides in order to meet in the middle of within the roadmap. The roadmap is improved during
୫୧୬ . trajectory planning. Real sensory information is delivered to
the roadmap in the form of collision locations. This leads to
an adaptation process of the roadmap, which primarily
targets the approximation of the Voronoi form.
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
The A* search algorithm [29] is first used to conduct a
4 4 4 4 4 4 4 4 4 -1 7 7 7 7 -1
4 4 4 4 4 4 4 4 4 -1 7 7 7 7 -1 -1
local search and connect the start and target locations to the
4 4 4 4 4 4 4 4 -1 -1 -1 -1 7 7 7 -1 -1
roadmap and, second, to search within the joint positions of
4 4 4 4 4 4 4 -1 -1 -1 -1 7 7 7 -1 the Voronoi roadmap. The start and target locations are
4 4 4 4 4 4 -1 -1 -1 -1 7 7 7 handled as obstacles: this means that Voronoi roads are
-1 -1 -1 -1 -1 -1 -1 -1 -1 7 7 generated around them. The extended cells are added to the
5 5 5 5 -1 -1 -1 -1 7
search space to connect the location with the Voronoi roads.
5 5 5 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
octree cells. The reachability calculation described in
4 4 -1 6 6 6 6 6 6 6 6 6 -1 7 -1
Section III.B has to consider this by choosing the accuracy
4 4 -1 6 6 6 6 6 6 6 6 6 -1 7 -1 -1
accordingly. This is highly dependent on the robot geometry.
4 4 -1 6 6 6 6 6 26 6 6 6 -1 7 7 -1 -1
4 4 -1 6 6 6 6 6 6 6 6 6 -1 7 7 7 -1
The octree is an extension of the quadtree, which has
4 4 -1 6 6 6 6 6 6 6 6 6 -1 -1 7 7 7
shown two limitations [10] in path planning: first, the
-1 -1 -1 6 6 6 6 6 6 6 6 6 -1 -1 -1 7 7
detection of small passages requires high accuracy of the
5 5 -1 6 6 6 6 6 6 6 6 6 -1 -1 -1 7 octree/quadtree. Second, the shortest path is not always
5 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 identified since the distance calculations of the cells always
5 5 -1 -1 -1 use the midpoints of the cells.
5 -1 -1
1546
As mentioned in III.C, the occupancy probabilities for not imported. The chosen scenario consists of a mission with
the cells are considered as movement costs during path the start and target positions P1 and P10.
planning. Since the search is not conducted within the cells
but within the joint positions, each joint position is allocated A. The Generated Roadmap
the probability given by the containment cell [30]. The The scenario in Figure 3 is processed to the roadmap
connectivity of the octree cells includes direct and diagonal shown in Figure 6. Each cell of the roadmap contains the
neighbors so that each non-boundary cell has 26 neighbors. produced robot positions in configuration space, as
explained in Section III.B.
Moreover, the application of the A* algorithm to a real
robot in order to identify the shortest path often leads to re-
planning of the path itself each time a shorter path is found.
Since real robot movements are involved, this should not
happen too often. A hysteresis on the path length is applied
in order to prevent this and to allow an additional
exploration of the working space: consequently, the system
achieves environment information stored within the world
model.
The A* path planning method together with the
probabilistic occupancy map projected on joint positions Figure 3: Illustration of the experimental scenario in the 3D world.
always delivers the shortest roadmap Voronoi road, if one
exists. The search space is reduced by the Voronoi form in B. Corridor of Robot Space Positions
world space and the reachability calculation is dependent on Using the generated roadmap in IV.A, the resulting
the robot geometry. The joint positions are carefully corridor is given in
distributed along the roadmap paths. Through the application
of this methodology, good performance of the search stage is Figure 4, including the indicated configuration space
assured. positions. The search is executed on those positions and it
finds a path, as illustrated. Configuration space positions are
F. Elastic Net Trajectory Generation also added to the start and target positions including their
As mentioned before, transformation of the path to a extended cells, as explained in Section III.B.
trajectory is a necessary step carried out by the application C. Elastic Net Trajectory Generation
of the elastic net. The path within the roadmap found by the
A* algorithm consists of connected joint space positions. In Figure 5, the found path is processed and adapted to a
Transformation of the path into a trajectory is reached by feasible trajectory, shown in Figure 6. The elastic net
applying equidistance, rotation and shrink forces on the joint algorithm is parameterized regarding its shrink forces. Those
space positions [19] in world space. For these positions, both forces (shown as arrows in Figure 5) move the particles on a
forward and inverse kinematic calculations are used. The straight line and, thus, push the trajectory to the obstacles.
generated trajectory consists of canonically ordered The stronger the force, the more the trajectory is moved
movement primitives, which are linear and circular towards the obstacles and the more collisions may occur.
movements. The joint movement type is not of interest for The path planning system first controls the real robot along a
the online path planning application and it is therefore trajectory with low shrink forces applied to reduce the
omitted. The transformation considers the reachability and number of collision indications. The real robot may now be
obstacles automatically, as shown in Section 3. controlled along the generated trajectory until a collision is
indicated or the target is reached. After the final trajectory is
IV. EXPERIMENTAL RESULTS found, the shrink force may be raised to optimize the
trajectory.
In this section, the general execution of the programming
assistant is described and a scenario (see Figure 3) has been D. Re-planning on Collision Indications
chosen to demonstrate the proposed approach. The system is As mentioned in IV.A, the search is executed within the
executed with a real five axis industrial scale, articulated roadmap corridor containing configuration space positions
Mitsubishi RV-2AJ robot [31]. The algorithm utilizes an of the robot. During the movement execution of a solution,
octree as world model (as described in Section III.A) and new information about the workspace and the obstacles may
joint positions attached to the octree cells. During be added to the world model. This normally happens when
implementation, the algorithm has been tested in simulated collisions are indicated. With a dynamic update of the world
two-dimensional space using a quadtree as world model and model, a new search is initiated.
world positions attached to the quadtree cells. The proposed
algorithm works in real surroundings. The illustrations The real robot stops its previous movements, moves back
shown in this section are simplified to support understanding to the last common trajectory position and follows the new
of the algorithm. trajectory. Figure 7 illustrates the environment exploration
and the resulting world model updates to recognize obstacle
In the chosen real scenario, the two obstacles O1 and O2 O3. As a result, the Voronoi roadmap plans a new trajectory
are given as computer-aided design (CAD) objects and around the newly added obstacle location. It turns out that
imported into the in-memory environment model. One those locations are also occupied and therefore a completely
obstacle O3 shall be unknown to the system and is therefore
1547
new trajectory is found, as shown in Figure 8, which is the operator or other sensors is used to improve the roadmap
further modified as described in IV.A. and, thus, exploration of the environment takes place.
10 10 10
-1 -1 21 21 21 21 21 21 21 21 21 21 21
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 21 21 21 21 21 21 21 21 21 21 21 21 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 21 21 21 21 21 21 21 21 21 21 21
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1
-1 -1 4 -1 2 2 2 2 2 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 -1 -1 4 -1 2 2 2 2 2 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1
10 -1 -1 4 -1 -1 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1
-1 -1 4 -1 -1 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21
10 -1 24 -1 -1 2 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1 10
P1: Start
-1 24 -1 -1 2 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 10 -1 -1 -1 2 2 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21 21 1 -1 10
P1: Start 10 -1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21 21 1 -1 10
-1 -1 -1 2 2 2 2 22 22 22 2 2 -1 1 1 21 21 21 21 21 21 21 21 21 21 21
10 -1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21 21 1 -1 10
10 -1 22 22 22 2 2 2 22 22 22 2 2 -1 -1 -1 -1 -1 -1 -1 -1 1 1 21 21 21 21 21 1 -1 10
-1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21
10 -1 22 22 22 2 2 2 22 22 22 2 2 2 2 2 2 2 2 2 -1 -1 1 1 1 1 1 1 1 -1 10
-1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21 10 -1 22 22 22 22 22 22 22 22 22 2 2 2 2 2 2 2 2 2 2 -1 1 1 1 1 1 1 -1 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 -1 -1 -1 -1 -1 -1 -1 -1 10
-1 22 22 22 2 2 2 22 22 22 2 2 -1 -1 -1 -1 -1 -1 -1 -1 1 1 21 21 21 21
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 3 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 -1 -1 10
-1 22 22 22 2 2 2 22 22 22 2 2 2 2 2 2 2 2 2 -1 -1 1 1 1 1 1
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 23 3 -1 10
-1 22 22 22 22 22 22 22 22 22 2 2 2 2 2 2 2 2 2 2 -1 1 1 1 1 1 10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3
P10
3
: -1Target 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 -1 10
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 -1 -1 -1 -1 -1 -1
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 -1 10
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 -1 3 3 3 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 -1 -1 -1 -1 10
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 10
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 10
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 23 3
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2
P210:-1Target
3 3 3 3
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1 10
10 -1 -1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -1 10
10 -1 -1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -1 10
10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 10
10 10
10 10
-1 -1 21 21 21 21 21 21 21 21 21 21 21
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 21 21 21 21 21 21 21 21 21 21 21
-1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21 1 1 1 1 1 1 1 21 21 21 21 1 1 -1 -1 -1 -1 1 21 21 21 21 2 2 2 2 2 2 2 22 22 22 22
-1 22 22 22 2 2 2 22 22 22 2 2 -1 1 1 1 1 1 1 1 1 1 21 21 21 21 -1 -1 -1 -1 -1 1 1 21 21 21 21 -1 -1 -1 4 4 -1 -1 21 21 21 21 2 2 2 2 2 2 22 22 22 22 22
2 2 2 2 -1 -1 1 1 1 1 1 2 2 -1 -1 4 4 -1 -1 1 1 1 2 2 2 2 22 22 22 2 2 2 2
-1 22 22 22 2 2 2 22 22 22 2 2 -1 -1 -1 -1 -1 -1 -1 -1 1 1 21 21 21 21
2 2 2 2 2 -1 1 1 1 1 1 2 2 2 -1 -1 24 4 -1 -1 1 1 2 2 2 22 22 2 2 2 2 2 2
-1 22 22 22 2 2 2 22 22 22 2 2 2 2 2 2 2 2 2 -1 -1 1 1 1 1 1
22 22 22 22 2 -1 -1 -1 -1 -1 -1 22 22 22 22 -1 4 4 4 -1 -1 -1 22 22 22 22 2 2 2 -1 -1 -1 -1
-1 22 22 22 22 22 22 22 22 22 2 2 2 2 2 2 2 2 2 2 -1 1 1 1 1 1
22 22 22 22 2 2 -1 3 3 3 3 22 22 22 22 -1 -1 4 -1 -1 3 3 22 22 22 22 2 2 -1 -1 3 3 3
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 -1 -1 -1 -1 -1 -1 22 22 22 22 2 2 -1 3 3 3 3 22 22 22 22 2 -1 -1 -1 3 3 3 22 22 22 22 2 2 -1 3 3 3 3
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3 22 22 22 22 2 2 -1 3 3 23 3 22 22 22 22 2 2 -1 3 3 23 3 22 22 22 22 2 2 -1 3 3 23 3
22 22 22 22 2
P210:-1Target
3 3 3 3 22 22 22 22 2
P210:-1Target
3 3 3 3 22 22 22 22 2
P210:-1 Target
3 3 3 3
-1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 -1 3 3 3 3
10
-1
-1 24
-1 4
-1
-1
-1
-1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
10
-1
-1
22
22
22
22
22
22
2
2
2
2
2
2 22
2 2
22
2
22
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
22
22
22
22
22
22
22
22
10 -1 22 22 22 2 2 2 22 22 22 2 2 2 2 2 2 2 2 2 22 22 22 2 2 2 2
10 -1 22 22 22 22 22 22 22 22 22 2 2 2 2 2 2 2 2 22 22 2 2 2 2 2 2
10
-1
-1
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
2
2
2
2
2
-1
-1
-1
-1
3
-1
3
-1
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 P-110:3 Target
3 3 3
10
-1
-1
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
2
2
2
2
-1
-1
3
3
3
3
3
3
3
10
-1
-1
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
22
2
2
2
2
-1
2
-1
-1 -1
3 3
-1
3
-1
10 -1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 -1
10
-1 -1
-1
2
-1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
-1
-1
10
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
1548
shorter after optimization, this approach presents a good Proceedings. ICRA '00. IEEE International Conference on, 2000, pp.
approximation. This two stage approach allows the use of 2931-2937 vol.2933.
low accuracies in the search stage, which speeds up the [13] H. Ingaki, K. Sugihara, N. Sugie, Numerically robust incremental
algorithm for constructing three-dimensional Voronoi diagrams, in:
algorithm. The accuracy of the octree controls the capability Proc. 4th Canad. Conf. Comput. Geom., 1992, pp. 334--339.
of the path searching algorithm to find small passages. The [14] J. Kim, F. Zhang, M. Egerstedt, An Exploration Strategy Based on the
robot configuration space discretization in the pre- Constructing Voronoi Diagrams, in: IEEE Conference on Decision
calculation step is optimized for the accuracy. Too many and Control \& Chinese Control Conference, 2009.
discretization positions lead to long path planning times, [15] J. Vleugels, M. Overmars, Approximating Generalized Voronoi
whereas too few positions prevent the path planner to find a Diagrams in Any Dimension, in, 1995.
solution. [16] J.M. Vleugels, J.N. Kok, M.H. Overmars, Motion Planning Using a
Colored Kohonen Network, (1993).
This approach considers world and joint coordinates and [17] S. Fortune, A sweepline algorithm for Voronoi diagrams, in:
joins them in the octree. The transition is an important step, Proceedings of the second annual symposium on Computational
since inverse calculations of target positions for articulated geometry, ACM, Yorktown Heights, New York, United States, 1986,
robots often result in non-singular robot postures. Reported pp. 313-322.
collisions occur in a single posture and, thus, postures have [18] E. Masehian, M.R. Amin-Naseri, A voronoi diagram-visibility graph-
been stored within the octree cells for obstacle avoidance. potential field compound algorithm for robot path planning, J. Robot.
Syst., 21 (2004) 275-300.
The presented methodology considers static obstacles. [19] C. Kohrt, G. Schiedermeier, A.G. Pipe, J. Kiely, R. Stamp,
An extension to dynamic obstacles requires two collision Nonholonomic Motion Planning by Means of Particles, in: Proc.
indication buttons to classify dynamic and static obstacles. IEEE Int Mechatronics and Automation Conf, 2006, pp. 729-733.
Dynamic obstacles that have the same state in each time step [20] D.L. Hall, J. Llinas, An introduction to multisensor data fusion,
Proceedings of the IEEE, 85 (1997) 6 -23.
for each production cycle can be supported. These are the
[21] J. Yang, P. Dymond, M. Jenkin, Exploiting Hierarchical Probabilistic
only obstacle types required for the defined industrial Motion Planning for Robot Reachable Workspace Estimation, in: J.A.
production scenario. Cetto, J. Filipe, J.-L. Ferrier (Eds.) Informatics in Control Automation
and Robotics, Springer Berlin Heidelberg, 2011, pp. 229-241.
REFERENCES [22] F. Zacharias, C. Borst, G. Hirzinger, Capturing robot workspace
structure: representing robot capabilities, in: Intelligent Robots and
[1] Y. Demiris, A. Billard, Special Issue on Robot Learning by
Systems, 2007. IROS 2007. IEEE/RSJ International Conference on,
Observation, Demonstration, and Imitation, 37 (2007) 254-255.
2007, pp. 3229 -3236.
[2] L. Qi, X. Yin, H. Wang, L. Tao, Virtual engineering: challenges and
[23] J.H. Reif, H. Wang, Nonuniform Discretization for Kinodynamic
solutions for intuitive offline programming for industrial robot, in:
Motion Planning and its Applications, SIAM Journal on Computing,
Proc. IEEE Conf. Robotics, Automation and Mechatronics, 2008, pp.
30 (2000) 161-190.
12-17.
[24] D. Henrich, C. Wurll, H. Worn, Online path planning with optimal C-
[3] Z. Pan, J. Polden, N. Larkin, S.V. Duin, J. Norrish, Recent Progress
space discretization, in: Intelligent Robots and Systems, 1998.
on Programming Methods for Industrial Robots, Robotics (ISR), 2010
Proceedings., 1998 IEEE/RSJ International Conference on, 1998, pp.
41st International Symposium on and 2010 6th German Conference
1479-1484 vol.1473.
on Robotics (ROBOTIK), (2010) 1-8.
[25] P. Bhattacharya, M.L. Gavrilova, Roadmap-Based Path Planning -
[4] H. Chen, T. Fuhlbrigge, X. Li, Automated industrial robot path
Using the Voronoi Diagram for a Clearance-Based Shortest Path,
planning for spray painting process: A review, in: Proc. IEEE Int.
IEEE Robotics & Automation Magazine, 15 (2008) 58-66.
Conf. Automation Science and Engineering CASE 2008, 2008, pp.
522-527. [26] A.K. Garga, N.K. Bose, A neural network approach to the
construction of Delaunay tessellation of points in Rd, Circuits and
[5] R. Geraerts, M.H. Overmars, A comparative study of probabilistic
Systems I: Fundamental Theory and Applications, IEEE Transactions
roadmap planners, in: IN: WORKSHOP ON THE ALGORITHMIC
on, 41 (1994) 611 -613.
FOUNDATIONS OF ROBOTICS, 2002, pp. 43-57.
[27] P. Bhattacharya, M.L. Gavrilova, Voronoi diagram in optimal path
[6] Y. Koren, J. Borenstein, Potential Field Methods and Their Inherent
planning, in: Proc. 4th Int. Symp. Voronoi Diagrams in Science and
Limitations for mobile robot navigation, in: Proceedings of the IEEE
Engineering ISVD '07, 2007, pp. 38-47.
Conference on Robotics and Automation, Sacramento, California,
1991, pp. pp. 1398-1404. [28] L.E. Dubins, On Curves of Minimal Length with a Constraint on
Average Curvature, and with Prescribed Initial and Terminal Positions
[7] C.W. Warren, Global path planning using artificial potential fields,
and Tangents, American Journal of Mathematics, 79 (1957) 497-516.
(1989).
[29] S.-J. Russell, P. Norvig, Artificial Intelligence: A Modern Approach
[8] Y. Kitamura, T. Tanaka, F. Kishino, M. Yachida, 3-D path planning in
(2nd Edition), Prentice Hall, 2002.
a dynamic environment using an octree and an artificial potential
field, in: Intelligent Robots and Systems 95. 'Human Robot [30] P. Payeur, Improving robot path planning efficiency with probabilistic
Interaction and Cooperative Robots', Proceedings. 1995 IEEE/RSJ virtual environment models, (2004).
International Conference on, 1995, pp. 474 -481 vol.472. [31] C. Kohrt, A. Pipe, G. Schiedermeier, R. Stamp, J. Kiely, A robot
[9] I. Gargantini, Linear octtrees for fast processing of three-dimensional manipulator communications and control framework, in: Proc. IEEE
objects, Computer Graphics and Image Processing, 20(4) (1982) 363- Int. Conf. Mechatronics and Automation ICMA, 2008, pp. 846-851.
374.
[10] J.Y. Hwang, J.S. Kim, S.S. Lim, K.H. Park, A fast path planning by
path graph optimization, Systems, Man and Cybernetics, Part A, IEEE
Transactions on, 33 (2003) 121-129.
[11] P. Bhattacharya, M.L. Gavrilova, Roadmap-Based Path Planning -
Using the Voronoi Diagram for a Clearance-Based Shortest Path,
IEEE Robotics \& Automation Magazine, 15 (2008) 58-66.
[12] K. Hoff, III, T. Culver, J. Keyser, M.C. Lin, D. Manocha, Interactive
motion planning using hardware-accelerated computation of
generalized Voronoi diagrams, in: Robotics and Automation, 2000.
1549
J. Attachments
KOHRT, C., PIPE, A., SCHIEDERMEIER, G., STAMP, R. and KIELY, J. (2011) An
Online Robot Trajectory Planning and Programming Support System for Industrial Use.
Journal of Robotics and Computer-Integrated Manufacturing.
(This is a sample cover image for this issue. The actual cover is not yet available at this time.)
a r t i c l e i n f o abstract
Article history: The manufacturing industry today is still looking for enhancement of their production. Programming of
Received 26 September 2011 articulated production robots is a major area for improvement. Today, offline simulation modified by
Received in revised form manual programming is widely used to reduce production downtimes but requires financial invest-
3 June 2012
ments in terms of additional personnel and equipment costs. The requirements have been evaluated
Accepted 26 July 2012
considering modern manufacturing aspects and a new online robot trajectory planning and program-
ming support system is presented for industrial use. The proposed methodology is executed solely
Keywords: online, rendering offline simulation obsolete and thereby reduces costs. To enable this system, a new
Robot cell-based Voronoi generation algorithm, together with a trajectory planner, is introduced. The robot
Path
trajectories so achieved are comparable to manually programmed robot programs. The results for a
Planning
Mitsubishi RV-2AJ five axis industrial robot are presented.
Support
Program & 2012 Elsevier Ltd. All rights reserved.
Generation
0736-5845/$ - see front matter & 2012 Elsevier Ltd. All rights reserved.
[Link]
Author's personal copy
sub-tasks related to the given mission remain responsibility of the fixtures are often not available during online robot programming,
operator. The proposed methodology is executed solely online thus, the support system must handle such situations to permit its
rendering offline simulation obsolete and thereby reduces costs for use. Nevertheless, the human component still remains important and
the offline preparation of robot programs. Supported online pro- necessary: robot programs may be modified by human operators
gramming must be fast and flexible to reduce possible production during their lifecycle because of possible changes. The so generated
downtimes. The generated trajectories must conform to the given programs must be readable, maintainable and changeable.
requirements in quality and speed. Physical production parts and
Target locations may also be determined by a manual move- i.e., shortest path finding and path smoothing. The proposed path
ment of the robot or by visual servo-control. The first is possible planning system identifies a trade-off between both. Path finding
with the support of a joystick or a teach pendant. The visual and smoothing are actually two competitive tasks, considering
servo-control applies a pointing device to indicate the target also that smoothing is generally applied after the definition of the
location to the robot. The robot moves automatically towards path itself. The proposed path planner allows on the contrary the
the given location with the help of a neural network and stores concurrent execution of both tasks. Optimality here is identified
the position. Successively, the network transforms picture in form of the trajectory [Link] so generated trajectory
coordinates into robot control commands as described in [18]. consists only of a small number of locations and movement
The Workspace Exploration component gathers additional primitives (linear, joint and circular movements). This approx-
environmental information, by direction of the robot to move imation renders the robot program maintainable, clearly struc-
within the workspace. This is realised through manual move- tured and understandable by human robot programmers.
ments, random movements and existing robot programs. Colli-
sions are always processed during exploration. Throughout its 4.1. Overall algorithm
movements, the robot ascertains which parts of the space are free
within its coordinate system, by either visual feedback or manual The content of the following paragraphs is based on the path
collision indication. This information becomes more accurate planning workflow shown below:
during the planning process.
The Robot Control component [12] grants the direct commu- (1) Set up online path planning and program generation support
nication with the robot and enables direct robot control, serial/ system including hardware.
Ethernet connection, robot parameter editing/reading/writing, (2) Import pre-existing data (robot geometry and computer-
program uploading and downloading, real-time movement con- aided design data).
trol, robot system backup/restore, external control over the user (3) Create a mission by robot movements, computer-aided design
datagram protocol (UDP) and equipment control. locations, pointing device or simulation.
The robot path is completely stored within the support system (4) Execution of the support system.
in form of a trajectory that consists of connected particles. Its a. Create connectivity in form of an approximated Voronoi
transfer to a robot specific program is achieved within the Robot form.
Program Generation component in two steps: first, translation into b. Explore the workspace and update the world model.
a robot program of solely the provided trajectory; second, gen- i. Automatic random exploration.
eration of the specific robot program enriched with additional ii. Exploration by existing robot programs.
configuration commands and specific linguistic syntax. The here iii. Exploration by following the Voronoi lines to the target
described two-step generation may also be applied to support without path smoothing.
other robot types. c. Apply the path searching algorithm in joint space.
d. Apply the elastic net algorithm to generate the trajectory.
e. Move along the trajectory from start to the target until
4. The online path planning and programming support either a constraint violation occurs (collision or robot
system kinematic constraint), a shorter path is found by the path
searching algorithm or the target is reached.
Deriving from the requirements described in Section 2, i. On collision or kinematic constraint violation.
a method is necessary to combine maintainability and optimality, 1. Update the roadmap and generate new roads.
Author's personal copy
2. Take back the last movement to the last common reliability weight of each source affects the calculation of the
trajectory position that is unchanged. coordinates occupation with the averaged weighted sum of the
ii. On a shorter path found in the roadmap. sensor values. The resulting probability of the occupation value
1. Continue the movement to explore the workspace rises with every check. Not only real obstacles are considered, but
along the possible trajectory solution until the path also the kinematic of the robot, consequently involving areas in
length difference is larger than a hysteresis value. space otherwise unconsidered.
2. When the path length difference is larger than the
hysteresis value, do an automatic random
exploration. 4.3.1. Pre-existing and dynamic information
3. Take back movement to the last common trajectory The world model stores information concerning the robot cell,
position of the old and new trajectory and continue the used robot and the environment in form of computer-aided
with 4e). design data. Such pre-existing information is considered before-
(5) Robot program generation. hand. The robot type information is particularly important since it
(6) Robot program file upload to the robot. allows the use of a simulation model of the robot to afford
(7) Remove the support system. forward and inverse kinematic calculations. These calculations
and computer-aided design data stored in the world model
become usable for the path planning system. Both pre-existing
and dynamic information deriving from the sensors is adopted:
4.2. General workflow
the operator gives valuable information about upcoming colli-
sions; a vision system delivers information about the robot
A general case of the workflow is illustrated in Fig. 4 and will
position and possible collisions. Obviously, not only collisions
be described in the following sections. It may be recognised
are interesting, but also information about the position of obsta-
within the world model, but also within the online robot
cles and ‘holes’ in the configuration space not recognisable from
trajectory planning and programming support system (Fig. 3).
the robot itself.
The workflow consists mainly of four actions: the linear octree
[9] stores robot environment data. The application of the data
creates a roadmap in form of a Voronoi diagram, in three- 4.3.2. Voronoi based roadmap generation
dimensional space and with a new cell-based methodology. The Roadmap methods generally identify a set of roads, in graphic
A* search algorithm is applied on joint space positions within the form, which may be safely travelled along without incurring into
roadmap. It is a famous shortest path-finding algorithm [19] that obstacles. The method here adopted has been inspired by the
uses heuristics to direct the search towards the target. The approach presented by Vleugels, Kok and Overmars [21], based on
heuristic shall never overestimate the distance to the goal. There- the Voronoi form [2,8]. This choice has been taken also consider-
fore, the joint distance is appropriate. With the support of the ing two important aspects: first, the Voronoi form may be applied
trajectory generation module (within the elastic net), a so deriv- either in the workspace or in the configuration space of the robot.
ing path is transformed into a trajectory. Second, it maximizes the clearance of obstacles, so that the path-
planning algorithms have not to be particularly accurate. This
4.3. World model second point may be perceived as a negative characteristic too,
since the so deriving roads are not short, smooth and continuous
Path planning is based on data about the physical environ- enough to guarantee an enhancement [1,15]. In fact, implementa-
ment, the so-called world model. Pre-existing and dynamic tion tests of [21] have shown that a Voronoi form is rarely
sensor-information of the environment is stored into this specific reached. Adjustments of the parameters by trial and error, as
model, defined by three main sources: computer-aided design suggested by the authors of [21], have not led to any different
data of a construction process of the working cell, a vision-system results too.
and the human operator. During the execution of the path Hence, the concept at the basis of the Voronoi form has been
planner, the operator is given the possibility to indicate a collision extended and applied to a grid-based algorithm. A simplified,
point through a specific button for example on the control panel two-dimensional space is illustrated in Fig. 5: several obstacles, a
or the joystick. configuration space ‘hole’, start and target cells are represented.
Both, the positions in the world model and their occupations The light grey cells ‘ 1’ reproduce the Voronoi approximation.
are of interest, therefore a flag shows whether a position is safe or The dark grey cells represent the configuration space ‘hole’. White
not. Real robot applications have demonstrated that sensors may cells denote expanded nodes, 1–7 denotes expanded obstacle
deliver wrong information [10]: in this model, a reliability weight node cells, black cells denote border nodes, and 21–23 denote
between 0.0 and 1.0 is defined for each information source. The obstacles. The general grid-based algorithm consists of a simple
world model is able to handle this additional information and rule, applied to produce the approximated Voronoi diagram. The
combines the information types mentioned above. primary aim is to approximate a Voronoi form between
The deriving sensor fusion includes sensor abstraction, algo- the obstacles and the border cells in the configuration space.
rithms and architectures [3]. Fusion is carried out as a voting The configuration space ‘holes’ are considered as obstacles which
system. Each sensory source is filtered through a simple moving preclude the Voronoi form the possibility to maximize the
average (SMA) filter, which delivers cohesive information. The clearance to physical objects.
system, although it is limited to operation with few process takes the configuration space ‘holes’ (by kinematic
application paths. calculations) and the obstacles (by collision detection) into
consideration.
Finally, the An algorithm leads to the identification of the
4.5. Path planner shortest path and this often generates a re-planning of the path
itself if a shorter path is recognised. Since real robot movements
As described in Section 4.4, path planner and mission planner are involved, this should not happen too often. A hysteresis is
must interact. While the path planner is focused on the creation applied in order to prevent this. This application has been
of the trajectory, the mission planner handles a higher level of the included in order to allow an additional exploration of the
planning. A mission is defined by the start- and target-locations of workspace: consequently, the system may rely on a wider knowl-
the paths, combined with path application information, for edge provided to the world model.
example handling, adhesive bonding or painting. The path plan-
ner calculates a path and controls the robot along that path until a
collision is detected, the kinematic constraints are not met or the
4.6. Robot program generator
target is reached. In each case, the mission planner is informed by
sensor inputs and acts appropriately by initiating the roadmap
As described in Section 4.5, a trajectory is composed of move-
and trajectory generation algorithm.
ment primitives. Movement primitives are in its turn composed of
Fig. 6 shows the path planner together with its interfaces. It is
a list of particles, mainly linear, circular and joint movements.
defined in the Enterprise Architect UML tool and the hull includ-
Each particle forming the movement primitive knows its own
ing the connection to the communication framework is automa-
position (stored in Cartesian coordinates) and orientation. Suc-
tically generated as Java code.
cessively the robot program generator transfers the given set of
The path planner interfaces with the following systems:
particles to a robot readable format, either robot program files, for
control port (component life cycle), robot position (actual robot
example in Melfa Basic language, or direct movement commands
position), mission planner (mission information), environment
transferred to the robot controller.
model (sensor input), robot kinematic (forward and inverse robot
geometry calculations) control application (path planning user
control), robot movement control (direct movement execution)
and world model (topology of the workspace through connected
5. Experiment
roads).
The robot is considered as a Dubins airplane [7], steered from
The online path planning and programming support system
the start to the target by real robot movements. Given the target,
proposes an approach able to reduce the robot programming time
the path planner identifies the shortest path within the roadmap.
including preparation and installation. It generates acceptable
During the planning of the trajectory, an improvement of the
robot programs and regards the modern industrial basic goals
roadmap takes place: data about the environment are collected
(flexibility, speed and optimization; see also Section 2). It finds a
and obstacles within the configuration space are better approxi-
trade-off between shortest path finding and trajectory forming
mated. Finally, a joint distance metric is determined as heuristic
and maintainability. Finally, it generates a downloadable robot
for the An algorithm and the path is converted into a trajectory
program file.
able to avoid static obstacles and to reduce the clearance to them.
In this section, the general execution of the support system is
Transformation is therefore a necessary step and it is realised
described and a scenario (see Fig. 7) has been chosen to illustrate
through the application of an elastic net. The roads of the road-
the proposed approach.
map, identified by the An algorithm, consist of connected config-
uration space positions. Those positions create a Voronoi diagram
(considering the free area in the joint space) and the elastic net.
Transformation of the elastic net into a trajectory is achieved by 5.1. Pre-existing data import
applying equidistance, rotation and shrink forces on the joint
space positions [13]. The result is a trajectory formed by canoni- In the chosen scenario the two obstacles, O1 and O2, are given
cally ordered movement primitives, which are linear, circular or as drawing exchange format files and imported to the environ-
joint movements. Joint movements are not of interest in this ment model. One obstacle O3 is ‘unknown’ for the system (not
study and are therefore omitted. Moreover, the transformation imported).
Fig. 6. Path planner interfaces. Fig. 7. Experimental scenario (2D example in 3D world).
Author's personal copy
6. Discussion
Table 1
Path planning execution times (n if locations are stored within DXF).
Table 2 obsolete; moreover, the overall time required for larger missions
Comparison of the online programming times. decreases. This support system is based on two specifics: the
Voronoi roadmap and the elastic net, both co-operating for the
planning of missions with multiple goals. The new approach
transforms the user interaction into a simplified task that gen-
erates acceptable trajectories, applicable for industrial robot
programming. In addition, it works successfully with basic knowl-
edge of the operator and asks to use the software application only.
The trade-offs optimality, path planning & smoothing and main-
tainability are considered in the new approach. The new criteria
maintainability and reusability have been introduced and the
shown experiment has demonstrated that the system successfully
faces and satisfies the modern requirements coming from the
industrial market. The process is optimized, offline programming
time may be saved and online programming becomes easier.
Nevertheless, there is still space for further development, con-
Table 3 cerning dynamic obstacle avoidance and application of the
Comparison of the overall programming times. system to multiple robots working conjunctly. The standard A*
algorithm here used may, in the future, be extended to the AD*
algorithm [14]. Mission and task specific extensions to the soft-
ware have not been incorporated yet. These are for example
application path information for welding, adhesive bonding or
handling.
References
[1] Bhattacharya P, Gavrilova ML. Voronoi diagram in optimal path planning, In:
Proceedings of the fourth international symposium Voronoi diagrams in
science and engineering ISVD, 2007, pp. 38–47.
[2] Bhattacharya P, Gavrilova ML. Roadmap-based path planning—using the
operator skill and more automatic, most of the research outcomes Voronoi diagram for a clearance-based shortest path. IEEE Robotics and
have not become commercially available. This is partially because Automation Magazine 2008;15:58–66.
[3] Chen H, Fuhlbrigge T, Li X. Automated industrial robot path planning for
most of these methods are limited to their specific setups and are spray painting process: a review. In: Proceedings of the IEEE international
yet to be applied to general applications. Compared to those conference automation science and engineering CASE, 2008, pp. 522–527.
methods, the presented methodology differs in two points. First, [4] Corke PI. A Robotics Toolbox for Matlab. IEEE Robotics and Automation
Magazine 1996;3:24–32.
the human operator reports collisions and, thus, it is generally [5] Corke PI. Machine vision toolbox. IEEE Robotics and Automation Magazine
available and cost efficient. Second, the applied trajectory plan- 2005;12:16–25.
ning algorithm is able to handle the information type and [7] Dubins LE. On curves of minimal length with a constraint on average
curvature, and with prescribed initial and terminal positions and tangents.
intelligently controls the robot within the robot cell to compute American Journal of Mathematics 1957;79:497–516.
the robot trajectory. [8] Garga AK, Bose NK. A neural network approach to the construction of
Delaunay tessellation of points in Rd. In: IEE transactions on circuits and
systems I: fundamental theory and applications, Vol. 41, 1994, pp. 611–613.
[9] Gargantini I. Linear octtrees for fast processing of three-dimensional objects.
7. Conclusion Computer Graphics and Image Processing 1982;20(4):363–74.
[10] Hall DL, Llinas J. An introduction to multisensor data fusion. Proceedings of
the IEEE, 1997; 85: 6–23.
Aim of this paper was to introduce a new online path planning
[11] S.D. IFR, World Robotics Report, /[Link] 2005.
and programming support system. The tool is applicable to real [12] Kohrt C, Pipe A, Schiedermeier G, Stamp R, Kiely J. A robot manipulator
industrial scale, where articulated robots work in multi- communications and control framework. In: Proceedingsof the IEEE interna-
dimensional space. One of the main benefits deriving from this tional. conference mechatronics and automation ICMA, 2008, pp. 846–851.
[13] Kohrt C, Schiedermeier G, Pipe AG, Kiely J, Stamp R. Nonholonomic motion
application is its real time capability. Creating the opportunity to planning by means of particles. In: Proceedings of the IEEE internetional
work successfully online, offline simulation systems becomes mechatronics and automation conference, 2006, pp. 729–733.
Author's personal copy
[14] Likhachev M, Ferguson D, Gordon G, Stentz A, Thrun S. Anytime dynamic An: [19] Russell S-J, Norvig P. Artificial Intelligence: a modern approach (2nd Edition),
An anytime, replanning algorithm. In: Proceedings of the international 0-13-080302-2, 2002.
conference on automated planning and scheduling (ICAPS), 2005. [20] TheMathworks, /[Link] 2006.
[15] Masehian E, Amin-Naseri MR. A voronoi diagram-visibility graph-potential [21] Vleugels JM, Kok JN, Overmars MH. Motion planning using a Colored
field compound algorithm for robot path planning. In: Journal of Robotic Kohonen Network, in: technical report RUU-CS, Issue 93-38, 1993.
Systems, Vol. 21 (6), 2004, pp. 275–300. [24] Siemens, RobCad Simulation Software, in, /[Link]
[16] Mitsubishi-Electric, /[Link] 2008. [Link], 2011.
[17] Qi L, Yin X, Wang H, Tao L. Virtual engineering: challenges and solutions for [25] Pan Z, Polden J, et al., 2010. Recent progress on programming methods for
intuitive offline programming for industrial robot. In: Proceedings of the IEEE industrial robots, in: 41st international symposium on robotics and sixth
Conference robotics, automation and mechatronics, 2008, pp. 12–17. German conference on robotics, 2010, pp. 1–8.
[18] Ritter H, Martinetz T, Schulten K. Neuronale Netze 1994:3486243446.
J. Attachments
KOHRT, C., PIPE, A., SCHIEDERMEIER, G., STAMP, R. and KIELY, J. 2008. A
robot manipulator communications and control framework. Proc. IEEE Int. Conf.
Mechatronics and Automation ICMA.
Proceedings of 2008 IEEE International Conference on
Mechatronics and Automation
FA1-1
Manuscript received May 31, 2008. This work was supported in part by
the Bavarian Research Foundation. Fig. 1. System overview.
Christian Kohrt is with Berata GmbH, Munich, Germany (phone: +49-179-
2921307; e-mail: [Link]@[Link]). The robot manipulator communications and control
Anthony G. Pipe is with UWE - University of the West of England, Bristol,
UK (e-mail: [Link]@[Link]).
framework is executed on the personal computer, which has
Gudrun Schiedermeier is with UASL – University of Applied Sciences an Ethernet and serial port connection to the robot controller.
Landshut, Germany (e-mail: gschied@[Link]). The Teachpendant and the robot are connected to the
Richard Stamp is with UWE - University of the West of England, Bristol, controller. The vision system and the pointing device are
UK (e-mail: [Link]@[Link]).
plugged in to the personal computer. The framework is
Janice Kiely is with UWE - University of the West of England, Bristol,
UK (e-mail: [Link]@[Link]).
847
IV. THE FRAMEWORK communicate with the robot controller in time and leads to a
The aim of the robot control framework is to simplify the loss of UDP packages. Movement of the robot was not
usage of robot control and to cover all of the needs originated continuous any more.
from robot control applications. It consists of the components A dynamic link library for RTEC mode created in C is
described in the sections robot communication, data link connected with JNI to Java. The library could also be used in
control mode, overview of communication modes and their Simulink to build a “hardware-in-the-loop” low level robot
use, connecting the framework to Matlab/Simulink and control application. This gives full control of the robot and
visualization. An example is given in section F. code generation from Matlab/Simulink is possible.
848
center point and current position. An overview of communication modes and use cases of
Sending is looped over lines 100 to 130 and it sends until a table III is given in table II.
zero value is received. After closing the communication port,
the program notifies the MULITASK program in slot 1 that TABLE III
USE CASES
the signal is turned on by means of the external variable
M_02. The communication program datalink.mb4: Use-
Description
case
10 WAIT M_02=0 1 Direct robot control over Ethernet with feedback. Either the
20 M_TIMER(1)=0 mentor or the path-planning-system can move the robot manually.
30 OPEN "COM2:" AS #2 No controller calculations are involved.
35 INPUT #2,DATA 2 Robot operation with singular movement commands over
40 IF DATA = "0" THEN 160 Ethernet. The controller calculates the path. Feedback data can be
100 PRINT#2, M_TIMER(1), "|", P_CURR, "|", J_FBC, retrieved by Ethernet connection after finishing movement.
"|", J_CURR, "|",M_RSPD(3) 3 Robot operation with singular movement commands over serial
130 GOTO 100
160 M_02=1 port. The controller calculates the path. Feedback data can be
170 WAIT M_02=0 retrieved by serial port connection after finishing movement.
180 END 4 Robot operation with robot programs over Ethernet. The
controller calculates the path. Feedback data can be retrieved
either by Ethernet or by serial port connection.
The CONTROLLINK program moves the robot 5 Robot operation with robot programs over serial port. The
manipulator by receiving and executing movement controller calculates the path. Feedback data can be retrieved
commands. This program runs in a cyclic mode and no user either by Ethernet or by serial port connection.
6 Robot operation by two data-link channels. One sending channel
interaction such as moving the robot with the Teachpendant or over serial port and one receiving channel over Ethernet. The
by robot commands in controller communication mode is robot has to be programmed so that it is possible to send
possible. For control communication the RS232 port is used, movement-type and data.
which is a slow connection but fast enough for direct robot
control commands. The data link mode is extended by a
D. Connecting the framework to Matlab/Simulink
movement command and leads to the data link control mode.
The movement program controllink.mb4: This section shows the mature steps and important key
issues to integrate the Java framework with a SWT2 user
10 WAIT M_01=0 interface to Matlab/Simulink.
20 OVRD 100
30 GETM 1
40 CNT 1, 300 Matlab/Simulink integration
50 SERVO ON
60 OPEN "COM1:" AS #1 The framework must be executed in its own thread to avoid
70 DEF JNT JNTPOS a freeze of the Matlab thread. The implementation as a
80 INPUT #1, JNTPOS singleton of the framework GUI3 guarantees that only one
90 MOV JNTPOS
100 GOTO 80 single instance of the GUI is running per Matlab instance.
Communication must be established between Matlab and
With the CNT command, the robot continuously moves to Java. Calling Java classes from Matlab is supported by
multiple movement positions without stopping at each default. To communicate back to Matlab/Simulink, two cases
movement position. of software usage are possible: As a standalone client and as a
C. Overview of communication modes and their use plug-in. A standalone client is running outside of
Matlab/Simulink, whereas a plug-in is started within. This has
Use cases for robot control are defined in table III. Since it
a great impact on the communication of Matlab and Java.
is not possible to send control commands and information
While the standalone client must have interprocess
requests over one connection, a second connection is always
communication, a plug-in does not require this.
needed to get actual status information during motion.
TABLE II
COMMUNICATION MODES
Feed U U U U U U
Phys.
Mode Command type back C C C C C C
layer
type 1 2 3 4 5 6
RTEC ETH SDO SDO X - - - - - Fig. 3. Interprocess communication.
DL ETH SD SD - - - X X X
DL RS232 SD SD - - - X X X
CL ETH Robot command - X - - - -
Generally, DLL4 libraries of Matlab/Simulink can always
CL RS232 Robot command - - X - - - be called by native system calls. JNI5 is a wrapper for such
CL ETH Robot program - - - X - -
CL RS232 Robot program - - - - X -
2
(RTEC – Real Time External Control; DL – Data Link; CL – Control Link; Standard Widget Toolkit
3
ETH – Ethernet; SDO – Serialized Data Object; SD – Serialized Data; UC – Graphical user interface
4
Use Case) Dynamic Link Library
5
Java Native Interface
849
system calls and thus can be used. A more convenient connection.
possibility is COM6 or DDE7 communication. Matlab supports A stopped robot movement is a movement with stops
both, the COM and the DDE technology. COM technology is between two movement commands. It is also a blocking
to be used, because the DDE communication server must be command, which means movement finish must be awaited to
switched on in newer versions of Matlab (R14 onwards). In send the next command. A non blocking continuous
contrast, a plug-in does not need an interface for interprocess movement is a movement that can do continuous movements
communication. In fig. 3 COM/DDE communications is also between two commands and the movement command can
illustrated for standalone clients. be sent at any time. The status block always uses the data link
communication mode.
The graphical user interface
Simulink is a platform for multidomain simulation and TABLE IV
SIMULINK BLOCKS
model based design for dynamic systems. It provides a
customizable set of block libraries. Models are built from Block name Operation mode Description
these blocks that can be connected to solve a given
Status data link continuous measurement
engineering challenge. Usually such systems are quite RelJoint data link control continuous, non blocking
complex and users not familiar with the model will have RelCart data link control continuous, non blocking
difficulties to modify model parameters and to control the CircularMov controller operation stopped, blocking
LinMovJoint controller operation stopped, blocking
model. Therefore, a centralized user input to the model can be LinMovCart controller operation stopped, blocking
realized through a GUI. A GUI development environment JointMovJoint controller operation stopped, blocking
(GUIDE) is shipped with Matlab and, thus, becomes the JointMovCart controller operation stopped, blocking
standard tool for GUI creation. A Java application within
Matlab/Simulink has greater functionality, i.e. interconnection E. Visualization
to a server. It also allows the use of another GUI library such
Visualization is done with a Java3D scenegraph. But not
as SWT or Swing for standardized development of complex
only viewing the robot but also collision testing should be
GUIs.
done combined with ODEJava, a physical simulation system.
Collision detection
The built-in Java3D testing does only tests in every frame.
Collisions of fast moving objects could take place between
two frames that leads to an unrecognized collision. The Open
Dynamics Engine (ODE) library written in C and its Java
binding ODEJava is used to do collision detection. The
ODEJava project allows using ODE with Java. ODE is a free,
industrial quality library for simulating articulated rigid body
Fig. 4. The GUI editors GUIDE and SWT. dynamics in virtual reality environments. It has built-in
collision detection. The Project also contains tools for binding
SWT-based applications integrate seamlessly into the host ODEJava into Xith3D, jME and Openmind scenegraph
environment. The library is an adapter to the native widgets. projects. Since Java3D scenegraph is used, development of a
The design of SWT as an adapter makes a small library graphics engine is necessary to combine ODEJava with
possible. These libraries must be available on the target Java3D.
computers. The Viewing component also supports visual display of
DXF CAD-data as well as any Java3D object. The ODEJava
The Simulink Blockset library is used for collision detection of basic geometric
To allow experiments in model based design methodology objects. DXF-data cannot be used with ODEJava, but can be
the Java robot control framework is integrated into a Simulink viewed with Java3D. Collision detection with complex DXF
blockset. However, code generation is not possible with those data is therefore rudimentary supported. Collision points and
blocks. For simulation, additional blocks for forward and vectors are hard to calculate from DXF-data, but can be done
backward calculation are needed. A Simulink block usually manually. The requirements for DXF-data collision detection
supports simulation and code generation. Since Java is used, are fulfilled. The basic geometric objects are fully supported
this feature cannot be supported. and have higher requirements in terms of accuracy, because
The blockset consists of the blocks listed in table IV. It is the neural net used in the Path Planner component is
not possible to use more than one robot control block at the simulated by those objects [14].
same time because every block needs its own explicit
F. Visual servo control
6
Component Object Model Visual servo control is used for user interaction with the
7
Dynamic Data Exchange robot system by a pointing device for example used in the
850
Working Space Exploration or Location Positioning receive robot information during movement. All
components. communication modes over serial port and Ethernet are
The transformation of picture coordinates of the camera discussed. Besides the use of the robot control framework as a
views to robot coordinates by a neural net is learned. The standalone application, it can also be used with
system interprets then the pointing device of the mentor and Matlab/Simulink and interconnected within Simulink models
controls the robot so that it moves in the direction of that to support a wide range of robot control applications.
point.
ACKNOWLEDGMENT
We thank Stefan Holzer for his support and valuable work
of an earlier project at the UASL University of Applied
Sciences Landshut.
REFERENCES
[1] Jim Tung, “The impact of model based design on product development,”
in Model-Based Design Conference, 2005.
[2] Mitsubishi-Electric Manual, Connection with personal computer, 2005.
[3] Mitsubishi-Electric MELFA Industrial Robots Instruction Manual
(Functions and Operations) CR1/CR2/CR3/CR4/CR7/CR8 Controller,
Mitsubishi-Electric, 2003.
[4] Mitsubishi-Electric MELFA Industrial Robots Instruction Manual CRn-
500 Expansion Serial Interface, Mitsubishi-Electric, 2003.
Fig. 5. Example application [5] Mitsubishi-Electric Mitsubishi Industrial Robot CRn-500 Series
Personal Computer Support Software Instruction Manual, Mitsubishi-
Electric, 2003.
An extension to Kohonen’s model [9] is implemented to
[6] Mitsubishi-Electric MELFA Industrial Robots Instruction Manual
autonomously learn the positioning of a robot arm to a Controller CR1, Mitsubishi-Electric, 2002.
visually given point (Fig. 5). To get information of the [7] Mitsubishi-Electric Ethernet Interface CRn-500 series Manual,
position of the objects in space, the robot cell is equipped with Mitsubishi-Electric, 2002.
[8] Mitsubishi-Electric MELFA Industrial Robots Instruction Manual RV-
two cameras, which monitor the robot cell. During training, 1A/2AJ Series, Mitsubishi-Electric, 2002.
the position of the target location within the working-space is [9] H. Ritter, T. Martinetz, K. Schulten, “Neuronale Netze,” Oldenbourg,
randomly chosen. The target location is monitored from the 1994.
[10] P. I. Corke, “The Machine Vision Toolbox,” in IEEE Robotics and
cameras and their signals are applied to the neural net. Every Automation Magazine, 12(4), pp 16-25, November 2005.
neuron is responsible for a subspace of the robot cell. If a [11] Programming - Matlab Image Processing Toolbox Version 2,
target location is chosen, this neuron becomes activated and Mathworks, 1997.
[12] [Link] 2008.
provides control signals to the robot controller. The position [13] University of Karlsruhe, “EURON II Research Roadmap,”
of a robot arm with five joints is not only a five dimensional [Link], 2005.
vector, but every camera delivers its two dimensional point of [14] C. Kohrt, G. Schiedermeier, A. G. Pipe, J. Kiely, R. Stamp,
the viewing pane. The neural net has to transform that position “Nonholonomic Motion Planning by Means of Particles,” in IEEE
International Conference on Mechatronics and Automation, Luoyang,
information to control signals for the five robot joints. China, pp 729-732, June 2006.
More information about the robot, the cell, the cameras or [15] C. Kohrt, T. Reicher, R. Rojko, “With Model-Based Design to
its positions in space is not needed. Moreover, this must be Productive Solutions: Professional GUIs for Simulink by Utilizing the
Java SWT Library,” in Design & Elektronik, Stuttgart, Germany, May
learned by the neural net. 2006.
At the beginning, the robot will move to incorrect robot [16] P. I. Corke, “Visual Control of Robots: High-Performance Visual
positions. The difference to the target position is used to train Servoing,” New York: Wiley, 1996.
[17] [Link] 2008.
the net. Then the robot will be given the next target position
which gives the system the opportunity to learn a second time
and so on. The robot is an autonomous learnable system.
V. CONCLUSION
Robot control applications need a connection to the real
robot system. Sending robot control commands as well as
receiving information of the robot status and position is
necessary especially for path-planning applications, where the
focus is on algorithm development. This framework offers the
possibility use a standard industry robot system. The
framework extends the Mitsubishi CR1 controller family robot
system to send robot commands during movement of the robot
manipulator without stopping between two commands and to
851
J. Attachments
KOHRT, C., SCHIEDERMEIER, G., PIPE, A. G., KIELY, J. and STAMP, R. 2006.
Nonholonomic Motion Planning by Means of Particles. International Mechatronics and
Automation Conference. Luoyang, China: IEEE.
Proceedings of the 2006 IEEE
International Conference on Mechatronics and Automation
June 25 - 28, 2006, Luoyang, China
Abstract - In this article a new approach to planning of a The Voronoi diagram leads through the middle of available
nonholonomic motion is presented. A flexible, intelligent planner corridors between obstacles.
based on a static map and the topology of the robot’s Cell Decomposition methods divide the robot’s free space
environment has been developed. The approach uses ‘particles’
into several regions, so called cells. The connectivity graph is
to construct automatically a path between two given locations.
The generated path is a smooth trajectory, where the length of built by connecting adjacent cells. A channel leading from
the path is kept at a minimum and obstacles are avoided. This initial to goal configuration through the graph can then be
concept applies to robots meeting the restrictions of a Dubin’s computed. A path can be chosen as, for example, leading
car (nonholonomic robot that can only move forward). After the through the midpoints of the intersections of two successive
basic concepts of the approach has been described, simulations cells.
will be presented. Potential field methods divide the free space into a fine
regular grid and search this grid for a free path. Different
Index Terms – Pathplanning, autonomous, nonholonomic,
potentials are assigned to the cells of the grid,
particles, elastic.
where ’attractive’ potentials are given to cells close to the
I. INTRODUCTION robot’s goal, ’repulsive’ potentials are assigned to obstacles.
This paper presents a new motion planner for A path is constructed along the most promising direction.
nonholonomic mobile robots. Such robots have dependent In a nonholonomic planner, the path is created as a set of
degrees of freedom so that the motion is restricted. In this maneuvers, which take into account the geometric and
paper, nonholonomic mobile robots refers to car-like robots. kinematic constraints of the robot. Different approaches have
The problem is to find a feasible trajectory for the robot, been developed using a random planner [4] or nonholonomic
enroute from its start position to its goal position, without graphs.
collision with static obstacles. Boundary conditions imposed The main contribution of this paper is to form the paths of
and dynamics of the robot’s kinematic model must be an already connected roadmap to conform to the robot’s
satisfied. constraints. This goal will be captured by means of ‘particles’.
In the geometric formulation of this problem, the robot is The calculations will be done locally with no global
reduced to a point on the two dimensional surface with the knowledge.
behavior similar to Dubin’s car [7]. This car is able to drive The remainder of the paper is organized as follows. In
forward only and the radius of steering is bounded. Section II, assumptions are formulated for the path-planning
The resulting paths must be smooth (differentiable) and problem. In Section III, the new path-planning concept is
feasible for a car-like robot. The tangent direction is explained in detail. Section IV proposes a strategy for how to
continuous and they respect a minimum turning radius vary the parameters to achieve good results. Examples are
constraint. These paths can be followed by a real vehicle given in section V. And finally the paper is concluded with
without stopping and thus have a continuous curvature profile brief remarks in Sections VI and VII.
in their motion. II. ASSUMPTIONS
Existing path-planning methods can be found in [3].
Roadmap methods calculate a collection of path segments With a predefined roadmap, generated by another path-
around static obstacles. This path is calculated by connecting planner, a Voronoi diagram can be created (see Fig. 1). Thus,
the initial and the goal configuration of the robot with a the topology of the working space can be obtained. The robot
roadmap that can be built in several ways. For example, the under consideration is shown in Fig. 2. The steering angle is
Visibility Graph is built by connecting the initial and target bounded to a maximum absolute angle of e. The car is able to
configuration with the edges of all obstacles in the given map. drive around curves with a minimum radius of r. No other
maneuvers are allowed and the car can drive forward only.
730
Fig. 5 Installed forces.
E. Shrink forces
Fig. 6 Angles of the rotational force.
FShrink is a constructed force at each ‘particle’ to build a
straight line. This can be done by a simple vector addition of
731
the two position vectors of the neighbors of each ‘particle’ V. EXAMPLES
(see Fig. 5) while keeping the equidistance constraint.
The topology of the map is obtained by another
FShrink BC AB (12) algorithm, such as a Voronoi diagram. An A* algorithm can
be used to find a suitable path. Often, the shortest path is
F. Forming lines chosen. In these examples a path has been found within the
Every ‘ particle’s ’ position lies on an edge of the topology map, which has to be optimized from a random state
polyhedron. The overall force leads to a curved connection, of the ‘particles’.
where all ‘particles’ are ordered equidistant and the steering In Fig. 7 ta,min is set to zero and therefore the minimal
angle e always lies within its boundaries. The path has no steering angle e is zero. The path is a smooth curve and there
straight line, yet. is no straight line. In contrast to Fig. 7, the parameter ta,min in
If the steering angle e is very small, the radius of the Fig. 8 is set to a value greater than zero. Thus, the path tends
curve is very large and can be seen as a straight line. The to have more straight lines and narrow curves.
algorithm considers this with a switch for the calculation of
the positions of each ‘particle’: Shrink forces can be used to
form a line. It is a simple vector addition of the two
neighboring lines of B to A and C (see (12) and Fig. 5).
A radius threshold rmax is introduced, which controls
when the formulas for a line or a curve are used. rmax is the
value for the maximum radius. The angle threshold ta,min can
be obtained from (2). If g n d t a , min for n=1,2,3 then the
‘particles’ will be shrunk to a line. Otherwise the rotational
forces take place.
To enhance the algorithm, a second constraint leads to
faster convergence: If the absolute value of the angles g n
exceeds ta,max , calculated with (2) from the threshold rmin, the
Fig. 7 Path with ta,min = 0.
shrink algorithm can be used.
G. Overall force
With both types of motions, it is possible to construct a
path from a start position to a goal position with straight lines
and curves automatically. The only parameter which is
responsible for the decision of whether a line or a curve has to
be build is the threshold ta,min. The overall formula is now:
°C F , if g n ! t a ,min
F C1 FEquidistance ® 2 Rotation (13)
°̄ C3 FShrink , if g n d t a ,min
Cn are parameters to normalize each of the forces and can be
utilized to weight each force dependent to the stage of
planning. This is utilized in the strategy in section IV.
Fig. 8 Path with ta,min > 0.
IV. STRATEGY
The best strategy is first to start with a high shrink force VI. CONCLUSION
FShrink and set the rotational force to zero while using (14).
No threshold is applied, yet. In this paper a new motion planning algorithm is
presented for nonholonomic mobile robots in two dimensional
F C1 FEquidistance C3 FShrink (14)
configuration space. Planned trajectories are smooth and
The connections will be as short as possible and the feasible for car-like robots with a continuous curvature
‘particles’ are aligned on a line. The motion constraints are profile. The algorithm works with only local knowledge and
not fulfilled at this stage. can be extended for higher degrees of freedom.
On the second stage, FShrink is getting smaller and the
VII. FUTURE WORK
other forces start to grow up to a defined value. Now, the
threshold ta,min is applied and (13) is used, which causes the The ‘particles’ have the tendency to build up if the
‘particles’ to form a canonical path of linear and circular number of ‘particles’ is high enough. Also, a large number of
motions. ‘particles’ converges very slowly. One of the proposed ideas
are additional forces on the equidistance force of straight lines
732
to lengthen the distance between two ‘particles’. An additional
effect could be used if the distance is a function of the
velocity of the robot. Another idea is the injection of new
‘particles’ so as to start with a low number of ‘particles’ and
increase this number as required by the algorithm.
REFERENCES
[1] H. Jaouni, M. Khatib, J. P. Laumond, “Elastic Bands For Nonholonomic
Car-Like Robots: Algorithms and Combinatorial Issues,” 3rd
International Workshop on the Algorithmic Foundations of Robotics,
Houston, 1998.
[2] Jiang, Kaichun, L. D. Seneviratne, PP. W. E. Earles: “A shortest Path
Based Path Planning Algorithm for Nonholonomic Mobile Robots,”
Journal of Intelligent and Robotic Systems, 24th Ed, pp. 347-366, 1999.
[3] J.-C. Latombe, “Robot Motion Planning”, Kluwer Academic Publishers,
UK, 1996.
[4] S. M. LaValle, J. J. Kuffner, ”Rapidly Exploring Random Trees: Progress
and Prospects,” Proceedings of the Workshop on the Algorithmic
Foundation, 2000.
[5] S. Quinlan, O. Khatib, “Elastic bands: connecting path planning and
control,”, vol. 2, pp. 802-807, 1993.
[6] B. Graf, J. M. Hostalet Wandosell, C. Schaeffer, “Flexible Path Planning
for Nonholonomic Mobile Robots,” Fourth European Workshop on
Advanced Mobile Robots, EUROBOT '01, Lund, Sweden, September
2001.
[7] L. E. Dubins, “On curves of minimal length with a constraint on average
curvature and with prescribed initial and terminal positions and tangents,”
American Journal of Mathermatics, vol. 79, pp. 497-516, 1957.
[8] A. Scheuer, T. Fraichard, “Collision-free and continuous-curvature path
planning for car-likerobots,”, vol. 1, pp. 867-873, 1997.
733
J. Attachments
KOHRT, C., ROJKO, R., REICHER, T. and SCHIEDERMEIER, G. 2006. With Model
Based Design To Productive Solutions Professional GUIs For Simulink By Utilizing The
Java SWT Library. In: FACHZEITSCHR.-VERLAG, W. (ed.) KFZ-Elektronik.
With Model-Based Design to Productive Solutions: Professional GUIs
for Simulink by Utilizing the Java SWT Library
Authors
Dipl.-Ing(FH) Christian Kohrt1, Dr. Thomas Reicher, Dr. Roman Rojko
[Link]/[Link]/[Link]@[Link]
Berata GmbH
Frankfurter Ring 127
80807 Munich, Germany
Tel: +49-89143259-0
Fax: +49-89143259-59
Abstract
The Model-Based Design (MBD) approach is a widely used method to solve sci -
entific engineering challenges [1]. Matlab/Simulink as a representative of MBD
is a tool capable of exploiting the advantageous aspects of a graphical user inter -
face (GUI). The latter is created with a tool named GUIDE, which is shipped with
the Matlab/Simulink software. Unfortunately, user interfaces created with GUIDE
have some drawbacks. Thus, new approaches are needed to overcome these draw-
backs to improve the design of the GUI. It is surprising, that the Java SWT library
(Standard Widget Toolkit) is not used for such user interfaces. Although not sup -
ported by Mathworks, this article compares the features of an SWT based GUI to
the GUIDE, explains the practical implementation of SWT GUIs by examples and
gives an outlook to the wide field of applications taking benefit.
1 Introduction
The V-Modell [2] is a standard IT product development method publicly available and is used
by many companies. It manages required tasks and outcomes, defines methods and functional
tool requirements and guarantees a uniform procedure for software development. The functional
tool requirements define the functional properties of the tools for software development. These
tools are usually organized in a toolchain, that is a set of tools linked together. On each stage
in the toolchain, software tools are used, which are designed specifically for the given task.
For example, Matlab/Simulink as a representative for the Model-Based Design approach is used
frequently to solve modern engineering challenges in the field of Technical Computing, Control
Design, Signal Processing and Communications, Image Processing, Test and Measurement, Anal-
ysis, etc. [3].
The requirements of the tools used in such toolchains are of course different from those used as
standalone software. While in standalone software input of information are explicitely given to
solve a task (and therefore are mostly related to the task), tools in a toolchain must also be able
to manage not task related information. They also have to provide suitable interfaces to allow
communication to other tools.
Simulink is a platform for multidomain simulation and Model-Based Design for dynamic systems.
It provides a customizable set of block libraries. Models are built of these blocks that can be
connected to solve a given engineering challenge.
Usually such systems are quite complex and users not familiar with the model will have difficulties
to modify model parameters and to control the model. Therefore, a centralized user input to the
model can be realized through a GUI. A GUI development environment (GUIDE) is shipped with
Matlab and, thus, becomes the standard tool for GUI creation.
1
also lecturer
Although GUIDE covers simple graphical objects for GUI design, customer requirements go far
beyond this. GUIDE also does not support a seamless transition from Simulink GUIs to those of
software developed in another programming language such as Java. Further, the use of the same
technology would result in GUIs that are easily exchangeable. Unfortunately, third party tools are
not available on market.
The aim of our customer project was to have GUIs with the same 'Look & Feel' in both Simulink and
Java developed software and to integrate Simulink in a toolchain. A further aim was to have
the right tools to design complex GUIs, i.e. to control a robot path-planning model. We identified
the Standard Widget Toolkit as a possible way to achieve those aims. The Java SWT library uses
native library calls to create the GUIs. The appearance is indistinguishable from user interfaces
of native applications and the user is already familiar to those graphics.
2 Related Work
Although it is possible to embed ActiveX documents into GUIDE and thus extending its func -
tionality, we decided not to use it. Matlab Version R13 does not support ActiveX by default. It
is supported since version R14, but we found that it is not flexible enough to satisfy our ex-
pectations in GUI design. Usually, the GUI is of a highly complex structure. Compared to the
Model-View-Control (MVC) concept, the Model and the View are not separated, which leads to
unstructured code.
3 Theory
The Standard Widget Toolkit is an open source framework for developing graphical user interfaces in
Java. Matlab/Simulink supports Java by default. Calling Java classes can be done on the
command line as well as in a Matlab script. Some options must be set in order to run Java
classes.
First, the path to the Java classes must be specified. This can be done in a static or dynamic
way. Through dynamic loading of Java classes, also known as 'Hot Deployment', software devel-
opment is much improved. In the development process, this results in significant time savings.
The user is not forced to restart Matlab after each development iteration. Unfortunately, Hot
Deployment has got some restrictions in Matlab version R14SP2 whereas other versions such as
R14SP1 and R14SP3 work properly.
Second, the Java classes must be copied to a specified location within the file system, where Mat-
lab's Java Path can be directed to. While in development process, these changes can be deployed to
Matlab automatically by ANT ('Another Neat Tool') after each development iteration.
ANT is also useful to control the ej-technologies tool exe4j (Java Exe Maker) or an installer
such as the Nullsoft Scriptable Install System (NSIS). The requirements to be installed on other
'clean' machines is a suitable Matlab and Java version installed.
As mentioned in section 1, SWT-based applications integrates seamless into the host environ-
ment. The library is an adapter to the native widgets. Swing for example emulates the native
user interface and, thus, mimic it. Sometimes, the right skins are not available and differences
between the native and Swing based user interfaces are apparent.
The design of SWT as an adapter makes a small library possible in contrast to the Swing library.
These libraries must be available on the target Computers. Therefore, the installer has to copy
those files to the host computer and thus has greater size.
Another advantage of the SWT design is the improved interaction compared to Swing. Since
SWT uses native event processing, the inner structure does not vary from the native system and
the behavior is thus comparable to the native system. In addition, SWT is less resource -hungry
than Swing.
Because SWT is only an adapter to the native host, a more robust and tolerant system can be
expected in regard to heterogeneous hardware and the various accelerator settings of the
graphics subsystem.
All in all, compared to other GUI libraries SWT has got the greatest advantages.
4 Practical implementation
This section shows the mature steps and important key issues to integrate SWT interfaces to
Matlab/Simulink.
4.1.1 Threads
The SWT interface must be run in an own thread. The reason is quite simple: Matlab hangs in
its thread waiting for the GUI to end. Thus, no user input in Matlab/Simulink is possible.
Dependent to the application and customer requirements, the implementation as a Singleton of
the GUI guarantees that only one single instance of the GUI is running in one Matlab instance.
5 Conclusion
The application of SWT interfaces is very widespread. Besides the normal use as interfaces for
complex models or applications, it also applies to interfaces of Simulink blocks or offer the op-
portunity to integrate Simulink into a toolchain.
Thus, Simulink is prepared to be used in a toolchain linked to a set of other tools. Those tools
maybe deliver information not used by the model. But nevertheless, these data must be given in
the correct format to the following tool in the toolchain to guarantee a seamless transition along
the toolchain.
The used type of GUI technology is dependent to the kind of data, complexity of the user inter -
face and other requirements.
Using professional SWT interfaces in Simulink is easily possible, once everything is configured.
We found, that the benefit of having professional user interfaces, that satisfy customer require-
ments outweigh the additional time needed for configuration.
6 Acknowledgment
We thank Phillip Ewert for reviewing this proposal and giving valuable comments.
References
[1] Jim Tung. The impact of model based design on product development. In Model-Based
Design Conference, 2005.
[2] Koordinierungs-und Beratungsstelle der Bundesregierung fur Informationstechnik in der Bun-
desverwaltung KBSt. [Link] 2006.
[3] TheMathworks. [Link] 2006.
[4] Berthold Daum. Professional Eclipse 3 for Java Developers. Wrox, 2004.