00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef PEEKABOT_CLIENT_OCCUPANCY_GRID_3D_PROXY_HH_INCLUDED
00012 #define PEEKABOT_CLIENT_OCCUPANCY_GRID_3D_PROXY_HH_INCLUDED
00013
00014
00015 #include "ObjectProxy.hh"
00016
00017 #include <cstddef>
00018 #include <boost/scoped_ptr.hpp>
00019
00020
00021 namespace peekabot
00022 {
00023 namespace client
00024 {
00033 class PEEKABOT_API OccupancySet3D
00034 {
00035 friend class OccupancyGrid3DProxyBase;
00036
00037 public:
00038 OccupancySet3D();
00039
00040 OccupancySet3D(const OccupancySet3D &other);
00041
00042 ~OccupancySet3D();
00043
00044 OccupancySet3D &operator=(const OccupancySet3D &other);
00045
00055 void set_cell(float x, float y, float z, float belief);
00056
00057 void clear();
00058
00059 std::size_t size() const;
00060
00061 bool empty() const;
00062
00063 private:
00064 class Impl;
00065 boost::scoped_ptr<Impl> m_impl;
00066 };
00067
00073 class PEEKABOT_API OccupancyGrid3DProxyBase : public ObjectProxyBase
00074 {
00075 public:
00076 OccupancyGrid3DProxyBase();
00077
00078 OccupancyGrid3DProxyBase(OccupancyGrid3DProxyBase &p);
00079
00086 DelayedDispatch set_cells(const OccupancySet3D &cells);
00087
00096 DelayedDispatch enable_color_mapping(float z_min, float z_max);
00097
00101 DelayedDispatch disable_color_mapping();
00102 };
00103
00104
00126 class PEEKABOT_API OccupancyGrid3DProxy :
00127 public OccupancyGrid3DProxyBase
00128 {
00129 public:
00130 OccupancyGrid3DProxy();
00131
00132 OccupancyGrid3DProxy(OccupancyGrid3DProxy &p);
00133
00134 OccupancyGrid3DProxy &operator=(const OccupancyGrid3DProxy &p);
00135
00136 OccupancyGrid3DProxy &operator=(const OccupancyGrid3DProxyBase &p);
00137
00141 DelayedDispatch assign(const ObjectProxyBase &p);
00142
00146 DelayedDispatch assign(
00147 PeekabotClient &client,
00148 const std::string &path);
00149
00154 DelayedDispatch assign(
00155 const ObjectProxyBase &parent,
00156 const std::string &rel_path);
00157
00171 DelayedDispatch add(
00172 PeekabotClient &client,
00173 const std::string &path,
00174 float cell_xy_size, float cell_z_size,
00175 NameConflictPolicy conflict_policy = AUTO_ENUMERATE_ON_CONFLICT);
00176
00191 DelayedDispatch add(
00192 const ObjectProxyBase &parent,
00193 const std::string &name,
00194 float cell_xy_size, float cell_z_size,
00195 NameConflictPolicy conflict_policy = AUTO_ENUMERATE_ON_CONFLICT);
00196 };
00197 }
00198 }
00199
00200
00201 #endif // PEEKABOT_CLIENT_OCCUPANCY_GRID_3D_PROXY_HH_INCLUDED