00001 /* 00002 * SetBasicLayersFilters.cpp 00003 * 00004 * Created on: Aug 16, 2017 00005 * Author: Peter Fankhauser 00006 * Institute: ETH Zurich, ANYbotics 00007 */ 00008 00009 #include "../include/grid_map_filters/SetBasicLayersFilter.hpp" 00010 00011 #include <grid_map_core/GridMap.hpp> 00012 #include <pluginlib/class_list_macros.h> 00013 00014 using namespace filters; 00015 00016 namespace grid_map { 00017 00018 template<typename T> 00019 SetBasicLayersFilter<T>::SetBasicLayersFilter() 00020 { 00021 } 00022 00023 template<typename T> 00024 SetBasicLayersFilter<T>::~SetBasicLayersFilter() 00025 { 00026 } 00027 00028 template<typename T> 00029 bool SetBasicLayersFilter<T>::configure() 00030 { 00031 if (!FilterBase<T>::getParam(std::string("layers"), layers_)) { 00032 ROS_ERROR("SetBasicLayersFilters did not find parameter 'layers'."); 00033 return false; 00034 } 00035 00036 return true; 00037 } 00038 00039 template<typename T> 00040 bool SetBasicLayersFilter<T>::update(const T& mapIn, T& mapOut) 00041 { 00042 mapOut = mapIn; 00043 std::vector<std::string> layersChecked; 00044 00045 for (const auto& layer : layers_) { 00046 if (!mapOut.exists(layer)) { 00047 ROS_WARN("Layer `%s` does not exist and is not set as basic layer.", layer.c_str()); 00048 continue; 00049 } 00050 layersChecked.push_back(layer); 00051 } 00052 00053 mapOut.setBasicLayers(layersChecked); 00054 return true; 00055 } 00056 00057 } /* namespace */ 00058 00059 PLUGINLIB_EXPORT_CLASS(grid_map::SetBasicLayersFilter<grid_map::GridMap>, filters::FilterBase<grid_map::GridMap>)