selfdriving
Classes | Public Types | Public Member Functions | Private Attributes | List of all members
mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE > Class Template Reference

#include <mpp/data/MotionPrimitivesTree.h>

Inheritance diagram for mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >:

Classes

struct  map_traits_map_as_deque
 
struct  node_t
 

Public Types

using base_t = mrpt::graphs::CDirectedTree< EDGE_TYPE >
 
using edge_t = EDGE_TYPE
 
using edge_sequence_t = std::list< edge_t * >
 
using node_map_t = std::map< TNodeID, node_t >
 
using path_t = std::list< node_t >
 

Public Member Functions

void insert_node_and_edge (const TNodeID parentId, const TNodeID newChildId, const NODE_TYPE_DATA &newChildNodeData, const EDGE_TYPE &newEdgeData)
 
void update_node_and_edge (const TNodeID parentId, const TNodeID childId, const EDGE_TYPE &newEdgeData)
 
void rewire_node_parent (const TNodeID nodeId, const EDGE_TYPE &newEdgeFromParent)
 
const EDGE_TYPE & edge_to_parent (const TNodeID nodeId) const
 
void insert_root_node (const TNodeID node_id, const NODE_TYPE_DATA &node_data)
 
TNodeID next_free_node_ID () const
 
const node_map_tnodes () const
 
NODE_TYPE_DATA & node_state (const TNodeID nodeId)
 
std::tuple< path_t, edge_sequence_tbacktrack_path (const TNodeID target_node) const
 

Private Attributes

node_map_t nodes_
 

Detailed Description

template<class NODE_TYPE_DATA, class EDGE_TYPE>
class mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >

A tree with nodes being vehicle poses, and edges potential valid motion primitives between them.

This class provides storage for the nodes, and RRT* construction helper methods.

See base class mrpt::graphs::CDirectedTree for the API to access edges.

Changes history:

Member Typedef Documentation

◆ base_t

template<class NODE_TYPE_DATA, class EDGE_TYPE>
using mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::base_t = mrpt::graphs::CDirectedTree<EDGE_TYPE>

◆ edge_sequence_t

template<class NODE_TYPE_DATA, class EDGE_TYPE>
using mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::edge_sequence_t = std::list<edge_t*>

◆ edge_t

template<class NODE_TYPE_DATA, class EDGE_TYPE>
using mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::edge_t = EDGE_TYPE

◆ node_map_t

template<class NODE_TYPE_DATA, class EDGE_TYPE>
using mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::node_map_t = std::map<TNodeID, node_t>

Map: TNode_ID => Node info

◆ path_t

template<class NODE_TYPE_DATA, class EDGE_TYPE>
using mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::path_t = std::list<node_t>

A topological path up-tree.

Note
We use std::list since we need a container with push_front().

Member Function Documentation

◆ backtrack_path()

template<class NODE_TYPE_DATA, class EDGE_TYPE>
std::tuple<path_t, edge_sequence_t> mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::backtrack_path ( const TNodeID  target_node) const
inline

Builds the path (sequence of nodes, with info about next edge) up-tree from a target_node towards the root

  • path_t nodes are ordered in the direction ROOT -> start_node
  • ed

◆ edge_to_parent()

template<class NODE_TYPE_DATA, class EDGE_TYPE>
const EDGE_TYPE& mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::edge_to_parent ( const TNodeID  nodeId) const
inline

◆ insert_node_and_edge()

template<class NODE_TYPE_DATA, class EDGE_TYPE>
void mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::insert_node_and_edge ( const TNodeID  parentId,
const TNodeID  newChildId,
const NODE_TYPE_DATA &  newChildNodeData,
const EDGE_TYPE &  newEdgeData 
)
inline

◆ insert_root_node()

template<class NODE_TYPE_DATA, class EDGE_TYPE>
void mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::insert_root_node ( const TNodeID  node_id,
const NODE_TYPE_DATA &  node_data 
)
inline

Insert a node without edges (should be used only for a tree root node)

◆ next_free_node_ID()

template<class NODE_TYPE_DATA, class EDGE_TYPE>
TNodeID mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::next_free_node_ID ( ) const
inline

◆ node_state()

template<class NODE_TYPE_DATA, class EDGE_TYPE>
NODE_TYPE_DATA& mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::node_state ( const TNodeID  nodeId)
inline

Write-access to node data (use with caution)

◆ nodes()

template<class NODE_TYPE_DATA, class EDGE_TYPE>
const node_map_t& mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::nodes ( ) const
inline

read-only access to nodes.

See also
insert_node_and_edge, insert_node

◆ rewire_node_parent()

template<class NODE_TYPE_DATA, class EDGE_TYPE>
void mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::rewire_node_parent ( const TNodeID  nodeId,
const EDGE_TYPE &  newEdgeFromParent 
)
inline

◆ update_node_and_edge()

template<class NODE_TYPE_DATA, class EDGE_TYPE>
void mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::update_node_and_edge ( const TNodeID  parentId,
const TNodeID  childId,
const EDGE_TYPE &  newEdgeData 
)
inline

Member Data Documentation

◆ nodes_

template<class NODE_TYPE_DATA, class EDGE_TYPE>
node_map_t mpp::MotionPrimitivesTree< NODE_TYPE_DATA, EDGE_TYPE >::nodes_
private

Info per node


The documentation for this class was generated from the following file: