The Visibility-Voronoi Complex and Its Applicationscs763/Projects/darren.pdf ·...

Preview:

Citation preview

The Visibility-Voronoi Complex and Its Applications

Ron Wein, Jur P. van den Berg and Dan Halperin

presented by Yong Soo Darren Jung

Overview

• Our goal / Motivation

• What’s VV(c)-diagram?

• Significance of VV(c)-diagram

• VV-Complex

• Preprocess stage

• Query stage

Goal

• This is a motion planning problem

• Our goal is to plan a short and smooth path with some amount of clearance

Motivation

• Visibility graphs

• Shortest path, but no clearance

• Sharp turns (which is not desirable)

Motivation

• Voronoi diagram (on polygons)

• Giving a maximum possible clearance

• Path is sometimes much longer than shortest

VV(c)-diagram

• hybrid of two

• Minkowski sum is used to get clearance

VV(c)-diagram

• How to build it?

• Compute Minkowski sums for every obstable with a circle with radius c

• Compute union of results

• Compute visibility graph of dilated obstacles

• Add Voronoi edges (or its subset) if it is inside of dilated obstacle

Why do we care?

• Path is short

• Not “shortest possible”, but shortest with given clearance value

• Sharp vertices are replaced with curves and thus smooth

• Clearance value c is guaranteed

• Circular representation is good because polygonal robot can freely rotate

Why do we care?

• Still, it’s flexible (various tatics can be used)

• Clearance less than c is also considered

• Applications

• Motion planning with polygonal robots

• Motion planning for a group of entities

• etc.

VV(c)-diagram

• Construction takes O(n2logn) time

• Query time: O(nlogn + p)

• O(nlogn) time to add s and g into the graph (using radial sweep lines)

• Then we use Dijkstra’s shortest path algorithm

• p is # of edges we encounter during search

VV-complex

• Assume that we wish to plan motion paths for different c-values

• Should we construct the new VV(c)-diagram from scratch for each case?

• VV-complex is a data structure to efficiently construct VV(c)-diagram

VV-complex

• VV-complex can be built in O(n2logn) time

• Query time is same! O(nlogn + p)

• For each visibility edge e, compute validity range R(e) = [cmin(e), cmax(e)]

• It indicates that edge e is a valid visibility edge if c ∈ R(e)

Building VV-complex

• Use event queue Q, each event sorted by c value

• Event types

• Visibility event

• Chain event

• Tangency event

• Endpoint event

Building VV-complex

• Visibility event

• happens when a pair of edges become equally sloped

Building VV-complex

• Chain event

• happens for each Voronoi chain, with its minimal clearance value

Building VV-complex• Tangency event

• happens when a vertex’s tangent edge meets a chain point

• Endpoint event

• happens when a chain point reaches the endpoint

Querying VV-complex

• The result of preprocessing is <V, T>

• V : Voronoi diagram. For each Voronoi vertex we store the clearance value, and for each non-monotone chain we store its minimal clearance value

• T : Set of interval trees, for each obstacle vertex (incident edges and their validity ranges), and for each Voronoi chain

Querying VV-complex

1. For each chain point X from Voronoi diagram, compute whether (O(n) time)

• It should be in graph completely

• It appears partly in graph

• It does not appear

2. Compute visibility edges for s(start) and g(goal). Use radial sweep-lines (O(nlogn) time)

3. Then we can search the graph using Dijkstra-like algorithm (takes O(nlogn + k) time)

Final Remarks

• We can assign weights depending on our context of the problem

• add infinity to Voronoi edges if we must have clearance amount of c

• add some penalty to Voronoi edges might be reasonable for other cases

Final Remarks

• Flexible

• Can choose any start/end points and clearance value, with relatively reasonable query time

• Practical

• Assumptions are quite reasonable enough to be used in reality

Thanks!

• Questions?

Recommended