Visibility Graph - Geometric Computing Lab
Download
Report
Transcript Visibility Graph - Geometric Computing Lab
Visibility Graph
Team 10
NakWon Lee, Dongwoo Kim
Robot Motion Planning
β’ Consider the case of point robot
β’ The polygons in S are obstacles, and their total
number of edges is denoted by n
β’ The point robot can touch obstacles, because
obstacles are open set.
β’ Start position ππ π‘πππ‘ . Goal position πππππ .
β’ Paths do not intersect the interior of any of the
obstacles.
Robot Motion Planning
β’ Use trapezoidal map π(πΆππππ )of the free
configuration space πΆππππ .
β’ Configuration space is the parameter space of a
robot π
. Denoted by πΆ(π
).
β’ For a point robot, πΆππππ π
was simply the empty
space between obstacles.
Configuration Space
Shortest Paths
β’ Construct the trapezoidal map π(πΆππππ ) for
configuration space πΆππππ .
β’ Construct the load map πΊππππ .
β’ Find the trapezoids which have the start point or
end point.
β’ Find the shortest route in the load map πΊππππ using
breadth first search algorithm.
Shortest Paths
Shortest Paths
β’ Shortest path in road map is not a real shortest path
β’ because some arcs are btw nodes that are far apart, whereas
others are btw nodes that are close to each other.
β’ It is just minimum number of hop.
β’ To improve this problem, give each arc a weight
corresponding to the Euclidean length, and use graph
search algorithm that find the shortest path in a
weighted graph.
β’ Dijkstra's algorithm
β’ But, it is still not a shortest path.
Shortest Paths
β’ Think of this path as an elastic
rubber band.
β’ Fix the endpoints at the start and
goal position.
β’ Try to tighten the rubber band.
β’ It will be stopped by the obstacles.
β’ The new path will follow parts of
the obstacle boundaries and
straight line segments through
open space.
Shortest Paths
β’ Lemma 15.1 Any shortest path between ππ π‘πππ‘ and
πππππ among a set π of disjoint polygonal obstacles
is a polygonal path whose inner vertices are
vertices of π
β’ Inner vertex β A vertex that is not the begin or endpoint
of the path.
Shortest Paths
β’ Proof.
β’ Suppose for a contradiction that a shortest path π is not
polygonal.
β’ Point π on π that lies in the interior of the free space
with the property that no line segment containing π is
contained in π.
π
π
π£1
πππ‘ π
π£2
Shortest Paths
β’ There is a disc of positive radius centered
at π that is completely contained in the
free space.
β’ Part of π inside the disk, which is not a
straight line segment, can be shortened
by replacing it with the segment
connecting the points which lie on circle.
β’ Contradict the theorem βany shortest
path must be locally shortestβ.
Shortest Paths
β’ Now consider a vertex π£ on π. It cannot lies in the interior of the free
space.
β’ Consider the disc centered at π£ such that half of the disc is contained in
the free space.
β’ Can replace the sub path inside the disc with a straight line segment.
β’ The only possibility left is that π£ is an obstacle vertex.
π£
π£
short cut
π
π£1
π
π£2
π£1
π£2
Shortest Paths
β’ Construct a road map with this characterization.
β’ This road map is visibility graph of π, denoted by
πΊπ£ππ (π).
β’ Its nodes are the vertices of π.
β’ There is an edge between vertices π£ and π€ if they
can see each other.
β’ The segment π£π€ dose not intersect the interior of
any obstacle in π.
Shortest Paths
β’ Two vertices that can see each other are called
visible.
β’ The segment connecting visible two vertices is
called a visibility edge.
β’ Endpoint of the same obstacle edge always see
each other.
β’ Hence, the obstacle edges form a subset of the
edges of πΊπ£ππ (π).
Shortest Paths
β’ To make a complete road map to find shortest path,
add start and goal point as vertices to π.
β’ So we consider the visibility graph of the set
π β β π βͺ {ππ π‘πππ‘ , πππππ }.
β’ Corollary 15.2 The shortest path between ππ π‘πππ‘
and πππππ among a set π of disjoint polygonal
obstacles consists of arcs of the visibility graph
πΊπ£ππ (π β ), where π β β π βͺ {ππ π‘πππ‘ , πππππ }.
Shortest Paths
Visibility Graph
Definition:
β’ The visibility graph of s and t and the obstacle set
is a graph whose vertices are s and t the obstacle
vertices, and vertices v and w are joined by an edge
if v and w are either mutually visible or if (v, w) is
an edge of some obstacle.
Visibility Graph
Visible Vertices
Visible Vertices
Visible
Definition
Two points p and q are mutually visible if the open
line segment joining them doesn't intersect the
interior of any obstacle.
Search Tree
Computing the Visibility Graph
β’ VisibleVertices: π(πππππ) β (sorting)
β’ Operation on blanced search tree : π(ππππ)
β’ For every vertices with Visible Vertices.
β’ VisibilityGraph β π(π2 ππππ)
Computing the Visibility Graph
β’ Give an π(π2 ) procedure for constructing.
β’ π is the number of line segments in the plane.
β’ No three vertices are collinear??
β’ The algorithm is not output sensitive.
β’ An π(π log π + π) algorithm (π is the number of
edges in visibility graph) is existent but quite
complicated.
Computing the Visibility Graph
β’ The textβs algorithm operates by doing sweep one
vertex at a time.
β’ New algorithm does the sweep for all vertices
simultaneously.
β’ When we use the arrangement, angular sort can be
performed for all vertices in π(π2 ) time.
β’ If we build the entire arrangement, this sorting
algorithm will involve π(π2 ) space.
β’ However it can be implemented in π(π) space
using an algorithm called topological plane sweep.
Computing the Visibility Graph
β’ First, recall the algorithm for computing trapezoidal
maps.
β’ Shoot a bullet up and down from every vertex until
it hits its first line segment.
β’ Angle π continuously sweeps out all slopes from
β β to +β.
β’ All bullet lines attached to all the vertices begin to
turn slowly counterclockwise.
Computing the Visibility Graph
β’ The question is what are the significant event
points, and what happens with each event?
Computing the Visibility Graph
β’ It is useful to view the problem both in its primal
and dual form.
β’ 2π (π is the number of segments) segment end
points π£ = (π£π , π£π ), its dual line π£ β : π¦ = π£π π₯ β π£π .
β’ Significant event occurs whenever a bullet path in
the primal plane jumps from one line segment to
another.
β’ This occurs when π reaches the slope of the line
joining two visible endpoints π£ and π€.
Computing the Visibility Graph
event
event
event
Computing the Visibility Graph
β’ To keep track of which endpoints are visible and
which are not is complicated.
β’ Instead we will take events to be all angles π
between two endpoints, whether they are visible
or not.
β’ By duality, the slope of such an event will
correspond to the π-coordinate of the intersection
of dual lines π£ β and π€ β in the dual arrangement.
Dual Arrangement
x-coordinate is the slope of dual segment
Dual of point D
Dual of point C
Find Events
β’ By sweeping the arrangement of the 2π dual lines
from left-to-right, we will enumerate all the slope
events in angular order.
Find Events
Angular order
β’ By using topological plane sweep,
event do not need to be sorted.
Topological Plane Sweep
β’ Provides a way to sweep an
arrangement of lines using
a βflexibleβ sweeping line.
β’ Because events do not
need to be sorted, we can
avoid π(log π) factor.
Topological Plane Sweep
β’ Upper horizon tree
β’ Lower horizon tree
Topological Plane Sweep
β’ Data structure
β’ πΈ[1: π] β array of line equation. πΈ π = (ππ , ππ ), if the πth line
of π», ππ , is π¦ = ππ π₯ + ππ .
β’ π»ππ[1: π] β an array representing the upper horizon tree.
π»ππ[π] is a pair (ππ , ππ ) of indices indicating the lines that
delimit the segment of ππ in the upper horizon tree to the left
and to the right.
β’ π»ππΏ 1: π β represents the lower horizon tree.
β’ πΌ β a set of integers, represented as a stack. If π is in πΌ, then ππ
and ππ+1 share a common right endpoint.
β’ π[1: π] β an array holding the current sequence of indices
that form the lines π1 , π2 , β― , ππ of the cut.
β’ π 1: π β a list of pairs of indices indicating the lines
delimiting each edge of the cut. π[π] thus encodes the
endpoints of the edge on π[π]. The same convention as that
above is used for missing endpoints.
Topological Plane Sweep
If segment is the rightmost on ππ ,
set ππ = 0
If segment is the leftmost on ππ ,
set ππ = β1
Topological Plane Sweep
β’ Algorithm
Initialization:
β’ 1. Sort the lines of the arrangement by slope.
β’ 2. Find the leftmost and the rightmost intersection point of the lines. Let the
two points be (π₯π , π¦π ) and (π₯π , π¦π ).
β’ 3. Create vertical lines π₯ = π₯π β 1, π₯ = π₯π + 1 as left boundary and right
boundary. Determine the intersection points of lines π1 , β― , ππ with the
boundaries.
β’ 4. Create upper horizon tree: Insert π1 , β― , ππ . Assume π1 , β― , ππ have been
inserted. These lines form an upper bay. To insert ππ+1 , begin at its endpoint on
the left boundary. Walk in counter clockwise order around the bay till we find
the intersection point of ππ+1 with an edge.
β’ 5. Create lower horizon tree similarly by starting the travers at endpoints on the
right boundary.
β’ 6. Initialize π: Let π»ππ[π] = (β1, π) and π»ππΏ[π] = (β1, π ). If ππ intersects ππ to
the left of the intersection point of ππ and ππ then the right delimiting line of ππ is
π. Otherwise, the right delimiting line of ππ is π .
β’ 7. Initialize πΌ by scanning π.
Topological Plane Sweep
β’ Algorithm
Elementary Step
β’ While πΌ = Ξ
β’ 1. Pop π from πΌ
β’ 2. Swap π[π], π[π + 1] /*lines are going to cross, after the
elementary step*/
β’ 3. π π . π β π π + 1 . π, π π + 1 . π β π[π]. π /*the point of
elementary step becomes the left endpoint of the two new cut
edges */
β’ 4. Update π»ππ, π»ππΏ.
β’ 5. π π . π β ππππ ππ π»ππ π π . π, π»ππΏ π π . π, π π + 1 . π β
ππππ ππ π»ππ π π + 1 . π, π»ππΏ π π + 1 . π /* find the new right
endpoints */
β’ 6. If π[π + 1]. π = π[π + 2] then push π + 1 into πΌ. If π[π]. π =
π[π β 1] then push π β 1 into πΌ. /* push valid vertices formed after
sweeping into I if there is any */
What Happens at Each Event
β’ For each vertex π£, there are two bullet paths
growing from π£ along the line with slope π.
β’ Let π(π£) and π(π£) denote the line segments that
forward bullet path and backward bullet path hit.
β’ If either path does not hit any segment then we
store a special null value.
β’ Each slope is determined by exactly two lines.
What Happens at Each Event
β’ Possible scenarios
What Happens at Each Event
β’ Same segment
β’ If π£ and π€ are endpoints of the same segment, then
they are visible, and we add the edge (π£, π€) to the
visibility graph.
β’ How can I check this?
What Happens at Each Event
β’ Invisible
β’ Consider the distance
from π£ to π€.
β’ Compute the contact
point of the bullet path
shot from π£ in direction
π with segment π(π£) or
π(π£).
β’ If π£π€ is longer than π£π,
π£ and π€ are not visible.
Calculate the distance of π£π€
π
Calculate the distance of π£π
What Happens at Each Event
β’ Segment entry
β’ If we are entering the segment, then we set π(π£) or
π(π£) to this segment.
β’ π£π€ can be a visibility edge.
What Happens at Each Event
β’ Segment exit
β’ The bullet path will need to
shoot out and find the next
segment that it hits.
β’ It is available in π(1) time.
β’ Since we are sweeping over π€
at the same time that we are
sweeping over π£.
β’ We know that the bullet
extension from π€ hits π π€ .
β’ So, new π(π£) is same as π(π€).
π(π€)
Thank You
Q&A