Bayes Filters Library
EstimatesExtraction.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2019 Istituto Italiano di Tecnologia (IIT)
3  *
4  * This software may be modified and distributed under the terms of the
5  * BSD 3-Clause license. See the accompanying LICENSE file for details.
6  */
7 
8 #ifndef ESTIMATESEXTRACTION_H
9 #define ESTIMATESEXTRACTION_H
10 
11 #include <string>
12 #include <vector>
13 
14 #include <Eigen/Core>
15 
17 
18 namespace bfl {
19  class EstimatesExtraction;
20 }
21 
22 
24 {
25 public:
26  EstimatesExtraction(const std::size_t linear_size) noexcept;
27 
28  EstimatesExtraction(const std::size_t linear_size, const std::size_t circular_size) noexcept;
29 
30  EstimatesExtraction(EstimatesExtraction&& estimate_extraction) noexcept;
31 
32  EstimatesExtraction& operator=(EstimatesExtraction&& estimate_extraction) noexcept;
33 
34  ~EstimatesExtraction() noexcept =default;
35 
36  enum class ExtractionMethod
37  {
38  mean, smean, wmean, emean,
39  mode, smode, wmode, emode,
40  map, smap, wmap, emap
41  };
42 
43  bool setMethod(const ExtractionMethod& extraction_method);
44 
45  bool setMobileAverageWindowSize(const int window);
46 
47  std::pair<bool, Eigen::VectorXd> extract(const Eigen::Ref<const Eigen::MatrixXd>& particles, const Eigen::Ref<const Eigen::VectorXd>& weights);
48 
49  std::pair<bool, Eigen::VectorXd> extract(const Eigen::Ref<const Eigen::MatrixXd>& particles, const Eigen::Ref<const Eigen::VectorXd>& weights, const Eigen::Ref<const Eigen::VectorXd>& previous_weights, const Eigen::Ref<const Eigen::VectorXd>& likelihoods, const Eigen::Ref<const Eigen::MatrixXd>& transition_probabilities);
50 
51  bool clear();
52 
53  std::vector<std::string> getInfo() const;
54 
55 
56 protected:
58 
60 
61  Eigen::VectorXd sm_weights_;
62 
63  Eigen::VectorXd wm_weights_;
64 
65  Eigen::VectorXd em_weights_;
66 
67  enum class Statistics
68  {
69  mean,
70  mode,
71  map
72  };
73 
74  Eigen::VectorXd mean(const Eigen::Ref<const Eigen::MatrixXd>& particles, const Eigen::Ref<const Eigen::VectorXd>& weights) const;
75 
76  Eigen::VectorXd mode(const Eigen::Ref<const Eigen::MatrixXd>& particles, const Eigen::Ref<const Eigen::VectorXd>& weights) const;
77 
93  Eigen::VectorXd map(const Eigen::Ref<const Eigen::MatrixXd>& particles, const Eigen::Ref<const Eigen::VectorXd>& previous_weights, const Eigen::Ref<const Eigen::VectorXd>& likelihoods, const Eigen::Ref<const Eigen::MatrixXd>& transition_probabilities) const;
94 
95  Eigen::VectorXd simpleAverage(const Eigen::Ref<const Eigen::MatrixXd>& particles, const Eigen::Ref<const Eigen::VectorXd>& weights, const Eigen::Ref<const Eigen::VectorXd>& previous_weights, const Eigen::Ref<const Eigen::VectorXd>& likelihoods, const Eigen::Ref<const Eigen::MatrixXd>& transition_probabilities, const Statistics& base_est_ext);
96 
97  Eigen::VectorXd weightedAverage(const Eigen::Ref<const Eigen::MatrixXd>& particles, const Eigen::Ref<const Eigen::VectorXd>& weights, const Eigen::Ref<const Eigen::VectorXd>& previous_weights, const Eigen::Ref<const Eigen::VectorXd>& likelihoods, const Eigen::Ref<const Eigen::MatrixXd>& transition_probabilities, const Statistics& base_est_ext);
98 
99  Eigen::VectorXd exponentialAverage(const Eigen::Ref<const Eigen::MatrixXd>& particles, const Eigen::Ref<const Eigen::VectorXd>& weights, const Eigen::Ref<const Eigen::VectorXd>& previous_weights, const Eigen::Ref<const Eigen::VectorXd>& likelihoods, const Eigen::Ref<const Eigen::MatrixXd>& transition_probabilities, const Statistics& base_est_ext);
100 
101  std::size_t linear_size_;
102 
103  std::size_t circular_size_;
104 
105  std::size_t state_size_;
106 };
107 
108 #endif /* ESTIMATESEXTRACTION_H */
bfl::EstimatesExtraction::state_size_
std::size_t state_size_
Definition: EstimatesExtraction.h:105
bfl::EstimatesExtraction::Statistics
Statistics
Definition: EstimatesExtraction.h:67
bfl::EstimatesExtraction::Statistics::map
@ map
bfl::EstimatesExtraction::circular_size_
std::size_t circular_size_
Definition: EstimatesExtraction.h:103
bfl::EstimatesExtraction::ExtractionMethod::smode
@ smode
bfl::EstimatesExtraction::EstimatesExtraction
EstimatesExtraction(const std::size_t linear_size) noexcept
Definition: EstimatesExtraction.cpp:16
bfl::EstimatesExtraction::operator=
EstimatesExtraction & operator=(EstimatesExtraction &&estimate_extraction) noexcept
Definition: EstimatesExtraction.cpp:43
bfl::EstimatesExtraction::simpleAverage
Eigen::VectorXd simpleAverage(const Eigen::Ref< const Eigen::MatrixXd > &particles, const Eigen::Ref< const Eigen::VectorXd > &weights, const Eigen::Ref< const Eigen::VectorXd > &previous_weights, const Eigen::Ref< const Eigen::VectorXd > &likelihoods, const Eigen::Ref< const Eigen::MatrixXd > &transition_probabilities, const Statistics &base_est_ext)
Definition: EstimatesExtraction.cpp:266
bfl::EstimatesExtraction::clear
bool clear()
Definition: EstimatesExtraction.cpp:181
bfl
Port of boost::any for C++11 compilers.
Definition: AdditiveMeasurementModel.h:13
bfl::EstimatesExtraction::exponentialAverage
Eigen::VectorXd exponentialAverage(const Eigen::Ref< const Eigen::MatrixXd > &particles, const Eigen::Ref< const Eigen::VectorXd > &weights, const Eigen::Ref< const Eigen::VectorXd > &previous_weights, const Eigen::Ref< const Eigen::VectorXd > &likelihoods, const Eigen::Ref< const Eigen::MatrixXd > &transition_probabilities, const Statistics &base_est_ext)
Definition: EstimatesExtraction.cpp:332
bfl::EstimatesExtraction::ExtractionMethod::wmap
@ wmap
bfl::EstimatesExtraction::getInfo
std::vector< std::string > getInfo() const
Definition: EstimatesExtraction.cpp:187
HistoryBuffer.h
bfl::EstimatesExtraction::linear_size_
std::size_t linear_size_
Definition: EstimatesExtraction.h:101
bfl::EstimatesExtraction::mode
Eigen::VectorXd mode(const Eigen::Ref< const Eigen::MatrixXd > &particles, const Eigen::Ref< const Eigen::VectorXd > &weights) const
bfl::EstimatesExtraction::sm_weights_
Eigen::VectorXd sm_weights_
Definition: EstimatesExtraction.h:61
bfl::EstimatesExtraction::ExtractionMethod::emode
@ emode
bfl::EstimatesExtraction::Statistics::mode
@ mode
bfl::EstimatesExtraction::mean
Eigen::VectorXd mean(const Eigen::Ref< const Eigen::MatrixXd > &particles, const Eigen::Ref< const Eigen::VectorXd > &weights) const
bfl::EstimatesExtraction::ExtractionMethod::mean
@ mean
bfl::HistoryBuffer
Definition: HistoryBuffer.h:20
bfl::EstimatesExtraction::ExtractionMethod::wmode
@ wmode
bfl::EstimatesExtraction::ExtractionMethod::smap
@ smap
bfl::EstimatesExtraction::ExtractionMethod
ExtractionMethod
Definition: EstimatesExtraction.h:36
bfl::EstimatesExtraction::extraction_method_
ExtractionMethod extraction_method_
Definition: EstimatesExtraction.h:57
bfl::EstimatesExtraction::ExtractionMethod::mode
@ mode
bfl::EstimatesExtraction::setMethod
bool setMethod(const ExtractionMethod &extraction_method)
Definition: EstimatesExtraction.cpp:65
bfl::EstimatesExtraction::map
Eigen::VectorXd map(const Eigen::Ref< const Eigen::MatrixXd > &particles, const Eigen::Ref< const Eigen::VectorXd > &previous_weights, const Eigen::Ref< const Eigen::VectorXd > &likelihoods, const Eigen::Ref< const Eigen::MatrixXd > &transition_probabilities) const
Return an approximatation of the MAP (maximum a posteriori) estimate from a running particle filter.
bfl::EstimatesExtraction::Statistics::mean
@ mean
bfl::EstimatesExtraction::ExtractionMethod::wmean
@ wmean
bfl::EstimatesExtraction::ExtractionMethod::smean
@ smean
bfl::EstimatesExtraction::weightedAverage
Eigen::VectorXd weightedAverage(const Eigen::Ref< const Eigen::MatrixXd > &particles, const Eigen::Ref< const Eigen::VectorXd > &weights, const Eigen::Ref< const Eigen::VectorXd > &previous_weights, const Eigen::Ref< const Eigen::VectorXd > &likelihoods, const Eigen::Ref< const Eigen::MatrixXd > &transition_probabilities, const Statistics &base_est_ext)
Definition: EstimatesExtraction.cpp:296
bfl::EstimatesExtraction::ExtractionMethod::emean
@ emean
bfl::EstimatesExtraction::extract
std::pair< bool, Eigen::VectorXd > extract(const Eigen::Ref< const Eigen::MatrixXd > &particles, const Eigen::Ref< const Eigen::VectorXd > &weights)
bfl::EstimatesExtraction::hist_buffer_
HistoryBuffer hist_buffer_
Definition: EstimatesExtraction.h:59
bfl::EstimatesExtraction::wm_weights_
Eigen::VectorXd wm_weights_
Definition: EstimatesExtraction.h:63
bfl::EstimatesExtraction::setMobileAverageWindowSize
bool setMobileAverageWindowSize(const int window)
Definition: EstimatesExtraction.cpp:73
bfl::EstimatesExtraction::~EstimatesExtraction
~EstimatesExtraction() noexcept=default
bfl::EstimatesExtraction::ExtractionMethod::map
@ map
bfl::EstimatesExtraction::em_weights_
Eigen::VectorXd em_weights_
Definition: EstimatesExtraction.h:65
bfl::EstimatesExtraction::ExtractionMethod::emap
@ emap
bfl::EstimatesExtraction
Definition: EstimatesExtraction.h:23