Robot motion planning
Professor Devin Balkcom
devin@cs.dartmouth.edu
office: Sudikoff 206
configuration: $q = (\theta_1, \theta_2)$
Also, see: Reuleaux collection of mechanisms
How many DOFs does each of the following systems have?
(Animation of a Reuleax 4-bar linkage from Youtube.)
$x_1 = $ ?
$x_1 = l_1 \cos{\theta_1}$
$x_2 = l_1 \cos{\theta_1} + $?
$x_2 = l_1 \cos{\theta_1} + l_2 \cos{(\theta_1 + \theta_2)}$
$x_2 = l_1 c_1 + l_2 c_{12}$
Imagine a robot arm trying to catch a thrown ball.
Easy only for very, very simple systems
c-space for planear translation of a triangular robot
An optimality constraint can lead to a discrete space.
Exact cell decomposition. (Polyhedral obstacles.)
Approximate cell decomposition.
(This one from one of our papers.)
The number of cells tends to scale exponentially with the dimensionality of the space.
(Figure from Wikipedia article on GJK algorithm.)
See pages for research groups:
Voronoi cells are the points closest to exactly one point.
Medial axis The set of all points having more than one closest point on the obstacle. (Topological skeleton, Blum.)
(Figure from Schulz, Ganacim and Cruz.)
Do the roadmaps described by Voronoi diagrams work in higher dimensions? (Hint, consider the set of points equidistant from two point obstacles in 3D.) If not, could you extend them somehow to work in higher dimensions?
(Figure from Schulz, Ganacim and Cruz.)
A diff-drive (left) and an omni-directional robot (right)
Tricycle steering
$q = \begin{pmatrix} x \\ y \\ \theta \end{pmatrix}$
Controls: $v$ and $\omega$.
Distance of rotation center from center is $v/\omega$.
$|v/\omega| \ge k$, for some positive $k$.
$\begin{pmatrix}\dot x \\ \dot y \\ \dot \theta \end{pmatrix} = \begin{pmatrix}\cos \theta \\ \sin \theta \\ 0 \end{pmatrix} v + \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} \omega$
Three degrees of freedom, but only two controls.
(figure from Wikipedia)
PRMs require a local planner, sometimes called a steering method.
Steering methods can be hard to find for PRMs. RRTs just simulate controls to build a tree.
Problems: how to discretize actions? How many nodes are generated?
Problems: how to discretize actions? What does nearest mean? How many nodes are generated? How to compute nearest node efficiently? Which actions do we simulate?
A low-discrepancy sequence: Van der Corput sequence
001 | 100 | 4 / 8 |
010 | 010 | 2 / 8 |
011 | 110 | 6 / 8 |
100 | 001 | 1 / 8 |
101 | 101 | 5 / 8 |
110 | 011 | 3 / 8 |
111 | 111 | 7 / 8 |
(Optimal)
Dubins car (1957)
Other systems:
(2006, 2012, Kavathekar, Furtuna, Wang, Balkcom)
Omnidirectional robot