Quality Motion Planning In a Dynamic Environment
230 likes | 353 Vues
This project focuses on generating efficient paths for robots navigating a 2D environment with both static and dynamic obstacles. It implements a path planning algorithm based on the PRM and Zucker-Kant methods, enhanced for higher problem-solving probabilities. With a maximum velocity and time constraints, the robot adapts to cyclically known dynamic obstacles. Developed in C++ using Visual Studio 2008, this project utilizes MFC for GUI and CGAL for computational geometry functions. Key outcomes include new path planning algorithms and insights into working with complex libraries.
Quality Motion Planning In a Dynamic Environment
E N D
Presentation Transcript
Quality Motion Planning In a Dynamic Environment August 2011
Project Goal • Generate a path for a Robot in a 2D Environment containing both Static & Dynamic obstacles. • Few assumptions: • The Robot has a maximum velocity and a Time limitation to reach destination. • The dynamic obstacles movement is known and cyclic. • The static Obstacles are simple polygons.
Implementation & development Environment • The project was written in C++ using Visual Studio 2008, with support of the following software packages: • MFC - we used this package to create our GUI. • CGAL - for basic implementations & functions we used in our algorithms.
Algorithm Overview • Based on • PRM • Zucker-Kant Algorithm • Amending the Zucker-Kant Algorithms to achieve higher probability of solving problems
Algorithm – the Assembly Line • The solution at each stage is represented by a directed graph • The final path is a list of edges on graph • The graph is passed to each of the stages of the algorithm • Each stage modifies the graph and brings it closer to solution
User Output Stage 1 A s s e m b l y L i n e Algorithm chart RunAlgorithm MaBakerView Stage 2 User Input Stage 5 Algorithm Support
Stage 1 • Sample points on completely free configurations (vertices on the graph) • Use input to determine sample strategy • Use CGAL to determine free configuration
Stage 2 • Connect close points (edges on the graph) • Make sure each edge is in almost free configuration • Use CGAL to determine free configuration
Stage 3 • Transform each edge found in stage 2 into a distance – time graph, considering moving obstacles • Solve using the VGraph method • If unsolvable – give edge an infinite weight • If solvable – give weight indicating the time it takes to pass the edge • If no moving obstacles on edge, just time when moving in max velocity
Edges with light weights Edges with heavy weights
The Zucker Kant Plane • Let’s look at one segment of movement intersecting with one dynamic obstacle: R O O O R Block Start Block End
The Zucker Kant Plane • In Time to distance on path plane, we get: Time R O O O R Distance Block Start Block End
The Zucker Kant Plane • After setting a goal time, we can solve with vGraph: Time R O Dest Time O O R Distance Block Start Block End
Stage 4 • Run Dijkstra on the graph and find the final path • This is the path the robot is going to use, we still don’t know the velocity function • However – it is guaranteed that this path is passable
Stage 5 • Transform the path found in stage 4 into a distance – time graph, considering moving obstacles • Calculate velocity function, which determine the progress velocities on the path we found in stage 4. • This promises the shortest arrival time to destination.
What did we learn? • New algorithms for path planning • Working with complicated libraries – MFC, CGAL • Analytical geometry when applied in a program • Working on a big project
Possible improvements • Improved sampling strategies • Incremental algorithm • Fix the case we fail (allow sampling almost free places) • 3D?
Additional Reading • K. Kant and S. Zucker. Toward efficient planning: the path-velocity decomposition. International Journal of Robotics Research, 5(3):72–89, 1986 • Path Planning in Dynamic Environments, Jur Pieter van den Berg, May 1981