Seminar. Path planning using Voronoi diagrams and B-Splines. Stefano Martina stefano.martina@stud.unifi.it

Similar documents
Shortest Path Algorithms

Arrangements And Duality

Shortest Inspection-Path. Queries in Simple Polygons

Computer Graphics. Geometric Modeling. Page 1. Copyright Gotsman, Elber, Barequet, Karni, Sheffer Computer Science - Technion. An Example.

We can display an object on a monitor screen in three different computer-model forms: Wireframe model Surface Model Solid model

Approximation of an Open Polygonal Curve with a Minimum Number of Circular Arcs and Biarcs

Algebra 2 Chapter 1 Vocabulary. identity - A statement that equates two equivalent expressions.

CSE 326, Data Structures. Sample Final Exam. Problem Max Points Score 1 14 (2x7) 2 18 (3x6) Total 92.

The Essentials of CAGD

CHAPTER 1 Splines and B-splines an Introduction

Mean Value Coordinates

Shortcut sets for plane Euclidean networks (Extended abstract) 1

Social Media Mining. Graph Essentials

ALGEBRA. sequence, term, nth term, consecutive, rule, relationship, generate, predict, continue increase, decrease finite, infinite

Lecture 3. Linear Programming. 3B1B Optimization Michaelmas 2015 A. Zisserman. Extreme solutions. Simplex method. Interior point method

Constrained Tetrahedral Mesh Generation of Human Organs on Segmented Volume *

Solving Geometric Problems with the Rotating Calipers *

Graph Theory and Complex Networks: An Introduction. Chapter 06: Network analysis. Contents. Introduction. Maarten van Steen. Version: April 28, 2014

Graph Theory and Complex Networks: An Introduction. Chapter 06: Network analysis

The Goldberg Rao Algorithm for the Maximum Flow Problem

Decision Mathematics D1 Advanced/Advanced Subsidiary. Tuesday 5 June 2007 Afternoon Time: 1 hour 30 minutes

Figure 2.1: Center of mass of four points.

Intermediate Tutorials Modeling - Trees. 3d studio max. 3d studio max. Tree Modeling Matthew D'Onofrio Page 1 of 12

Common Core Unit Summary Grades 6 to 8

Data Structure [Question Bank]

Discrete Optimization

Solutions to Homework 6

Data Structures for Moving Objects

Complexity Theory. IE 661: Scheduling Theory Fall 2003 Satyaki Ghosh Dastidar

WAN Wide Area Networks. Packet Switch Operation. Packet Switches. COMP476 Networked Computer Systems. WANs are made of store and forward switches.

Using the Quadrant. Protractor. Eye Piece. You can measure angles of incline from 0º ( horizontal ) to 90º (vertical ). Ignore measurements >90º.

Essential Mathematics for Computer Graphics fast

Computer Graphics CS 543 Lecture 12 (Part 1) Curves. Prof Emmanuel Agu. Computer Science Dept. Worcester Polytechnic Institute (WPI)

Chapter Load Balancing. Approximation Algorithms. Load Balancing. Load Balancing on 2 Machines. Load Balancing: Greedy Scheduling

Algorithms for Real-Time Tool Path Generation

Conic Sections Assignment

Geometric Modelling & Curves

B2.53-R3: COMPUTER GRAPHICS. NOTE: 1. There are TWO PARTS in this Module/Paper. PART ONE contains FOUR questions and PART TWO contains FIVE questions.

Approximation Algorithms

! Solve problem to optimality. ! Solve problem in poly-time. ! Solve arbitrary instances of the problem. #-approximation algorithm.

Simplified External memory Algorithms for Planar DAGs. July 2004

The number of marks is given in brackets [ ] at the end of each question or part question. The total number of marks for this paper is 72.

Analysis of Algorithms, I

Curves and Surfaces. Goals. How do we draw surfaces? How do we specify a surface? How do we approximate a surface?

Graph Theory Problems and Solutions

Finite Element Formulation for Plates - Handout 3 -

VEHICLE ROUTING PROBLEM

CSE 167: Lecture 13: Bézier Curves. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2011

DIEF, Department of Engineering Enzo Ferrari University of Modena e Reggio Emilia Italy Online Trajectory Planning for robotic systems

Computational Geometry. Lecture 1: Introduction and Convex Hulls

the points are called control points approximating curve

Duplicating Segments and Angles

ME 111: Engineering Drawing

Network (Tree) Topology Inference Based on Prüfer Sequence

Smooth functions statistics

Data Structures in Java. Session 15 Instructor: Bert Huang

Search Heuristics for Load Balancing in IP-networks

Triangulation by Ear Clipping

Expression. Variable Equation Polynomial Monomial Add. Area. Volume Surface Space Length Width. Probability. Chance Random Likely Possibility Odds

Content. Chapter 4 Functions Basic concepts on real functions 62. Credits 11

BEZIER CURVES AND SURFACES

Lecture 7 - Meshing. Applied Computational Fluid Dynamics

Tetrahedron Meshes. Linh Ha

MATHEMATICS Unit Decision 1

LABEL PROPAGATION ON GRAPHS. SEMI-SUPERVISED LEARNING. ----Changsheng Liu

MA 323 Geometric Modelling Course Notes: Day 02 Model Construction Problem

28 Closest-Point Problems

Section 13.5 Equations of Lines and Planes

How To Draw In Autocad

3. Reaction Diffusion Equations Consider the following ODE model for population growth

! Solve problem to optimality. ! Solve problem in poly-time. ! Solve arbitrary instances of the problem. !-approximation algorithm.

Scan-Line Fill. Scan-Line Algorithm. Sort by scan line Fill each span vertex order generated by vertex list

Angle - a figure formed by two rays or two line segments with a common endpoint called the vertex of the angle; angles are measured in degrees

Grade 7 & 8 Math Circles Circles, Circles, Circles March 19/20, 2013

Unit 7 Quadratic Relations of the Form y = ax 2 + bx + c

Lecture L6 - Intrinsic Coordinates

