The H-signature defines an equivalence relation based on homology in terms of complex calculus. More...
#include <h_signature.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. More... | |
HSignature (const TebConfig &cfg) | |
Constructor accepting a TebConfig. More... | |
virtual bool | isEqual (const EquivalenceClass &other) const |
Check if two candidate classes are equivalent. More... | |
virtual bool | isReasonable () const |
Check if the trajectory is non-looping around an obstacle. More... | |
virtual bool | isValid () const |
Check if the equivalence value is detected correctly. More... | |
const std::complex< long double > & | value () const |
Get the current value of the h-signature (read-only) More... | |
Public Member Functions inherited from teb_local_planner::EquivalenceClass | |
EquivalenceClass () | |
Default constructor. More... | |
virtual | ~EquivalenceClass () |
virtual destructor More... | |
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 67 of file h_signature.h.
|
inline |
Constructor accepting a TebConfig.
cfg | TebConfig storing some user configuration options |
Definition at line 76 of file h_signature.h.
|
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 97 of file h_signature.h.
|
inlinevirtual |
Check if two candidate classes are equivalent.
other | The other equivalence class to test with |
Implements teb_local_planner::EquivalenceClass.
Definition at line 195 of file h_signature.h.
|
inlinevirtual |
Check if the trajectory is non-looping around an obstacle.
Implements teb_local_planner::EquivalenceClass.
Definition at line 224 of file h_signature.h.
|
inlinevirtual |
Check if the equivalence value is detected correctly.
Implements teb_local_planner::EquivalenceClass.
Definition at line 215 of file h_signature.h.
|
inline |
Get the current value of the h-signature (read-only)
Definition at line 233 of file h_signature.h.
|
private |
Definition at line 238 of file h_signature.h.
|
private |
Definition at line 239 of file h_signature.h.