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