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 #ifndef CANONVCC4_HH
00026 #define CANONVCC4_HH
00027
00028 #include "Body.hh"
00029 #include "Model.hh"
00030
00031
00032 class Camera;
00033 class FrustrumGeom;
00034 class HingeJoint;
00035
00036
00037 class CanonVCC4 : public Model
00038 {
00039
00040 public: CanonVCC4( World *world );
00041 public: virtual ~CanonVCC4();
00042
00043
00044 public: virtual int Load( WorldFile *file, WorldFileNode *node );
00045
00046
00047 public: virtual int Init( WorldFile *file, WorldFileNode *node );
00048
00049
00050 public: virtual int Fini();
00051
00052
00053 public: virtual void Update( double step );
00054
00055
00056 private: int OdeLoad( WorldFile *file, WorldFileNode *node );
00057
00058
00059 private: void PutPtzData();
00060 private: void PutCameraData();
00061 private: void GetPtzCmd();
00062
00063
00064 private: Body *body;
00065 private: Body *middle;
00066 private: Body *head;
00067 private: Geom *bodyGeoms[4];
00068 private: Geom *lensGeom;
00069 private: HingeJoint *panJoint;
00070 private: HingeJoint *tiltJoint;
00071
00072
00073 private: FrustrumGeom *frustrum;
00074
00075
00076 private: gz_camera_t *cameraIface;
00077 private: gz_ptz_t *ptzIface;
00078
00079
00080 private: double hfov;
00081
00082
00083 private: double zoomMin, zoomMax;
00084
00085
00086 private: double motionGain, zoomGain;
00087
00088
00089 private: double cmdPan, cmdTilt, cmdZoom;
00090
00091
00092 private: double zoom;
00093
00094
00095 private: Camera *camera;
00096
00097
00098 private: double ptzUpdatePeriod;
00099 private: double ptzUpdateTime;
00100
00101
00102 private: double cameraUpdatePeriod;
00103 private: double cameraUpdateTime;
00104 };
00105
00106 #endif
00107