Lecture 9: Geometric map transformations. Cartographic Transformations

Towards Online Recognition of Handwritten Mathematics

Intersection of a Line and a Convex. Hull of Points Cloud

CSE 4351/5351 Notes 7: Task Scheduling & Load Balancing

Robust NURBS Surface Fitting from Unorganized 3D Point Clouds for Infrastructure As-Built Modeling

B490 Mining the Big Data. 2 Clustering

Pre-Algebra Academic Content Standards Grade Eight Ohio. Number, Number Sense and Operations Standard. Number and Number Systems

Level Set Framework, Signed Distance Function, and Various Tools

3. Interpolation. Closing the Gaps of Discretization... Beyond Polynomials

Finite Element Modeling

Finite Elements for 2 D Problems

EE602 Algorithms GEOMETRIC INTERSECTION CHAPTER 27

Outline. NP-completeness. When is a problem easy? When is a problem hard? Today. Euler Circuits

Pro/ENGINEER Wildfire 5.0 Introduction to Surface Modeling

Higher Education Math Placement

CMPSCI611: Approximating MAX-CUT Lecture 20

Current Standard: Mathematical Concepts and Applications Shape, Space, and Measurement- Primary

Dynamic Programming. Lecture Overview Introduction

Transcription:

Seminar Path planning using Voronoi diagrams and B-Splines Stefano Martina stefano.martina@stud.unifi.it 23 may 2016 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Voronoi diagrams Input: A set of points in plane (or space) called sites Output: A partition of the plane (or space) such that each point of a region is nearer to a certain site respect to the others 1.0 0.8 0.6 0.4 0.2 0.0 0.0 0.2 0.4 0.6 0.8 1.0 Martina Stefano (Uni. Firenze) Seminar 23 may 2016 2 / 21

Voronoi diagrams Input: A set of points in plane (or space) called sites Output: A partition of the plane (or space) such that each point of a region is nearer to a certain site respect to the others 1.0 1.0 0.8 0.8 0.6 0.6 0.4 0.4 0.2 0.2 0.0 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0 Martina Stefano (Uni. Firenze) Seminar 23 may 2016 2 / 21

B-spline B-Splines - example 5 9 8 7 6 5 4 3 2 1 0 3 2 1 0 1 2 3 4 0 2 4 6 8 10 14 12 parametric curves follow the shape of a control poligon can interpolate the extremes of the control polygon Martina Stefano (Uni. Firenze) Seminar 23 may 2016 3 / 21

B-spline B-Splines - example 5 9 8 7 6 5 4 3 2 1 0 3 2 1 0 1 2 3 4 0 2 4 6 8 10 14 12 parametric curves follow the shape of a control poligon can interpolate the extremes of the control polygon Martina Stefano (Uni. Firenze) Seminar 23 may 2016 3 / 21

B-spline B-Splines - example 5 9 8 7 6 5 4 3 2 1 0 3 2 1 0 1 2 3 4 0 2 4 6 8 10 14 12 parametric curves follow the shape of a control poligon can interpolate the extremes of the control polygon Martina Stefano (Uni. Firenze) Seminar 23 may 2016 3 / 21

B-spline B-Splines - example 5 9 8 7 6 5 4 3 2 1 0 3 2 1 0 1 2 3 4 0 2 4 6 8 10 14 12 parametric curves follow the shape of a control poligon can interpolate the extremes of the control polygon Martina Stefano (Uni. Firenze) Seminar 23 may 2016 3 / 21

