traversability_generator3d
Public Types | Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
traversability_generator3d::TraversabilityGenerator3d Class Reference

#include <TraversabilityGenerator3d.hpp>

Public Types

typedef maps::grid::MLSMapSloped MLGrid
 

Public Member Functions

 TraversabilityGenerator3d (const TraversabilityConfig &config)
 
virtual ~TraversabilityGenerator3d ()
 
void clearTrMap ()
 
void clearSoilMap ()
 
void setInitialPatch (const Eigen::Affine3d &ground2Mls, double patchRadius)
 
void setSoilType (SoilNode *node, SoilType soilType)
 
bool addSoilNode (const SoilSample &sample)
 
double gaussian2D (double x, double y, double meanX, double meanY, double sigmaX, double sigmaY)
 
virtual TravGenNodegenerateStartNode (const Eigen::Vector3d &startPos)
 
TravGenNodefindMatchingTraversabilityPatchAt (maps::grid::Index idx, const double curHeight) const
 
SoilNodefindMatchingSoilPatchAt (maps::grid::Index idx, const double curHeight) const
 
void updateSoilInformation ()
 
void expandAll (const std::vector< Eigen::Vector3d > &positions)
 
void expandAll (const Eigen::Vector3d &startPos)
 
void expandAll (const Eigen::Vector3d &startPos, const double expandDist)
 
void expandAll (TravGenNode *startNode)
 
void expandAll (TravGenNode *startNode, const double expandDist)
 
virtual bool expandNode (TravGenNode *node)
 
void setMLSGrid (std::shared_ptr< MLGrid > &grid)
 
int getNumNodes () const
 
const maps::grid::TraversabilityMap3d< TravGenNode * > & getTraversabilityMap () const
 
const maps::grid::TraversabilityMap3d< SoilNode * > & getSoilMap () const
 
void addConnectedPatches (SoilNode *node)
 
void setConfig (const TraversabilityConfig &config)
 

Protected Types

typedef MLGrid::CellType Cell
 
typedef MLGrid::View View
 
typedef View::CellType ViewCell
 
typedef MLGrid::PatchType Patch
 

Protected Member Functions

Polyhedron_3 generatePolyhedron (const std::vector< Eigen::Vector3d > &points)
 
void transformPolyhedron (Polyhedron_3 &polyhedron, const Transformation &transform)
 
Transformation generateTransform (const Eigen::Vector3d &normal, const Eigen::Vector3d &translation)
 
Polyhedron_3 createPolyhedronFromSurfacePatch (const maps::grid::SurfacePatch< maps::grid::MLSConfig::SLOPE > *p, const Eigen::Vector3d &position)
 
void drawWireFrameBox (const Eigen::Vector3d &normal, const Eigen::Vector3d &position, const Eigen::Vector3d &size, const Eigen::Vector4d &colorRGBA)
 
bool computePlaneRansac (TravGenNode &node)
 
double computeSlope (const Eigen::Hyperplane< double, int(3) > &plane) const
 
Eigen::Vector3d computeSlopeDirection (const Eigen::Hyperplane< double, int(3) > &plane) const
 
bool checkStepHeightAABB (TravGenNode *node)
 
bool checkStepHeightOBB (TravGenNode *node)
 
bool computeAllowedOrientations (TravGenNode *node)
 
void addConnectedPatches (TravGenNode *node)
 
bool getConnectedPatch (const maps::grid::Index &idx, double height, const Patch *&patch)
 
bool isNodeFreeOfObstacles (const traversability_generator3d::TravGenNode *node) const
 
TravGenNodecreateTraversabilityPatchAt (maps::grid::Index idx, const double curHeight)
 
SoilNodecreateSoilPatchAt (maps::grid::Index idx, const double curHeight)
 
void inflateFrontiers ()
 
void inflateObstacles ()
 
void addInitialPatchToMLS ()
 
int intersections ()
 
SoilNodegenerateStartSoilNode (const Eigen::Vector3d &startPos)
 

Static Protected Member Functions

static bool checkForFrontier (const TravGenNode *node)
 
