DeletionFilter.cpp
Go to the documentation of this file.
00001 /*
00002  * DeletionFilter.cpp
00003  *
00004  *  Created on: Mar 19, 2015
00005  *      Author: Martin Wermelinger, Peter Fankhauser
00006  *   Institute: ETH Zurich, Autonomous Systems Lab
00007  */
00008 
00009 #include "grid_map_filters/DeletionFilter.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 DeletionFilter<T>::DeletionFilter()
00020 {
00021 }
00022 
00023 template<typename T>
00024 DeletionFilter<T>::~DeletionFilter()
00025 {
00026 }
00027 
00028 template<typename T>
00029 bool DeletionFilter<T>::configure()
00030 {
00031   // Load Parameters
00032   if (!FilterBase<T>::getParam(std::string("layers"), layers_)) {
00033     ROS_ERROR("DeletionFilter did not find parameter 'layers'.");
00034     return false;
00035   }
00036 
00037   return true;
00038 }
00039 
00040 template<typename T>
00041 bool DeletionFilter<T>::update(const T& mapIn, T& mapOut)
00042 {
00043   mapOut = mapIn;
00044 
00045   for (const auto& layer : layers_) {
00046     // Check if layer exists.
00047     if (!mapOut.exists(layer)) {
00048       ROS_ERROR("Check your deletion layers! Type %s does not exist.",
00049                 layer.c_str());
00050       continue;
00051     }
00052 
00053     if (!mapOut.erase(layer)) {
00054       ROS_ERROR("Could not remove type %s.", layer.c_str());
00055     }
00056   }
00057 
00058   return true;
00059 }
00060 
00061 } /* namespace */
00062 
00063 PLUGINLIB_EXPORT_CLASS(grid_map::DeletionFilter<grid_map::GridMap>, filters::FilterBase<grid_map::GridMap>)


grid_map_filters
Author(s): Péter Fankhauser , Martin Wermelinger
autogenerated on Mon Oct 9 2017 03:09:30