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

void addBoundary (Halfspace *halfspace)
 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 116 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.

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.

◆ 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: