3#include <maps/grid/MLSMap.hpp>
9#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
10#include <CGAL/Polyhedron_3.h>
11#include <CGAL/Surface_mesh.h>
12#include <CGAL/convex_hull_3.h>
13#include <CGAL/Polygon_mesh_processing/intersection.h>
14#include <CGAL/Homogeneous.h>
15#include <CGAL/Aff_transformation_3.h>
22#include <CGAL/MP_Float.h>
23typedef CGAL::MP_Float
RT;
26typedef CGAL::Exact_predicates_inexact_constructions_kernel
K;
43 typedef maps::grid::MLSMapSloped
MLGrid;
47 typedef MLGrid::CellType
Cell;
50 typedef MLGrid::PatchType
Patch;
71 maps::grid::TraversabilityMap3d<TravGenNode*>
trMap;
72 maps::grid::TraversabilityMap3d<SoilNode*>
soilMap;
80 double computeSlope(
const Eigen::Hyperplane<
double,
int(3) >& plane)
const;
151 void setMLSGrid(std::shared_ptr<MLGrid> &grid);
157 const maps::grid::TraversabilityMap3d<SoilNode *> &
getSoilMap()
const;
CGAL::Homogeneous< RT >::Segment_3 Segment_3
Definition TraversabilityGenerator3d.hpp:31
K::Point_3 Point_3
Definition TraversabilityGenerator3d.hpp:28
CGAL::Aff_transformation_3< K > Transformation
Definition TraversabilityGenerator3d.hpp:32
CGAL::MP_Float RT
Definition TraversabilityGenerator3d.hpp:23
CGAL::Exact_predicates_inexact_constructions_kernel K
Definition TraversabilityGenerator3d.hpp:26
CGAL::Surface_mesh< Point_3 > Surface_mesh
Definition TraversabilityGenerator3d.hpp:29
Polyhedron_3::Vertex_const_iterator Vertex_const_iterator
Definition TraversabilityGenerator3d.hpp:30
K::Vector_3 Vector_3
Definition TraversabilityGenerator3d.hpp:33
CGAL::Polyhedron_3< K > Polyhedron_3
Definition TraversabilityGenerator3d.hpp:27
Definition SoilSample.hpp:24
Definition TraversabilityConfig.hpp:17
Definition TraversabilityGenerator3d.hpp:39
bool isNodeFreeOfObstacles(const traversability_generator3d::TravGenNode *node) const
Definition TraversabilityGenerator3d.cpp:1000
void expandAll(const std::vector< Eigen::Vector3d > &positions)
Definition TraversabilityGenerator3d.cpp:658
SoilNode * findMatchingSoilPatchAt(maps::grid::Index idx, const double curHeight) const
Definition TraversabilityGenerator3d.cpp:1326
TraversabilityConfig config
Definition TraversabilityGenerator3d.hpp:105
void clearSoilMap()
Definition TraversabilityGenerator3d.cpp:856
bool computePlaneRansac(TravGenNode &node)
Definition TraversabilityGenerator3d.cpp:126
bool getConnectedPatch(const maps::grid::Index &idx, double height, const Patch *&patch)
MLGrid::PatchType Patch
Definition TraversabilityGenerator3d.hpp:50
void setMLSGrid(std::shared_ptr< MLGrid > &grid)
Definition TraversabilityGenerator3d.cpp:822
const maps::grid::TraversabilityMap3d< SoilNode * > & getSoilMap() const
Definition TraversabilityGenerator3d.cpp:115
void inflateObstacles()
Definition TraversabilityGenerator3d.cpp:734
std::vector< TravGenNode * > obstacleNodesGrowList
Definition TraversabilityGenerator3d.hpp:69
void drawWireFrameBox(const Eigen::Vector3d &normal, const Eigen::Vector3d &position, const Eigen::Vector3d &size, const Eigen::Vector4d &colorRGBA)
Definition TraversabilityGenerator3d.cpp:383
SoilNode * generateStartSoilNode(const Eigen::Vector3d &startPos)
Definition TraversabilityGenerator3d.cpp:902
int currentSoilNodeId
Definition TraversabilityGenerator3d.hpp:75
Transformation generateTransform(const Eigen::Vector3d &normal, const Eigen::Vector3d &translation)
Definition TraversabilityGenerator3d.cpp:74
void setSoilType(SoilNode *node, SoilType soilType)
Definition TraversabilityGenerator3d.cpp:1349
void clearTrMap()
Definition TraversabilityGenerator3d.cpp:843
void setInitialPatch(const Eigen::Affine3d &ground2Mls, double patchRadius)
Definition TraversabilityGenerator3d.cpp:99
void updateSoilInformation()
Definition TraversabilityGenerator3d.cpp:1271
int getNumNodes() const
Definition TraversabilityGenerator3d.cpp:120
double computeSlope(const Eigen::Hyperplane< double, int(3) > &plane) const
Definition TraversabilityGenerator3d.cpp:345
double patchRadius
Definition TraversabilityGenerator3d.hpp:67
maps::grid::MLSMapSloped MLGrid
Definition TraversabilityGenerator3d.hpp:43
Eigen::Affine3d initialPatch2Mls
Definition TraversabilityGenerator3d.hpp:66
maps::grid::TraversabilityMap3d< TravGenNode * > trMap
Definition TraversabilityGenerator3d.hpp:71
void transformPolyhedron(Polyhedron_3 &polyhedron, const Transformation &transform)
Definition TraversabilityGenerator3d.cpp:69
bool checkStepHeightAABB(TravGenNode *node)
Definition TraversabilityGenerator3d.cpp:402
static bool checkForFrontier(const TravGenNode *node)
Definition TraversabilityGenerator3d.cpp:366
void addConnectedPatches(TravGenNode *node)
Definition TraversabilityGenerator3d.cpp:1131
Polyhedron_3 patchPolyhedron
Definition TraversabilityGenerator3d.hpp:56
SoilNode * createSoilPatchAt(maps::grid::Index idx, const double curHeight)
Definition TraversabilityGenerator3d.cpp:1258
virtual bool expandNode(TravGenNode *node)
Definition TraversabilityGenerator3d.cpp:929
Polyhedron_3 generatePolyhedron(const std::vector< Eigen::Vector3d > &points)
Definition TraversabilityGenerator3d.cpp:56
Polyhedron_3 createPolyhedronFromSurfacePatch(const maps::grid::SurfacePatch< maps::grid::MLSConfig::SLOPE > *p, const Eigen::Vector3d &position)
Definition TraversabilityGenerator3d.cpp:602
bool checkStepHeightOBB(TravGenNode *node)
Definition TraversabilityGenerator3d.cpp:487
virtual ~TraversabilityGenerator3d()
Definition TraversabilityGenerator3d.cpp:93
maps::grid::TraversabilityMap3d< SoilNode * > soilMap
Definition TraversabilityGenerator3d.hpp:72
void inflateFrontiers()
Definition TraversabilityGenerator3d.cpp:614
MLGrid::View View
Definition TraversabilityGenerator3d.hpp:48
const maps::grid::TraversabilityMap3d< TravGenNode * > & getTraversabilityMap() const
Definition TraversabilityGenerator3d.cpp:110
std::vector< Eigen::Vector3d > robotEdges
Definition TraversabilityGenerator3d.hpp:52
TravGenNode * findMatchingTraversabilityPatchAt(maps::grid::Index idx, const double curHeight) const
Definition TraversabilityGenerator3d.cpp:1109
bool addInitialPatch
Definition TraversabilityGenerator3d.hpp:65
View::CellType ViewCell
Definition TraversabilityGenerator3d.hpp:49
virtual TravGenNode * generateStartNode(const Eigen::Vector3d &startPos)
Definition TraversabilityGenerator3d.cpp:869
double patchHeight
Definition TraversabilityGenerator3d.hpp:57
Eigen::Vector3d computeSlopeDirection(const Eigen::Hyperplane< double, int(3) > &plane) const
Definition TraversabilityGenerator3d.cpp:353
std::shared_ptr< MLGrid > mlsGrid
Definition TraversabilityGenerator3d.hpp:64
double gaussian2D(double x, double y, double meanX, double meanY, double sigmaX, double sigmaY)
Definition TraversabilityGenerator3d.cpp:1354
bool computeAllowedOrientations(TravGenNode *node)
Definition TraversabilityGenerator3d.cpp:264
Polyhedron_3 robotPolyhedron
Definition TraversabilityGenerator3d.hpp:53
int currentNodeId
Definition TraversabilityGenerator3d.hpp:74
TravGenNode * createTraversabilityPatchAt(maps::grid::Index idx, const double curHeight)
Definition TraversabilityGenerator3d.cpp:1030
std::vector< TravGenNode * > frontierNodesGrowList
Definition TraversabilityGenerator3d.hpp:77
void setConfig(const TraversabilityConfig &config)
Definition TraversabilityGenerator3d.cpp:646
std::vector< Eigen::Vector3d > patchEdges
Definition TraversabilityGenerator3d.hpp:55
static double interpolate(double x, double x0, double y0, double x1, double y1)
Definition TraversabilityGenerator3d.cpp:338
bool addSoilNode(const SoilSample &sample)
Definition TraversabilityGenerator3d.cpp:1366
void addInitialPatchToMLS()
Definition TraversabilityGenerator3d.cpp:767
MLGrid::CellType Cell
Definition TraversabilityGenerator3d.hpp:47
Definition SoilNode.hpp:9
maps::grid::TraversabilityNode< TravGenTrackingData > TravGenNode
Definition TravGenNode.hpp:108
maps::grid::TraversabilityNode< SoilData > SoilNode
Definition SoilNode.hpp:76
SoilType
Definition SoilSample.hpp:9