ros1_parsers/plotjuggler_msgs.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <plotjuggler_msgs/Dictionary.h>
4 #include <plotjuggler_msgs/DataPoints.h>
5 #include "ros1_parser.h"
6 
7 static std::unordered_map<unsigned, std::vector<std::string>> _plotjuggler_msgs_dictionaries;
8 
9 class PlotJugglerDictionaryParser : public BuiltinMessageParser<plotjuggler_msgs::Dictionary>
10 {
11 public:
12  PlotJugglerDictionaryParser(const std::string& topic_name, PJ::PlotDataMapRef& plot_data)
13  : BuiltinMessageParser<plotjuggler_msgs::Dictionary>(topic_name, plot_data)
14  {
15  }
16 
17  void parseMessageImpl(const plotjuggler_msgs::Dictionary& msg, double& timestamp) override
18  {
19  _plotjuggler_msgs_dictionaries[msg.dictionary_uuid] = msg.names;
20  }
21 };
22 
23 //------------------------------------
24 class PlotJugglerDataPointsParser : public BuiltinMessageParser<plotjuggler_msgs::DataPoints>
25 {
26 public:
27  PlotJugglerDataPointsParser(const std::string& topic_name, PJ::PlotDataMapRef& plot_data)
28  : BuiltinMessageParser<plotjuggler_msgs::DataPoints>(topic_name, plot_data)
29  {
30  _prefix = topic_name + "/";
31  }
32 
33  void parseMessageImpl(const plotjuggler_msgs::DataPoints& msg, double& timestamp) override
34  {
35  auto it = _plotjuggler_msgs_dictionaries.find(msg.dictionary_uuid);
37  {
38  const auto& names = it->second;
39  for (const auto& sample : msg.samples)
40  {
41  auto& series = getSeries(_prefix + std::to_string(sample.name_index));
42  series.pushBack({ sample.stamp, sample.value });
43  }
44  }
45  else
46  {
47  const auto& names = it->second;
48  for (const auto& sample : msg.samples)
49  {
50  auto& series = getSeries(_prefix + names[sample.name_index]);
51  series.pushBack({ sample.stamp, sample.value });
52  }
53  }
54  }
55 
56 private:
57  std::string _prefix;
58 };
void parseMessageImpl(const plotjuggler_msgs::Dictionary &msg, double &timestamp) override
PJ::PlotData & getSeries(const std::string &key)
void parseMessageImpl(const plotjuggler_msgs::DataPoints &msg, double &timestamp) override
PlotJugglerDictionaryParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
static std::unordered_map< unsigned, std::vector< std::string > > _plotjuggler_msgs_dictionaries
iterator it
PlotJugglerDataPointsParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)


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