static double interpolate (double x, double x0, double y0, double x1, double y1)
 

Protected Attributes

std::vector< Eigen::Vector3d > robotEdges
 
Polyhedron_3 robotPolyhedron
 
std::vector< Eigen::Vector3d > patchEdges
 
Polyhedron_3 patchPolyhedron
 
double patchHeight
 
std::shared_ptr< MLGridmlsGrid
 
bool addInitialPatch
 
Eigen::Affine3d initialPatch2Mls
 
double patchRadius
 
std::vector< TravGenNode * > obstacleNodesGrowList
 
maps::grid::TraversabilityMap3d< TravGenNode * > trMap
 
maps::grid::TraversabilityMap3d< SoilNode * > soilMap
 
int currentNodeId = 0
 
int currentSoilNodeId = 0
 
std::vector< TravGenNode * > frontierNodesGrowList
 
TraversabilityConfig config
 

Member Typedef Documentation

◆ Cell

◆ MLGrid

◆ Patch

◆ View

◆ ViewCell

Constructor & Destructor Documentation

◆ TraversabilityGenerator3d()

traversability_generator3d::TraversabilityGenerator3d::TraversabilityGenerator3d ( const TraversabilityConfig config)

◆ ~TraversabilityGenerator3d()

traversability_generator3d::TraversabilityGenerator3d::~TraversabilityGenerator3d ( )
virtual

Member Function Documentation

◆ addConnectedPatches() [1/2]

void traversability_generator3d::TraversabilityGenerator3d::addConnectedPatches ( SoilNode node)

◆ addConnectedPatches() [2/2]

void traversability_generator3d::TraversabilityGenerator3d::addConnectedPatches ( TravGenNode node)
protected

◆ addInitialPatchToMLS()

void traversability_generator3d::TraversabilityGenerator3d::addInitialPatchToMLS ( )
protected

◆ addSoilNode()

bool traversability_generator3d::TraversabilityGenerator3d::addSoilNode ( const SoilSample sample)

◆ checkForFrontier()

bool traversability_generator3d::TraversabilityGenerator3d::checkForFrontier ( const TravGenNode node)
staticprotected

◆ checkStepHeightAABB()

bool traversability_generator3d::TraversabilityGenerator3d::checkStepHeightAABB ( TravGenNode node)
protected

What this method does: Check if any of the patches around node that the robot might stand on is higher than stepHeight. I.e. if any of the patches is so high that it would be inside the robots body.

◆ checkStepHeightOBB()

bool traversability_generator3d::TraversabilityGenerator3d::checkStepHeightOBB ( TravGenNode node)
protected

What this method does: Check if any of the patches within the robot OBB node come into collison with the robot.

◆ clearSoilMap()

void traversability_generator3d::TraversabilityGenerator3d::clearSoilMap ( )

◆ clearTrMap()

void traversability_generator3d::TraversabilityGenerator3d::clearTrMap ( )

◆ computeAllowedOrientations()

bool traversability_generator3d::TraversabilityGenerator3d::computeAllowedOrientations ( TravGenNode node)
protected
Returns
false if no allowed orientation was found (e.g. due to extreme slope)

◆ computePlaneRansac()

bool traversability_generator3d::TraversabilityGenerator3d::computePlaneRansac ( TravGenNode node)
protected

◆ computeSlope()

double traversability_generator3d::TraversabilityGenerator3d::computeSlope ( const Eigen::Hyperplane< double, int(3) > &  plane) const
protected

◆ computeSlopeDirection()

Eigen::Vector3d traversability_generator3d::TraversabilityGenerator3d::computeSlopeDirection ( const Eigen::Hyperplane< double, int(3) > &  plane) const
protected

The vector of maximum slope on a plane is the projection of (0,0,1) onto the plane. (0,0,1) is the steepest vector possible in the global frame, thus by projecting it onto the plane we get the steepest vector possible on that plane.

◆ createPolyhedronFromSurfacePatch()

