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.