ompl::control::CompoundControlSpace Class Reference

A control space to allow the composition of control spaces. More...

#include <ompl/control/ControlSpace.h>

Inheritance diagram for ompl::control::CompoundControlSpace:

## Public Types

using ControlType = ompl::control::CompoundControl
Define the type of control allocated by this control space.

## Public Member Functions

CompoundControlSpace (const base::StateSpacePtr &stateSpace)
Constructor. The corresponding state space needs to be specified.

template<class T >
T * as (const unsigned int index) const
Cast a component of this instance to a desired type. More...

virtual void addSubspace (const ControlSpacePtr &component)
Adds a control space as a component of the compound control space.

unsigned int getSubspaceCount () const
Get the number of control spaces that make up the compound control space.

const ControlSpacePtrgetSubspace (unsigned int index) const
Get a specific subspace from the compound control space.

const ControlSpacePtrgetSubspace (const std::string &name) const
Get a specific subspace from the compound control space.

unsigned int getDimension () const override
Get the dimension of this control space.

ControlallocControl () const override
Allocate memory for a control.

void freeControl (Control *control) const override
Free the memory of a control.

void copyControl (Control *destination, const Control *source) const override
Copy a control to another.

bool equalControls (const Control *control1, const Control *control2) const override
Check if two controls are the same.

void nullControl (Control *control) const override
Make the control have no effect if it were to be applied to a state for any amount of time.

ControlSamplerPtr allocDefaultControlSampler () const override
Allocate the default control sampler.

double * getValueAddressAtIndex (Control *control, unsigned int index) const override
Many controls contain a number of double values. This function provides a means to get the memory address of a double value from a control control located at position index. The first double value is returned for index = 0. If index is too large (does not point to any double values in the control), the return value is nullptr.

void printControl (const Control *control, std::ostream &out=std::cout) const override
Print a control to a stream.

void printSettings (std::ostream &out) const override
Print the settings for this control space to a stream.

void setup () override
Perform final setup steps. This function is automatically called by the SpaceInformation.

unsigned int getSerializationLength () const override
Returns the serialization size for a single control in this space.

void serialize (void *serialization, const Control *ctrl) const override
Serializes the given control into the serialization buffer.

void deserialize (Control *ctrl, const void *serialization) const override
Deserializes a control from the serialization buffer.

bool isCompound () const override
Check if the control space is compound.

void lock ()
Lock this control space. This means no further control spaces can be added as components. This function can be for instance called from the constructor of a state space that inherits from CompoundControlSpace to prevent the user to add further components.

Public Member Functions inherited from ompl::control::ControlSpace
ControlSpace (const ControlSpace &)=delete

ControlSpaceoperator= (const ControlSpace &)=delete

ControlSpace (base::StateSpacePtr stateSpace)
Construct a control space, given the state space.

template<class T >
T * as ()
Cast this instance to a desired type. More...

template<class T >
const T * as () const
Cast this instance to a desired type. More...

const std::string & getName () const
Get the name of the control space.

void setName (const std::string &name)
Set the name of the control space.

int getType () const
Get the type of the control space. The type can be used to verify whether two space instances are of the same type.

const base::StateSpacePtr & getStateSpace () const
Return the state space this control space depends on.

virtual ControlSamplerPtr allocControlSampler () const
Allocate an instance of the control sampler for this space. This sampler will be allocated with the sampler allocator that was previously specified by setControlSamplerAllocator() or, if no sampler allocator was specified, allocDefaultControlSampler() is called.

void setControlSamplerAllocator (const ControlSamplerAllocator &csa)
Set the sampler allocator to use.

void clearControlSamplerAllocator ()
Clear the control sampler allocator (reset to default)

void computeSignature (std::vector< int > &signature) const
Compute an array of ints that uniquely identifies the structure of the control space. The first element of the signature is the number of integers that follow.

## Protected Attributes

std::vector< ControlSpacePtrcomponents_
The component control spaces that make up the compound control space.

unsigned int componentCount_
The number of contained components.

bool locked_
Flag indicating whether adding further components is allowed or not.

Protected Attributes inherited from ompl::control::ControlSpace
int type_
A type assigned for this control space.

base::StateSpacePtr stateSpace_
The state space controls can be applied to.

ControlSamplerAllocator csa_
An optional control sampler allocator.

## Detailed Description

A control space to allow the composition of control spaces.

Definition at line 198 of file ControlSpace.h.

## ◆ as()

template<class T >
 T* ompl::control::CompoundControlSpace::as ( const unsigned int index ) const
inline

Cast a component of this instance to a desired type.

Make sure the type we are casting to is indeed a control space

Definition at line 214 of file ControlSpace.h.

The documentation for this class was generated from the following files: