00001 #ifndef DATALOAD_ROS_H 00002 #define DATALOAD_ROS_H 00003 00004 #include <QObject> 00005 #include <QtPlugin> 00006 00007 #include <ros/ros.h> 00008 #include <rosbag/bag.h> 00009 00010 #include "PlotJuggler/dataloader_base.h" 00011 #include "../dialog_select_ros_topics.h" 00012 #include "../RosMsgParsers/ros_parser.h" 00013 00014 class DataLoadROS: public DataLoader 00015 { 00016 Q_OBJECT 00017 Q_PLUGIN_METADATA(IID "com.icarustechnology.PlotJuggler.DataLoader" "../dataloader.json") 00018 Q_INTERFACES(DataLoader) 00019 00020 public: 00021 DataLoadROS(); 00022 00023 virtual const std::vector<const char*>& compatibleFileExtensions() const override; 00024 00025 virtual bool readDataFromFile(FileLoadInfo* fileload_info, PlotDataMapRef& destination) override; 00026 00027 virtual const char* name() const override { return "DataLoad ROS bags"; } 00028 00029 virtual ~DataLoadROS() override; 00030 00031 virtual bool xmlSaveState(QDomDocument &doc, QDomElement &parent_element) const override; 00032 00033 virtual bool xmlLoadState(const QDomElement &parent_element ) override; 00034 00035 protected: 00036 void loadSubstitutionRule(QStringList all_topic_names); 00037 std::shared_ptr<rosbag::Bag> _bag; 00038 00039 private: 00040 RosMessageParser _ros_parser; 00041 00042 std::vector<const char*> _extensions; 00043 00044 DialogSelectRosTopics::Configuration _config; 00045 00046 std::vector<std::pair<QString, QString>> getAndRegisterAllTopics(); 00047 00048 void saveDefaultSettings(); 00049 00050 void loadDefaultSettings(); 00051 }; 00052 00053 #endif // DATALOAD_CSV_H