Our everyday lives are full of tasks that constrain our movement. Carrying a coffee mug, lifting a heavy object, or sliding a milk jug out of a refrigerator are examples of tasks that involve constraints imposed on our bodies as well as on the manipulated objects. Creating algorithms for general-purpose robots to perform these kinds of tasks also involves computing motions that are subject to multiple simultaneous task constraints.
In general, a robot cannot assume arbitrary joint configurations when performing constrained motion. Instead, the robot must move within a manifold embedded in its high-dimensional configuration space that satisfies both the constraints of the task and the limits of the mechanism. Planning such motion is challenging for two reasons: 1) The space of motions is continuous and high-dimensional. 2) Constraints on the robot's motion (imposed by the task and the environment) often make feasible states difficult to find. For instance, constraints on the pose of the robot's hand can restrict the allowable states to an infinitely thin manifold in the configuration space. Such manifolds cannot be searched using standard sampling-based planning techniques.
This work has focused on developing a constrained manipulation planning framework for practical manipulation tasks. The framework has three main components: constraint representation, constraint-satisfaction strategies, and a sampling-based planning strategy. These three components come together to create an efficient and probabilistically-complete manipulation planning algorithm called the Constrained BiDirectional RRT (CBiRRT).
The code developed for this project has been released as part of the Constrained Manipulation Planning Suite (CoMPS). CoMPS consists of three openrave plugins and associated data files. The planning and inverse kinematics algorithms in this suite are designed for articulated robots like robotic arms and humanoids. Please see this site for instructions on installing and using CoMPS.