Loading...
Searching...
No Matches
ompl::base::AtlasChart Class Reference

Tangent space and bounding polytope approximating some patch of the manifold. More...

#include <ompl/base/spaces/constraint/AtlasChart.h>

Public Member Functions

 AtlasChart (const AtlasChart &)=delete
AtlasChartoperator= (const AtlasChart &)=delete
 AtlasChart (const AtlasStateSpace *atlas, const AtlasStateSpace::StateType *state)
 Create a tangent space chart for atlas with center at ambient space point xorigin.
 ~AtlasChart ()
 Destructor.
void clear ()
 Forget all acquired information such as the halfspace boundary.
const AtlasStateSpace::StateTypegetOrigin () const
 Returns phi(0), the center of the chart in ambient space.
unsigned int getAmbientDimension () const
 Returns the dimension of the ambient space.
unsigned int getManifoldDimension () const
 Returns the dimension of the manifold.
void phi (const Eigen::Ref< const Eigen::VectorXd > &u, Eigen::Ref< Eigen::VectorXd > out) const
 Rewrite a chart point u in ambient space coordinates and store the result in out, which should be allocated to size n_.
bool psi (const Eigen::Ref< const Eigen::VectorXd > &u, Eigen::Ref< Eigen::VectorXd > out) const
 Exponential mapping. Project chart point u onto the manifold and store the result in out, which should be allocated to size n_.
void psiInverse (const Eigen::Ref< const Eigen::VectorXd > &x, Eigen::Ref< Eigen::VectorXd > out) const
 Logarithmic mapping. Project ambient point x onto the chart and store the result in out, which should be allocated to size k_.
bool inPolytope (const Eigen::Ref< const Eigen::VectorXd > &u, const Halfspace *ignore1=nullptr, const Halfspace *ignore2=nullptr) const
 Check if a point u on the chart lies within its polytope boundary. Can ignore up to 2 of the halfspaces if specified in ignore1 and ignore2.
void borderCheck (const Eigen::Ref< const Eigen::VectorXd > &v) const
 Check if chart point v lies very close to any part of the boundary. Wherever it does, expand the neighboring chart's boundary to include.
const AtlasChartowningNeighbor (const Eigen::Ref< const Eigen::VectorXd > &x) const
 Try to find an owner for ambient point \x from among the neighbors of this chart. Returns nullptr if none found.
bool toPolygon (std::vector< Eigen::VectorXd > &vertices) const
 For manifolds of dimension 2, return in order in vertices the polygon boundary of this chart, including an approximation of the circular boundary where the polygon exceeds radius rho_. Returns true if a circular portion is included.
std::size_t getNeighborCount () const
 Returns the number of charts this chart shares a halfspace boundary with.
bool estimateIsFrontier () const
 Use sampling to make a quick estimate as to whether this chart's polytope boundary is completely defined by its halfspaces.

Static Public Member Functions

static void generateHalfspace (AtlasChart *c1, AtlasChart *c2)
 Create two complementary halfspaces dividing the space between charts c1 and c2, and add them to the charts' polytopes boundaries.

Protected Member Functions

void addBoundary (Halfspace *halfspace)
 Introduce a new halfspace to the chart's bounding polytope. This chart assumes responsibility for deleting halfspace.

Protected Attributes

const Constraintconstraint_
 The constraint function that defines the manifold.
std::vector< Halfspace * > polytope_
 Set of halfspaces defining the polytope boundary.

Detailed Description

Tangent space and bounding polytope approximating some patch of the manifold.

Definition at line 52 of file AtlasChart.h.

Constructor & Destructor Documentation

◆ AtlasChart()

ompl::base::AtlasChart::AtlasChart ( const AtlasStateSpace * atlas,
const AtlasStateSpace::StateType * state )

Create a tangent space chart for atlas with center at ambient space point xorigin.

AtlasChart.

Exceptions
ompl::Exceptionwhen manifold seems degenerate here.

Public

Definition at line 152 of file AtlasChart.cpp.

◆ ~AtlasChart()

ompl::base::AtlasChart::~AtlasChart ( )

Destructor.

Definition at line 172 of file AtlasChart.cpp.

Member Function Documentation

◆ addBoundary()

void ompl::base::AtlasChart::addBoundary ( Halfspace * halfspace)
protected

Introduce a new halfspace to the chart's bounding polytope. This chart assumes responsibility for deleting halfspace.

Protected.

Definition at line 387 of file AtlasChart.cpp.

◆ borderCheck()

