Consider a robot whose task is to assemble a product (e.g., the toy bell shown below). This product was designed using a CAD system and all needed information (especially geometry) about its composing parts is available. In which order should the robot assemble the product? Which trajectories should it execute in order to avoid collision with the environment? Which sensing operations should it perform to guide its motion and perform the task despite some uncertainty in the shapes and locations of the parts? The goal of motion planning is to answer such questions.
Although motion planning techniques were initially developed to create robots with motion autonomy, such as mobile robots navigating in a building or outdoor, these techniques were later applied and further developed in varied contexts, such as virtual prototyping of new products, design for manufacturing and servicing, plant maintenance, medical surgery, virtual character animation, checking access for disabled persons, rational drug design, and pipe layout design.
Thus, overall, motion planning is about computing the motions of one or several real or virtual objects (called robots, agents, etc…) in some workspace (usually three-dimensional) in order to achieve a goal-specified task, such as:
· Going to location A in a given environment,
· Build a map of this unknown environment,
· Finding an object B in a given environment
· Assembling a product P from its separated individual parts,
· Orienting a part by pushing on it.
In more abstract terms, the basic problem is to answer connectivity queries in a geometric space, such as: Can two points be connected by a continuous path verifying given constraints?
Most motion planning problems are computationally hard. Computing a collision-free path for an object with n degrees of freedom among static obstacles takes time exponential in n. Computing a collision-free trajectory for an object with few degrees of freedom among p moving obstacles takes time exponential in p. Some problems seem even more complex, such as planning motions involving complex physical models and planning sensor-based motions dealing with uncertainty. Some tasks must be performed online, such as building the map of a new environment. Other tasks must be done in real-time, like tracking an evasive target, planning collision-free motions in a continuously changing environment.
The purpose of this course is to present a coherent framework for solving motion planning problems, as well as a number of existing methods to solve specific problems. This presentation will use the concepts of configuration space and related spaces (state, control, motion, and information spaces) to formulate problems. It will use algorithms based on random sampling and criticality-based decomposition to explore the connectivity of these spaces. The course content will be illustrated with examples drawn from areas such as mechanical design, manufacturing, graphic animation, medical surgery, and biology. It will emphasize methods that are efficient, robust, and relatively easy to implement, over methods that strive for optimal worst-case performance. It will emphasize methods with provable guarantees of performance over purely heuristic methods that are often effective only in some specific examples. Most of the methods presented will involve various forms of geometric computing (e.g., interference detection between objects, distance computation, space partitioning, shape matching, etc).
The course is self-contained. However, students are expected to have basic knowledge and interest in geometry and algorithms, and to have the skills to complete a significant programming assignment.