the visibility-voronoi complex and its applicationscs763/projects/darren.pdf ·...
TRANSCRIPT
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?