ros1_parsers/pose_msg.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <geometry_msgs/Pose.h>
4 #include <geometry_msgs/PoseStamped.h>
5 #include <geometry_msgs/PoseWithCovariance.h>
6 #include <geometry_msgs/PoseWithCovarianceStamped.h>
7 #include "covariance_util.h"
8 #include "quaternion_msg.h"
9 #include "ros1_parser.h"
10 #include "header_msg.h"
11 
12 class PoseMsgParser : public BuiltinMessageParser<geometry_msgs::Pose>
13 {
14 public:
15  PoseMsgParser(const std::string& topic_name, PJ::PlotDataMapRef& plot_data)
16  : BuiltinMessageParser<geometry_msgs::Pose>(topic_name, plot_data)
17  , _quat_parser(topic_name + "/orientation", plot_data)
18  {
19  }
20 
21  void parseMessageImpl(const geometry_msgs::Pose& msg, double& timestamp) override
22  {
23  if( !_initialized )
24  {
25  _initialized = true;
26  _data.push_back(&getSeries(_topic_name + "/position/x"));
27  _data.push_back(&getSeries(_topic_name + "/position/y"));
28  _data.push_back(&getSeries(_topic_name + "/position/z"));
29  }
30 
31  _data[0]->pushBack({ timestamp, msg.position.x });
32  _data[1]->pushBack({ timestamp, msg.position.y });
33  _data[2]->pushBack({ timestamp, msg.position.z });
34 
35  _quat_parser.parseMessageImpl(msg.orientation, timestamp);
36  }
37 
38 private:
40  std::vector<PJ::PlotData*> _data;
41  bool _initialized = false;
42 };
43 
44 class PoseStampedMsgParser : public BuiltinMessageParser<geometry_msgs::PoseStamped>
45 {
46 public:
47  PoseStampedMsgParser(const std::string& topic_name, PJ::PlotDataMapRef& plot_data)
48  : BuiltinMessageParser<geometry_msgs::PoseStamped>(topic_name, plot_data)
49  , _header_parser(topic_name + "/header", plot_data)
50  , _pose_parser(topic_name + "/pose", plot_data)
51  {
52  }
53 
54  void parseMessageImpl(const geometry_msgs::PoseStamped& msg, double& timestamp) override
55  {
56  _header_parser.parse(msg.header, timestamp, _config.use_header_stamp);
57  _pose_parser.parseMessageImpl(msg.pose, timestamp);
58  }
59 
60 private:
63  std::vector<PJ::PlotData*> _data;
64 };
65 
67  : public BuiltinMessageParser<geometry_msgs::PoseWithCovariance>
68 {
69 public:
70  PoseCovarianceMsgParser(const std::string& topic_name, PJ::PlotDataMapRef& plot_data)
71  : BuiltinMessageParser<geometry_msgs::PoseWithCovariance>(topic_name, plot_data)
72  , _pose_parser(topic_name + "/pose", plot_data)
73  , _covariance(topic_name + "/covariance", plot_data)
74  {
75  }
76 
77  void parseMessageImpl(const geometry_msgs::PoseWithCovariance& msg, double& timestamp) override
78  {
79  _pose_parser.parseMessageImpl(msg.pose, timestamp);
80  _covariance.parse(msg.covariance, timestamp);
81  }
82 
83 private:
86 };
87 
88 class PoseCovarianceStampedMsgParser : public BuiltinMessageParser<geometry_msgs::PoseWithCovarianceStamped>
89 {
90 public:
91  PoseCovarianceStampedMsgParser(const std::string& topic_name, PJ::PlotDataMapRef& plot_data)
92  : BuiltinMessageParser<geometry_msgs::PoseWithCovarianceStamped>(topic_name, plot_data)
93  , _header_parser(topic_name + "/header", plot_data)
94  , _pose_cov_parser(topic_name + "/pose", plot_data)
95  {
96  }
97 
98  void parseMessageImpl(const geometry_msgs::PoseWithCovarianceStamped& msg, double& timestamp) override
99  {
100  _header_parser.parse(msg.header, timestamp, _config.use_header_stamp);
101  _pose_cov_parser.parseMessageImpl(msg.pose, timestamp);
102  }
103 
104 private:
107 };
void parseMessageImpl(const geometry_msgs::Quaternion &msg, double &timestamp) override
void parseMessageImpl(const geometry_msgs::PoseWithCovariance &msg, double &timestamp) override
PoseCovarianceMsgParser _pose_cov_parser
std::vector< PJ::PlotData * > _data
HeaderMsgParser _header_parser
PJ::PlotData & getSeries(const std::string &key)
QuaternionMsgParser _quat_parser
PoseMsgParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
PoseCovarianceStampedMsgParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
PoseStampedMsgParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
PoseCovarianceMsgParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
void parseMessageImpl(const geometry_msgs::PoseWithCovarianceStamped &msg, double &timestamp) override
void parseMessageImpl(const geometry_msgs::Pose &msg, double &timestamp) override
void parseMessageImpl(const geometry_msgs::PoseStamped &msg, double &timestamp) override
std::vector< PJ::PlotData * > _data
CovarianceParser< 6 > _covariance
std::string _topic_name


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