GridMapReflectanceCount.h
Go to the documentation of this file.
00001 //=================================================================================================
00002 // Copyright (c) 2011, Stefan Kohlbrecher, TU Darmstadt
00003 // All rights reserved.
00004 
00005 // Redistribution and use in source and binary forms, with or without
00006 // modification, are permitted provided that the following conditions are met:
00007 //     * Redistributions of source code must retain the above copyright
00008 //       notice, this list of conditions and the following disclaimer.
00009 //     * Redistributions in binary form must reproduce the above copyright
00010 //       notice, this list of conditions and the following disclaimer in the
00011 //       documentation and/or other materials provided with the distribution.
00012 //     * Neither the name of the Simulation, Systems Optimization and Robotics
00013 //       group, TU Darmstadt nor the names of its contributors may be used to
00014 //       endorse or promote products derived from this software without
00015 //       specific prior written permission.
00016 
00017 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
00018 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00019 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00020 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
00021 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00022 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00023 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00024 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00025 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00026 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00027 //=================================================================================================
00028 
00029 #ifndef __GridMapReflectanceCount_h_
00030 #define __GridMapReflectanceCount_h_
00031 
00035 class ReflectanceCell
00036 {
00037 public:
00038 
00039   void set(float val)
00040   {
00041     probOccupied = val;
00042   }
00043 
00044   float getValue() const
00045   {
00046     return probOccupied;
00047   }
00048 
00049   bool isOccupied() const
00050   {
00051     return probOccupied > 0.5f;
00052   }
00053 
00054   bool isFree() const{
00055     return probOccupied < 0.5f;
00056   }
00057 
00058   void resetGridCell()
00059   {
00060     probOccupied = 0.5f;
00061     visitedCount = 0.0f;
00062     reflectedCount = 0.0f;
00063     updateIndex = -1;
00064   }
00065 
00066 //protected:
00067 
00068   float visitedCount;
00069   float reflectedCount;
00070   float probOccupied;
00071   int updateIndex;
00072 };
00073 
00074 
00075 class GridMapReflectanceFunctions
00076 {
00077 public:
00078 
00079   GridMapReflectanceFunctions()
00080   {}
00081 
00082   void updateSetOccupied(ReflectanceCell& cell) const
00083   {
00084     ++cell.reflectedCount;
00085     ++cell.visitedCount;
00086     cell.probOccupied = cell.reflectedCount / cell.visitedCount;
00087   }
00088 
00089   void updateSetFree(ReflectanceCell& cell) const
00090   {
00091     ++cell.visitedCount;
00092     cell.probOccupied = cell.reflectedCount / cell.visitedCount;
00093   }
00094 
00095   void updateUnsetFree(ReflectanceCell& cell) const
00096   {
00097     --cell.visitedCount;
00098     cell.probOccupied = cell.reflectedCount / cell.visitedCount;
00099   }
00100 
00101   float getGridProbability(const ReflectanceCell& cell) const
00102   {
00103     return cell.probOccupied;
00104   }
00105 
00106 protected:
00107 
00108 };
00109 
00110 
00111 #endif


hector_mapping
Author(s): Stefan Kohlbrecher
autogenerated on Wed Aug 26 2015 11:45:03