3 #include <tf/tfMessage.h> 4 #include <tf2_msgs/TFMessage.h> 5 #include "fmt/format.h" 9 template <
typename TfMsgType>
15 using MessageParser::getSeries;
16 using MessageParser::getStringSeries;
25 for (
const auto& trans : msg.transforms)
27 double header_stamp = trans.header.stamp.toSec();
31 if (trans.header.frame_id.empty())
39 trans.header.frame_id,
40 trans.child_frame_id);
45 series = &
getSeries(prefix +
"/header/stamp");
46 series->
pushBack({ timestamp, header_stamp });
48 series = &
getSeries(prefix +
"/header/seq");
49 series->
pushBack({ timestamp, double(trans.header.seq) });
51 series = &
getSeries(prefix +
"/translation/x");
52 series->
pushBack({ timestamp, trans.transform.translation.x });
54 series = &
getSeries(prefix +
"/translation/y");
55 series->
pushBack({ timestamp, trans.transform.translation.y });
57 series = &
getSeries(prefix +
"/translation/z");
58 series->
pushBack({ timestamp, trans.transform.translation.z });
60 series = &
getSeries(prefix +
"/rotation/x");
61 series->
pushBack({ timestamp, trans.transform.rotation.x });
63 series = &
getSeries(prefix +
"/rotation/y");
64 series->
pushBack({ timestamp, trans.transform.rotation.y });
66 series = &
getSeries(prefix +
"/rotation/z");
67 series->
pushBack({ timestamp, trans.transform.rotation.z });
69 series = &
getSeries(prefix +
"/rotation/w");
70 series->
pushBack({ timestamp, trans.transform.rotation.w });
void parseMessageImpl(const TfMsgType &msg, double ×tamp) override
PJ::PlotData & getSeries(const std::string &key)
FMT_INLINE std::basic_string< Char > format(const S &format_str, Args &&... args)
void pushBack(const Point &p) override
TfMsgParserImpl(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
const RosParserConfig & getConfig() const