hector_costmap.h
Go to the documentation of this file.
00001 #include <hector_elevation_msgs/ElevationMapMetaData.h>
00002 #include <hector_elevation_msgs/ElevationGrid.h>
00003 
00004 #include <std_msgs/String.h>
00005 #include <nav_msgs/OccupancyGrid.h>
00006 #include <nav_msgs/MapMetaData.h>
00007 
00008 #include <ros/ros.h>
00009 
00010 #include <opencv/cv.h>
00011 #include <opencv/highgui.h>
00012 
00013 #include <cv_bridge/cv_bridge.h>
00014 
00015 #include "pcl/point_types.h"
00016 #include <pcl/filters/crop_box.h>
00017 #include "pcl_ros/point_cloud.h"
00018 #include <pcl_ros/transforms.h>
00019 
00020 #include <hector_map_tools/HectorMapTools.h>
00021 
00022 #include <tf/transform_listener.h>
00023 
00024 #include <dynamic_reconfigure/server.h>
00025 #include <hector_costmap/CostMapCalculationConfig.h>
00026 
00027 
00028 class CostMapCalculation{
00029 
00030 public:
00032     CostMapCalculation();
00033 
00035     ~CostMapCalculation();
00036 
00038 
00041     void updateMapParamsCallback(const nav_msgs::MapMetaData& map_meta_data);
00042 
00044 
00047     void callbackElevationMap(const hector_elevation_msgs::ElevationGridConstPtr& elevation_map_msg);
00048 
00050 
00053     void callbackPointCloud(const sensor_msgs::PointCloud2ConstPtr &cloud_msg);
00054 
00056 
00059     void callbackGridMap(const nav_msgs::OccupancyGridConstPtr& grid_map_msg);
00060 
00062 
00065     void sysMessageCallback(const std_msgs::String& string);
00066 
00068 
00072     void dynRecParamCallback(hector_costmap::CostMapCalculationConfig &config, uint32_t level);
00073 
00075 
00078     void timerCallback(const ros::TimerEvent& event);
00079 
00080 private:
00081     ros::NodeHandle nHandle;
00082     ros::NodeHandle pnHandle;
00083 
00084     ros::Publisher pub_cost_map;
00085     ros::Publisher pub_cloud_slice;
00086 
00087     ros::Subscriber sub_elevation_map;
00088     ros::Subscriber sub_grid_map;
00089     ros::Subscriber sub_point_cloud;
00090     ros::Subscriber sub_sysMessage;
00091     ros::Subscriber sub_map_info;
00092 
00093     dynamic_reconfigure::Server<hector_costmap::CostMapCalculationConfig> dyn_rec_server_;
00094 
00095     tf::TransformListener listener;
00096 
00097     ros::Timer timer;
00098 
00099     HectorMapTools::CoordinateTransformer<float> world_map_transform;
00100 
00101     double update_radius_world, initial_free_cells_radius;
00102     double grid_res_z;
00103     int elevation_zero_level;
00104     double max_delta_elevation;
00105     bool use_elevation_map, use_grid_map, use_cloud_map, received_grid_map, received_elevation_map, received_point_cloud, allow_elevation_map_to_clear_occupied_cells;
00106     int max_clear_size;
00107     double costmap_pub_freq;
00108     double slize_min_height, slize_max_height;
00109 
00110     pcl::PointCloud<pcl::PointXYZ>::Ptr sliced_cloud;
00111     nav_msgs::OccupancyGridConstPtr grid_map_msg_;
00112 
00113     nav_msgs::OccupancyGrid cost_map, elevation_cost_map, cloud_cost_map;
00114 
00115     cv::Mat grid_map_, elevation_map_, elevation_map_filtered,elevation_cost_map_;
00116 
00117     std::string cost_map_topic, elevation_map_topic, grid_map_topic, point_cloud_topic, sys_msg_topic;
00118     std::string map_frame_id,local_transform_frame_id;
00119 
00120     Eigen::Vector2i min_index, max_index;
00121 
00123 
00127     bool calculateCostMap(char map_level);
00128 
00130 
00135     bool computeWindowIndices(ros::Time time,double update_radius);
00136 };
00137 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Friends Defines


hector_costmap
Author(s): Thorsten Graber
autogenerated on Mon Jul 15 2013 16:56:08