ros2_parsers/plotjuggler_msgs.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "plotjuggler_msgs/msg/dictionary.hpp"
4 #include "plotjuggler_msgs/msg/data_points.hpp"
5 #include "ros2_parser.h"
6 
7 static std::unordered_map<unsigned, std::vector<std::string>> _plotjuggler_msgs_dictionaries;
8 
9 class PlotJugglerDictionaryParser : public BuiltinMessageParser<plotjuggler_msgs::msg::Dictionary>
10 {
11 public:
12  PlotJugglerDictionaryParser(const std::string& topic_name, PJ::PlotDataMapRef& plot_data)
13  : BuiltinMessageParser<plotjuggler_msgs::msg::Dictionary>(topic_name, plot_data)
14  {
15  }
16 
18  {
19  }
20 
21  void parseMessageImpl(const plotjuggler_msgs::msg::Dictionary& msg, double& timestamp) override
22  {
23  _plotjuggler_msgs_dictionaries[msg.dictionary_uuid] = msg.names;
24  }
25 };
26 
27 //------------------------------------
28 class PlotJugglerDataPointsParser : public BuiltinMessageParser<plotjuggler_msgs::msg::DataPoints>
29 {
30 public:
31  PlotJugglerDataPointsParser(const std::string& topic_name, PJ::PlotDataMapRef& plot_data)
32  : BuiltinMessageParser<plotjuggler_msgs::msg::DataPoints>(topic_name, plot_data)
33  {
34  _prefix = topic_name + "/";
35  }
36 
38  {
39  }
40 
41  void parseMessageImpl(const plotjuggler_msgs::msg::DataPoints& msg, double& timestamp) override
42  {
43  auto it = _plotjuggler_msgs_dictionaries.find(msg.dictionary_uuid);
45  {
46  // const auto& names = it->second;
47  // for( const auto& sample: msg.samples)
48  // {
49  // auto& series = getSeries(_plot_data, _prefix + std::to_string(sample.name_index));
50  // series.pushBack( {sample.stamp, sample.value} );
51  // }
52  // just skip... ?
53  }
54  else
55  {
56  const auto& names = it->second;
57  for (const auto& sample : msg.samples)
58  {
59  auto& series = _plot_data.getOrCreateNumeric( _prefix + names[sample.name_index]);
60  series.pushBack({ sample.stamp, sample.value });
61  }
62  }
63  }
64 
65 private:
66  std::string _prefix;
67 };
PlotData & getOrCreateNumeric(const std::string &name, PlotGroup::Ptr group={})
virtual void setMaxArrayPolicy(Ros2Introspection::MaxArrayPolicy, size_t)
static std::unordered_map< unsigned, std::vector< std::string > > _plotjuggler_msgs_dictionaries
PlotDataMapRef & _plot_data
void parseMessageImpl(const plotjuggler_msgs::msg::DataPoints &msg, double &timestamp) override
PlotJugglerDictionaryParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
virtual void setMaxArrayPolicy(Ros2Introspection::MaxArrayPolicy, size_t)
iterator it
void pushBack(const Point &p) override
PlotJugglerDataPointsParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
void parseMessageImpl(const plotjuggler_msgs::msg::Dictionary &msg, double &timestamp) override
msg


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