ros1_parsers/covariance_util.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "fmt/format.h"
4 #include "ros1_parser.h"
5 
6 template <size_t N>
8 {
9 public:
10  CovarianceParser(const std::string& prefix, PJ::PlotDataMapRef& plot_data)
11  {
12  auto plot_data_ptr = &plot_data;
13  _lazy_init = [=]()
14  {
15  for (int i = 0; i < N; i++)
16  {
17  for (int j = i; j < N; j++)
18  {
19  auto key = fmt::format("{}[{};{}]", prefix, i, j);
20  _data.push_back( &plot_data_ptr->getOrCreateNumeric(key) );
21  }
22  }
23  };
24  }
25 
26  void parse(const boost::array<double, N * N>& covariance, double& timestamp)
27  {
28  if( !_initialized )
29  {
30  _initialized = true;
31  _lazy_init();
32  }
33 
34  size_t index = 0;
35  for (int i = 0; i < N; i++)
36  {
37  for (int j = i; j < N; j++)
38  {
39  _data[index++]->pushBack({ timestamp, covariance[i * N + j] });
40  }
41  }
42  }
43 
44 private:
45  std::vector<PJ::PlotData*> _data;
46  std::function<void()> _lazy_init;
47  bool _initialized = false;
48 };
std::function< void()> _lazy_init
void parse(const boost::array< double, N *N > &covariance, double &timestamp)
std::size_t index
FMT_INLINE std::basic_string< Char > format(const S &format_str, Args &&... args)
Definition: core.h:2081
size_t & i
CovarianceParser(const std::string &prefix, PJ::PlotDataMapRef &plot_data)
std::vector< PJ::PlotData * > _data


plotjuggler_ros
Author(s): Davide Faconti
autogenerated on Fri Jun 23 2023 02:28:03