00001 #ifndef __GRID_CELL_STRATEGY_H 00002 #define __GRID_CELL_STRATEGY_H 00003 00004 #include <memory> 00005 00006 #include "grid_cell_factory.h" 00007 #include "../grid_scan_matcher.h" 00008 #include "cell_occupancy_estimator.h" 00009 00013 class GridCellStrategy { 00014 public: 00021 GridCellStrategy(std::shared_ptr<GridCellFactory> factory, 00022 std::shared_ptr<ScanCostEstimator> cost_est, 00023 std::shared_ptr<CellOccupancyEstimator> occ_est) 00024 : _cell_factory(factory), _cost_estimator(cost_est), 00025 _occupancy_estimator(occ_est) {} 00026 00031 std::shared_ptr<GridCellFactory> cell_factory() { return _cell_factory; } 00032 00037 std::shared_ptr<ScanCostEstimator> cost_est() { return _cost_estimator; } 00038 00043 std::shared_ptr<CellOccupancyEstimator> occupancy_est() { 00044 return _occupancy_estimator; 00045 } 00046 00047 private: 00048 // cell creation/update 00049 std::shared_ptr<GridCellFactory> _cell_factory; 00050 // cell comparison (scan evaluation) 00051 std::shared_ptr<ScanCostEstimator> _cost_estimator; 00052 // new cell value estimation 00053 std::shared_ptr<CellOccupancyEstimator> _occupancy_estimator; 00054 }; 00055 00056 #endif