00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef __FIREVISION_MODELS_RELATIVE_FRONT_BALL_H_
00028 #define __FIREVISION_MODELS_RELATIVE_FRONT_BALL_H_
00029
00030 #include <models/relative_position/relativepositionmodel.h>
00031
00032
00033
00034 namespace firevision {
00035 #if 0
00036 }
00037 #endif
00038
00039 class FrontBallRelativePos : public RelativePositionModel
00040 {
00041 public:
00042 FrontBallRelativePos(unsigned int image_width, unsigned int image_height,
00043 float camera_height,
00044 float camera_offset_x, float camera_offset_y,
00045 float camera_ori,
00046 float horizontal_angle, float vertical_angle,
00047 float ball_circumference
00048 );
00049
00050 virtual const char * get_name() const;
00051 virtual void set_radius(float r);
00052 virtual void set_center(float x, float y);
00053 virtual void set_center(const center_in_roi_t& c);
00054
00055 virtual void set_pan_tilt(float pan = 0.0f, float tilt = 0.0f);
00056 virtual void get_pan_tilt(float *pan, float *tilt) const;
00057
00058 virtual void set_horizontal_angle(float angle_deg);
00059 virtual void set_vertical_angle(float angle_deg);
00060
00061 virtual float get_distance() const;
00062 virtual float get_x() const;
00063 virtual float get_y() const;
00064 virtual float get_bearing() const;
00065 virtual float get_slope() const;
00066 virtual float get_radius() const;
00067
00068 virtual void calc();
00069 virtual void calc_unfiltered();
00070 virtual void reset();
00071
00072 virtual bool is_pos_valid() const;
00073
00074 private:
00075 float DEFAULT_X_VARIANCE;
00076 float DEFAULT_Y_VARIANCE;
00077
00078 float m_fPanRadPerPixel;
00079 float m_fTiltRadPerPixel;
00080 float m_fBallRadius;
00081
00082 float m_fRadius;
00083 center_in_roi_t m_cirtCenter;
00084 float m_fPan;
00085 float m_fTilt;
00086
00087 float horizontal_angle;
00088 float vertical_angle;
00089
00090 unsigned int image_width;
00091 unsigned int image_height;
00092
00093 float camera_height;
00094 float camera_offset_x;
00095 float camera_offset_y;
00096 float camera_orientation;
00097
00098 float ball_circumference;
00099
00100 float last_x;
00101 float last_y;
00102 bool last_available;
00103 float ball_x;
00104 float ball_y;
00105 float bearing;
00106 float slope;
00107 float distance_ball_motor;
00108 float distance_ball_cam;
00109
00110 float avg_x;
00111 float avg_y;
00112 float avg_x_sum;
00113 float avg_y_sum;
00114 unsigned int avg_x_num;
00115 unsigned int avg_y_num;
00116 float rx;
00117 float ry;
00118
00119 float var_proc_x;
00120 float var_proc_y;
00121 float var_meas_x;
00122 float var_meas_y;
00123
00124
00125
00126 };
00127
00128 }
00129
00130 #endif // __FIREVISION_MODELS_RELPOS_BALL_H_
00131