The H-signature defines an equivalence relation based on homology in terms of complex calculus. More...
#include <equivalence_relations.h>
Public Member Functions | |
template<typename BidirIter , typename Fun > | |
void | calculateHSignature (BidirIter path_start, BidirIter path_end, Fun fun_cplx_point, const ObstContainer *obstacles) |
Calculate the H-Signature of a path. | |
HSignature (const TebConfig &cfg) | |
Constructor accepting a TebConfig. | |
virtual bool | isEqual (const EquivalenceClass &other) const |
Check if two candidate classes are equivalent. | |
virtual bool | isValid () const |
Check if the equivalence value is detected correctly. | |
Private Attributes | |
const TebConfig * | cfg_ |
std::complex< long double > | hsignature_ |
The H-signature defines an equivalence relation based on homology in terms of complex calculus.
The H-Signature depends on the obstacle configuration and can be utilized to check whether two trajectores belong to the same homology class. Refer to:
Definition at line 112 of file equivalence_relations.h.
teb_local_planner::HSignature::HSignature | ( | const TebConfig & | cfg | ) | [inline] |
Constructor accepting a TebConfig.
cfg | TebConfig storing some user configuration options |
Definition at line 121 of file equivalence_relations.h.
void teb_local_planner::HSignature::calculateHSignature | ( | BidirIter | path_start, |
BidirIter | path_end, | ||
Fun | fun_cplx_point, | ||
const ObstContainer * | obstacles | ||
) | [inline] |
Calculate the H-Signature of a path.
The implemented function accepts generic path descriptions that are restricted to the following structure:
The path is composed of points T and is represented by a std::vector< T > or similar type (std::list, std::deque, ...).
Provide a unary function with the following signature std::complex< long double > (const T& point_type)
that returns a complex value for the position (Re(*)=x, Im(*)=y).
T could also be a pointer type, if the passed function also accepts a const T* point_Type.
path_start | Iterator to the first element in the path |
path_end | Iterator to the last element in the path |
obstacles | obstacle container |
fun_cplx_point | function accepting the dereference iterator type and that returns the position as complex number. |
BidirIter | Bidirectional iterator type |
Fun | function of the form std::complex< long double > (const T& point_type) |
Definition at line 143 of file equivalence_relations.h.
virtual bool teb_local_planner::HSignature::isEqual | ( | const EquivalenceClass & | other | ) | const [inline, virtual] |
Check if two candidate classes are equivalent.
other | The other equivalence class to test with |
Implements teb_local_planner::EquivalenceClass.
Definition at line 241 of file equivalence_relations.h.
virtual bool teb_local_planner::HSignature::isValid | ( | ) | const [inline, virtual] |
Check if the equivalence value is detected correctly.
Implements teb_local_planner::EquivalenceClass.
Definition at line 261 of file equivalence_relations.h.
const TebConfig* teb_local_planner::HSignature::cfg_ [private] |
Definition at line 269 of file equivalence_relations.h.
std::complex<long double> teb_local_planner::HSignature::hsignature_ [private] |
Definition at line 270 of file equivalence_relations.h.