ros2_parsers/twist_msg.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <geometry_msgs/msg/twist.hpp>
4 #include <geometry_msgs/msg/twist_stamped.hpp>
5 #include <geometry_msgs/msg/twist_with_covariance.hpp>
6 #include "quaternion_msg.h"
7 #include "ros2_parser.h"
8 #include "header_msg.h"
9 
10 class TwistMsgParser : public BuiltinMessageParser<geometry_msgs::msg::Twist>
11 {
12  public:
13  TwistMsgParser(const std::string& topic_name, PJ::PlotDataMapRef& plot_data)
14  : BuiltinMessageParser<geometry_msgs::msg::Twist>(topic_name, plot_data)
15  {
16  }
17 
18  void parseMessageImpl(const geometry_msgs::msg::Twist& msg, double& timestamp) override
19  {
20  if( !_initialized )
21  {
22  _initialized = true;
23  _data.push_back(&getSeries(_topic_name + "/linear/x"));
24  _data.push_back(&getSeries(_topic_name + "/linear/y"));
25  _data.push_back(&getSeries(_topic_name + "/linear/z"));
26 
27  _data.push_back(&getSeries(_topic_name + "/angular/x"));
28  _data.push_back(&getSeries(_topic_name + "/angular/y"));
29  _data.push_back(&getSeries(_topic_name + "/angular/z"));
30  }
31 
32  _data[0]->pushBack({ timestamp, msg.linear.x });
33  _data[1]->pushBack({ timestamp, msg.linear.y });
34  _data[2]->pushBack({ timestamp, msg.linear.z });
35 
36  _data[3]->pushBack({ timestamp, msg.angular.x });
37  _data[4]->pushBack({ timestamp, msg.angular.y });
38  _data[5]->pushBack({ timestamp, msg.angular.z });
39  }
40 
41  private:
42  std::vector<PJ::PlotData*> _data;
43  bool _initialized = false;
44 };
45 
46 class TwistStampedMsgParser : public BuiltinMessageParser<geometry_msgs::msg::TwistStamped>
47 {
48  public:
49  TwistStampedMsgParser(const std::string& topic_name, PJ::PlotDataMapRef& plot_data)
50  : BuiltinMessageParser<geometry_msgs::msg::TwistStamped>(topic_name, plot_data)
51  , _header_parser(topic_name + "/header", plot_data)
52  , _twist_parser(topic_name + "/twist", plot_data)
53  {
54  }
55 
56  void parseMessageImpl(const geometry_msgs::msg::TwistStamped& msg, double& timestamp) override
57  {
58  _header_parser.parse(msg.header, timestamp, _config.use_header_stamp);
59  _twist_parser.parseMessageImpl(msg.twist, timestamp);
60  }
61 
62  private:
63  HeaderMsgParser _header_parser;
64  TwistMsgParser _twist_parser;
65 };
66 
67 class TwistCovarianceMsgParser : public BuiltinMessageParser<geometry_msgs::msg::TwistWithCovariance>
68 {
69  public:
70  TwistCovarianceMsgParser(const std::string& topic_name, PJ::PlotDataMapRef& plot_data)
71  : BuiltinMessageParser<geometry_msgs::msg::TwistWithCovariance>(topic_name, plot_data)
72  , _twist_parser(topic_name + "/twist", plot_data)
73  , _covariance(topic_name + "/covariance", plot_data)
74  {
75  }
76 
77  void parseMessageImpl(const geometry_msgs::msg::TwistWithCovariance& msg, double& timestamp) override
78  {
79  _twist_parser.parseMessageImpl(msg.twist, timestamp);
80  _covariance.parse(msg.covariance, timestamp);
81  }
82 
83  private:
84  TwistMsgParser _twist_parser;
85  CovarianceParser<6> _covariance;
86 };
void parseMessageImpl(const geometry_msgs::msg::Twist &msg, double &timestamp) override
TwistCovarianceMsgParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
void parseMessageImpl(const geometry_msgs::msg::TwistStamped &msg, double &timestamp) override
TwistStampedMsgParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
PJ::PlotData & getSeries(const std::string &key)
std::vector< PJ::PlotData * > _data
void parseMessageImpl(const geometry_msgs::msg::TwistWithCovariance &msg, double &timestamp) override
std::string _topic_name
TwistMsgParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
msg


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