traversability_generator3d
SoilNode.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 <iostream>
6#include "SoilSample.hpp"
7
9{
10const float PRIOR_PROB = 0.25;
11
14{
17
24
25 // Update probabilities for each terrain type
26 bool updateProbabilities(double likelihoodSand,
27 double likelihoodConcrete,
28 double likelihoodGravel,
29 double likelihoodRocks)
30 {
31
32 // Validate inputs
33 if (likelihoodSand < 0 || likelihoodConcrete < 0 ||
34 likelihoodGravel < 0 || likelihoodRocks < 0) {
35 std::cerr << "Error: Negative likelihoods provided!\n";
36 return false;
37 }
38
39 double evidence = likelihoodSand * probSand +
40 likelihoodConcrete * probConcrete +
41 likelihoodGravel * probGravel +
42 likelihoodRocks * probRocks;
43
44 if (evidence <= 1e-9) { // Prevent division by zero
45 std::cerr << "Error: Evidence is too small or zero.\n";
46 return false;
47 }
48
49 probSand = (likelihoodSand * probSand) / evidence;
50 probConcrete = (likelihoodConcrete * probConcrete) / evidence;
51 probGravel = (likelihoodGravel * probGravel) / evidence;
52 probRocks = (likelihoodRocks * probRocks) / evidence;
53
60 else
62
63 return true;
64 }
65
66 template<class Archive>
67 void serialize(Archive& ar, const unsigned int version) {
68 ar & probSand;
69 ar & probConcrete;
70 ar & probGravel;
71 ar & probRocks;
72 ar & soilType;
73 }
74};
75
76typedef maps::grid::TraversabilityNode<SoilData> SoilNode;
77typedef maps::grid::TraversabilityMap3d<SoilNode *> SoilMap3d;
78}
Definition SoilNode.hpp:9
maps::grid::TraversabilityMap3d< SoilNode * > SoilMap3d
Definition SoilNode.hpp:77
maps::grid::TraversabilityNode< SoilData > SoilNode
Definition SoilNode.hpp:76
const float PRIOR_PROB
Definition SoilNode.hpp:10
SoilType
Definition SoilSample.hpp:9
@ ROCKS
Definition SoilSample.hpp:12
@ SAND
Definition SoilSample.hpp:13
@ GRAVEL
Definition SoilSample.hpp:14
@ UNKNOWN_SOIL
Definition SoilSample.hpp:10
@ CONCRETE
Definition SoilSample.hpp:11
Definition SoilNode.hpp:14
void serialize(Archive &ar, const unsigned int version)
Definition SoilNode.hpp:67
double probGravel
Definition SoilNode.hpp:15
double probRocks
Definition SoilNode.hpp:15
bool updateProbabilities(double likelihoodSand, double likelihoodConcrete, double likelihoodGravel, double likelihoodRocks)
Definition SoilNode.hpp:26
SoilType soilType
Definition SoilNode.hpp:16
double probConcrete
Definition SoilNode.hpp:15
SoilData()
Definition SoilNode.hpp:18
double probSand
Definition SoilNode.hpp:15