Polyhedron_3 traversability_generator3d::TraversabilityGenerator3d::createPolyhedronFromSurfacePatch ( const maps::grid::SurfacePatch< maps::grid::MLSConfig::SLOPE > *  p,
const Eigen::Vector3d &  position 
)
protected

◆ createSoilPatchAt()

SoilNode * traversability_generator3d::TraversabilityGenerator3d::createSoilPatchAt ( maps::grid::Index  idx,
const double  curHeight 
)
protected

◆ createTraversabilityPatchAt()

TravGenNode * traversability_generator3d::TraversabilityGenerator3d::createTraversabilityPatchAt ( maps::grid::Index  idx,
const double  curHeight 
)
protected

◆ drawWireFrameBox()

void traversability_generator3d::TraversabilityGenerator3d::drawWireFrameBox ( const Eigen::Vector3d &  normal,
const Eigen::Vector3d &  position,
const Eigen::Vector3d &  size,
const Eigen::Vector4d &  colorRGBA 
)
protected

◆ expandAll() [1/5]

void traversability_generator3d::TraversabilityGenerator3d::expandAll ( const Eigen::Vector3d &  startPos)

◆ expandAll() [2/5]

void traversability_generator3d::TraversabilityGenerator3d::expandAll ( const Eigen::Vector3d &  startPos,
const double  expandDist 
)

Expands the map starting at startPos. Expansion will stop if a distance of expandDist is reached. I.e. this will expand all nodes in a circle of radius expandDist around startPos.

◆ expandAll() [3/5]

void traversability_generator3d::TraversabilityGenerator3d::expandAll ( const std::vector< Eigen::Vector3d > &  positions)

Expand the map starting from all given positions

◆ expandAll() [4/5]

void traversability_generator3d::TraversabilityGenerator3d::expandAll ( TravGenNode startNode)

◆ expandAll() [5/5]

void traversability_generator3d::TraversabilityGenerator3d::expandAll ( TravGenNode startNode,
const double  expandDist 
)
Parameters
expandDistHow far should the map be expanded? If negative the whole map will be expanded.

◆ expandNode()

bool traversability_generator3d::TraversabilityGenerator3d::expandNode ( TravGenNode node)
virtual

◆ findMatchingSoilPatchAt()

SoilNode * traversability_generator3d::TraversabilityGenerator3d::findMatchingSoilPatchAt ( maps::grid::Index  idx,
const double  curHeight 
) const

◆ findMatchingTraversabilityPatchAt()

TravGenNode * traversability_generator3d::TraversabilityGenerator3d::findMatchingTraversabilityPatchAt ( maps::grid::Index  idx,
const double  curHeight 
) const

◆ gaussian2D()

double traversability_generator3d::TraversabilityGenerator3d::gaussian2D ( double  x,
double  y,
double  meanX,
double  meanY,
double  sigmaX,
double  sigmaY 
)

◆ generatePolyhedron()

Polyhedron_3 traversability_generator3d::TraversabilityGenerator3d::generatePolyhedron ( const std::vector< Eigen::Vector3d > &  points)
protected

◆ generateStartNode()

TravGenNode * traversability_generator3d::TraversabilityGenerator3d::generateStartNode ( const Eigen::Vector3d &  startPos)
virtual

◆ generateStartSoilNode()

SoilNode * traversability_generator3d::TraversabilityGenerator3d::generateStartSoilNode ( const Eigen::Vector3d &  startPos)
protected

◆ generateTransform()

Transformation traversability_generator3d::TraversabilityGenerator3d::generateTransform ( const Eigen::Vector3d &  normal,
const Eigen::Vector3d &  translation 
)
protected

◆ getConnectedPatch()

bool traversability_generator3d::TraversabilityGenerator3d::getConnectedPatch ( const maps::grid::Index &  idx,
double  height,
const Patch *&  patch 
)
protected

◆ getNumNodes()

int traversability_generator3d::TraversabilityGenerator3d::getNumNodes ( ) const

Returns the number of nodes after expansion

◆ getSoilMap()

const maps::grid::TraversabilityMap3d< SoilNode * > & traversability_generator3d::TraversabilityGenerator3d::getSoilMap ( ) const

