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


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