costmap_bbf.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2019, the neonavigation authors
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of the copyright holder nor the names of its
14  * contributors may be used to endorse or promote products derived from
15  * this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 #ifndef PLANNER_CSPACE_PLANNER_3D_COSTMAP_BBF_H
31 #define PLANNER_CSPACE_PLANNER_3D_COSTMAP_BBF_H
32 
33 #include <functional>
34 #include <memory>
35 
36 #include <planner_cspace/bbf.h>
38 
39 namespace planner_cspace
40 {
41 namespace planner_3d
42 {
44 {
45 public:
47  using Ptr = std::shared_ptr<CostmapBBF>;
48  using ConstPtr = std::shared_ptr<const CostmapBBF>;
49 
50  virtual void reset(const Vec& size) = 0;
51  virtual void clear() = 0;
52  virtual char getCost(const Vec& p) const = 0;
53  virtual void remember(
54  const BlockMemGridmapBase<char, 3, 2>* const costmap,
55  const Vec& center,
56  const float remember_hit_odds, const float remember_miss_odds,
57  const int range_min, const int range_max) = 0;
58  virtual void updateCostmap() = 0;
59  virtual void forEach(const std::function<void(const Vec&, bbf::BinaryBayesFilter&)> cb) = 0;
60 };
61 
62 class CostmapBBFImpl : public CostmapBBF
63 {
64 private:
71 
72 public:
73  inline CostmapBBFImpl()
74  : size_(0, 0, 0)
75  {
76  }
77  inline void reset(const Vec& size)
78  {
79  size_ = size;
80  cm_hist_bbf_.reset(VecInternal(size[0], size[1]));
81  cm_hist_.reset(VecInternal(size[0], size[1]));
82  clear();
83  }
84  inline void clear()
85  {
87  cm_hist_.clear(0);
88  updated_min_ = VecInternal(0, 0);
89  updated_max_ = VecInternal(size_[0] - 1, size_[1] - 1);
90  }
91  inline char getCost(const Vec& p) const
92  {
93  return cm_hist_[VecInternal(p[0], p[1])];
94  }
95 
96  void remember(
97  const BlockMemGridmapBase<char, 3, 2>* const costmap,
98  const Vec& center,
99  const float remember_hit_odds, const float remember_miss_odds,
100  const int range_min, const int range_max);
101  void updateCostmap();
102  void forEach(const std::function<void(const Vec&, bbf::BinaryBayesFilter&)> cb);
103 };
104 
106 {
107 public:
108  inline void reset(const Vec& size)
109  {
110  }
111  inline void clear()
112  {
113  }
114  inline char getCost(const Vec& p) const
115  {
116  return 0;
117  }
118  inline void remember(
119  const BlockMemGridmapBase<char, 3, 2>* const costmap,
120  const Vec& center,
121  const float remember_hit_odds, const float remember_miss_odds,
122  const int range_min, const int range_max)
123  {
124  }
125  inline void updateCostmap()
126  {
127  }
128  inline void forEach(const std::function<void(const Vec&, bbf::BinaryBayesFilter&)> cb)
129  {
130  }
131 };
132 
133 } // namespace planner_3d
134 } // namespace planner_cspace
135 
136 #endif // PLANNER_CSPACE_PLANNER_3D_COSTMAP_BBF_H
planner_cspace::planner_3d::CostmapBBFImpl::remember
void remember(const BlockMemGridmapBase< char, 3, 2 > *const costmap, const Vec &center, const float remember_hit_odds, const float remember_miss_odds, const int range_min, const int range_max)
Definition: costmap_bbf.cpp:53
planner_cspace
Definition: bbf.h:33
planner_cspace::planner_3d::CostmapBBF::getCost
virtual char getCost(const Vec &p) const =0
planner_cspace::planner_3d::CostmapBBFImpl::updateCostmap
void updateCostmap()
Definition: costmap_bbf.cpp:41
planner_cspace::planner_3d::CostmapBBFImpl::getCost
char getCost(const Vec &p) const
Definition: costmap_bbf.h:91
planner_cspace::planner_3d::CostmapBBFImpl
Definition: costmap_bbf.h:62
bbf.h
planner_cspace::planner_3d::CostmapBBFImpl::VecInternal
CyclicVecInt< 2, 2 > VecInternal
Definition: costmap_bbf.h:65
planner_cspace::planner_3d::CostmapBBF::ConstPtr
std::shared_ptr< const CostmapBBF > ConstPtr
Definition: costmap_bbf.h:48
planner_cspace::planner_3d::CostmapBBFImpl::updated_max_
VecInternal updated_max_
Definition: costmap_bbf.h:70
planner_cspace::planner_3d::CostmapBBFImpl::cm_hist_
BlockMemGridmap< char, 2, 2, 0x80 > cm_hist_
Definition: costmap_bbf.h:67
planner_cspace::planner_3d::CostmapBBF::forEach
virtual void forEach(const std::function< void(const Vec &, bbf::BinaryBayesFilter &)> cb)=0
planner_cspace::bbf::MIN_ODDS
const float MIN_ODDS
Definition: bbf.h:49
planner_cspace::BlockMemGridmap
Definition: blockmem_gridmap.h:67
planner_cspace::planner_3d::CostmapBBF
Definition: costmap_bbf.h:43
planner_cspace::BlockMemGridmapBase< char, 3, 2 >
planner_cspace::planner_3d::CostmapBBFImpl::forEach
void forEach(const std::function< void(const Vec &, bbf::BinaryBayesFilter &)> cb)
Definition: costmap_bbf.cpp:102
planner_cspace::planner_3d::CostmapBBF::reset
virtual void reset(const Vec &size)=0
planner_cspace::planner_3d::CostmapBBFNoOp::getCost
char getCost(const Vec &p) const
Definition: costmap_bbf.h:114
planner_cspace::bbf::BinaryBayesFilter
Definition: bbf.h:52
planner_cspace::planner_3d::CostmapBBF::updateCostmap
virtual void updateCostmap()=0
planner_cspace::planner_3d::CostmapBBFNoOp::remember
void remember(const BlockMemGridmapBase< char, 3, 2 > *const costmap, const Vec &center, const float remember_hit_odds, const float remember_miss_odds, const int range_min, const int range_max)
Definition: costmap_bbf.h:118
planner_cspace::planner_3d::CostmapBBFImpl::clear
void clear()
Definition: costmap_bbf.h:84
planner_cspace::planner_3d::CostmapBBFNoOp::updateCostmap
void updateCostmap()
Definition: costmap_bbf.h:125
planner_cspace::planner_3d::CostmapBBFImpl::reset
void reset(const Vec &size)
Definition: costmap_bbf.h:77
planner_cspace::BlockMemGridmap::reset
void reset(const CyclicVecInt< DIM, NONCYCLIC > &size) override
Definition: blockmem_gridmap.h:195
planner_cspace::planner_3d::CostmapBBFNoOp::reset
void reset(const Vec &size)
Definition: costmap_bbf.h:108
planner_cspace::planner_3d::CostmapBBFImpl::CostmapBBFImpl
CostmapBBFImpl()
Definition: costmap_bbf.h:73
planner_cspace::planner_3d::CostmapBBFImpl::updated_min_
VecInternal updated_min_
Definition: costmap_bbf.h:69
planner_cspace::BlockMemGridmap::clear
void clear(const T zero) override
Definition: blockmem_gridmap.h:129
planner_cspace::planner_3d::CostmapBBF::remember
virtual void remember(const BlockMemGridmapBase< char, 3, 2 > *const costmap, const Vec &center, const float remember_hit_odds, const float remember_miss_odds, const int range_min, const int range_max)=0
planner_cspace::planner_3d::CostmapBBFNoOp::forEach
void forEach(const std::function< void(const Vec &, bbf::BinaryBayesFilter &)> cb)
Definition: costmap_bbf.h:128
planner_cspace::planner_3d::CostmapBBFImpl::size_
Vec size_
Definition: costmap_bbf.h:68
blockmem_gridmap.h
planner_cspace::planner_3d::CostmapBBF::Ptr
std::shared_ptr< CostmapBBF > Ptr
Definition: costmap_bbf.h:47
planner_cspace::planner_3d::CostmapBBFNoOp::clear
void clear()
Definition: costmap_bbf.h:111
planner_cspace::planner_3d::CostmapBBF::clear
virtual void clear()=0
planner_cspace::planner_3d::CostmapBBFImpl::cm_hist_bbf_
BlockMemGridmap< bbf::BinaryBayesFilter, 2, 2, 0x20 > cm_hist_bbf_
Definition: costmap_bbf.h:66
planner_cspace::planner_3d::CostmapBBFNoOp
Definition: costmap_bbf.h:105
planner_cspace::CyclicVecBase
Definition: cyclic_vec.h:78


planner_cspace
Author(s): Atsushi Watanabe
autogenerated on Fri May 16 2025 02:15:22