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 | |
AtlasChart & | operator= (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::StateType * | getOrigin () 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 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. | |
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 Constraint * | constraint_ |
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.
- Exceptions
-
ompl::Exception when 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()
|
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()
|
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()
|
inline |
Returns the dimension of the ambient space.
Definition at line 170 of file AtlasChart.h.
◆ getManifoldDimension()
|
inline |
Returns the dimension of the manifold.
Definition at line 176 of file AtlasChart.h.
◆ getNeighborCount()
|
inline |
Returns the number of charts this chart shares a halfspace boundary with.
Definition at line 221 of file AtlasChart.h.
◆ getOrigin()
|
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_
|
protected |
The constraint function that defines the manifold.
Definition at line 239 of file AtlasChart.h.
◆ 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:
- ompl/base/spaces/constraint/AtlasChart.h
- ompl/base/spaces/constraint/src/AtlasChart.cpp