37 #ifndef OMPL_BASE_PROJECTION_EVALUATOR_
38 #define OMPL_BASE_PROJECTION_EVALUATOR_
40 #include "ompl/base/State.h"
41 #include "ompl/util/ClassForward.h"
43 #include "ompl/base/GenericParam.h"
44 #include "ompl/base/spaces/RealVectorBounds.h"
49 #include <boost/noncopyable.hpp>
50 #include <boost/numeric/ublas/matrix.hpp>
73 typedef boost::numeric::ublas::matrix<double>
Matrix;
91 static Matrix ComputeRandom(
const unsigned int from,
const unsigned int to,
const std::vector<double> &scale);
105 void computeRandom(
const unsigned int from,
const unsigned int to,
const std::vector<double> &scale);
108 void computeRandom(
const unsigned int from,
const unsigned int to);
114 void print(std::ostream &out = std::cout)
const;
163 virtual void setCellSizes(
const std::vector<double> &cellSizes);
226 virtual void setup(
void);
252 virtual void printSettings(std::ostream &out = std::cout)
const;
308 virtual void setup(
void);
void estimateBounds(void)
Fill estimatedBounds_ with an approximate bounding box for the projection space (via sampling) ...
virtual void printSettings(std::ostream &out=std::cout) const
Print settings about this projection.
std::vector< double > cellSizes_
The size of a cell, in every dimension of the projected space, in the implicitly defined integer grid...
If the projection for a CompoundStateSpace is supposed to be the same as the one for one of its inclu...
std::vector< double > low
Lower bound.
bool cellSizesWereInferred_
Flag indicating whether projection cell sizes were automatically inferred.
A boost shared pointer wrapper for ompl::base::StateSpace.
void computeCoordinates(const State *state, ProjectionCoordinates &coord) const
Compute integer coordinates for a state.
void checkBounds(void) const
Check if the projection dimension matched the dimension of the bounds.
ProjectionEvaluator(const StateSpace *space)
Construct a projection evaluator for a specific state space.
virtual void setup(void)
Perform configuration steps, if needed.
static Matrix ComputeRandom(const unsigned int from, const unsigned int to, const std::vector< double > &scale)
Compute a random projection matrix with from columns and to rows. A vector with from elements can be ...
virtual unsigned int getDimension(void) const =0
Return the dimension of the projection defined by this evaluator.
bool hasBounds(void) const
Check if bounds were specified for this projection.
ProjectionEvaluatorPtr specifiedProj_
The projection that is optionally specified by the user in the constructor argument (projToUse) ...
RealVectorBounds estimatedBounds_
An approximate bounding box for projected state values; This is the cached result of estimateBounds()...
void print(std::ostream &out=std::cout) const
Print the contained projection matrix to a stram.
ParamSet params_
The set of parameters for this projection.
Maintain a set of parameters.
void computeRandom(const unsigned int from, const unsigned int to, const std::vector< double > &scale)
Wrapper for ComputeRandom(from, to, scale)
void inferBounds(void)
Compute an approximation of the bounds for this projection space. getBounds() will then report the co...
virtual unsigned int getDimension(void) const
Return the dimension of the projection defined by this evaluator.
const StateSpace * space_
The state space this projection operates on.
bool defaultCellSizes_
Flag indicating whether cell sizes have been set by the user, or whether they were inferred automatic...
SubspaceProjectionEvaluator(const StateSpace *space, unsigned int index, const ProjectionEvaluatorPtr &projToUse=ProjectionEvaluatorPtr())
The constructor states that for space space, the projection to use is the same as the component at po...
bool userConfigured(void) const
Return true if any user configuration has been done to this projection evaluator (setCellSizes() was ...
unsigned int index_
The index of the subspace from which to project.
virtual void project(const State *state, EuclideanProjection &projection) const
Compute the projection as an array of double values.
Matrix mat
Projection matrix.
virtual void printProjection(const EuclideanProjection &projection, std::ostream &out=std::cout) const
Print a euclidean projection.
const ParamSet & params(void) const
Get the parameters for this projection.
void mulCellSizes(double factor)
Multiply the cell sizes in each dimension by a specified factor factor. This function does nothing if...
A boost shared pointer wrapper for ompl::base::ProjectionEvaluator.
std::vector< int > ProjectionCoordinates
Grid cells corresponding to a projection value are described in terms of their coordinates.
Representation of a space in which planning can be performed. Topology specific sampling, interpolation and distance are defined.
virtual void setup(void)
Perform configuration steps, if needed.
const std::vector< double > & getCellSizes(void) const
Get the size (each dimension) of a grid cell.
boost::numeric::ublas::vector< double > EuclideanProjection
The datatype for state projections. This class contains a real vector.
Definition of an abstract state.
A projection matrix – it allows multiplication of real vectors by a specified matrix. The matrix can also be randomly generated.
void checkCellSizes(void) const
Check if cell dimensions match projection dimension.
virtual void project(const State *state, EuclideanProjection &projection) const =0
Compute the projection as an array of double values.
void inferCellSizes(void)
Sample the state space and decide on default cell sizes. This function is called by setup() if no cel...
ParamSet & params(void)
Get the parameters for this projection.
The lower and upper bounds for an Rn space.
void setBounds(const RealVectorBounds &bounds)
Set bounds on the projection. The PDST planner needs to known the bounds on the projection. Default bounds are automatically computed by inferCellSizes().
virtual void setCellSizes(const std::vector< double > &cellSizes)
Define the size (in each dimension) of a grid cell. The number of sizes set here must be the same as ...
virtual void defaultCellSizes(void)
Set the default cell dimensions for this projection. The default implementation of this function is e...
void project(const double *from, EuclideanProjection &to) const
Multiply the vector from by the contained projection matrix to obtain the vector to.
const RealVectorBounds & getBounds(void)
Get the bounds computed/set for this projection.
boost::numeric::ublas::matrix< double > Matrix
Datatype for projection matrices.
RealVectorBounds bounds_
A bounding box for projected state values.
Abstract definition for a class computing projections to Rn. Implicit integer grids are imposed on th...
ProjectionEvaluatorPtr proj_
The projection to use. This is either the same as specifiedProj_ or, if specifiedProj_ is not initial...
void computeCoordinates(const EuclideanProjection &projection, ProjectionCoordinates &coord) const
Compute integer coordinates for a projection.