traversability_generator3d
TravGenNode.hpp
Go to the documentation of this file.
1#pragma once
2#include <base/Eigen.hpp>
3#include <maps/grid/TraversabilityMap3d.hpp>
4#include <boost/serialization/serialization.hpp>
5#include <base/Angle.hpp>
6
8 template<class Archive>
9 inline void serialize(Archive & ar, base::AngleSegment & segment, const unsigned int version){
10 ar & segment.width;
11 ar & segment.startRad;
12 ar & segment.endRad;
13 }
14}
15
17{
18
30
33{
35 Eigen::Hyperplane<double, 3> plane;
36
38 double slope;
39
41 Eigen::Vector3d slopeDirection;
42
46
48 size_t id;
49
52 std::vector<base::AngleSegment> allowedOrientations;
53
55
56 int cost;
57
59 template<class Archive>
60 void serialize(Archive & ar, const unsigned int version)
61 {
62 ar & plane.offset();
63 ar & plane.normal().x();
64 ar & plane.normal().y();
65 ar & plane.normal().z();
66 ar & slope;
67 ar & slopeDirection.x();
68 ar & slopeDirection.y();
69 ar & slopeDirection.z();
71 ar & id;
73 ar & nodeType;
74 ar & cost;
75 }
76};
77
78// Inline operator<< to print NodeType as a string
79inline std::ostream& operator<<(std::ostream& os, NodeType type)
80{
81 switch (type)
82 {
83 case NodeType::OBSTACLE: os << "OBSTACLE"; break;
84 case NodeType::TRAVERSABLE: os << "TRAVERSABLE"; break;
85 case NodeType::FRONTIER: os << "FRONTIER"; break;
86 case NodeType::INFLATED_OBSTACLE: os << "INFLATED_OBSTACLE"; break;
87 case NodeType::INFLATED_FRONTIER: os << "INFLATED_FRONTIER"; break;
88 case NodeType::UNKNOWN: os << "UNKNOWN"; break;
89 case NodeType::HOLE: os << "HOLE"; break;
90 case NodeType::UNSET: os << "UNSET"; break;
91 default: os << "INVALID_NODE_TYPE"; break;
92 }
93 return os;
94}
95
96// Inline operator== for NodeType
98{
99 return static_cast<int>(lhs) == static_cast<int>(rhs);
100}
101
102// Inline operator== for NodeType
103inline bool operator==(NodeType lhs, int rhs)
104{
105 return (static_cast<int>(lhs) == rhs);
106}
107
108typedef maps::grid::TraversabilityNode<TravGenTrackingData> TravGenNode;
109typedef maps::grid::TraversabilityMap3d<TravGenNode *> TravMap3d;
110
111}
CGAL::Polyhedron_3< K > Polyhedron_3
Definition TraversabilityGenerator3d.hpp:27
Definition TravGenNode.hpp:7
void serialize(Archive &ar, base::AngleSegment &segment, const unsigned int version)
Definition TravGenNode.hpp:9
Definition SoilNode.hpp:9
bool operator==(NodeType lhs, NodeType rhs)
Definition TravGenNode.hpp:97
maps::grid::TraversabilityMap3d< TravGenNode * > TravMap3d
Definition TravGenNode.hpp:109
std::ostream & operator<<(std::ostream &os, NodeType type)
Definition TravGenNode.hpp:79
maps::grid::TraversabilityNode< TravGenTrackingData > TravGenNode
Definition TravGenNode.hpp:108
NodeType
Definition TravGenNode.hpp:20
@ INFLATED_OBSTACLE
Definition TravGenNode.hpp:24
@ OBSTACLE
Definition TravGenNode.hpp:21
@ UNSET
Definition TravGenNode.hpp:28
@ HOLE
Definition TravGenNode.hpp:27
@ TRAVERSABLE
Definition TravGenNode.hpp:22
@ FRONTIER
Definition TravGenNode.hpp:23
@ UNKNOWN
Definition TravGenNode.hpp:26
@ INFLATED_FRONTIER
Definition TravGenNode.hpp:25
double slopeDirectionAtan2
Definition TravGenNode.hpp:45
int cost
Definition TravGenNode.hpp:56
void serialize(Archive &ar, const unsigned int version)
Definition TravGenNode.hpp:60
size_t id
Definition TravGenNode.hpp:48
NodeType nodeType
Definition TravGenNode.hpp:54
double slope
Definition TravGenNode.hpp:38
Eigen::Hyperplane< double, 3 > plane
Definition TravGenNode.hpp:35
Eigen::Vector3d slopeDirection
Definition TravGenNode.hpp:41
std::vector< base::AngleSegment > allowedOrientations
Definition TravGenNode.hpp:52