ros2_parsers/jointstates_msg.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <sensor_msgs/msg/joint_state.hpp>
4 #include "ros2_parser.h"
5 #include "header_msg.h"
6 
7 class JointStateMsgParser : public BuiltinMessageParser<sensor_msgs::msg::JointState>
8 {
9 public:
10  JointStateMsgParser(const std::string& topic_name, PJ::PlotDataMapRef& plot_data)
11  : BuiltinMessageParser<sensor_msgs::msg::JointState>(topic_name, plot_data)
12  , _header_parser(topic_name + "/header", plot_data)
13  {
14  }
15 
16  void parseMessageImpl(const sensor_msgs::msg::JointState& msg, double& timestamp) override
17  {
18  _header_parser.parse(msg.header, timestamp, _config.use_header_stamp);
19 
20  for (int i = 0; i < msg.name.size(); i++)
21  {
22  const std::string prefix = _topic_name + "/" + msg.name[i];
23 
24  if (msg.name.size() == msg.position.size())
25  {
26  auto& series = getSeries(prefix + "/position");
27  series.pushBack({ timestamp, msg.position[i] });
28  }
29 
30  if (msg.name.size() == msg.velocity.size())
31  {
32  auto& series = getSeries(prefix + "/velocity");
33  series.pushBack({ timestamp, msg.velocity[i] });
34  }
35 
36  if (msg.name.size() == msg.effort.size())
37  {
38  auto& series = getSeries(prefix + "/effort");
39  series.pushBack({ timestamp, msg.effort[i] });
40  }
41  }
42  }
43 
44 private:
45  std::vector<PJ::PlotData*> _data;
47 };
PJ::PlotData & getSeries(const std::string &key)
void parseMessageImpl(const sensor_msgs::msg::JointState &msg, double &timestamp) override
void parse(const std_msgs::Header &msg, double &timestamp, bool use_header_stamp)
JointStateMsgParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
size_t & i
std::vector< PJ::PlotData * > _data
std::string _topic_name
msg


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