textured_marker_plugin.h
Go to the documentation of this file.
1 // *****************************************************************************
2 //
3 // Copyright (c) 2014, Southwest Research Institute® (SwRI®)
4 // All rights reserved.
5 //
6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are met:
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright
11 // notice, this list of conditions and the following disclaimer in the
12 // documentation and/or other materials provided with the distribution.
13 // * Neither the name of Southwest Research Institute® (SwRI®) nor the
14 // names of its contributors may be used to endorse or promote products
15 // derived from this software without specific prior written permission.
16 //
17 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 // ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
21 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 //
28 // *****************************************************************************
29 
30 #ifndef MAPVIZ_PLUGINS_TEXTURED_MARKER_PLUGIN_H_
31 #define MAPVIZ_PLUGINS_TEXTURED_MARKER_PLUGIN_H_
32 
33 // C++ standard libraries
34 #include <string>
35 #include <list>
36 #include <map>
37 
38 #include <mapviz/mapviz_plugin.h>
39 
40 // QT libraries
41 #include <QGLWidget>
42 #include <QObject>
43 #include <QWidget>
44 #include <QColor>
45 
46 #include <opencv2/core/core.hpp>
47 
48 // ROS libraries
49 #include <ros/ros.h>
50 #include <tf/transform_datatypes.h>
51 #include <marti_visualization_msgs/TexturedMarker.h>
52 #include <marti_visualization_msgs/TexturedMarkerArray.h>
53 
54 
55 #include <mapviz/map_canvas.h>
56 
57 // QT autogenerated files
58 #include "ui_textured_marker_config.h"
59 
60 Q_DECLARE_METATYPE(marti_visualization_msgs::TexturedMarkerConstPtr);
61 Q_DECLARE_METATYPE(marti_visualization_msgs::TexturedMarkerArrayConstPtr);
62 
63 namespace mapviz_plugins
64 {
66  {
67  Q_OBJECT
68 
69  public:
71  virtual ~TexturedMarkerPlugin();
72 
73  bool Initialize(QGLWidget* canvas);
74  void Shutdown() {}
75 
76  void Draw(double x, double y, double scale);
77 
78  void Transform();
79 
80  void LoadConfig(const YAML::Node& node, const std::string& path);
81  void SaveConfig(YAML::Emitter& emitter, const std::string& path);
82 
83  QWidget* GetConfigWidget(QWidget* parent);
84 
85  Q_SIGNALS:
86  void MarkerReceived(const marti_visualization_msgs::TexturedMarkerConstPtr marker);
87  void MarkersReceived(const marti_visualization_msgs::TexturedMarkerArrayConstPtr markers);
88 
89  protected:
90  void PrintError(const std::string& message);
91  void PrintInfo(const std::string& message);
92  void PrintWarning(const std::string& message);
93 
94  protected Q_SLOTS:
95  void SetAlphaLevel(int alpha);
96  void SelectTopic();
97  void TopicEdited();
98  void ClearHistory();
99  void ProcessMarker(const marti_visualization_msgs::TexturedMarkerConstPtr marker);
100  void ProcessMarkers(const marti_visualization_msgs::TexturedMarkerArrayConstPtr markers);
101 
102  private:
103  float alphaVal_;
104 
105  struct MarkerData
106  {
109 
110  float alpha_;
111 
112  std::vector<uint8_t> texture_;
113  int32_t texture_id_;
114  int32_t texture_size_;
115  float texture_x_;
116  float texture_y_;
117 
118  std::string encoding_;
119 
120  std::vector<tf::Vector3> quad_;
121  std::vector<tf::Vector3> transformed_quad_;
122 
123  std::string source_frame_;
124 
126  };
127 
128  Ui::textured_marker_config ui_;
129  QWidget* config_widget_;
130 
131  std::string topic_;
132 
135 
136  std::map<std::string, std::map<int, MarkerData> > markers_;
137 
139 
140  void ProcessMarker(const marti_visualization_msgs::TexturedMarker& marker);
141 
142  void MarkerCallback(const marti_visualization_msgs::TexturedMarkerConstPtr marker);
143 
144  void MarkerArrayCallback(
145  const marti_visualization_msgs::TexturedMarkerArrayConstPtr markers);
146  };
147 }
148 
149 #endif // MAPVIZ_PLUGINS_TEXTURED_MARKER_PLUGIN_H_
mapviz_plugins::TexturedMarkerPlugin::MarkerArrayCallback
void MarkerArrayCallback(const marti_visualization_msgs::TexturedMarkerArrayConstPtr markers)
Definition: textured_marker_plugin.cpp:437
mapviz_plugins::TexturedMarkerPlugin::ProcessMarkers
void ProcessMarkers(const marti_visualization_msgs::TexturedMarkerArrayConstPtr markers)
Definition: textured_marker_plugin.cpp:423
mapviz_plugins::TexturedMarkerPlugin::ui_
Ui::textured_marker_config ui_
Definition: textured_marker_plugin.h:128
mapviz_plugins::TexturedMarkerPlugin::MarkerData
Definition: textured_marker_plugin.h:105
mapviz_plugins::TexturedMarkerPlugin::marker_sub_
ros::Subscriber marker_sub_
Definition: textured_marker_plugin.h:133
mapviz_plugins::TexturedMarkerPlugin
Definition: textured_marker_plugin.h:65
mapviz_plugins::TexturedMarkerPlugin::MarkerData::texture_y_
float texture_y_
Definition: textured_marker_plugin.h:116
ros.h
mapviz_plugins::TexturedMarkerPlugin::~TexturedMarkerPlugin
virtual ~TexturedMarkerPlugin()
Definition: textured_marker_plugin.cpp:95
mapviz_plugins::TexturedMarkerPlugin::MarkersReceived
void MarkersReceived(const marti_visualization_msgs::TexturedMarkerArrayConstPtr markers)
mapviz_plugins::TexturedMarkerPlugin::MarkerData::texture_x_
float texture_x_
Definition: textured_marker_plugin.h:115
mapviz_plugins::TexturedMarkerPlugin::SetAlphaLevel
void SetAlphaLevel(int alpha)
Definition: textured_marker_plugin.cpp:107
mapviz_plugins::TexturedMarkerPlugin::MarkerData::expire_time
ros::Time expire_time
Definition: textured_marker_plugin.h:108
mapviz_plugins::TexturedMarkerPlugin::MarkerData::texture_
std::vector< uint8_t > texture_
Definition: textured_marker_plugin.h:112
mapviz_plugins::TexturedMarkerPlugin::MarkerData::texture_size_
int32_t texture_size_
Definition: textured_marker_plugin.h:114
mapviz_plugins::TexturedMarkerPlugin::SaveConfig
void SaveConfig(YAML::Emitter &emitter, const std::string &path)
Definition: textured_marker_plugin.cpp:561
mapviz_plugins::TexturedMarkerPlugin::TexturedMarkerPlugin
TexturedMarkerPlugin()
Definition: textured_marker_plugin.cpp:58
mapviz_plugins::TexturedMarkerPlugin::MarkerData::alpha_
float alpha_
Definition: textured_marker_plugin.h:110
mapviz_plugins::TexturedMarkerPlugin::MarkerData::texture_id_
int32_t texture_id_
Definition: textured_marker_plugin.h:113
mapviz_plugins::TexturedMarkerPlugin::PrintWarning
void PrintWarning(const std::string &message)
Definition: textured_marker_plugin.cpp:452
mapviz_plugins::TexturedMarkerPlugin::Transform
void Transform()
Definition: textured_marker_plugin.cpp:522
mapviz_plugins::TexturedMarkerPlugin::markers_
std::map< std::string, std::map< int, MarkerData > > markers_
Definition: textured_marker_plugin.h:136
mapviz_plugins::TexturedMarkerPlugin::MarkerData::transformed_quad_
std::vector< tf::Vector3 > transformed_quad_
Definition: textured_marker_plugin.h:121
mapviz_plugins::TexturedMarkerPlugin::alphaVal_
float alphaVal_
Definition: textured_marker_plugin.h:103
mapviz_plugins::TexturedMarkerPlugin::PrintInfo
void PrintInfo(const std::string &message)
Definition: textured_marker_plugin.cpp:447
mapviz_plugins::TexturedMarkerPlugin::GetConfigWidget
QWidget * GetConfigWidget(QWidget *parent)
Definition: textured_marker_plugin.cpp:457
mapviz_plugins::TexturedMarkerPlugin::MarkerData::stamp
ros::Time stamp
Definition: textured_marker_plugin.h:107
mapviz_plugins::TexturedMarkerPlugin::MarkerData::source_frame_
std::string source_frame_
Definition: textured_marker_plugin.h:123
mapviz_plugins::TexturedMarkerPlugin::TopicEdited
void TopicEdited()
Definition: textured_marker_plugin.cpp:146
mapviz_plugins::TexturedMarkerPlugin::SelectTopic
void SelectTopic()
Definition: textured_marker_plugin.cpp:127
mapviz_plugins::TexturedMarkerPlugin::MarkerData::quad_
std::vector< tf::Vector3 > quad_
Definition: textured_marker_plugin.h:120
mapviz_plugins::TexturedMarkerPlugin::PrintError
void PrintError(const std::string &message)
Definition: textured_marker_plugin.cpp:442
mapviz_plugins::TexturedMarkerPlugin::topic_
std::string topic_
Definition: textured_marker_plugin.h:131
mapviz_plugins::TexturedMarkerPlugin::MarkerData::encoding_
std::string encoding_
Definition: textured_marker_plugin.h:118
mapviz_plugins::TexturedMarkerPlugin::LoadConfig
void LoadConfig(const YAML::Node &node, const std::string &path)
Definition: textured_marker_plugin.cpp:544
mapviz_plugins::TexturedMarkerPlugin::MarkerData::transformed
bool transformed
Definition: textured_marker_plugin.h:125
transform_datatypes.h
mapviz_plugins::TexturedMarkerPlugin::config_widget_
QWidget * config_widget_
Definition: textured_marker_plugin.h:129
ros::Time
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(marti_visualization_msgs::TexturedMarkerConstPtr)
mapviz_plugins::TexturedMarkerPlugin::is_marker_array_
bool is_marker_array_
Definition: textured_marker_plugin.h:138
mapviz_plugins::TexturedMarkerPlugin::ProcessMarker
void ProcessMarker(const marti_visualization_msgs::TexturedMarkerConstPtr marker)
Definition: textured_marker_plugin.cpp:175
mapviz_plugins::TexturedMarkerPlugin::MarkerReceived
void MarkerReceived(const marti_visualization_msgs::TexturedMarkerConstPtr marker)
mapviz::MapvizPlugin
mapviz_plugins::TexturedMarkerPlugin::Initialize
bool Initialize(QGLWidget *canvas)
Definition: textured_marker_plugin.cpp:464
mapviz_plugins::TexturedMarkerPlugin::ClearHistory
void ClearHistory()
Definition: textured_marker_plugin.cpp:99
mapviz_plugins::TexturedMarkerPlugin::has_message_
bool has_message_
Definition: textured_marker_plugin.h:134
mapviz_plugins::TexturedMarkerPlugin::Draw
void Draw(double x, double y, double scale)
Definition: textured_marker_plugin.cpp:471
mapviz_plugins::TexturedMarkerPlugin::MarkerCallback
void MarkerCallback(const marti_visualization_msgs::TexturedMarkerConstPtr marker)
Definition: textured_marker_plugin.cpp:432
mapviz_plugins::TexturedMarkerPlugin::Shutdown
void Shutdown()
Definition: textured_marker_plugin.h:74
mapviz_plugins
Definition: attitude_indicator_plugin.h:61
map_canvas.h
ros::Subscriber
mapviz_plugin.h


mapviz_plugins
Author(s): Marc Alban
autogenerated on Sun Sep 8 2024 02:27:14