IEEE Robotics & Automation Magazine - December 2012 - 77
Furthermore, OMPL includes a means of combining state
spaces using the class CompoundStateSpace. A combined state
space implements the functionality of a regular state space on
top of the corresponding functionality from the maintained
set of state spaces. This allows trivial construction of more
complex state spaces from simpler ones. For example
SE3StateSpace [the space of rigid body transformations in
three-dimensional (3-D)] is just a combination of
SO3StateSpace (the space of rotations) and RealVectorStateSpace
(the space of translations). Instances of CompoundStateSpace
can be constructed at run time, which is necessary for constructing a state space from an input file specification, as is
done, for example, in ROS. For a mobile manipulator, one
could construct a CompoundStateSpace with the two arms and
the mobile base as substate spaces. An arm typically has a
number of rotational joints and can be modeled by either a
RealVectorStateSpace (if the joints have limits) or a
CompoundStateSpace with copies of SO(2). The state space for
the base can simply be SE(2) (the space rigid body transformations in the plane).
State spaces optionally include specifications of projections
to Euclidean spaces (ProjectionEvaluator). Low-dimensional
Euclidean projections are used by several sampling-based
planning algorithms (e.g., KPIECE [16], SBL [30], EST [12])
to guide their search for a feasible path, as it is much easier to
keep track of coverage (i.e., which areas have been sufficiently
explored and which areas should be explored further) in such
low-dimensional spaces.
In addition to states and state spaces, some algorithms
in OMPL require a means to represent controls. Control
spaces (ControlSpace) mirror the structure of state spaces
and provide functionality specific to controls, so that planning algorithms can be implemented in a generic way. The
only available implementations of control spaces are the
Euclidean space and a space for discrete modes, because so
far there has not been a need for control spaces with more
complex topologies. However, the API allows one to define
such control spaces.
State Validation and Propagation
Whether a state is valid or not depends on the planning context. In many cases, state validity simply means that a robot is
not in collision with any obstacles, but in general any condition on a state can be used. In OMPL.app (see the section on
OMPL.app: A GUI for OMPL) we have predefined a state
validity checker for rigid body motion planning. We have also
implemented a state validity checker that uses the ODE (see
the section on motion planning using a physics engine). If
these built-in state validity checkers cannot be used for the
system of interest, a user needs to implement their own.
Based on a given state validity checker, a default
MotionValidator is constructed that checks whether the interpolation between two states at a certain resolution produces
states that are all valid. However, it possible to plug in a different MotionValidator. For example, one might want to add support for continuous collision checking, which can adaptively
check for collisions and provide exact guarantees for state
validity [31].
For planning with controls, a user needs to specify how
the system evolves when certain controls are applied for
some period of time starting from a given state. This is called
state propagation in OMPL. In the simplest case, a state
propagator is essentially a lightweight wrapper around a
numerical integrator for systems of the form ˙q = f (q, u),
where q is a state vector and u a vector of controls. To facilitate planning for such systems, we have implemented generic
support for ODE solvers and we have integrated Boost.
Odeint [32], a new library for solving ODEs. Given a userprovided function that implements f (q, u) for the system of
interest, OMPL can plan for such systems. Alternatively, one
can use variational integrators [33], or a physics engine to
perform state propagation.
Motion Planning Using a Physics Engine
OMPL has built-in support for using the ODE physics engine.
Support for other physics engines, such as Bullet, is planned
for a future release. We expect that the approach described
below can be followed for these physics engines (and others)
as well.
The ODE state space consists of the state spaces of the
robot and any movable objects in the environment. The user
specifies which joints are controlled by the planner and maps
those to a ControlSpace. The user can also specify which
collisions are allowed (e.g., contact with the support plane)
and which ones are not (such as driving into a wall). This
simple setup allows one to plan for systems that are difficult
to describe with differential equations. The user does not need
to worry about all the different possible contact modes that
occur when a car drives off a ramp (Figure S2) or when a robot
pushes one or more obstacles (Figure S3).
Figure S2. A car-like robot driving off a ramp.
Figure S3. A yellow robot needs to push obstacles
to get to its goal.
december 2012
*
IEEE ROBOTICS & AUTOMATION MAGAZINE
*
77
Table of Contents for the Digital Edition of IEEE Robotics & Automation Magazine - December 2012
IEEE Robotics & Automation Magazine - December 2012 - Cover1
IEEE Robotics & Automation Magazine - December 2012 - Cover2
IEEE Robotics & Automation Magazine - December 2012 - 1
IEEE Robotics & Automation Magazine - December 2012 - 2
IEEE Robotics & Automation Magazine - December 2012 - 3
IEEE Robotics & Automation Magazine - December 2012 - 4
IEEE Robotics & Automation Magazine - December 2012 - 5
IEEE Robotics & Automation Magazine - December 2012 - 6
IEEE Robotics & Automation Magazine - December 2012 - 7
IEEE Robotics & Automation Magazine - December 2012 - 8
IEEE Robotics & Automation Magazine - December 2012 - 9
IEEE Robotics & Automation Magazine - December 2012 - 10
IEEE Robotics & Automation Magazine - December 2012 - 11
IEEE Robotics & Automation Magazine - December 2012 - 12
IEEE Robotics & Automation Magazine - December 2012 - 13
IEEE Robotics & Automation Magazine - December 2012 - 14
IEEE Robotics & Automation Magazine - December 2012 - 15
IEEE Robotics & Automation Magazine - December 2012 - 16
IEEE Robotics & Automation Magazine - December 2012 - 17
IEEE Robotics & Automation Magazine - December 2012 - 18
IEEE Robotics & Automation Magazine - December 2012 - 19
IEEE Robotics & Automation Magazine - December 2012 - 20
IEEE Robotics & Automation Magazine - December 2012 - 21
IEEE Robotics & Automation Magazine - December 2012 - 22
IEEE Robotics & Automation Magazine - December 2012 - 23
IEEE Robotics & Automation Magazine - December 2012 - 24
IEEE Robotics & Automation Magazine - December 2012 - 25
IEEE Robotics & Automation Magazine - December 2012 - 26
IEEE Robotics & Automation Magazine - December 2012 - 27
IEEE Robotics & Automation Magazine - December 2012 - 28
IEEE Robotics & Automation Magazine - December 2012 - 29
IEEE Robotics & Automation Magazine - December 2012 - 30
IEEE Robotics & Automation Magazine - December 2012 - 31
IEEE Robotics & Automation Magazine - December 2012 - 32
IEEE Robotics & Automation Magazine - December 2012 - 33
IEEE Robotics & Automation Magazine - December 2012 - 34
IEEE Robotics & Automation Magazine - December 2012 - 35
IEEE Robotics & Automation Magazine - December 2012 - 36
IEEE Robotics & Automation Magazine - December 2012 - 37
IEEE Robotics & Automation Magazine - December 2012 - 38
IEEE Robotics & Automation Magazine - December 2012 - 39
IEEE Robotics & Automation Magazine - December 2012 - 40
IEEE Robotics & Automation Magazine - December 2012 - 41
IEEE Robotics & Automation Magazine - December 2012 - 42
IEEE Robotics & Automation Magazine - December 2012 - 43
IEEE Robotics & Automation Magazine - December 2012 - 44
IEEE Robotics & Automation Magazine - December 2012 - 45
IEEE Robotics & Automation Magazine - December 2012 - 46
IEEE Robotics & Automation Magazine - December 2012 - 47
IEEE Robotics & Automation Magazine - December 2012 - 48
IEEE Robotics & Automation Magazine - December 2012 - 49
IEEE Robotics & Automation Magazine - December 2012 - 50
IEEE Robotics & Automation Magazine - December 2012 - 51
IEEE Robotics & Automation Magazine - December 2012 - 52
IEEE Robotics & Automation Magazine - December 2012 - 53
IEEE Robotics & Automation Magazine - December 2012 - 54
IEEE Robotics & Automation Magazine - December 2012 - 55
IEEE Robotics & Automation Magazine - December 2012 - 56
IEEE Robotics & Automation Magazine - December 2012 - 57
IEEE Robotics & Automation Magazine - December 2012 - 58
IEEE Robotics & Automation Magazine - December 2012 - 59
IEEE Robotics & Automation Magazine - December 2012 - 60
IEEE Robotics & Automation Magazine - December 2012 - 61
IEEE Robotics & Automation Magazine - December 2012 - 62
IEEE Robotics & Automation Magazine - December 2012 - 63
IEEE Robotics & Automation Magazine - December 2012 - 64
IEEE Robotics & Automation Magazine - December 2012 - 65
IEEE Robotics & Automation Magazine - December 2012 - 66
IEEE Robotics & Automation Magazine - December 2012 - 67
IEEE Robotics & Automation Magazine - December 2012 - 68
IEEE Robotics & Automation Magazine - December 2012 - 69
IEEE Robotics & Automation Magazine - December 2012 - 70
IEEE Robotics & Automation Magazine - December 2012 - 71
IEEE Robotics & Automation Magazine - December 2012 - 72
IEEE Robotics & Automation Magazine - December 2012 - 73
IEEE Robotics & Automation Magazine - December 2012 - 74
IEEE Robotics & Automation Magazine - December 2012 - 75
IEEE Robotics & Automation Magazine - December 2012 - 76
IEEE Robotics & Automation Magazine - December 2012 - 77
IEEE Robotics & Automation Magazine - December 2012 - 78
IEEE Robotics & Automation Magazine - December 2012 - 79
IEEE Robotics & Automation Magazine - December 2012 - 80
IEEE Robotics & Automation Magazine - December 2012 - 81
IEEE Robotics & Automation Magazine - December 2012 - 82
IEEE Robotics & Automation Magazine - December 2012 - 83
IEEE Robotics & Automation Magazine - December 2012 - 84
IEEE Robotics & Automation Magazine - December 2012 - 85
IEEE Robotics & Automation Magazine - December 2012 - 86
IEEE Robotics & Automation Magazine - December 2012 - 87
IEEE Robotics & Automation Magazine - December 2012 - 88
IEEE Robotics & Automation Magazine - December 2012 - 89
IEEE Robotics & Automation Magazine - December 2012 - 90
IEEE Robotics & Automation Magazine - December 2012 - 91
IEEE Robotics & Automation Magazine - December 2012 - 92
IEEE Robotics & Automation Magazine - December 2012 - 93
IEEE Robotics & Automation Magazine - December 2012 - 94
IEEE Robotics & Automation Magazine - December 2012 - 95
IEEE Robotics & Automation Magazine - December 2012 - 96
IEEE Robotics & Automation Magazine - December 2012 - 97
IEEE Robotics & Automation Magazine - December 2012 - 98
IEEE Robotics & Automation Magazine - December 2012 - 99
IEEE Robotics & Automation Magazine - December 2012 - 100
IEEE Robotics & Automation Magazine - December 2012 - 101
IEEE Robotics & Automation Magazine - December 2012 - 102
IEEE Robotics & Automation Magazine - December 2012 - 103
IEEE Robotics & Automation Magazine - December 2012 - 104
IEEE Robotics & Automation Magazine - December 2012 - 105
IEEE Robotics & Automation Magazine - December 2012 - 106
IEEE Robotics & Automation Magazine - December 2012 - 107
IEEE Robotics & Automation Magazine - December 2012 - 108
IEEE Robotics & Automation Magazine - December 2012 - 109
IEEE Robotics & Automation Magazine - December 2012 - 110
IEEE Robotics & Automation Magazine - December 2012 - 111
IEEE Robotics & Automation Magazine - December 2012 - 112
IEEE Robotics & Automation Magazine - December 2012 - Cover3
IEEE Robotics & Automation Magazine - December 2012 - Cover4
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2010
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2010
https://www.nxtbookmedia.com