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. More...

~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. More...

## Protected Member Functions

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

## 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.

## ◆ 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.

Exceptions
 ompl::Exception when manifold seems degenerate here.

Public

Definition at line 152 of file AtlasChart.cpp.

## Member Function Documentation

 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.

## ◆ 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.

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