Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #pragma once
00028 #ifndef OCTOMAPPLUGIN_H_INCLUDED
00029 #define OCTOMAPPLUGIN_H_INCLUDED
00030
00031 #include <srs_env_model/but_server/server_tools.h>
00032 #include <srs_env_model/but_server/plugins/octomap_plugin_tools/testing_oriented_box.h>
00033 #include <srs_env_model/but_server/plugins/octomap_plugin_tools/testing_sphere.h>
00034 #include <srs_env_model/but_server/plugins/octomap_plugin_tools/testing_polymesh.h>
00035
00036 #include <tf/transform_listener.h>
00037 #include <std_srvs/Empty.h>
00038
00039 #include <srs_env_model/RemoveCube.h>
00040 #include <srs_env_model/AddCube.h>
00041 #include <srs_env_model/SetCrawlingDepth.h>
00042 #include <srs_env_model/GetTreeDepth.h>
00043
00044 #include <srs_env_model/LoadSave.h>
00045
00046
00047 #include <srs_env_model/but_server/registration/CPCtoOCRegistration.h>
00048
00049 #include "octomap_plugin_tools/octomap_filter_single_specles.h"
00050 #include "octomap_plugin_tools/octomap_filter_raycast.h"
00051 #include "octomap_plugin_tools/octomap_filter_ground.h"
00052
00053
00054
00055
00056 #include <image_geometry/pinhole_camera_model.h>
00057
00058 namespace srs_env_model
00059 {
00063 class CPointCloudPlugin;
00064
00068 class COctoMapPlugin : public CServerPluginBase, public CDataHolderBase< tButServerOcMap >
00069 {
00070 public:
00072 typedef boost::signal< void (SMapWithParameters &) > tSigOnNewData;
00073
00074 public:
00076 COctoMapPlugin(const std::string & name);
00077
00079 COctoMapPlugin( const std::string & name, const std::string & filename );
00080
00082 virtual ~COctoMapPlugin();
00083
00085 void insertCloud(tPointCloud::ConstPtr cloud);
00086
00088 virtual void init(ros::NodeHandle & node_handle);
00089
00091 void reset(bool clearLoaded = true);
00092
00094 unsigned getSize() { return m_data->getTree().size(); }
00095
00097 unsigned getTreeDepth() { return m_mapParameters.treeDepth; }
00098
00100 double getResolution(){ return m_mapParameters.resolution; }
00101
00103 void crawl( const ros::Time & currentTime );
00104
00105 tSigOnNewData & getSigOnNewData() { return m_sigOnNewData; }
00106
00108 virtual void pause( bool bPause, ros::NodeHandle & node_handle );
00109
00110 protected:
00112 virtual bool shouldPublish();
00113
00115 virtual void publishInternal(const ros::Time & timestamp);
00116
00118 void setDefaults();
00119
00123 void insertScan(const tf::Point& sensorOriginTf, const tPointCloud& ground, const tPointCloud& nonground);
00124
00126 void fillMapParameters(const ros::Time & time);
00127
00129 bool resetOctomapCB(std_srvs::Empty::Request& request, std_srvs::Empty::Response& response);
00130
00132 void filterCloud( tPointCloudConstPtr & cloud);
00133
00134
00135
00136
00137
00139 long int doObjectTesting( CTestingObjectBase * object );
00140
00142 bool removeCubeCB( srs_env_model::RemoveCube::Request & req, srs_env_model::RemoveCube::Response & res );
00143
00145 bool addCubeCB( srs_env_model::AddCube::Request & req, srs_env_model::AddCube::Response & res );
00146
00148 void addCubeGizmo( const geometry_msgs::Pose & pose, const geometry_msgs::Point & size );
00149
00151 bool setCrawlingDepthCB( srs_env_model::SetCrawlingDepth::Request & req, srs_env_model::SetCrawlingDepth::Response & res );
00152
00154 bool getTreeDepthCB( srs_env_model::GetTreeDepth::Request & req, srs_env_model::GetTreeDepth::Response & res );
00155
00157 bool loadOctreeCB( srs_env_model::LoadSaveRequest & req, srs_env_model::LoadSaveResponse & res );
00158
00160 bool saveOctreeCB( srs_env_model::LoadSaveRequest & req, srs_env_model::LoadSaveResponse & res );
00161
00163 bool loadFullOctreeCB( srs_env_model::LoadSaveRequest & req, srs_env_model::LoadSaveResponse & res );
00164
00166 bool saveFullOctreeCB( srs_env_model::LoadSaveRequest & req, srs_env_model::LoadSaveResponse & res );
00167
00168
00169 protected:
00170
00172 bool m_filterGroundPlane;
00173
00175 octomap::KeyRay m_keyRay;
00176
00178 tSigOnNewData m_sigOnNewData;
00179
00181 SMapWithParameters m_mapParameters;
00182
00184 tf::TransformListener m_tfListener;
00185
00187 ros::ServiceServer m_serviceResetOctomap;
00188
00190 ros::ServiceServer m_serviceRemoveCube;
00191
00193 ros::ServiceServer m_serviceAddCube;
00194
00196 ros::ServiceServer m_serviceSetCrawlDepth;
00197
00199 ros::ServiceServer m_serviceGetTreeDepth;
00200
00202 ros::ServiceServer m_serviceLoadMap;
00203
00205 ros::ServiceServer m_serviceSaveMap;
00206
00208 ros::ServiceServer m_serviceLoadFullMap;
00209
00211 ros::ServiceServer m_serviceSaveFullMap;
00212
00214 bool m_bPublishOctomap;
00215
00217 std::string m_ocPublisherName;
00218
00220 ros::Publisher m_ocPublisher;
00221
00222 bool m_latchedTopics;
00223
00225 bool m_removeSpecles;
00226
00227 int filecounter;
00228
00229
00230
00231
00232 COcFilterSingleSpecles m_filterSingleSpecles;
00233 COcFilterRaycast m_filterRaycast;
00234 COcFilterGround m_filterGround;
00235
00237 bool m_bFilterWithInput;
00238
00240 boost::shared_ptr< CPointCloudPlugin > m_filterCloudPlugin;
00241
00243 bool m_bRemoveOutdated;
00244
00246 bool m_bNewDataToFilter;
00247
00249 CTestingObjectBase * m_removeTester;
00250
00252 unsigned int m_testerLife;
00253
00255 unsigned int m_testerLifeCounter;
00256
00258 unsigned char m_crawlDepth;
00259
00261 CPcToOcRegistration m_registration;
00262
00264 bool m_bNotFirst;
00265
00267 bool m_bMapLoaded;
00268
00270 float m_probDeleted;
00271
00273 uint8_t m_r, m_g, m_b;
00274
00275
00276 };
00277
00278
00279 }
00280
00281
00282
00283
00284
00285
00286 #endif
00287
srs_env_model
Author(s): Vit Stancl (stancl@fit.vutbr.cz), Tomas Lokaj, Jan Gorig, Michal Spanel (spanel@fit.vutbr.cz)
autogenerated on Mon Oct 6 2014 08:05:05