Path planning
A set of path planners for robots operating in planar environments with
configuration \(\vec{q} \in \mathbb{R}^2\) or \(\vec{q} \in \mathbb{R}^2 \times S^1 \sim \SE{2}\).
All inherit from PlannerBase.
Some planners are based on code from the PathPlanning category of PythonRobotics by Atsushi Sakai.
Planner |
Plans in |
Discrete/Continuous |
Obstacle avoidance |
|---|---|---|---|
\(\mathbb{R}^2\) |
discrete |
yes |
|
\(\mathbb{R}^2\) |
discrete |
yes |
|
\(\mathbb{R}^2\) |
discrete |
yes |
|
\(\mathbb{R}^2\) |
continuous |
yes |
|
\(\SE{2}\) |
discrete |
yes |
|
\(\SE{2}\) |
continuous |
no |
|
\(\SE{2}\) |
continuous |
no |
|
\(\SE{2}\) |
continuous |
no |
|
\(\SE{2}\) |
continuous |
no |
|
\(\SE{2}\) |
continuous |
yes |
Using a planner
The planners do not share one call signature, because the algorithms need different things at different times. They fall into four families, and the verbs a planner has are the ones that make sense for it.
Family |
Planners |
|
|
|---|---|---|---|
Plan for a goal, then query many starts |
|
|
|
Build a map of the space, then query both ends |
|
|
|
Nothing to plan |
|
none |
|
Reactive |
none |
|
Failure
ValueError: the arguments are invalid, for example the start is inside an obstacle or has the wrong length.NoPathError: the problem is valid but has no solution, for example the goal is unreachable or the robot is trapped. It is aRuntimeError.RuntimeError:querywas called beforeplan.
Animation
Planners that can animate take animate and movie arguments at the
constructor, which set the default for the planner and can be overridden by the
same arguments of the method that runs the animation. A movie implies
animate.