void ompl::base::AtlasChart::borderCheck ( const Eigen::Ref< const Eigen::VectorXd > & v) const

Check if chart point v lies very close to any part of the boundary. Wherever it does, expand the neighboring chart's boundary to include.

Definition at line 256 of file AtlasChart.cpp.

◆ clear()

void ompl::base::AtlasChart::clear ( )

Forget all acquired information such as the halfspace boundary.

Definition at line 177 of file AtlasChart.cpp.

◆ estimateIsFrontier()

bool ompl::base::AtlasChart::estimateIsFrontier ( ) const

Use sampling to make a quick estimate as to whether this chart's polytope boundary is completely defined by its halfspaces.

Definition at line 352 of file AtlasChart.cpp.

◆ generateHalfspace()

void ompl::base::AtlasChart::generateHalfspace ( AtlasChart * c1,
AtlasChart * c2 )
static

Create two complementary halfspaces dividing the space between charts c1 and c2, and add them to the charts' polytopes boundaries.

Public Static.

Note
Charts must be different charts from the same atlas.

Definition at line 369 of file AtlasChart.cpp.

◆ getAmbientDimension()

unsigned int ompl::base::AtlasChart::getAmbientDimension ( ) const
inline

Returns the dimension of the ambient space.

Definition at line 170 of file AtlasChart.h.

◆ getManifoldDimension()

unsigned int ompl::base::AtlasChart::getManifoldDimension ( ) const
inline

Returns the dimension of the manifold.

Definition at line 176 of file AtlasChart.h.

◆ getNeighborCount()

std::size_t ompl::base::AtlasChart::getNeighborCount ( ) const
inline

Returns the number of charts this chart shares a halfspace boundary with.

Definition at line 221 of file AtlasChart.h.

◆ getOrigin()

const AtlasStateSpace::StateType * ompl::base::AtlasChart::getOrigin ( ) const
inline

Returns phi(0), the center of the chart in ambient space.

Definition at line 164 of file AtlasChart.h.

◆ inPolytope()

bool ompl::base::AtlasChart::inPolytope ( const Eigen::Ref< const Eigen::VectorXd > & u,
const Halfspace * ignore1 = nullptr,
const Halfspace * ignore2 = nullptr ) const

Check if a point u on the chart lies within its polytope boundary. Can ignore up to 2 of the halfspaces if specified in ignore1 and ignore2.

Definition at line 238 of file AtlasChart.cpp.

◆ owningNeighbor()

const ompl::base::AtlasChart * ompl::base::AtlasChart::owningNeighbor ( const Eigen::Ref< const Eigen::VectorXd > & x) const

Try to find an owner for ambient point \x from among the neighbors of this chart. Returns nullptr if none found.

Definition at line 262 of file AtlasChart.cpp.

◆ phi()

void ompl::base::AtlasChart::phi ( const Eigen::Ref< const Eigen::VectorXd > & u,
Eigen::Ref< Eigen::VectorXd > out ) const

Rewrite a chart point u in ambient space coordinates and store the result in out, which should be allocated to size n_.

Definition at line 185 of file AtlasChart.cpp.

◆ psi()

bool ompl::base::AtlasChart::psi ( const Eigen::Ref< const Eigen::VectorXd > & u,
Eigen::Ref< Eigen::VectorXd > out ) const

Exponential mapping. Project chart point u onto the manifold and store the result in out, which should be allocated to size n_.

Definition at line 190 of file AtlasChart.cpp.

◆ psiInverse()

void ompl::base::AtlasChart::psiInverse ( const Eigen::Ref< const Eigen::VectorXd > & x,
Eigen::Ref< Eigen::VectorXd > out ) const

Logarithmic mapping. Project ambient point x onto the chart and store the result in out, which should be allocated to size k_.

Definition at line 232 of file AtlasChart.cpp.

◆ toPolygon()

bool ompl::base::AtlasChart::toPolygon ( std::vector< Eigen::VectorXd > & vertices) const

For manifolds of dimension 2, return in order in vertices the polygon boundary of this chart, including an approximation of the circular boundary where the polygon exceeds radius rho_. Returns true if a circular portion is included.

Definition at line 283 of file AtlasChart.cpp.

Member Data Documentation

◆ constraint_

const Constraint* ompl::base::AtlasChart::constraint_
protected

The constraint function that defines the manifold.

Definition at line 239 of file AtlasChart.h.

◆ polytope_

std::vector<Halfspace *> ompl::base::AtlasChart::polytope_
protected

Set of halfspaces defining the polytope boundary.

Definition at line 242 of file AtlasChart.h.


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