00001
00002
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00031
00032 #ifndef RCSC_PLAYER_OBJECT_TABLE_H
00033 #define RCSC_PLAYER_OBJECT_TABLE_H
00034
00035 #include <rcsc/geom/vector_2d.h>
00036 #include <rcsc/types.h>
00037
00038 #include <map>
00039 #include <vector>
00040
00041 namespace rcsc {
00042
00047 class ObjectTable {
00048 public:
00049
00051 static const double SERVER_EPS;
00052
00056 struct DataEntry {
00057 double M_seen_dist;
00058 double M_average;
00059 double M_error;
00060
00064 DataEntry()
00065 : M_seen_dist( 0.0 )
00066 , M_average( 0.0 )
00067 , M_error( 0.0 )
00068 { }
00069
00074 explicit
00075 DataEntry( const double & dist )
00076 : M_seen_dist( dist )
00077 , M_average(0.0)
00078 , M_error(0.0)
00079 { }
00080
00087 DataEntry( const double & dist,
00088 const double & ave,
00089 const double & err )
00090 : M_seen_dist( dist )
00091 , M_average( ave )
00092 , M_error( err )
00093 { }
00094 };
00095
00096 private:
00097
00099 std::map< MarkerID, Vector2D > M_landmark_map;
00100
00102 std::vector< DataEntry > M_static_table;
00103
00105 std::vector< DataEntry > M_movable_table;
00106
00107 public:
00111 explicit
00112 ObjectTable( const SideID ourside );
00113
00114
00119 const
00120 std::map< MarkerID, Vector2D > & landmarkMap() const
00121 {
00122 return M_landmark_map;
00123 }
00124
00132 bool getStaticObjInfo( const double & see_dist,
00133 double * ave,
00134 double * err ) const;
00135
00143 bool getMovableObjInfo( const double & see_dist,
00144 double * ave,
00145 double * err ) const;
00146
00153 static
00154 double quantize( const double & value,
00155 const double & qstep );
00156
00163 static
00164 double quantize_dist( const double & unq_dist,
00165 const double & qstep );
00166
00167 private:
00168
00172 void createLandmarkMap( const SideID ourside );
00173
00177 void createTable();
00178
00186 void create( const double & static_qstep,
00187 const double & movable_qstep );
00188
00194 void createTable( const double & qstep,
00195 std::vector< DataEntry > & table );
00196
00197 };
00198
00199 }
00200
00201 #endif