◆ getTraversabilityMap()

const maps::grid::TraversabilityMap3d< TravGenNode * > & traversability_generator3d::TraversabilityGenerator3d::getTraversabilityMap ( ) const

◆ inflateFrontiers()

void traversability_generator3d::TraversabilityGenerator3d::inflateFrontiers ( )
protected

◆ inflateObstacles()

void traversability_generator3d::TraversabilityGenerator3d::inflateObstacles ( )
protected

◆ interpolate()

double traversability_generator3d::TraversabilityGenerator3d::interpolate ( double  x,
double  x0,
double  y0,
double  x1,
double  y1 
)
staticprotected

◆ intersections()

int traversability_generator3d::TraversabilityGenerator3d::intersections ( )
protected

◆ isNodeFreeOfObstacles()

bool traversability_generator3d::TraversabilityGenerator3d::isNodeFreeOfObstacles ( const traversability_generator3d::TravGenNode node) const
protected

◆ setConfig()

void traversability_generator3d::TraversabilityGenerator3d::setConfig ( const TraversabilityConfig config)

◆ setInitialPatch()

void traversability_generator3d::TraversabilityGenerator3d::setInitialPatch ( const Eigen::Affine3d &  ground2Mls,
double  patchRadius 
)

◆ setMLSGrid()

void traversability_generator3d::TraversabilityGenerator3d::setMLSGrid ( std::shared_ptr< MLGrid > &  grid)

◆ setSoilType()

void traversability_generator3d::TraversabilityGenerator3d::setSoilType ( SoilNode node,
SoilType  soilType 
)

◆ transformPolyhedron()

void traversability_generator3d::TraversabilityGenerator3d::transformPolyhedron ( Polyhedron_3 polyhedron,
const Transformation transform 
)
protected

◆ updateSoilInformation()

void traversability_generator3d::TraversabilityGenerator3d::updateSoilInformation ( )

Member Data Documentation

◆ addInitialPatch

bool traversability_generator3d::TraversabilityGenerator3d::addInitialPatch
protected

◆ config

TraversabilityConfig traversability_generator3d::TraversabilityGenerator3d::config
protected

◆ currentNodeId

int traversability_generator3d::TraversabilityGenerator3d::currentNodeId = 0
protected

◆ currentSoilNodeId

int traversability_generator3d::TraversabilityGenerator3d::currentSoilNodeId = 0
protected

◆ frontierNodesGrowList

std::vector<TravGenNode *> traversability_generator3d::TraversabilityGenerator3d::frontierNodesGrowList
protected

◆ initialPatch2Mls

Eigen::Affine3d traversability_generator3d::TraversabilityGenerator3d::initialPatch2Mls
protected

◆ mlsGrid

std::shared_ptr<MLGrid > traversability_generator3d::TraversabilityGenerator3d::mlsGrid
protected

◆ obstacleNodesGrowList

std::vector<TravGenNode*> traversability_generator3d::TraversabilityGenerator3d::obstacleNodesGrowList
protected

◆ patchEdges

std::vector<Eigen::Vector3d> traversability_generator3d::TraversabilityGenerator3d::patchEdges
protected

◆ patchHeight

double traversability_generator3d::TraversabilityGenerator3d::patchHeight
protected

◆ patchPolyhedron

Polyhedron_3 traversability_generator3d::TraversabilityGenerator3d::patchPolyhedron
protected

◆ patchRadius

double traversability_generator3d::TraversabilityGenerator3d::patchRadius
protected

◆ robotEdges

std::vector<Eigen::Vector3d> traversability_generator3d::TraversabilityGenerator3d::robotEdges
protected

◆ robotPolyhedron

Polyhedron_3 traversability_generator3d::TraversabilityGenerator3d::robotPolyhedron
protected

◆ soilMap

maps::grid::TraversabilityMap3d<SoilNode*> traversability_generator3d::TraversabilityGenerator3d::soilMap
protected

◆ trMap

maps::grid::TraversabilityMap3d<TravGenNode*> traversability_generator3d::TraversabilityGenerator3d::trMap
protected

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