Fyp

Embed Size (px)

Citation preview

  • Registration Number:../2014

    Peoples Democratic Republic of Algeria

    Ministry of Higher Education and Scientific Research

    University MHamed BOUGARA Boumerdes

    Institute of Electrical and Electronic Engineering

    Department of Electronics

    Project Report Presented in Partial Fulfilment of

    the Requirements of the Degree of

    LICENCE

    In Electrical and Electronic Engineering

    Title:

    Presented By: - Idir MAHROUCHE - Hicham SADOUN - Khoudir ZIANE

    Supervisor:

    Dr HACHOUR

    Roadmap Methods for Mobile Robot

    Path Planning

  • Dedication

    To our beloved parents,

    To our supervisor Dr HACHOUR

    To our families

    To our friends,

    To all who know us, encourage us, and all who were behind

    our career

  • Acknowledgments

    First of all, thanks to God who helped us to accomplish

    this project.

    We are profoundly grateful to our supervisor,

    Dr HACHOUR, who did not save efforts to help, to advise,

    and to guide us throughout the project. We are highly indebted

    to the source of ideas, enthusiasm, and support. We should

    acknowledge that without her priceless help, this work would

    never be accomplished.

    We should never forget to address our sincere thanks to

    all those who have been our teachers throughout our entire

    curriculum.

  • Abstract

    Obstacle avoidance in mobile robotics has been one of the major talks among researchers,

    getting a robot from point A to point B without colliding with existing obstacles in its work

    space can be achieved using different approaches. This present report emphasizes on the

    different possible algorithms capable of achieving the above objective starting by giving a

    general view on robotics including robots definition, types of robots. This document also

    describes the motion planning problem and lists various solutions giving emphasis to roadmap

    methods including Voronoi diagram and visibility graph. The latter methods can be implemented

    using diverse algorithms, known as sampling-based algorithms (both single and multiple query

    searches), which are all provided in the literature, some of them know as rapidly exploring dense

    trees and probabilistic roadmaps.

  • Contents General Introduction ..................................................................................................................................... 6

    CHAPTER ONE: INTRODUCTION TO ROBOTICS ................................................................................ 7

    Introduction ............................................................................................................................................... 8

    1.1. Basic definitions ........................................................................................................................ 8

    1.1.1. Definition of robotics ............................................................................................................ 8

    1.1.2. Definition of a robot .............................................................................................................. 9

    1.2. Classification of robots ................................................................................................................. 9

    1.2.1. Types of robots by size: ........................................................................................................ 9

    1.2.2. Types of robots by application: ........................................................................................... 10

    1.2.3. Types of robots by function: ............................................................................................... 10

    1.2.3.1. Manipulators : robotic arms and hands ........................................................................... 10

    1.2.3.2. Motion generators ........................................................................................................... 10

    1.2.3.3. Locomotors : legged and wheeled robots ........................................................................ 10

    1.3. Components of a robot ................................................................................................................ 12

    1.3.1. Power source ....................................................................................................................... 12

    1.3.2. Actuation ............................................................................................................................. 13

    1.3.3. Sensing ................................................................................................................................ 13

    1.3.4. Manipulators ....................................................................................................................... 13

    1.3.5. Locomotion ......................................................................................................................... 13

    1.4. Sensors used in mobile robots ..................................................................................................... 14

    Conclusion .............................................................................................................................................. 16

    CHAPTER TWO: ROBOT MOTION PLANNING & ALGORITHMS ................................................... 17

    Introduction ............................................................................................................................................. 18

    2.1. Basic definitions .......................................................................................................................... 18

    2.1.1. Motion planning ............................................................................................................... 18

    2.1.2. Trajectory planning ........................................................................................................... 18

    2.1.3. State space ........................................................................................................................ 19

    2.1.4. Work space

  • 2.1.5. Configuration space ........................................................................................................ 19

    2.2. Roadmap path planning .............................................................................................................. 21

    2.2.1. Sampling-based motion planning ........................................................................................ 22

    2.2.2. Notion of completeness ....................................................................................................... 22

    2.2.3. Roadmap path planning ...................................................................................................... 23

    2.2.3.1. Visibility graph ............................................................................................................... 24

    2.2.3.2. Voronoi diagram ............................................................................................................. 29

    2.3. Motion planning algorithms ........................................................................................................ 34

    2.3.1. Single-query models ........................................................................................................... 34

    2.3.1.1. The incremental sampling and searching ........................................................................ 34

    2.3.1.2. Checking path segment algorithm ................................................................................... 34

    2.3.1.3. Rapidly exploring dense trees ......................................................................................... 35

    2.3.2. Multiple-query model : Probabilistic roadmap: .................................................................. 38

    2.3.2.1. The learning phase : ........................................................................................................ 38

    2.3.2.2. The Query phase : ........................................................................................................... 39

    Conclusion .............................................................................................................................................. 40

    General conclusion ...................................................................................................................................... 41

    References ................................................................................................................................................... 42

  • General Introduction

    6

    General Introduction

    Mobile robotics is a rich field where many engineering and science disciplines are comprised,

    from mechanical, electrical and electronic to computer, cognitive and social sciences. A

    collection of journal publications, textbooks and pertinent websites were used to gather all the

    necessary information in order to carry out this literature.

    The first chapter presents an introduction to the fundamentals of robotics, spanning robots

    definition, history, components and types of sensors used in the robotic industry.

    Whereas the second one deepens in the core of our research topic which is the study of a path

    planning methods used for static obstacle avoidance, this method - referred as roadmap - is

    nowadays widely used in manufacturing different types of autonomous mobile robots which may

    find use in our daily life as in elderly houses or hospitals. There are two different ways of path

    planning which are: visibility graph and Voronoi diagram.

    We conclude this chapter by depicting some of the most used algorithms in robotic motion

    planning such as rapidly exploring dense trees (single-query search) and probabilistic roadmaps

    (multiple-query search).

  • Chapter One: Introduction to Robotics

    7

    CHAPTER ONE: INTRODUCTION TO

    ROBOTICS

  • Chapter One: Introduction to Robotics

    8

    Introduction

    In this chapter we are going to define robotics as a science and get into robot definition, types of

    robots according to different classifications, the components used in building a robot and the

    different sensors used for perception.

    1.1. Basic definitions

    Robotics is not a new science, but merely a collection of topics taken from classical fields.

    Mechanical engineering contributes methodologies for study of machines in static and dynamic

    situation. Mathematics supplies tools for describing spatial motions and other attributes of

    robots. Control theory provides tools for designing and evaluating algorithms to realize desired

    motions or force for applications. Electrical engineering techniques are brought to bear in the

    design of sensors and interfaces for industrial robots, and computer science contributes a basis

    for programming these devices to perform desired tasks.

    1.1.1. Definition of robotics

    The branch of technology that deals with the design, construction, operation and application of

    robots as well as computer systems for their control, sensory feedback and information

    processing is robotics. These technologies deal with automated machines that can take the place

    of humans in dangerous environments or manufacturing processes.

    The design of a given robotic system will often incorporate principles of mechanical engineering,

    electronic engineering, and computer science (particularly artificial intelligence). The

    mathematical expression of a biological system may give rise to control algorithms for example,

    or by observing how a process is handled by nature, an analogous system may be formed using

    electronics.

    The concept of creating machines that can operate autonomously dates back to classical times,

    but research into the functionality and potential uses of robots did not grow substantially until the

    20th century. Throughout history, robotics has been often seen to mimic human behavior, and

    often manage tasks in a similar fashion. Today, robotics is a rapidly growing field, as

  • Chapter One: Introduction to Robotics

    9

    technological advances continue; research, design, and building new robots serve various

    practical purposes, whether domestically, commercially, or militarily.

    1.1.2. Definition of a robot

    The concept of robots is a very old one yet the actual word robot was invented in the 20th

    century from the Czechoslovakian word robota or robotnik meaning slave, servant, or forced

    labor.

    A robot is a mechanical or virtual artificial agent, usually an electro-mechanical machine that is

    guided by a computer program or electronic circuitry. Therefore it can be defined as a

    programmable, self-controlled device consisting of electronic, electrical, or mechanical units.

    Robots are especially desirable for certain work functions because, unlike humans, they never

    get tired; they can endure physical conditions that are uncomfortable or even dangerous; they can

    operate in airless conditions; they do not get bored by repetition; and they cannot be distracted

    from the task at hand. Robots don't have to look or act like humans but they do need to be

    flexible so they can perform different tasks.

    1.2. Classification of robots

    Robotics has been one of the major factors of the great success achieved nowadays in the

    industrial world. Many types of robots have been built to facilitate our life, yet we are always

    eager to design more flexible, multipurpose, and useful robots.

    We can classify robots according to several criteria, most of which are: function, size and

    application. Function is maybe seen as the most comprehensive criterion as it groups robots of

    different sizes and applications.

    1.2.1. Types of robots by size:

    The most known robots under this criterion are macro-robots (those with dimensions measured

    in meters), these robots can reach a couple of meters, usually used for manipulation of heavy

    parts in industry. Micro-robots, in contrast, are measured in far less dimensions allowing them to

    reach a fraction of a millimeter.

  • Chapter One: Introduction to Robotics

    10

    1.2.2. Types of robots by application:

    Robot application varies as their function and size do; there are a large number of fields where

    robots can be used. Range of application span the classical industrial robots for spot welding or

    painting, for instance, on to surveillance, surgical and nursing operation, rehabilitation and

    entertainment, military operations.

    1.2.3. Types of robots by function:

    According to what might a robot do, we can classify robots as follow:

    1.2.3.1. Manipulators : robotic arms and hands

    They are the mostly used robots in manufacture; a robot arm can

    perform repetitive tasks that human operators could not do with the

    same speed and accuracy, e.g. car-body spot-welding, painting and

    placing surface-mounted components. A manipulator has a limited

    range of motion depending on where it is bolted down; it operates

    always in a unique environment (weather conditions, terrain).

    1.2.3.2. Motion generators

    These include robotic systems capable of mimicking a certain type of motions for different

    purposes, ranging from manipulation tasks such as the positioning of surveillance cameras to

    surgical operations, on to moving platforms for pilot training (flight simulators), or simply

    following musical rhymes.

    1.2.3.3. Locomotors : legged and wheeled robots

    Under locomotors we mean all robots capable of displacing from point A to B on a surface

    without being attached to it. They are also called mobile robots or autonomous robots. In contrast

    to robots used in manufacturing plants (such as manipulators), these robots can operate within

    different hostile environments and are always able to adapt themselves to any change in the

    dynamic characteristics of the environment.

    Figure 1.1 A welding robot,

    used in industry

    (Wikipedia)

  • Chapter One: Introduction to Robotics

    11

    The notion of autonomy in robotics includes: self-governing, self-determination and

    independence. Though autonomy means independence, robotic systems cannot be totally

    independent from humans; this is why it is more suitable to talk about relative autonomy in

    robotics rather than total autonomy. Thus we can say that the level of autonomy of a system can

    be measured by the level of supervision i.e. the less the system is supervised (human interaction)

    the more the system is autonomous.

    The two fundamental reasons for making robotic systems more autonomous are:

    - Assisting humans in managing complexity;

    - Achieving critical time responses in a changing environment.

    In our report, research will focus merely on autonomous mobile robots

    Legged robots

    A legged robot is characterized by having point contacts with the ground; the main advantage of

    legged robots is adaptability and maneuverability in rough terrain. In fact, the unique adaptive

    suspension provided by these machines allows them to navigate on uneven terrain. The main

    disadvantage consists of design complexity when dealing with power and mechanics (balance),

    the legs must be capable to sustain the robots total weight.

    Legged robots may be of several classes, one which is mostly known to the public is humanoid

    robots; others also do exist such as (two-legged and four-legged).

    Figure 1.2 ASIMO, bipedal humanoid robot made by HONDA (Wikipedia)

    Figure 1.3 A four-legged military robot

    World fastest robot in 2012 (Wikipedia)

  • Chapter One: Introduction to Robotics

    12

    Wheeled robots

    Wheel, the most popular locomotion mechanism being used in mobile robotics does not have

    balance problems, because wheeled robots are designed to be always in contact with terrain.

    Generally most mobile robots are four-wheeled ones, but there exit also one-wheeled and two-

    wheeled robots which demonstrate more balance design complexity, however they offer

    advantages in terms of efficiency and cost, as well as allowing the robot to navigate in confined

    places that a four-wheeled robot could not reach.

    1.3. Components of a robot

    Robot construction needs various types of components which are:

    1.3.1. Power source

    Different types of batteries (range from lead acid to silver cadmium) can be selected to power

    robots according to some factors that are: safety, cycle lifetime, cost and weight.

    Potential power sources could be:

    Pneumatic (compressed gases)

    Hydraulics (liquids)

    Flywheel energy storage

    Organic garbage (through anaerobic digestion).

    Figure 1.4 NASAs Curiosity Rover sent to Mars in 2012 (Wikipedia) Figure 1.5 A four-legged mobile robots

    (Wikipedia)

  • Chapter One: Introduction to Robotics

    13

    1.3.2. Actuation

    Actuators are like the "muscles" of a robot, the parts which

    convert stored energy into movement. By far the most popular

    actuators are electric motors that spin a wheel or gear, and

    linear actuators that control industrial robots in factories. But

    there are some recent advances in alternative types of

    actuators, powered by electricity, chemicals, or compressed

    air.

    There are different types of actuator that are: electric motor,

    linear actuator, series elastic actuators, air muscles, muscles

    wire, piezo- motors

    1.3.3. Sensing

    Sensor is a way that robots use to perform their tasks and act upon any changes by calculating

    the appropriate response. They are used to indicate any danger (warnings) that the robots may

    encounter during their process by providing real time information of the running task.

    There are several ways that robots use for sensing, which we can state: touch, vision A deeper

    explanation will be provided in the following section.

    1.3.4. Manipulators

    The hands of robots are often referred as end effectors that manipulate object (pick up,

    modify) and the arm is referred as a manipulator, most of them have replaceable effectors

    that allows them to perform some small range of tasks. There are different types of robot

    manipulators that are: mechanical gripper, vacuum gripper, general-

    purpose effectors.

    1.3.5. Locomotion

    This is one method that robots use to transport themselves from one

    place to another in order to develop their capabilities in order to

    decide how, when, and where to move. There are several form of

    Figure 1.6 A robotic leg powered

    by air muscles (Wikipedia)

    Figure 1.7 Segway in the Robot

    museum in Nagoya. (Wikipedia)

  • Chapter One: Introduction to Robotics

    14

    locomotion that are used by robots which are : rolling robots, two-wheeled balancing robots,

    spherical orb robots, tracked robots, walking robots, ZMP Technique , hopping , flying

    1.4. Sensors used in mobile robots

    There are a wide variety of sensors used in mobile robots; some sensors are used to measure

    simple values like the internal temperature of a robots electronic or the rotational speed of the

    motors. Others, more sophisticated sensors can be used to acquire information about the robots

    environment or even to directly measure a robots global position.

    We focus primarily on sensors used to extract information about the robots environment.

    We classify sensors using two important functional axes: proprioceptive/exteroceptive and

    passive/active.

    - Proprioceptive sensors: measure values internal to the system (robot); for example: motor

    speed, wheel load, robot arm joint angles, battery voltage.

    - Exteroceptive sensors: acquire information from the robots environment; for example:

    distance measurements, light intensity, sound amplitude. Hence exteroceptive sensor

    measurements are interpreted by the robot in order to extract meaningful environmental features.

    - Passive sensors: measure ambient environmental energy entering the sensor. Examples of

    passive sensors include temperature probes, microphones, and CCD or CMOS cameras.

    - Active sensors: emit energy into the environment, and then measure the environmental

    reaction.

    Classification of sensors used in mobile robotics applications:

    General classification

    (typical use)

    Sensor /Sensor System PC / EC A / P

    Tactile sensors

    (detection of physical contact or

    closeness; security switches)

    Contact switches, bumpers

    Optical barriers

    Noncontact proximity sensors

    EC

    EC

    EC

    P

    A

    A

    Wheel/motor sensors

    (wheel/motor speed and position)

    Brush encoders

    Potentiometers

    Synchros, resolvers

    PC

    PC

    PC

    P

    P

    A

  • Chapter One: Introduction to Robotics

    15

    Optical encoders

    Magnetic encoders

    Inductive encoders

    Capacitive encoders

    PC

    PC

    PC

    PC

    A

    A

    A

    A

    Heading sensors

    (orientation of the robot in relation to a

    fixed reference frame)

    Compass

    Gyroscopes

    Inclinometers

    EC

    PC

    EC

    P

    P

    A/P

    Ground-based beacons

    (localization in a fixed reference

    frame)

    GPS

    Active optical or RF beacons

    Active ultrasonic beacons

    Reflective beacons

    EC

    EC

    EC

    EC

    A

    A

    A

    A

    Active ranging

    (reflectivity, time-of-flight, and

    geometric

    triangulation)

    Reflectivity sensors

    Ultrasonic sensor

    Laser rangefinder

    Optical triangulation (1D)

    Structured light (2D)

    EC

    EC

    EC

    EC

    EC

    A

    A

    A

    A

    A

    Motion/speed sensors

    (speed relative to fixed or moving

    objects)

    Doppler radar

    Doppler sound

    EC

    EC

    A

    A

    Vision-based sensors

    (visual ranging, whole-image analysis,

    segmentation, object recognition)

    CCD/CMOS camera(s)

    Visual ranging packages

    Object tracking packages

    EC P

    A, active; P, passive; P/A, passive/active; PC, proprioceptive; EC, exteroceptive.

    Wheel/motor sensors: Wheel/motor sensors are devices used to measure the internal state and

    dynamics of a mobile robot.

    Heading sensors: can be proprioceptive (gyroscope, inclinometer) or exteroceptive (compass).

    They are used to determine the robots orientation and inclination. They allow us, with

  • Chapter One: Introduction to Robotics

    16

    appropriate velocity information, to integrate the movement to a position estimate. This

    procedure is called dead reckoning.

    Ground-based beacons: Using the interaction of on-board sensors and the environmental

    beacons, the robot can identify its position precisely.

    Active ranging: For obstacle detection and avoidance, most mobile robots rely heavily on active

    ranging sensors. They are also commonly found as part of the localization and environmental

    modeling processes of mobile robots.

    Motion/speed sensors: Used for fast-moving mobile robots such as autonomous highway

    vehicles and unmanned flying vehicles, Doppler-based motion detectors are the obstacle

    detection sensors most chosen.

    Vision-based sensors: It provides us with an enormous amount of information about the

    environment and enables rich, intelligent interaction in dynamic environments. The first step in

    this process is the creation of sensing devices that capture the same raw information light that the

    human vision system uses (CCD and CMOS).

    Conclusion

    The research theme that we are interested in is about autonomous mobile robot, the latter cannot

    be of all the types that we have seen above, for instance, manipulators cannot be the focus of our

    research since they are not mobile, however locomotors (car-like) or humanoid robots are the

    kind of robots that we are interested in.

  • Chapter Two: Robot Motion Planning & Algorithms

    17

    CHAPTER TWO: ROBOT MOTION

    PLANNING & ALGORITHMS

  • Chapter Two: Robot Motion Planning & Algorithms

    18

    Introduction

    Robot motion planning has been one of the major issues that robotic engineers and scientists

    faced for the last two decades; this chapter gathers different results of researches that have been

    conducted on a specific approach of path planning, namely, roadmap methods.

    2.1. Basic definitions

    In this section we will define some important terms that will often appear in this literature.

    2.1.1. Motion planning Also known as the navigation problem or piano movers

    problem, motion planning is a term used to describe the process of finding valid

    configurations that moves the robot from initial position to goal destination using the following

    parameters:

    - A start pose of the robot

    - A desired goal pose

    - A geometric description of the robot

    - A geometric description of the world

    In other words, motion planning is finding a path that moves the robot gradually from start to

    goal while never colliding with any obstacle. We divide motion planning into three major tasks

    which are:

    - Mapping and modeling the environment

    - Path planning and selection

    - Path traversal and obstacle avoidance

    2.1.2. Trajectory planning It is the path followed by the robot as a function of time. Trajectories

    can be planned either in joint space (directly specifying the time evolution of the joint angles)

    which is the simplest and the fastest or in Cartesian space (specifying the position and the

    orientation of the frame). The planning modalities for trajectory may be quite different : point

    to point, with pre-defined path or in the joint space, in the work space, either defining some

    points of interest (initial and final point) or the whole geometric path X=X(t). Two necessary

  • Chapter Two: Robot Motion Planning & Algorithms

    19

    aspects should be specified in planning for a desired trajectory which is geometric path and

    motion law.

    Trajectory planning is very important for dimensioning control and use of electric motors in

    automatic machines (e.g. packaging).

    2.1.3. State space The simplest classical planning algorithms are state space search algorithms.

    These are search algorithms in which the search space is a subset of the state space: Each node

    corresponds to a state of the world, each arc corresponds to a state transition, and the current

    plan corresponds to the current path in the search space. Forward Search and Backward Search

    are two of main samples of state space planning which captures all possible situations that

    could arise (Position, Orientation); in motion planning, the state space is referred as the

    configuration space.

    2.1.4. Work space It is the environment in which robots operate (real world), such as factory

    plants.

    2.1.5. Configuration space Although the motion planning problem is defined in the regular

    world, we introduce a key concept in motion planning, that is a configuration q, which is a

    complete specification of the position of every point in the system.

    We define the space of all configurations by the configuration space or C-space, in other terms it

    refers to the set of positions reachable by a robot's end-effector. Thus, the positions of the end-

    effector of a robot can be identified with the group of spatial rigid transformations. The joint

    parameters of the robot are used as generalized coordinates to define its configurations. The set

    of joint parameter values is called the joint space. The robot's forward and inverse kinematics

    equations define mappings between its configurations and its end-effector positions, or between

    joint space and configuration space. Robot motion planning uses these mappings to find a path in

    joint space that provides a desired path in the configuration space of the end-effector.

    Usually a configuration is expressed as a vector of positions and orientations.

  • Chapter Two: Robot Motion Planning & Algorithms

    20

    Examples:

    Rigid body robot

    - 3-parameter representation :

    - In 3D, q would be

    Articulated robot

    C-space is obtained by sliding the robot along the edge of the obstacle regions; the figure below

    depicts how c-space is obtained.

    Figure 2.1 Vector position and

    orientation of a configuration.

    Figure 2.2 Degrees of freedom of an articulated robot

    Work space Configuration space

    Figure 2.3 A work space Figure 2.4 A configuration space space

  • Chapter Two: Robot Motion Planning & Algorithms

    21

    - Free space It is the unoccupied space of the C-space, i.e. the set of allowed (feasible)

    configurations.

    - Obstacle region It is the portion of the C-space that is permanently occupied or a set of

    disallowed configurations. Obstacle is defined by a set of vertices (intersection points) or

    edges (lines) described by pairs of two points.

    - Initial and goal states Starting at some initial configuration s and trying to reach at a

    specified goal configuration g.

    A c-space is defined as follows:

    Let be the work space, be the set of obstacles and be the robot in

    configuration .

    { | }

    We define as well:

    - qI : Start configuration

    - qG : Goal configuration

    Hence, we conclude that motion planning amounts to finding a continuous path

    such that: qI, qG.

    2.2. Roadmap path planning

    The work space of a robot ranges from a continuous geometric description to a decomposition-

    based geometric map or even a topological map. Motion planning begins with transforming the

    continuous environmental model into a discrete map (metric) suitable for the chosen path-

    planning algorithm. Indeed, there exist various methods for path planning; we can identify three

    main strategies for decomposition:

    Figure 2.5 A work space showing Cfree and Cobs

  • Chapter Two: Robot Motion Planning & Algorithms

    22

    Sampling-based motion planning:

    - Roadmap: identifying a set of feasible paths within the free space.

    Combinatorial motion planning:

    - Cell decomposition: discriminating between free and occupied cells.

    - Potential field: imposing a mathematical description over the space.

    Our main concern in this project is roadmap methods; we will get deeper in the subject in the

    following literature.

    2.2.1. Sampling-based motion planning

    The idea of this motion planning approach, depicted in the figure below, is to avoid the explicit

    construction of Cobs and as an alternative, conduct a search that probes the C-space with a

    sampling scheme using a collision detection module which checks the models (obstacles) that are

    semi-algebraic sets, 3D triangles, nonconvex polyhedral etc.... This general philosophy has been

    very fruitful in modern robotics, manufacturing, and biological applications, such problems

    could not be tackled with a technique that explicitly represents Cobs.

    Figure 2.6 Sampling-Based Motion Planning Approach

    2.2.2. Notion of completeness

    The algorithms used with sampling-based motion planning do not guarantee a solution for any

    input, in other terms they do not assure a path for any combination of initial and goal positions,

    whereas combinatorial motion planning does, in fact, provide complete obstacle region space.

  • Chapter Two: Robot Motion Planning & Algorithms

    23

    2.2.3. Roadmap path planning

    Roadmap approaches capture the connectivity of the robots free space Cfree by a graph or

    network of paths (lines). It can be defined as follows:

    A roadmap, RM, is a union of curves such that for all start and goal points in Cfree that can

    be connected by a path the following elements are satisfied :

    - Accessibility : there is a path from qs Cfree to some q in W

    - Depart ability : there is a path from some q W to qg Cfree

    - Connectivity : there exists a path in W between q and q

    - One dimensional

    Example of a roadmap is shown in the figure below.

    Figure 2.7 Corresponding roadmap to a certain environment

    Hence, roadmap amounts to connecting the initial and goal positions of the robot to the road

    network, then searching for a series of roads from the initial robot position to its goal position.

    Based on obstacle geometry, the roadmap is a decomposition of the robots C-space. The

    challenge is to construct a set of paths that together enable the robot to move freely in the free

    space while keeping the number of paths as small as possible. We describe two main methods of

    roadmap motion planning. In the case of visibility graph, roads are close to the obstacle which

  • Chapter Two: Robot Motion Planning & Algorithms

    24

    results in minimum-length solutions. In the case of Voronoi diagram, roads are as far as possible

    from the obstacle, resulting in lengthier solutions.

    2.2.3.1. Visibility graph

    This approach is merely defined for polygonal obstacles (after geometric transformation), it

    consists of edges joining all pairs of vertices that can see each other (including both the initial

    and goal positions as vertices as well), in other words the nodes correspond to the obstacles

    vertices, and obviously each constructed line (connected vertices) is the shortest distance

    between them as in the figure below. There are two conditions in order to achieve node

    connection:

    - If they are already connected by an edge on an obstacle;

    - The line segment joining them is in the free space;

    Figure 2.8 All nodes which are visible from each other are connected by straight-line segments, defining the

    road map. This means there are also edges along each polygons sides.

    Due to the facility of implementing visibility graphs while path planning, it is moderately

    widespread in mobile robotics, particularly when the environmental representation describes

    objects as polygons in either continuous or discrete space; the visibility graph search can employ

    the obstacle polygon descriptions readily. There are, however, two important caveats when

    employing visibility graph search.

  • Chapter Two: Robot Motion Planning & Algorithms

    25

    First, the size of the representation and the number of edges and nodes increases as the number

    of obstacles polygons increases. Therefore the method is extremely fast and efficient in sparse

    environments, but can be slow and inefficient compared to other techniques when used in

    densely populated environments.

    The second caveat is a much more serious potential flaw: the solution paths found by visibility

    graph planning tend to take the robot as close as possible to obstacles on the way to the goal

    destination. More formally, we can prove that visibility graph planning is optimal in terms of the

    length of the solution path (the shortest possible path). This powerful result also means that all

    sense of safety, in terms of staying a reasonable distance from obstacles, is sacrificed for this

    optimality.

    In order to avoid this, it is reasonable to grow obstacles by significantly more than the robots

    radius, or, alternatively, modifying the solution path after path planning is done to distance the

    path from obstacles when possible. Of course such actions sacrifice the optimal-length results of

    visibility graph path planning.

    Let us consider the case of a robot point moving among a set S of disjoint simple polygons in the

    space. The polygons in S are called obstacles, and their total number of edges is denoted by n.

    We are given a start position pstart and a goal position pgoal, which we assume are in the free

    space. Our goal is to compute the shortest collision-free path from pstart to pgoal, that is, the

    shortest path that does not intersect with any obstacle. We compute a trapezoidal map T (Cfree) of

    the free conguration space Cfree. The key idea is to replace the continuous work space, where

    there are innitely many paths, by a discrete road map G road, where there are only nitely many

    paths. The roadmap we use is a plane graph with nodes in the centers of the trapezoids of T

    (Cfree) and in the middle of the vertical extensions that separate adjacent trapezoids. The nodes in

    the center of each trapezoid are connected to the nodes on its boundary. After nding the

    trapezoids containing the start and goal position of the robot, we find a path in the road map

    between the nodes in the centers of these trapezoids by breadth-rst search.

    How to sketch a visibility graph?

    1- We draw lines of sight from the start and goal to all visible vertices and corners of the

    world.

  • Chapter Two: Robot Motion Planning & Algorithms

    26

    2- We draw lines of sight from every vertex of every obstacle like before. Remember lines

    along edges are also lines of sight.

    3- We carry on as in 2

    4- We do the same procedure

    5- We repeat it until it is done

  • Chapter Two: Robot Motion Planning & Algorithms

    27

    We describe here one of the algorithms used for computing visibility graph, it is referred as the

    Sweepline algorithm:

    .

    Table 2.1 Visibility Graph shortest path algorithm

    In the next section we show how to compute the visibility graph in O(n2 log n) time, where n is

    the total number of obstacle edges. The number of arcs of RMvis is of course bounded by

    Hence, line 2 of the algorithm takes O( n2) time. Dijkstras algorithm computes the shortest path

    between two nodes in graph with k arcs, each having a non-negative weight, in O(n log n + k)

    time. Since k = O( n2) , we conclude that the total running time of SHORTESTPATH is O(n2 log

    n), leading to the following theorem.

    Table 2.2 Visibility Graph Algorithms

    Algorithm VISIBILITYGRAPH(S)

    Input: A set S of disjoint polygonal obstacles.

    Output: The visibility graph RMvis( S).

    1. Initialize a graph G = (V; E) where V is the set of all vertices of the polygons

    in S and E = .

    2. for all vertices v 2V

    3. do W VISIBLEVERTICES(v; S)

    4. For every vertex w W , add the arc ( v; w) to E.

    5. return RM

    Algorithm SHORTESTPATH(S; pstart; pgoal)

    Input: A set S of disjoint polygonal obstacles, and two points pstart and pgoal in the

    free space.

    Output: The shortest collision-free path connecting pstart and pgoal.

    1. RMvis VISIBILITYGRAPH(S {pstart; pgoal})

    2. Assign each arc (v; w) in RMvis a weight, which is the Euclidean length of the

    segment .

    3. Use Dijkstras algorithm to compute a shortest path between pstart and

    pgoal in RMvis.

  • Chapter Two: Robot Motion Planning & Algorithms

    28

    The procedure VISIBLEVERTICES has as input a set S of polygonal obstacles and a point p in

    the plane; in our case p is a vertex of S, but that is not required.

    It should return all obstacle vertices visible from p.

    Table 2.3 Visible vertices algorithm

    Example

    Vertex New T Actions

    Initialization {E4, E2, E8, E6} Sort edges intersecting horizontal half

    6 {E4, E2, E8, E5} Delete E6 from T. Add E5 to T

    2 { E4, E1, E8, E5} Delete E2 from T. Add E1 to T

    5 {E4, E1} Delete E5 from and E8 from T.

    1 { } Delete E1 from and E4 from T. Add (v,v1) RM

    8 {E7, E8} Add E7 from T. Add E8 to T. Add (v,v8) RM

    4 {E3, E4, E7, E8} Add E3 from T. Add E4 to T. Add (v,v4) RM

    Algorithm VISIBLEVERTICES(p; S)

    Input: A set S of polygonal obstacles and a point p that does not lie in the

    interior of any obstacle.

    Output: The set of all obstacle vertices visible from p.

    1. Sort the obstacle vertices according to the clockwise angle that the half-line

    from p to each vertex makes with the positive x-axis. In case of ties, vertices

    closer to p should come before vertices farther from p. Let

    w1. wn be the sorted list.

    2. Let r be the half-line parallel to the positive x-axis starting at r. Find the

    obstacle edges that are properly intersected by r , and store them in a balanced

    search tree T in the order in which they are intersected by r.

    3. W

    4. for i 1 to n

    5. do if VISIBLE(wi) then Add wi to W .

    6. Insert into T the obstacle edges incident to wi that lie on the clock-wise side

    of the half-line from p to wi.

    7. Delete from T the obstacle edges incident to wi that lie on the

    counterclockwise side of the half-line from p to wi.

    8. return W

  • Chapter Two: Robot Motion Planning & Algorithms

    29

    7 {E3, E4, E6, E8} Delete E7 from T. Add E6 to T

    3 {E2, E4, E6, E8} Delete E3 from T. Add E2 to T

    Termination

    Figure 2.9 Obtained visibility graph

    2.2.3.2. Voronoi diagram

    It is a set of points equidistant from the closest two or more obstacle boundaries maximizing the

    clearance between the points and obstacles. In recent years, Voronoi-based path planning is

    considered as a technique used for reacting to unexpected environmental events with efficient

    optimized trajectories.

    Voronoi diagram is induced by a set of points (called sites): subdivision of the plane where the

    faces correspond to the regions where one site is closest.

    Figure 2.10 Cell sites for Voronoi diagram

  • Chapter Two: Robot Motion Planning & Algorithms

    30

    The Voronoi diagram computes the shortest straight-line path from start and goal to closest point

    on it.

    Figure 2.11 Voronoi diagrams shortest path

    Every Voronoi cell is the intersection of n1 half-planes, if there are n sites. All cells are convex

    and have up to n1 edges in the boundary.

    How to sketch a Voronoi diagram?

    1. If all n sites lie on a line, then the Voronoi cell boundaries are parallel lines, so the

    graph is disconnected as follows :

    2. Otherwise, the Voronoi cell boundaries form a connected graph as shown below :

    Figure 2.13 A Voronoi vertex is the center of an empty circle touching 3 or more sites

    Figure 2.12 The collinear sites form a series of parallel lines

  • Chapter Two: Robot Motion Planning & Algorithms

    31

    Empty circle property:

    Every Voronoi vertex is the center of an empty

    circle through 3 sites. Every point on a Voronoi

    edge is the center of an empty circle through 2 sites

    Using Voronoi diagram for roadmap construction

    offers certain advantages which are :

    - It diminishes the dimension of the problem to one and trajectories follow the maximum

    clearance map (this means that the obtained trajectories are the safest ones).

    - The Voronoi-based navigation reminds of topological navigation and because of that, it is

    similar to the human one in some aspects.

    However, most Voronoi-based methods have the difficulty of calculating the Voronoi diagram

    by studying lines and polygons, finding the vertices, nodes and creating a tree to find the path. In

    addition, this method is not very efficient in higher dimensions and does not work.

    As a solution we use image processing methods to calculate the trajectory so, the new motion

    planning is based on the combination of a Voronoi diagram and the expansion of a wave from

    the start point to the goal following the Voronoi diagram.

    The Voronoi diagram is built using image methods (skeletonization) based on the Breu method

    in 2D and Gagvani in 3D.

    Figure 2.15 showing two different types of Voronoi diagram for the same work space

    Figure 2.14 Non-collinear sites form

    Voronoi half lines that meet at a vertex

  • Chapter Two: Robot Motion Planning & Algorithms

    32

    The general layout of a Voronoi diagram algorithm is :

    Compute the intersection of n1 half-planes for each site, and merge the cells into the

    diagram

    Divide-and-conquer (1975, Shamos & Hoey)

    Plane sweep (1987, Fortune)

    Randomized incremental construction (1992, Guibas, Knuth & Sharir)

    T

    Table 2.3 Voronoi diagram algorithm

    We need to define some terms related to the above algorithm.

    - Plane sweep: Note that the Voronoi diagram above the sweep line may be affected by sites

    below the sweep line.

    Maintain and grow the portion of Voronoi diagram above the sweep line that is known for sure.

    - The beach line separates the known and unknown part of the Voronoi diagram, it is the

    minimum of the parabolas defined by sites above the sweep-line and the sweep-line itself.

    1. Initialize the event queue Q with all site events, initialize an empty status

    structure T and an empty doubly-connected edge list D

    2. While Q is not empty

    3. Do remove the event with largest y-coordinate from Q

    4. If the event is a site event, occurring at site pi

    5. Then Handle Site Event (pi)

    6. Else Handle Circle Event (g), where g is the leaf of T representing the arc that

    will disappear

    7. When all events are handled, we must still fix the doubly-connected edge list

    with respect to the bounding box, and to add face information.

  • Chapter Two: Robot Motion Planning & Algorithms

    33

    Figure 2.16 The break points move and trace out the Voronoi diagram edges

    - Status: The ordered sequence of parabolic arcs that defines the beach line; each is defined by a

    site (and so is the sweep-line).

    Break points are defined by two sites (and so is the sweep-line) since the beach line is x

    monotone, we can store the status in a balanced binary search tree on x-coordinate.

    The sweep algorithm also needs an event list (where the status changes) and a data structure to

    store the Voronoi diagram computed so far.

    The Voronoi diagram will be computed inside a large bounding box so that a doubly connected

    edge list can be used.

    - An event is an interesting point encountered by the sweep line as it sweeps from top to bottom.

    They are prioritized based on y-coordinate

    - Circle events (when the sweep line encounters the bottom of an empty circle touching 3 or

    more sites) can only happen for three sites that have adjacent parabolic arcs on the beach line, it

    is the only way for a parabolic arc to disappear from the beach line.

    - Site event (when the sweep line encounters a new site point): is the only way for a new

    parabolic arc to appear on the beach line.

    Figure 2.17 Original arc above the new site is

    broken into two

    Figure 2.18 An arc disappears whenever an empty circle

    touches three or more sites and is tangent to the sweep line

  • Chapter Two: Robot Motion Planning & Algorithms

    34

    2.3. Motion planning algorithms

    Path planning algorithms can be either single-query or multiple-query, in the case of single-

    query initial and goal positions (qI, qG) are given only once per robot and obstacle set,

    multiple-query models are the opposite.

    2.3.1. Single-query models

    2.3.1.1. The incremental sampling and searching (as in the sweepline algorithm)

    Most single-query, sampling-based planning algorithms follow this template:

    Initialization: let G represent an undirected search graph, for which V contains at least one

    vertex and E contains no edges. Typically, V contains qI, qG or both. In general, other points

    in C-free may be included. (V, E).

    Vertex Selection Method (VSM): Choose a vertex qcur V for expansion

    Local Planning Method (LPM): For some qnew C-free that may or may not be

    represented by a vertex in V attempt to construct a path s: [0, 1] C-free such that

    (0)=qcur and (1)=qnew. Using the methods of Slides s must be checked to ensure that it

    does not cause a collision. If this step fails to produce a collision-free path segment, then go

    to step 2.

    Insert an Edge in the Graph: Insert s into E, as an edge from qcur to qnew. If qnew is not

    already in V, then it is inserted.

    Check for a Solution: Determine whether G encodes a solution path. As in the discrete

    case, if there is a single search tree, then this is trivial; otherwise, it can become complicated

    and expensive.

    Return to Step 2: Iterate unless a solution has been found or some termination condition is

    satisfied, in which case the algorithm reports failure.

    2.3.1.2. Checking path segment algorithm

    Collision detection algorithms determine whether a configuration lies in Cfree. Motion

    planning algorithms require that an entire path maps into Cfree, so the interface between the

    planner and collision detection usually involves validation of a path segment, for path s: [0,

    1] Cfree a sampling for the interval [0, 1] is calculated. Hence the collision checker is

    called only on the samples, a fixed q> 0 is often chosen as the C-space step size. If q is

  • Chapter Two: Robot Motion Planning & Algorithms

    35

    too small, considerable time is wasted on collision checking, and if q is too large, then there

    is a chance that the robot could jump through a thin obstacle.

    Example: Suppose that for a configuration q(xt,yt,O) the collision detection algorithm indicates

    that A(q) is at least d units away from collision and the next candidate configuration to be

    checked along is q(xt,yt,O), If no point on A travels more than distance d when moving

    from q to q along , then q and all configurations between q and q must be collision free.

    2.3.1.3. Rapidly exploring dense trees

    The idea is to incrementally construct a search tree that gradually improves the resolution but

    does not need to explicitly set any resolution parameters. Instead of one long path, there are

    shorter paths that are organized into a tree. If the sequence of samples is random, the resulting

    tree is called a rapidly exploring random tree (RRT), which indicates that a dense covering of the

    space is obtained.

    The principle of RRT Algorithm: Initially, start with the initial configuration as root of tree then,

    pick a random state in the configuration space and find the closest node in the tree after that,

    extend that node toward the state if possible then pick another random state and so on.

    Figure 2.20 A new edge is added that connects from sample (i) to the nearest point S, which is the

    vertex qN.

    Figure 2.19 shows two different obstacle configurations

  • Chapter Two: Robot Motion Planning & Algorithms

    36

    The algorithm for constructing RDTs (which includes RRTs) requires the availability of a dense

    sequence, , and iteratively connects from (i) to the nearest point among all those reached by

    G.

    Figure 2.21 If the nearest point in S lies in an edge , the edge is split into two, a new vertex is inserted

    into G.

    Figure 2.22 If there is an obstacle, the edge travels up to the obstacle boundary, as far as allowed by the

    collision detection algorithm.

    Here is the RDT algorithm with obstacles:

    Table 2.4 Rapidly exploring dense trees algorithm

    RDT( q0 )

    1. G. init ( q0 ) ;

    2. for i = 1 to k do

    3 qn nearest( S,( i) ) ;

    4 qs stopping-configuration ( qn, ( i) ) ;

    5 if qs qn t he n

    6 G.add_vertex ( qs) ;

    7 G.add_edge( qn,qs) ;

  • Chapter Two: Robot Motion Planning & Algorithms

    37

    So far, the above literature discussed how to explore Cfree, this does not solve the planning

    query.A single-tree search is an efficiently running planning could use the above algorithm, build

    up the tree and periodically check if it could connect with the goal destination qG. An easy way

    to do so is to begin with a dense sequence and periodically insert qG at regularly spaced

    intervals, say 100 samples.

    However better performance could be achieved using by growing two RDTs, referred as to

    balanced and bidirectional search, one Ta starting at qI and the other Tb starting at qG, ensuring

    that the two trees meet. The algorithm below depicts how this could be done. Initially, these trees

    start from qI and qG, respectively. After some iterations, Ta and Tb are swapped, in each iteration

    Ta is grown exactly the same way as in the previous algorithm. If a new vertex qs is added, then

    a new attempt is made to extend Tb. Rather to use (i) to extend Tb, the new vertex q is used.

    This causes Tb to try to grow toward Ta. If the two connect then a solution has been found.

    Table 2.5 Bidirectional RDT Algorithm

    RTD_BALANCED_BIDIRECTIONAL ( qI,qG)

    1 Ta. init ( qI) ; Tb. init ( qG) ;

    2 for i = 1 to K do

    3 qn nearest (Sa, ( i) ) ;

    4 qs stopping-configuration ( qn, ( i) ) ;

    5 if qs qn then

    6 Ta.add_vertex ( qs) ;

    7 Ta.add_edge( qn,qs) ;

    8 qn nearest ( Sb,qs) ;

    9 qs stopping-configuration( qn, qs) ;

    10 i f qs qn then

    11 Ta.add_vertex ( qs) ;

    12 Ta.add_edge( qn,qs) ;

    13 if qs = qs the return SOLUTION;

    14 if |Tb|> |Ta| then S WAP ( Ta,Tb) ;

    15 return FAILURE

  • Chapter Two: Robot Motion Planning & Algorithms

    38

    Growing more than two trees could be beneficial, it offers more advantages.

    2.3.2. Multiple-query model : Probabilistic roadmap:

    It is constructed by repeatedly generating random free configurations of the robot and connecting

    these configurations using some simple, but very fast motion planner. We call this planner the

    local planner. The roadmap thus formed in the free configuration space (C-space) of the robot is

    stored as an undirected graph. It is used to incrementally build in any amount of time a roadmap.

    If the time spent on the construction of the roadmap is short, the roadmap may not adequately

    represent the connectivity of the free C-space.

    A new motion planning method for robots in static workspace is presented. This method

    proceeds in two phases: a learning phase and a query phase.

    In the former, the probabilistic roadmap is constructed and stored as a graph whose nodes

    correspond to collision-free configurations and whose edges correspond to feasible paths

    between these configurations. Whereas in the latter, any given start and goal configuration of the

    robot are connected to two nodes of roadmap; the roadmap then is searched for a path joining

    these two nodes.

    2.3.2.1. The learning phase :

    It consists of two successive steps, which we refer to as a construction and the expansion step.

    The objective of the former is to obtain a reasonably connected graph, with enough vertices to

    provide a rather uniform covering of free C-space and to make sure that most difficult region

    in this space contains at least a few notes.

    The second step is aimed at further improving the connectivity of this graph. It selects nodes of R

    which, according to some heuristic evaluator, lie in difficult regions of C-space and expands the

    graph by generating additional nodes in the neighborhood. Hence, the covering of by the final

    road map is not uniform, but depends on the local intricacy of the C-space.

  • Chapter Two: Robot Motion Planning & Algorithms

    39

    2.3.2.2. The Query phase :

    During the query phase, paths are to be found between arbitrary input start and goal

    configuration, using the roadmap constructed in the learning phase. Assume for the moment that

    the free C-space is connected and that the roadmap consists of a single connected component R.

    Given a start configuration S and a goal configuration G, we try to connect S and G to some two

    nodes of R , respectively to . A feasible path from S to G is eventually constructed by

    concatenating , the recomputed path corresponding to P, and reversed. If one wishes, this

    path may be improved by running a smoothing algorithm on it which selects random segments of

    the global path and tries to shortcut them by using the local planner.

    The algorithm is shown in the next page.

    Table 2.6 Probabilistic roadmap algorithm

    (1) N

    (2) E

    (3) Loop

    (4) C a randomly chosen free configuration

    (5) a set of candidate neighbors of c chosen from N

    (6) N N {c}

    (7) for all n , in order of increasing D(c , n) do

    (8) if same_connected_component(c , n) (c , n) then

    (9) E E {(c , n)}

    (10) Update Rs connected components.

  • Chapter Two: Robot Motion Planning & Algorithms

    40

    The probabilistic roadmap planner samples the configuration space for free configurations and

    tries to connect these configurations into a roadmap of feasible motions.

    The global idea of PRM is to pick a collection of (useful) configurations in the free space .

    These free configurations form the nodes of a graph G = (V;E). A number of (useful) pairs of

    nodes are chosen and a simple local motion planner is used to try to connect these configurations

    by a path.

    In this version of PRM we only add an edge between nodes if they are not in the same connected

    component of the roadmap graph. This saves time because such a new edge will not help solving

    motion planning queries. On the other hand, to get short paths such extra edges are useful.

    Conclusion

    In the end of this chapter we try to compare the different algorithms that we have depicted above

    in terms of completeness, optimality, efficiency of world updates, efficiency of query updates,

    degree of freedom scalability.

    Approach

    Completeness

    Optimality

    Efficiency of

    world

    updates

    Efficiency of

    query

    updates

    Good degree

    of freedom

    scalability

    Visibility Yes Yes No No No

    Voronoi Yes No Yes yes No

    RRT Yes No Semi semi Yes

    PRM Yes Graph No Yes Yes

  • General Conclusion

    41

    General conclusion

    In this modest work, a general study of roadmap methods for autonomous mobile robots have

    been covered throughout this mini-project, by mentioning the different approaches that obstacle

    avoidance can be achieved using some of the various algorithms that exist, namely: visibility

    graph, Voronoi diagram, rapidly exploring dense trees and probabilistic roadmaps.

    A comparative study has been achieved at the end of chapter two highlighting the advantages

    and disadvantages of the path planning algorithms in terms of completeness, optimality,

    efficiency of world updates, efficiency of query updates, degree of freedom scalability. They are

    to be used depending on the specific objectives of the designer.

    The reader of this present work would inevitably question himself on what impact does this

    research could help in the field of robotics, the answer is that an autonomous robot capable of

    moving in space without colliding with any obstacle of whichever type (static or dynamic) ,shape

    (polygon or not) or size could be designed for instance, to assist nurses in elderly houses, assist

    soldiers in military missions, or at a larger extent, carrying out the operations by themself such as

    flying robots or the so called drones.

  • References

    42

    References

    1. Probabilistic Roadmaps for Path Planning in High-Dimensional Configuration Spaces.

    Lydia E. kavraki, Petr Svestka, Jean-Claude Latombe, and Mark H Overmars.

    2. Path Planning for Mobile Robot Navigation using Voronoi Diagram and Fast Marching.

    Garrido, Moreno, Blanco & Jurewicz

    3. Robotic Motion Planning: Roadmap Methods

    Robotics Institute http://voronoi.sbp.ri.cmu.edu/~motion.

    Howie Choset http://voronoi.sbp.ri.cmu.edu/~choset.

    4. Planning Algorithms Steven M. LaValle University of Illinois.

    5. Mechanical Engineering Series : Frederick F. Ling Editor- in- Chief.

    6. Robotics Appin Knowledge Solutions Hingham, Massachusetts New Delhi .

    7. The robots builders bonanza. Gordon McComb .

    8. Introduction to Autonomous Mobile Robots. Roland SIEGWART , Illah R.

    NOURBAKHSH .

    9. A Comparative Study of Probabilistic Roadmap Planners. Roland Geraerts Mark H.

    Overmars. Institute of Information and Computing Sciences, Utrecht University.

    10. Computation Geometry Algorithms and Applications. De berg, M.; Cheong, O.: van

    Kreveld. M.; Overmars, M.

    11. Wikipedia, the free encyclopedia, Web site.