but_server.h
Go to the documentation of this file.
00001 /******************************************************************************
00002  * \file
00003  *
00004  * $Id: but_server.h 2537 2013-02-21 15:57:57Z stancl $
00005  *
00006  * Modified by dcgm-robotics@FIT group
00007  *
00008  * Author: Vit Stancl (stancl@fit.vutbr.cz)
00009  * Supervised by: Michal Spanel (spanel@fit.vutbr.cz)
00010  * Date: dd/mm/2012
00011  * 
00012  * This code is derived from the OctoMap server provided by A. Hornung.
00013  * Please, see the original comments below.
00014  */
00015 
00053 #pragma once
00054 #ifndef SERVER_H
00055 #define SERVER_H
00056 
00057 #include <ros/ros.h>
00058 #include <visualization_msgs/MarkerArray.h>
00059 #include <std_msgs/ColorRGBA.h>
00060 
00061 //#include <sensor_msgs/CameraInfo.h>
00062 //#include <std_srvs/Empty.h>
00063 
00064 //#include <pcl/point_types.h>
00065 //#include <pcl/io/pcd_io.h>
00066 
00067 #include <srs_env_model/but_server/plugins/cmap_plugin.h>
00068 #include <srs_env_model/but_server/plugins/point_cloud_plugin.h>
00069 #include <srs_env_model/but_server/plugins/octomap_plugin.h>
00070 #include <srs_env_model/but_server/plugins/collision_object_plugin.h>
00071 #include <srs_env_model/but_server/plugins/imarkers_plugin.h>
00072 #include <srs_env_model/but_server/plugins/marker_array_plugin.h>
00073 #include <srs_env_model/but_server/plugins/limited_point_cloud_plugin.h>
00074 #include <srs_env_model/but_server/plugins/compressed_point_cloud_plugin.h>
00075 #include <srs_env_model/but_server/plugins/objtree_plugin.h>
00076 #include <srs_env_model/but_server/plugins/collision_grid_plugin.h>
00077 
00078 #include <srs_env_model/ButServerPause.h>
00079 #include <srs_env_model/UseInputColor.h>
00080 
00081 // Old interactive markers plugin used for testing
00082 #include <srs_env_model/but_server/plugins/old_imarkers_plugin.h>
00083 
00084 #define _EXAMPLES_
00085 #ifdef _EXAMPLES_
00086 #       include <srs_env_model/but_server/plugins/example_plugin.h>
00087 #endif
00088 
00089 
00090 namespace srs_env_model
00091 {
00092 
00096 class CButServer
00097 {
00098 public:
00100     typedef pcl::PointCloud<pcl::PointXYZ> tPCLPointCloud;
00101 
00103     CButServer(const std::string& filename= "");
00104 
00106     virtual ~CButServer();
00107 
00109     void reset();
00110 
00112     void pause( bool bPause );
00113 
00114 
00115 protected:
00117     void publishAll(const ros::Time& rostime );
00118 
00120     void onOcMapDataChanged( tButServerOcMapConstPtr mapdata, const ros::Time & stamp )
00121     {
00122         publishAll(stamp);
00123     }
00124 
00126     bool onReset(std_srvs::Empty::Request& request, std_srvs::Empty::Response& response)
00127     {
00128         reset();
00129         return true;
00130     }
00131 
00133     bool onPause( ButServerPause::Request & request, ButServerPause::Response & response );
00134 
00136     void publishPlugins(const ros::Time& rostime);
00137 
00139         bool onUseInputColor(srs_env_model::UseInputColor::Request & req, srs_env_model::UseInputColor::Response & res );
00140 
00141 
00142 protected:
00144     bool m_bIsPaused;
00145 
00147     ros::NodeHandle m_nh;
00148 
00149     bool m_latchedTopics;
00150 
00152     int m_numPCFramesProcessed;
00153 
00155     int m_frameCounter;
00156 
00157     //======================================================================================================
00158     // Services
00159 
00161     ros::ServiceServer m_serviceReset;
00162 
00164     ros::ServiceServer m_servicePause;
00165 
00167         ros::ServiceServer m_serviceUseInputColor;
00168 
00169     //======================================================================================================
00170     // Plugins
00171 
00173     typedef std::vector<CServerPluginBase * > tVecPlugins;
00174 
00176     tVecPlugins m_plugins;
00177 
00179 #define FOR_ALL_PLUGINS( X ) { for( tVecPlugins::iterator p = m_plugins.begin(); p != m_plugins.end(); ++p ){ (*p)->X; } }
00180 #define FOR_ALL_PLUGINS_PARAM( X, Y ) { for( tVecPlugins::iterator p = m_plugins.begin(); p != m_plugins.end(); ++p ){ (*p)->X(Y); } }
00181 
00183     boost::shared_ptr< CCMapPlugin > m_plugCMap;
00184 
00186     boost::shared_ptr< CPointCloudPlugin > m_plugInputPointCloud,
00188                                                         m_plugOcMapPointCloud;
00190     boost::shared_ptr< CPointCloudPlugin > m_plugVisiblePointCloud;
00191 
00193     boost::shared_ptr< COctoMapPlugin > m_plugOctoMap;
00194 
00196     boost::shared_ptr< CCollisionObjectPlugin > m_plugCollisionObject;
00197 
00199     boost::shared_ptr< CCollisionGridPlugin > m_plugMap2D;
00200 
00202     boost::shared_ptr< CIMarkersPlugin > m_plugIMarkers;
00203 
00205     boost::shared_ptr< CMarkerArrayPlugin > m_plugMarkerArray;
00206     
00208     boost::shared_ptr< CObjTreePlugin > m_plugObjTree;
00209 
00211     boost::shared_ptr< COldIMarkersPlugin > m_plugOldIMarkers;
00212 
00214     boost::shared_ptr< CCompressedPointCloudPlugin > m_plugCompressedPointCloud;
00215 
00217     bool m_bUseOldIMP;
00218 
00219 #ifdef _EXAMPLES_
00220 
00221     boost::shared_ptr< CExamplePlugin > m_plugExample;
00222 
00224     boost::shared_ptr< CExampleCrawlerPlugin > m_plugExampleCrawler;
00225 #endif
00226 };
00227 
00228 
00229 } // namespace srs_env_model
00230 
00231 #endif // SERVER_H


srs_env_model
Author(s): Vit Stancl (stancl@fit.vutbr.cz), Tomas Lokaj, Jan Gorig, Michal Spanel (spanel@fit.vutbr.cz)
autogenerated on Sun Jan 5 2014 11:50:48