3 #include <tf2_msgs/msg/tf_message.hpp> 4 #include "fmt/format.h" 20 for (
const auto& trans : msg.transforms)
22 double header_stamp = double(trans.header.stamp.sec) +
23 double(trans.header.stamp.nanosec) * 1e-9;
27 if (trans.header.frame_id.empty())
37 series->
pushBack({ timestamp, header_stamp });
39 series = &
getSeries( prefix +
"/translation/x");
40 series->
pushBack({ timestamp, trans.transform.translation.x });
42 series = &
getSeries( prefix +
"/translation/y");
43 series->
pushBack({ timestamp, trans.transform.translation.y });
45 series = &
getSeries( prefix +
"/translation/z");
46 series->
pushBack({ timestamp, trans.transform.translation.z });
48 series = &
getSeries( prefix +
"/rotation/x");
49 series->
pushBack({ timestamp, trans.transform.rotation.x });
51 series = &
getSeries( prefix +
"/rotation/y");
52 series->
pushBack({ timestamp, trans.transform.rotation.y });
54 series = &
getSeries( prefix +
"/rotation/z");
55 series->
pushBack({ timestamp, trans.transform.rotation.z });
57 series = &
getSeries( prefix +
"/rotation/w");
58 series->
pushBack({ timestamp, trans.transform.rotation.w });
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
TfMsgParser(const std::string &topic_name, PJ::PlotDataMapRef &plot_data)
void parseMessageImpl(const tf2_msgs::msg::TFMessage &msg, double ×tamp) override