B-splines details Order k (= degree + 1) Extended partition (of parametric space [a, b]) T = {t 0,..., t k 2, t k 1,..., t n+1, t n+2,..., t n+k } t 0 t k 2 t k 1 ( a) < < t n+1 ( b) t n+2 t n+k n + 1 basis N i,1 (t) = { 1, if t i t < t i+1 0, otherwise N i,k (t) = ω i,k 1 (t) N i,k 1 (t) + (1 ω i+1,k 1 (t)) N i+1,k 1 (t) ω i,k (t) = t t i t i+k t i. B-spline n S(t) = v i N i,k (t), i=0 Martina Stefano (Uni. Firenze) Seminar 23 may 2016 4 / 21

B-splines details Order k (= degree + 1) Extended partition (of parametric space [a, b]) T = {t 0,..., t k 2, t k 1,..., t n+1, t n+2,..., t n+k } t 0 t k 2 t k 1 ( a) < < t n+1 ( b) t n+2 t n+k n + 1 basis N i,1 (t) = { 1, if t i t < t i+1 0, otherwise N i,k (t) = ω i,k 1 (t) N i,k 1 (t) + (1 ω i+1,k 1 (t)) N i+1,k 1 (t) ω i,k (t) = t t i t i+k t i. B-spline n S(t) = v i N i,k (t), i=0 Martina Stefano (Uni. Firenze) Seminar 23 may 2016 4 / 21

B-splines details Order k (= degree + 1) Extended partition (of parametric space [a, b]) T = {t 0,..., t k 2, t k 1,..., t n+1, t n+2,..., t n+k } t 0 t k 2 t k 1 ( a) < < t n+1 ( b) t n+2 t n+k n + 1 basis N i,1 (t) = { 1, if t i t < t i+1 0, otherwise N i,k (t) = ω i,k 1 (t) N i,k 1 (t) + (1 ω i+1,k 1 (t)) N i+1,k 1 (t) ω i,k (t) = t t i t i+k t i. B-spline n S(t) = v i N i,k (t), i=0 Martina Stefano (Uni. Firenze) Seminar 23 may 2016 4 / 21

B-splines details Order k (= degree + 1) Extended partition (of parametric space [a, b]) T = {t 0,..., t k 2, t k 1,..., t n+1, t n+2,..., t n+k } t 0 t k 2 t k 1 ( a) < < t n+1 ( b) t n+2 t n+k n + 1 basis N i,1 (t) = { 1, if t i t < t i+1 0, otherwise N i,k (t) = ω i,k 1 (t) N i,k 1 (t) + (1 ω i+1,k 1 (t)) N i+1,k 1 (t) ω i,k (t) = t t i t i+k t i. B-spline n S(t) = v i N i,k (t), i=0 Martina Stefano (Uni. Firenze) Seminar 23 may 2016 4 / 21

Useful properties of B-spline curves Clamped if t 0 = = t k 1 and t n+1 = = t n+k Continuity C k 2 between polynomials (or C m 1 ) Contained inside the union of convex hulls composed of consecutive k vertexes of control polygon Touch to the segment between k 1 aligned control vertexes Lay down in the segment between k aligned control vertexes Martina Stefano (Uni. Firenze) Seminar 23 may 2016 5 / 21

Useful properties of B-spline curves Clamped if t 0 = = t k 1 and t n+1 = = t n+k Continuity C k 2 between polynomials (or C m 1 ) Contained inside the union of convex hulls composed of consecutive k vertexes of control polygon Touch to the segment between k 1 aligned control vertexes Lay down in the segment between k aligned control vertexes Martina Stefano (Uni. Firenze) Seminar 23 may 2016 5 / 21

Useful properties of B-spline curves Clamped if t 0 = = t k 1 and t n+1 = = t n+k Continuity C k 2 between polynomials (or C m 1 ) Contained inside the union of convex hulls composed of consecutive k vertexes of control polygon Touch to the segment between k 1 aligned control vertexes Lay down in the segment between k aligned control vertexes Martina Stefano (Uni. Firenze) Seminar 23 may 2016 5 / 21

Useful properties of B-spline curves Clamped if t 0 = = t k 1 and t n+1 = = t n+k Continuity C k 2 between polynomials (or C m 1 ) Contained inside the union of convex hulls composed of consecutive k vertexes of control polygon Touch to the segment between k 1 aligned control vertexes Lay down in the segment between k aligned control vertexes Martina Stefano (Uni. Firenze) Seminar 23 may 2016 5 / 21

Useful properties of B-spline curves Clamped if t 0 = = t k 1 and t n+1 = = t n+k Continuity C k 2 between polynomials (or C m 1 ) Contained inside the union of convex hulls composed of consecutive k vertexes of control polygon Touch to the segment between k 1 aligned control vertexes Lay down in the segment between k aligned control vertexes Martina Stefano (Uni. Firenze) Seminar 23 may 2016 5 / 21

Dijkstra algorithm 1 def dijkstra ( graph, start, end ): 2 path = [] 3 Q = priorityqueue. PQueue () 4 dist = {} 5 prev = {} 6 for node in graph. nodes (): # populate the queue 7 if node!= start : 8 dist [ node ] = inf 9 Q. add (node, inf ) 10 else : 11 dist [ node ] = 0 12 Q. add (node, 0) 13 while True : # main loop 14 u = Q. pop () # take nearest node and remove from queue 15 if u == end or dist [u] == inf : # finished (good or bad ) 16 break 17 # all neighbors still in queue 18 for v in Q. filterget ( lambda node : node in graph. neighbors (u)): 19 tmpdist = dist [u] + graph [u][v][ weight ] 20 if tmpdist < dist [v]: #if distance shorter update values 21 dist [v] = tmpdist 22 prev [v] = u 23 Q.add (v, tmpdist ) # update distance also in queue 24 u = end 25 while u in prev : # backward recreation of path 26 u = prev [u] 27 path [:0] = [u] 28 if path : 29 path [ len ( path ):] = [ end ] 30 path [:0] = [ start ] 31 return path Martina Stefano (Uni. Firenze) Seminar 23 may 2016 6 / 21

Background Main problem Path planning from a start point to an end point in 3D space with obstacles using Voronoi diagrams. 1. Distribute points in the surfaces of obstacles and optionally in the surface of bounding box 2. Build Voronoi diagram using those points as source 3. Transform the Voronoi diagram in a graph cells vertexes as nodes cells edges as arcs (infinite edges ignored) 4. Prune the arcs that crosses an obstacle s surface 5. Attach the start and end points to the graph as nodes 6. Calculate the shortest path from start node to end node using Dijkstra s algorithm. Martina Stefano (Uni. Firenze) Seminar 23 may 2016 7 / 21

Background Main problem Path planning from a start point to an end point in 3D space with obstacles using Voronoi diagrams. 1. Distribute points in the surfaces of obstacles and optionally in the surface of bounding box 2. Build Voronoi diagram using those points as source 3. Transform the Voronoi diagram in a graph cells vertexes as nodes cells edges as arcs (infinite edges ignored) 4. Prune the arcs that crosses an obstacle s surface 5. Attach the start and end points to the graph as nodes 6. Calculate the shortest path from start node to end node using Dijkstra s algorithm. Martina Stefano (Uni. Firenze) Seminar 23 may 2016 7 / 21

Background Main problem Path planning from a start point to an end point in 3D space with obstacles using Voronoi diagrams. 1. Distribute points in the surfaces of obstacles and optionally in the surface of bounding box 2. Build Voronoi diagram using those points as source 3. Transform the Voronoi diagram in a graph cells vertexes as nodes cells edges as arcs (infinite edges ignored) 4. Prune the arcs that crosses an obstacle s surface 5. Attach the start and end points to the graph as nodes 6. Calculate the shortest path from start node to end node using Dijkstra s algorithm. Martina Stefano (Uni. Firenze) Seminar 23 may 2016 7 / 21

Background Main problem Path planning from a start point to an end point in 3D space with obstacles using Voronoi diagrams. 1. Distribute points in the surfaces of obstacles and optionally in the surface of bounding box 2. Build Voronoi diagram using those points as source 3. Transform the Voronoi diagram in a graph cells vertexes as nodes cells edges as arcs (infinite edges ignored) 4. Prune the arcs that crosses an obstacle s surface 5. Attach the start and end points to the graph as nodes 6. Calculate the shortest path from start node to end node using Dijkstra s algorithm. Martina Stefano (Uni. Firenze) Seminar 23 may 2016 7 / 21

Background Main problem Path planning from a start point to an end point in 3D space with obstacles using Voronoi diagrams. 1. Distribute points in the surfaces of obstacles and optionally in the surface of bounding box 2. Build Voronoi diagram using those points as source 3. Transform the Voronoi diagram in a graph cells vertexes as nodes cells edges as arcs (infinite edges ignored) 4. Prune the arcs that crosses an obstacle s surface 5. Attach the start and end points to the graph as nodes 6. Calculate the shortest path from start node to end node using Dijkstra s algorithm. Martina Stefano (Uni. Firenze) Seminar 23 may 2016 7 / 21

Background Main problem Path planning from a start point to an end point in 3D space with obstacles using Voronoi diagrams. 1. Distribute points in the surfaces of obstacles and optionally in the surface of bounding box 2. Build Voronoi diagram using those points as source 3. Transform the Voronoi diagram in a graph cells vertexes as nodes cells edges as arcs (infinite edges ignored) 4. Prune the arcs that crosses an obstacle s surface 5. Attach the start and end points to the graph as nodes 6. Calculate the shortest path from start node to end node using Dijkstra s algorithm. Martina Stefano (Uni. Firenze) Seminar 23 may 2016 7 / 21

Background Main problem Path planning from a start point to an end point in 3D space with obstacles using Voronoi diagrams. 1. Distribute points in the surfaces of obstacles and optionally in the surface of bounding box 2. Build Voronoi diagram using those points as source 3. Transform the Voronoi diagram in a graph cells vertexes as nodes cells edges as arcs (infinite edges ignored) 4. Prune the arcs that crosses an obstacle s surface 5. Attach the start and end points to the graph as nodes 6. Calculate the shortest path from start node to end node using Dijkstra s algorithm. Martina Stefano (Uni. Firenze) Seminar 23 may 2016 7 / 21

Example 1.4 1.2 1.0 0.5 0.0 x 0.5 1.0 0.0 0.4 0.2 0.8 0.6 y 1.0 0.8 0.6 0.4 0.2 0.0 1.0 z Martina Stefano (Uni. Firenze) Seminar 23 may 2016 8 / 21

Example 1.4 1.2 1.0 0.5 0.0 x 0.5 1.0 0.0 0.4 0.2 0.8 0.6 y 1.0 0.8 0.6 0.4 0.2 0.0 1.0 z Martina Stefano (Uni. Firenze) Seminar 23 may 2016 8 / 21

Example 1.4 1.2 1.0 0.5 0.0 x 0.5 1.0 0.0 0.4 0.2 0.8 0.6 y 1.0 0.8 0.6 0.4 0.2 0.0 1.0 z Martina Stefano (Uni. Firenze) Seminar 23 may 2016 8 / 21

Example 1.4 1.2 1.0 0.5 0.0 x 0.5 1.0 0.0 0.4 0.2 0.8 0.6 y 1.0 0.8 0.6 0.4 0.2 0.0 1.0 z Martina Stefano (Uni. Firenze) Seminar 23 may 2016 8 / 21

Example 1.4 1.2 1.0 0.5 0.0 x 0.5 1.0 0.0 0.4 0.2 0.8 0.6 y 1.0 0.8 0.6 0.4 0.2 0.0 1.0 z Martina Stefano (Uni. Firenze) Seminar 23 may 2016 8 / 21

Improvement Idea Make a smoother curve instead of finding the polygonal chain of the shortest path in the structure we can use a B-Spline that interpolate the start and end vertexes use the shortest path found with Dijkstra as control polygon Martina Stefano (Uni. Firenze) Seminar 23 may 2016 9 / 21

Improvement Idea Make a smoother curve instead of finding the polygonal chain of the shortest path in the structure we can use a B-Spline that interpolate the start and end vertexes use the shortest path found with Dijkstra as control polygon Martina Stefano (Uni. Firenze) Seminar 23 may 2016 9 / 21

Improvement Idea Make a smoother curve instead of finding the polygonal chain of the shortest path in the structure we can use a B-Spline that interpolate the start and end vertexes use the shortest path found with Dijkstra as control polygon Martina Stefano (Uni. Firenze) Seminar 23 may 2016 9 / 21

Improvement Idea Make a smoother curve instead of finding the polygonal chain of the shortest path in the structure we can use a B-Spline that interpolate the start and end vertexes use the shortest path found with Dijkstra as control polygon Martina Stefano (Uni. Firenze) Seminar 23 may 2016 9 / 21

Problem The control polygon is free from obstacles by construction (the graph is pruned of the arcs that cross an obstacle s surface) But the curve is not guaranteed to be free from obstacles Martina Stefano (Uni. Firenze) Seminar 23 may 2016 10 / 21

Problem The control polygon is free from obstacles by construction (the graph is pruned of the arcs that cross an obstacle s surface) But the curve is not guaranteed to be free from obstacles Martina Stefano (Uni. Firenze) Seminar 23 may 2016 10 / 21

Problem The control polygon is free from obstacles by construction (the graph is pruned of the arcs that cross an obstacle s surface) But the curve is not guaranteed to be free from obstacles Martina Stefano (Uni. Firenze) Seminar 23 may 2016 10 / 21

Problem The control polygon is free from obstacles by construction (the graph is pruned of the arcs that cross an obstacle s surface) But the curve is not guaranteed to be free from obstacles Martina Stefano (Uni. Firenze) Seminar 23 may 2016 10 / 21

Solution A B-Spline of order k is contained inside the union of convex hulls composed of consecutive k vertexes of control polygon Idea we can use a quadratic B-Spline (grade 2, order 3) to smooth the path and keep triangles formed by three consecutive points free from obstacles Martina Stefano (Uni. Firenze) Seminar 23 may 2016 11 / 21

Solution A B-Spline of order k is contained inside the union of convex hulls composed of consecutive k vertexes of control polygon Idea we can use a quadratic B-Spline (grade 2, order 3) to smooth the path and keep triangles formed by three consecutive points free from obstacles Martina Stefano (Uni. Firenze) Seminar 23 may 2016 11 / 21

Solution A B-Spline of order k is contained inside the union of convex hulls composed of consecutive k vertexes of control polygon Idea we can use a quadratic B-Spline (grade 2, order 3) to smooth the path and keep triangles formed by three consecutive points free from obstacles Martina Stefano (Uni. Firenze) Seminar 23 may 2016 11 / 21

Solution A B-Spline of order k is contained inside the union of convex hulls composed of consecutive k vertexes of control polygon Idea we can use a quadratic B-Spline (grade 2, order 3) to smooth the path and keep triangles formed by three consecutive points free from obstacles Martina Stefano (Uni. Firenze) Seminar 23 may 2016 11 / 21

First implementation A variation of Dijkstra algorithm is developed where: 1. create an ordered triple for each three consecutive nodes in the graph 2. check if the triangle corresponding to each triple intersect an obstacle 3. populate the priority queue with obstacle free triples the initial weight is 0 for triples where the first node is the start node is otherwise 4. pop the triple with lowest weight from the priority queue 5. update the weight and pointer to previous of all neighbouring triples a triple B is subsequent to a triple A if (A[2] = B[1]) (A[3] = B[2]) the weight of a neighbour is W (B) = W (A) + dist(a[1], A[2]) 6. repeat from point 4 until popped a special ending triple or a triple with weight 7. the shortest path (with free triangular convex hull) can be obtained following the previous pointer from the ending triple, and deconstructing the triples Martina Stefano (Uni. Firenze) Seminar 23 may 2016 12 / 21

First implementation A variation of Dijkstra algorithm is developed where: 1. create an ordered triple for each three consecutive nodes in the graph 2. check if the triangle corresponding to each triple intersect an obstacle 3. populate the priority queue with obstacle free triples the initial weight is 0 for triples where the first node is the start node is otherwise 4. pop the triple with lowest weight from the priority queue 5. update the weight and pointer to previous of all neighbouring triples a triple B is subsequent to a triple A if (A[2] = B[1]) (A[3] = B[2]) the weight of a neighbour is W (B) = W (A) + dist(a[1], A[2]) 6. repeat from point 4 until popped a special ending triple or a triple with weight 7. the shortest path (with free triangular convex hull) can be obtained following the previous pointer from the ending triple, and deconstructing the triples Martina Stefano (Uni. Firenze) Seminar 23 may 2016 12 / 21

First implementation A variation of Dijkstra algorithm is developed where: 1. create an ordered triple for each three consecutive nodes in the graph 2. check if the triangle corresponding to each triple intersect an obstacle 3. populate the priority queue with obstacle free triples the initial weight is 0 for triples where the first node is the start node is otherwise 4. pop the triple with lowest weight from the priority queue 5. update the weight and pointer to previous of all neighbouring triples a triple B is subsequent to a triple A if (A[2] = B[1]) (A[3] = B[2]) the weight of a neighbour is W (B) = W (A) + dist(a[1], A[2]) 6. repeat from point 4 until popped a special ending triple or a triple with weight 7. the shortest path (with free triangular convex hull) can be obtained following the previous pointer from the ending triple, and deconstructing the triples Martina Stefano (Uni. Firenze) Seminar 23 may 2016 12 / 21

First implementation A variation of Dijkstra algorithm is developed where: 1. create an ordered triple for each three consecutive nodes in the graph 2. check if the triangle corresponding to each triple intersect an obstacle 3. populate the priority queue with obstacle free triples the initial weight is 0 for triples where the first node is the start node is otherwise 4. pop the triple with lowest weight from the priority queue 5. update the weight and pointer to previous of all neighbouring triples a triple B is subsequent to a triple A if (A[2] = B[1]) (A[3] = B[2]) the weight of a neighbour is W (B) = W (A) + dist(a[1], A[2]) 6. repeat from point 4 until popped a special ending triple or a triple with weight 7. the shortest path (with free triangular convex hull) can be obtained following the previous pointer from the ending triple, and deconstructing the triples Martina Stefano (Uni. Firenze) Seminar 23 may 2016 12 / 21

First implementation A variation of Dijkstra algorithm is developed where: 1. create an ordered triple for each three consecutive nodes in the graph 2. check if the triangle corresponding to each triple intersect an obstacle 3. populate the priority queue with obstacle free triples the initial weight is 0 for triples where the first node is the start node is otherwise 4. pop the triple with lowest weight from the priority queue 5. update the weight and pointer to previous of all neighbouring triples a triple B is subsequent to a triple A if (A[2] = B[1]) (A[3] = B[2]) the weight of a neighbour is W (B) = W (A) + dist(a[1], A[2]) 6. repeat from point 4 until popped a special ending triple or a triple with weight 7. the shortest path (with free triangular convex hull) can be obtained following the previous pointer from the ending triple, and deconstructing the triples Martina Stefano (Uni. Firenze) Seminar 23 may 2016 12 / 21

First implementation A variation of Dijkstra algorithm is developed where: 1. create an ordered triple for each three consecutive nodes in the graph 2. check if the triangle corresponding to each triple intersect an obstacle 3. populate the priority queue with obstacle free triples the initial weight is 0 for triples where the first node is the start node is otherwise 4. pop the triple with lowest weight from the priority queue 5. update the weight and pointer to previous of all neighbouring triples a triple B is subsequent to a triple A if (A[2] = B[1]) (A[3] = B[2]) the weight of a neighbour is W (B) = W (A) + dist(a[1], A[2]) 6. repeat from point 4 until popped a special ending triple or a triple with weight 7. the shortest path (with free triangular convex hull) can be obtained following the previous pointer from the ending triple, and deconstructing the triples Martina Stefano (Uni. Firenze) Seminar 23 may 2016 12 / 21

First implementation A variation of Dijkstra algorithm is developed where: 1. create an ordered triple for each three consecutive nodes in the graph 2. check if the triangle corresponding to each triple intersect an obstacle 3. populate the priority queue with obstacle free triples the initial weight is 0 for triples where the first node is the start node is otherwise 4. pop the triple with lowest weight from the priority queue 5. update the weight and pointer to previous of all neighbouring triples a triple B is subsequent to a triple A if (A[2] = B[1]) (A[3] = B[2]) the weight of a neighbour is W (B) = W (A) + dist(a[1], A[2]) 6. repeat from point 4 until popped a special ending triple or a triple with weight 7. the shortest path (with free triangular convex hull) can be obtained following the previous pointer from the ending triple, and deconstructing the triples Martina Stefano (Uni. Firenze) Seminar 23 may 2016 12 / 21

First implementation A variation of Dijkstra algorithm is developed where: 1. create an ordered triple for each three consecutive nodes in the graph 2. check if the triangle corresponding to each triple intersect an obstacle 3. populate the priority queue with obstacle free triples the initial weight is 0 for triples where the first node is the start node is otherwise 4. pop the triple with lowest weight from the priority queue 5. update the weight and pointer to previous of all neighbouring triples a triple B is subsequent to a triple A if (A[2] = B[1]) (A[3] = B[2]) the weight of a neighbour is W (B) = W (A) + dist(a[1], A[2]) 6. repeat from point 4 until popped a special ending triple or a triple with weight 7. the shortest path (with free triangular convex hull) can be obtained following the previous pointer from the ending triple, and deconstructing the triples Martina Stefano (Uni. Firenze) Seminar 23 may 2016 12 / 21

First implementation A variation of Dijkstra algorithm is developed where: 1. create an ordered triple for each three consecutive nodes in the graph 2. check if the triangle corresponding to each triple intersect an obstacle 3. populate the priority queue with obstacle free triples the initial weight is 0 for triples where the first node is the start node is otherwise 4. pop the triple with lowest weight from the priority queue 5. update the weight and pointer to previous of all neighbouring triples a triple B is subsequent to a triple A if (A[2] = B[1]) (A[3] = B[2]) the weight of a neighbour is W (B) = W (A) + dist(a[1], A[2]) 6. repeat from point 4 until popped a special ending triple or a triple with weight 7. the shortest path (with free triangular convex hull) can be obtained following the previous pointer from the ending triple, and deconstructing the triples Martina Stefano (Uni. Firenze) Seminar 23 may 2016 12 / 21

First implementation A variation of Dijkstra algorithm is developed where: 1. create an ordered triple for each three consecutive nodes in the graph 2. check if the triangle corresponding to each triple intersect an obstacle 3. populate the priority queue with obstacle free triples the initial weight is 0 for triples where the first node is the start node is otherwise 4. pop the triple with lowest weight from the priority queue 5. update the weight and pointer to previous of all neighbouring triples a triple B is subsequent to a triple A if (A[2] = B[1]) (A[3] = B[2]) the weight of a neighbour is W (B) = W (A) + dist(a[1], A[2]) 6. repeat from point 4 until popped a special ending triple or a triple with weight 7. the shortest path (with free triangular convex hull) can be obtained following the previous pointer from the ending triple, and deconstructing the triples Martina Stefano (Uni. Firenze) Seminar 23 may 2016 12 / 21

First implementation A variation of Dijkstra algorithm is developed where: 1. create an ordered triple for each three consecutive nodes in the graph 2. check if the triangle corresponding to each triple intersect an obstacle 3. populate the priority queue with obstacle free triples the initial weight is 0 for triples where the first node is the start node is otherwise 4. pop the triple with lowest weight from the priority queue 5. update the weight and pointer to previous of all neighbouring triples a triple B is subsequent to a triple A if (A[2] = B[1]) (A[3] = B[2]) the weight of a neighbour is W (B) = W (A) + dist(a[1], A[2]) 6. repeat from point 4 until popped a special ending triple or a triple with weight 7. the shortest path (with free triangular convex hull) can be obtained following the previous pointer from the ending triple, and deconstructing the triples Martina Stefano (Uni. Firenze) Seminar 23 may 2016 12 / 21

First implementation A variation of Dijkstra algorithm is developed where: 1. create an ordered triple for each three consecutive nodes in the graph 2. check if the triangle corresponding to each triple intersect an obstacle 3. populate the priority queue with obstacle free triples the initial weight is 0 for triples where the first node is the start node is otherwise 4. pop the triple with lowest weight from the priority queue 5. update the weight and pointer to previous of all neighbouring triples a triple B is subsequent to a triple A if (A[2] = B[1]) (A[3] = B[2]) the weight of a neighbour is W (B) = W (A) + dist(a[1], A[2]) 6. repeat from point 4 until popped a special ending triple or a triple with weight 7. the shortest path (with free triangular convex hull) can be obtained following the previous pointer from the ending triple, and deconstructing the triples Martina Stefano (Uni. Firenze) Seminar 23 may 2016 12 / 21

Example 4 e 0.40 2 0.35 0.30 0.25 1 3 0.20 z 0.15 s 0.10 0.00 0.05 0.05 0.10 0.15 0.20 0.00 x 0.25 0.30 0.35 0.400.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 y Martina Stefano (Uni. Firenze) Seminar 23 may 2016 13 / 21

Complexity Total (if obstacle area is not a function of the number of obstacles) O(d 2 Ob 2 + d 3 Ob ) The predominant factor is for checking the triples collisions with obstacles if d is constant O( Ob 2 ) But if we focus only on routing (i.e. we construct the graph only once) if d is constant O( Ob log Ob ) (same of Dijkstra with fixed degree) Martina Stefano (Uni. Firenze) Seminar 23 may 2016 14 / 21

Complexity Total (if obstacle area is not a function of the number of obstacles) O(d 2 Ob 2 + d 3 Ob ) The predominant factor is for checking the triples collisions with obstacles if d is constant O( Ob 2 ) But if we focus only on routing (i.e. we construct the graph only once) if d is constant O( Ob log Ob ) (same of Dijkstra with fixed degree) Martina Stefano (Uni. Firenze) Seminar 23 may 2016 14 / 21

Complexity Total (if obstacle area is not a function of the number of obstacles) O(d 2 Ob 2 + d 3 Ob ) The predominant factor is for checking the triples collisions with obstacles if d is constant O( Ob 2 ) But if we focus only on routing (i.e. we construct the graph only once) if d is constant O( Ob log Ob ) (same of Dijkstra with fixed degree) Martina Stefano (Uni. Firenze) Seminar 23 may 2016 14 / 21

Complexity Total (if obstacle area is not a function of the number of obstacles) O(d 2 Ob 2 + d 3 Ob ) The predominant factor is for checking the triples collisions with obstacles if d is constant O( Ob 2 ) But if we focus only on routing (i.e. we construct the graph only once) if d is constant O( Ob log Ob ) (same of Dijkstra with fixed degree) Martina Stefano (Uni. Firenze) Seminar 23 may 2016 14 / 21

Complexity Total (if obstacle area is not a function of the number of obstacles) O(d 2 Ob 2 + d 3 Ob ) The predominant factor is for checking the triples collisions with obstacles if d is constant O( Ob 2 ) But if we focus only on routing (i.e. we construct the graph only once) if d is constant O( Ob log Ob ) (same of Dijkstra with fixed degree) Martina Stefano (Uni. Firenze) Seminar 23 may 2016 14 / 21

Complexity Total (if obstacle area is not a function of the number of obstacles) O(d 2 Ob 2 + d 3 Ob ) The predominant factor is for checking the triples collisions with obstacles if d is constant O( Ob 2 ) But if we focus only on routing (i.e. we construct the graph only once) if d is constant O( Ob log Ob ) (same of Dijkstra with fixed degree) Martina Stefano (Uni. Firenze) Seminar 23 may 2016 14 / 21

Second implementation Reason First implementation interesting for complexity analysis but rejects many paths Add aligned control vertexes when an obstacle intersect a triple new vertexes calculated as linear combination of other vertexes using coefficients from obstacle detection Martina Stefano (Uni. Firenze) Seminar 23 may 2016 15 / 21

Second implementation Reason First implementation interesting for complexity analysis but rejects many paths Add aligned control vertexes when an obstacle intersect a triple new vertexes calculated as linear combination of other vertexes using coefficients from obstacle detection Martina Stefano (Uni. Firenze) Seminar 23 may 2016 15 / 21

Second implementation Reason First implementation interesting for complexity analysis but rejects many paths Add aligned control vertexes when an obstacle intersect a triple new vertexes calculated as linear combination of other vertexes using coefficients from obstacle detection Martina Stefano (Uni. Firenze) Seminar 23 may 2016 15 / 21

Second implementation Reason First implementation interesting for complexity analysis but rejects many paths Add aligned control vertexes when an obstacle intersect a triple new vertexes calculated as linear combination of other vertexes using coefficients from obstacle detection Martina Stefano (Uni. Firenze) Seminar 23 may 2016 15 / 21

Second implementation Reason First implementation interesting for complexity analysis but rejects many paths Add aligned control vertexes when an obstacle intersect a triple new vertexes calculated as linear combination of other vertexes using coefficients from obstacle detection Martina Stefano (Uni. Firenze) Seminar 23 may 2016 15 / 21

Increase degree Continuity Using quadratic B-Splines means C 1 continuity Not nice If we simply increase the B-Spline degree convex hull is not planar anymore convex hull is formed of union of tetrahedra Solution Add aligned vertexes in control polygon and then increase the degree Martina Stefano (Uni. Firenze) Seminar 23 may 2016 16 / 21

Increase degree Continuity Using quadratic B-Splines means C 1 continuity Not nice If we simply increase the B-Spline degree convex hull is not planar anymore convex hull is formed of union of tetrahedra Solution Add aligned vertexes in control polygon and then increase the degree Martina Stefano (Uni. Firenze) Seminar 23 may 2016 16 / 21

Increase degree Continuity Using quadratic B-Splines means C 1 continuity Not nice If we simply increase the B-Spline degree convex hull is not planar anymore convex hull is formed of union of tetrahedra Solution Add aligned vertexes in control polygon and then increase the degree Martina Stefano (Uni. Firenze) Seminar 23 may 2016 16 / 21

Increase degree Continuity Using quadratic B-Splines means C 1 continuity Not nice If we simply increase the B-Spline degree convex hull is not planar anymore convex hull is formed of union of tetrahedra Solution Add aligned vertexes in control polygon and then increase the degree Martina Stefano (Uni. Firenze) Seminar 23 may 2016 16 / 21

Increase degree Continuity Using quadratic B-Splines means C 1 continuity Not nice If we simply increase the B-Spline degree convex hull is not planar anymore convex hull is formed of union of tetrahedra Solution Add aligned vertexes in control polygon and then increase the degree Martina Stefano (Uni. Firenze) Seminar 23 may 2016 16 / 21

Increase degree Continuity Using quadratic B-Splines means C 1 continuity Not nice If we simply increase the B-Spline degree convex hull is not planar anymore convex hull is formed of union of tetrahedra Solution Add aligned vertexes in control polygon and then increase the degree Martina Stefano (Uni. Firenze) Seminar 23 may 2016 16 / 21

Example: quadratic to quartic (k=3 k=5) Add 2 vertexes per edge Martina Stefano (Uni. Firenze) Seminar 23 may 2016 17 / 21

Example: quadratic to quartic (k=3 k=5) Add 2 vertexes per edge Martina Stefano (Uni. Firenze) Seminar 23 may 2016 17 / 21

Example: quadratic to quartic (k=3 k=5) Add 2 vertexes per edge Martina Stefano (Uni. Firenze) Seminar 23 may 2016 17 / 21

Example: quadratic to quartic (k=3 k=5) Add 2 vertexes per edge Martina Stefano (Uni. Firenze) Seminar 23 may 2016 17 / 21

Postprocessing Purpose Simplify the control polygon remove useless turns After Dijkstra For each triple (a, b, c) of consecutive points in path If no obstacles intersect the triangle the triple is simplified to a single edge (a, c) Martina Stefano (Uni. Firenze) Seminar 23 may 2016 18 / 21

Postprocessing Purpose Simplify the control polygon remove useless turns After Dijkstra For each triple (a, b, c) of consecutive points in path If no obstacles intersect the triangle the triple is simplified to a single edge (a, c) Martina Stefano (Uni. Firenze) Seminar 23 may 2016 18 / 21

Postprocessing Purpose Simplify the control polygon remove useless turns After Dijkstra For each triple (a, b, c) of consecutive points in path If no obstacles intersect the triangle the triple is simplified to a single edge (a, c) Martina Stefano (Uni. Firenze) Seminar 23 may 2016 18 / 21

Postprocessing Purpose Simplify the control polygon remove useless turns After Dijkstra For each triple (a, b, c) of consecutive points in path If no obstacles intersect the triangle the triple is simplified to a single edge (a, c) Martina Stefano (Uni. Firenze) Seminar 23 may 2016 18 / 21

Postprocessing Purpose Simplify the control polygon remove useless turns After Dijkstra For each triple (a, b, c) of consecutive points in path If no obstacles intersect the triangle the triple is simplified to a single edge (a, c) Martina Stefano (Uni. Firenze) Seminar 23 may 2016 18 / 21

Postprocessing Purpose Simplify the control polygon remove useless turns After Dijkstra For each triple (a, b, c) of consecutive points in path If no obstacles intersect the triangle the triple is simplified to a single edge (a, c) Martina Stefano (Uni. Firenze) Seminar 23 may 2016 18 / 21

Used technologies Martina Stefano (Uni. Firenze) Seminar 23 may 2016 19 / 21

Used technologies Martina Stefano (Uni. Firenze) Seminar 23 may 2016 19 / 21

Used technologies Martina Stefano (Uni. Firenze) Seminar 23 may 2016 19 / 21

Future improvements Change underlying structure visibility graph rapidly exploring random tree (RRT) other... Improve postprocessing make a symmetric algorithm (path from a to b = path from b to a) Make optimization process try to find the best path that satisfy some constraints max curvature max torsion others... Martina Stefano (Uni. Firenze) Seminar 23 may 2016 20 / 21

Future improvements Change underlying structure visibility graph rapidly exploring random tree (RRT) other... Improve postprocessing make a symmetric algorithm (path from a to b = path from b to a) Make optimization process try to find the best path that satisfy some constraints max curvature max torsion others... Martina Stefano (Uni. Firenze) Seminar 23 may 2016 20 / 21

Future improvements Change underlying structure visibility graph rapidly exploring random tree (RRT) other... Improve postprocessing make a symmetric algorithm (path from a to b = path from b to a) Make optimization process try to find the best path that satisfy some constraints max curvature max torsion others... Martina Stefano (Uni. Firenze) Seminar 23 may 2016 20 / 21

Future improvements Change underlying structure visibility graph rapidly exploring random tree (RRT) other... Improve postprocessing make a symmetric algorithm (path from a to b = path from b to a) Make optimization process try to find the best path that satisfy some constraints max curvature max torsion others... Martina Stefano (Uni. Firenze) Seminar 23 may 2016 20 / 21

Future improvements Change underlying structure visibility graph rapidly exploring random tree (RRT) other... Improve postprocessing make a symmetric algorithm (path from a to b = path from b to a) Make optimization process try to find the best path that satisfy some constraints max curvature max torsion others... Martina Stefano (Uni. Firenze) Seminar 23 may 2016 20 / 21

Future improvements Change underlying structure visibility graph rapidly exploring random tree (RRT) other... Improve postprocessing make a symmetric algorithm (path from a to b = path from b to a) Make optimization process try to find the best path that satisfy some constraints max curvature max torsion others... Martina Stefano (Uni. Firenze) Seminar 23 may 2016 20 / 21

Future improvements Change underlying structure visibility graph rapidly exploring random tree (RRT) other... Improve postprocessing make a symmetric algorithm (path from a to b = path from b to a) Make optimization process try to find the best path that satisfy some constraints max curvature max torsion others... Martina Stefano (Uni. Firenze) Seminar 23 may 2016 20 / 21

Future improvements Change underlying structure visibility graph rapidly exploring random tree (RRT) other... Improve postprocessing make a symmetric algorithm (path from a to b = path from b to a) Make optimization process try to find the best path that satisfy some constraints max curvature max torsion others... Martina Stefano (Uni. Firenze) Seminar 23 may 2016 20 / 21

Future improvements Change underlying structure visibility graph rapidly exploring random tree (RRT) other... Improve postprocessing make a symmetric algorithm (path from a to b = path from b to a) Make optimization process try to find the best path that satisfy some constraints max curvature max torsion others... Martina Stefano (Uni. Firenze) Seminar 23 may 2016 20 / 21

Future improvements Change underlying structure visibility graph rapidly exploring random tree (RRT) other... Improve postprocessing make a symmetric algorithm (path from a to b = path from b to a) Make optimization process try to find the best path that satisfy some constraints max curvature max torsion others... Martina Stefano (Uni. Firenze) Seminar 23 may 2016 20 / 21

Future improvements Change underlying structure visibility graph rapidly exploring random tree (RRT) other... Improve postprocessing make a symmetric algorithm (path from a to b = path from b to a) Make optimization process try to find the best path that satisfy some constraints max curvature max torsion others... Martina Stefano (Uni. Firenze) Seminar 23 may 2016 20 / 21

The End. Questions? Thank you! Martina Stefano (Uni. Firenze) Seminar 23 may 2016 21 / 21

The End. Questions? Thank you! Martina Stefano (Uni. Firenze) Seminar 23 may 2016 21 / 21

The End. Questions? Thank you! Martina Stefano (Uni. Firenze) Seminar 23 may 2016 21 / 21