MapCloudDisplay.h
Go to the documentation of this file.
1 /*
2 Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
3 All rights reserved.
4 
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions are met:
7  * Redistributions of source code must retain the above copyright
8  notice, this list of conditions and the following disclaimer.
9  * Redistributions in binary form must reproduce the above copyright
10  notice, this list of conditions and the following disclaimer in the
11  documentation and/or other materials provided with the distribution.
12  * Neither the name of the Universite de Sherbrooke nor the
13  names of its contributors may be used to endorse or promote products
14  derived from this software without specific prior written permission.
15 
16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27 
28 #ifndef MAP_CLOUD_DISPLAY_H
29 #define MAP_CLOUD_DISPLAY_H
30 
31 #ifndef Q_MOC_RUN // See: https://bugreports.qt-project.org/browse/QTBUG-22829
32 
33 #include <deque>
34 #include <queue>
35 #include <vector>
36 
37 #include <rtabmap_msgs/MapData.h>
38 #include <rtabmap/core/Transform.h>
39 
41 #include <sensor_msgs/PointCloud2.h>
42 
43 #include <ros/callback_queue.h>
44 
48 
49 #endif
50 
51 namespace rviz {
52 class IntProperty;
53 class BoolProperty;
54 class EnumProperty;
55 class FloatProperty;
58 typedef std::vector<std::string> V_string;
59 }
60 
61 using namespace rviz;
62 
63 namespace rtabmap_rviz_plugins
64 {
65 
66 class PointCloudCommon;
67 
76 class MapCloudDisplay: public rviz::MessageFilterDisplay<rtabmap_msgs::MapData>
77 {
78 Q_OBJECT
79 public:
80  struct CloudInfo
81  {
82  CloudInfo();
83  ~CloudInfo();
84 
85  // clear the point cloud, but keep selection handler around
86  void clear();
87 
88  Ogre::SceneManager *manager_;
89 
90  sensor_msgs::PointCloud2ConstPtr message_;
92  int id_;
93 
94  Ogre::SceneNode *scene_node_;
96 
97  std::vector<rviz::PointCloud::Point> transformed_points_;
98  };
100 
101  MapCloudDisplay();
102  virtual ~MapCloudDisplay();
103 
104  virtual void reset();
105  virtual void update( float wall_dt, float ros_dt );
106 
125 
126 public Q_SLOTS:
127  void causeRetransform();
128 
129 private Q_SLOTS:
130  void updateStyle();
131  void updateBillboardSize();
132  void updateAlpha();
133  void updateXyzTransformer();
134  void updateColorTransformer();
135  void setXyzTransformerOptions( EnumProperty* prop );
136  void setColorTransformerOptions( EnumProperty* prop );
137  void updateCloudParameters();
138  void downloadNamespaceChanged();
139  void downloadMap();
140  void downloadGraph();
141 
142 protected:
144  virtual void onInitialize();
145 
147  virtual void processMessage( const rtabmap_msgs::MapDataConstPtr& cloud );
148 
149 private:
150  void downloadMap(bool graphOnly);
151  void processMapData(const rtabmap_msgs::MapData& map);
152 
156  bool transformCloud(const CloudInfoPtr& cloud, bool fully_update_transformers);
157 
158  rviz::PointCloudTransformerPtr getXYZTransformer(const sensor_msgs::PointCloud2ConstPtr& cloud);
159  rviz::PointCloudTransformerPtr getColorTransformer(const sensor_msgs::PointCloud2ConstPtr& cloud);
160  void updateTransformers( const sensor_msgs::PointCloud2ConstPtr& cloud );
161  void retransform();
162 
163  void loadTransformers();
164 
165  void setPropertiesHidden( const QList<Property*>& props, bool hide );
166  void fillTransformerOptions( rviz::EnumProperty* prop, uint32_t mask );
167 
168 private:
172 
173  std::map<int, CloudInfoPtr> cloud_infos_;
174 
175  std::map<int, CloudInfoPtr> new_cloud_infos_;
176  boost::mutex new_clouds_mutex_;
177 
178  std::set<int> nodeDataReceived_;
179  bool fromScan_;
180 
181  std::map<int, rtabmap::Transform> current_map_;
182  boost::mutex current_map_mutex_;
184 
186 
188  {
190  QList<Property*> xyz_props;
191  QList<Property*> color_props;
192 
193  std::string readable_name;
194  std::string lookup_name;
195  };
196  typedef std::map<std::string, TransformerInfo> M_TransformerInfo;
197 
198  boost::recursive_mutex transformers_mutex_;
203 
205 };
206 
207 } // namespace rtabmap_rviz_plugins
208 
209 #endif
rtabmap_rviz_plugins::MapCloudDisplay::current_map_mutex_
boost::mutex current_map_mutex_
Definition: MapCloudDisplay.h:182
rviz::MessageFilterDisplay
rtabmap_rviz_plugins::MapCloudDisplay::CloudInfo::manager_
Ogre::SceneManager * manager_
Definition: MapCloudDisplay.h:88
update
def update(text)
rtabmap_rviz_plugins::MapCloudDisplay::CloudInfo::cloud_
boost::shared_ptr< rviz::PointCloud > cloud_
Definition: MapCloudDisplay.h:95
rtabmap_rviz_plugins::MapCloudDisplay::TransformerInfo::lookup_name
std::string lookup_name
Definition: MapCloudDisplay.h:194
mask
GLM_FUNC_DECL genIType mask(genIType const &count)
ros::Publisher
rtabmap_rviz_plugins::MapCloudDisplay::CloudInfoPtr
boost::shared_ptr< CloudInfo > CloudInfoPtr
Definition: MapCloudDisplay.h:99
rtabmap_rviz_plugins::MapCloudDisplay::TransformerInfo
Definition: MapCloudDisplay.h:187
rtabmap_rviz_plugins::MapCloudDisplay::cloud_filter_ceiling_height_
rviz::FloatProperty * cloud_filter_ceiling_height_
Definition: MapCloudDisplay.h:119
boost::shared_ptr< PointCloudTransformer >
rtabmap_rviz_plugins::MapCloudDisplay::CloudInfo::transformed_points_
std::vector< rviz::PointCloud::Point > transformed_points_
Definition: MapCloudDisplay.h:97
rtabmap_rviz_plugins::MapCloudDisplay::fromScan_
bool fromScan_
Definition: MapCloudDisplay.h:179
rtabmap_rviz_plugins::MapCloudDisplay::CloudInfo::pose_
rtabmap::Transform pose_
Definition: MapCloudDisplay.h:91
uint32_t
::uint32_t uint32_t
rtabmap_rviz_plugins
Definition: InfoDisplay.h:37
rviz::BoolProperty
rtabmap_rviz_plugins::MapCloudDisplay::new_xyz_transformer_
bool new_xyz_transformer_
Definition: MapCloudDisplay.h:200
rtabmap_rviz_plugins::MapCloudDisplay::TransformerInfo::xyz_props
QList< Property * > xyz_props
Definition: MapCloudDisplay.h:190
rtabmap_rviz_plugins::MapCloudDisplay::cloud_max_depth_
rviz::FloatProperty * cloud_max_depth_
Definition: MapCloudDisplay.h:115
ros::AsyncSpinner
rtabmap_rviz_plugins::MapCloudDisplay::cloud_min_depth_
rviz::FloatProperty * cloud_min_depth_
Definition: MapCloudDisplay.h:116
rtabmap_rviz_plugins::MapCloudDisplay::TransformerInfo::transformer
rviz::PointCloudTransformerPtr transformer
Definition: MapCloudDisplay.h:189
rtabmap_rviz_plugins::MapCloudDisplay::cloud_decimation_
rviz::IntProperty * cloud_decimation_
Definition: MapCloudDisplay.h:114
rtabmap_rviz_plugins::MapCloudDisplay::transformer_class_loader_
pluginlib::ClassLoader< rviz::PointCloudTransformer > * transformer_class_loader_
Definition: MapCloudDisplay.h:204
rtabmap_rviz_plugins::MapCloudDisplay::cloud_voxel_size_
rviz::FloatProperty * cloud_voxel_size_
Definition: MapCloudDisplay.h:117
rtabmap_rviz_plugins::MapCloudDisplay::node_filtering_radius_
rviz::FloatProperty * node_filtering_radius_
Definition: MapCloudDisplay.h:120
rtabmap_rviz_plugins::MapCloudDisplay::cloud_filter_floor_height_
rviz::FloatProperty * cloud_filter_floor_height_
Definition: MapCloudDisplay.h:118
rtabmap_rviz_plugins::MapCloudDisplay::CloudInfo::id_
int id_
Definition: MapCloudDisplay.h:92
point_cloud.h
rviz::EnumProperty
rtabmap_rviz_plugins::MapCloudDisplay::download_graph_
rviz::BoolProperty * download_graph_
Definition: MapCloudDisplay.h:124
rviz::FloatProperty
rtabmap_rviz_plugins::MapCloudDisplay::alpha_property_
rviz::FloatProperty * alpha_property_
Definition: MapCloudDisplay.h:109
rviz::V_string
std::vector< std::string > V_string
rtabmap_rviz_plugins::MapCloudDisplay::cbqueue_
ros::CallbackQueue cbqueue_
Definition: MapCloudDisplay.h:170
rtabmap_rviz_plugins::MapCloudDisplay::current_map_updated_
bool current_map_updated_
Definition: MapCloudDisplay.h:183
ros::CallbackQueue
rtabmap_rviz_plugins::MapCloudDisplay::color_transformer_property_
rviz::EnumProperty * color_transformer_property_
Definition: MapCloudDisplay.h:111
rviz
rtabmap_rviz_plugins::MapCloudDisplay::download_map_
rviz::BoolProperty * download_map_
Definition: MapCloudDisplay.h:123
rviz::StringProperty
message_filter_display.h
rtabmap_rviz_plugins::MapCloudDisplay::transformers_mutex_
boost::recursive_mutex transformers_mutex_
Definition: MapCloudDisplay.h:198
rtabmap_rviz_plugins::MapCloudDisplay::CloudInfo
Definition: MapCloudDisplay.h:80
rtabmap_rviz_plugins::MapCloudDisplay::nodeDataReceived_
std::set< int > nodeDataReceived_
Definition: MapCloudDisplay.h:178
rviz::PointCloudTransformer
rtabmap_rviz_plugins::MapCloudDisplay::new_clouds_mutex_
boost::mutex new_clouds_mutex_
Definition: MapCloudDisplay.h:176
rtabmap_rviz_plugins::MapCloudDisplay::CloudInfo::message_
sensor_msgs::PointCloud2ConstPtr message_
Definition: MapCloudDisplay.h:90
rtabmap_rviz_plugins::MapCloudDisplay::needs_retransform_
bool needs_retransform_
Definition: MapCloudDisplay.h:202
rviz::PointCloudTransformerPtr
boost::shared_ptr< PointCloudTransformer > PointCloudTransformerPtr
pluginlib::ClassLoader< rviz::PointCloudTransformer >
rviz::PointCloudCommon
class_loader.hpp
callback_queue.h
rtabmap_rviz_plugins::MapCloudDisplay::point_world_size_property_
rviz::FloatProperty * point_world_size_property_
Definition: MapCloudDisplay.h:107
rtabmap_rviz_plugins::MapCloudDisplay::point_pixel_size_property_
rviz::FloatProperty * point_pixel_size_property_
Definition: MapCloudDisplay.h:108
rtabmap::Transform
rtabmap_rviz_plugins::MapCloudDisplay::TransformerInfo::readable_name
std::string readable_name
Definition: MapCloudDisplay.h:193
rtabmap_rviz_plugins::MapCloudDisplay::CloudInfo::scene_node_
Ogre::SceneNode * scene_node_
Definition: MapCloudDisplay.h:94
rtabmap_rviz_plugins::MapCloudDisplay::download_namespace
rviz::StringProperty * download_namespace
Definition: MapCloudDisplay.h:122
rtabmap_rviz_plugins::MapCloudDisplay::lastCloudAdded_
int lastCloudAdded_
Definition: MapCloudDisplay.h:185
rtabmap_rviz_plugins::MapCloudDisplay::node_filtering_angle_
rviz::FloatProperty * node_filtering_angle_
Definition: MapCloudDisplay.h:121
rtabmap_rviz_plugins::MapCloudDisplay::style_property_
rviz::EnumProperty * style_property_
Definition: MapCloudDisplay.h:112
rtabmap_rviz_plugins::MapCloudDisplay::current_map_
std::map< int, rtabmap::Transform > current_map_
Definition: MapCloudDisplay.h:181
rtabmap_rviz_plugins::MapCloudDisplay::new_cloud_infos_
std::map< int, CloudInfoPtr > new_cloud_infos_
Definition: MapCloudDisplay.h:175
rtabmap_rviz_plugins::MapCloudDisplay::republishNodeDataPub_
ros::Publisher republishNodeDataPub_
Definition: MapCloudDisplay.h:171
rtabmap_rviz_plugins::MapCloudDisplay::xyz_transformer_property_
rviz::EnumProperty * xyz_transformer_property_
Definition: MapCloudDisplay.h:110
rtabmap_rviz_plugins::MapCloudDisplay
Displays point clouds from rtabmap::MapData.
Definition: MapCloudDisplay.h:76
rtabmap_rviz_plugins::MapCloudDisplay::spinner_
ros::AsyncSpinner spinner_
Definition: MapCloudDisplay.h:169
rtabmap_rviz_plugins::MapCloudDisplay::new_color_transformer_
bool new_color_transformer_
Definition: MapCloudDisplay.h:201
rtabmap_rviz_plugins::MapCloudDisplay::transformers_
M_TransformerInfo transformers_
Definition: MapCloudDisplay.h:199
point_cloud_transformer.h
rtabmap_rviz_plugins::MapCloudDisplay::cloud_from_scan_
rviz::BoolProperty * cloud_from_scan_
Definition: MapCloudDisplay.h:113
rtabmap_rviz_plugins::MapCloudDisplay::cloud_infos_
std::map< int, CloudInfoPtr > cloud_infos_
Definition: MapCloudDisplay.h:173
rtabmap_rviz_plugins::MapCloudDisplay::TransformerInfo::color_props
QList< Property * > color_props
Definition: MapCloudDisplay.h:191
Transform.h
rtabmap_rviz_plugins::MapCloudDisplay::M_TransformerInfo
std::map< std::string, TransformerInfo > M_TransformerInfo
Definition: MapCloudDisplay.h:196
rviz::IntProperty


rtabmap_rviz_plugins
Author(s): Mathieu Labbe
autogenerated on Mon Apr 28 2025 02:37:14