dp_ptu.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __PLUGINS_PANTILT_DIRPERC_DP_PTU_H_
00025 #define __PLUGINS_PANTILT_DIRPERC_DP_PTU_H_
00026
00027 #define DPPTU_MAX_OBUFFER_SIZE 20
00028 #define DPPTU_MAX_IBUFFER_SIZE 255
00029
00030 class DirectedPerceptionPTU
00031 {
00032
00033 public:
00034 DirectedPerceptionPTU(const char *device_file, unsigned int timeout_ms = 10);
00035 virtual ~DirectedPerceptionPTU();
00036
00037
00038 virtual void set_pan_tilt_rad(float pan, float tilt);
00039 virtual void get_pan_tilt_rad(float &pan, float &tilt);
00040 virtual void get_limits(float &pan_min, float &pan_max,
00041 float &tilt_min, float &tilt_max);
00042
00043 virtual void reset();
00044 virtual void stop_motion();
00045
00046
00047 virtual void set_pan(int pan);
00048 virtual void set_tilt(int tilt);
00049 virtual void set_pan_tilt(int pan, int tilt);
00050 virtual int get_pan();
00051 virtual int get_tilt();
00052 virtual void get_pan_tilt(int &pan, int &tilt);
00053 virtual int min_pan();
00054 virtual int max_pan();
00055 virtual int min_tilt();
00056 virtual int max_tilt();
00057
00058 private:
00059 void open();
00060 void close();
00061 void send(const char *command, int value);
00062 void send(const char *command);
00063 void write(const char *buffer);
00064 bool read(char *buffer, unsigned int buffer_size);
00065 bool result_ok();
00066 bool data_available();
00067 int query_int(const char *query_command);
00068 int pan_rad2ticks(float r);
00069 int tilt_rad2ticks(float r);
00070 float pan_ticks2rad(int ticks);
00071 float tilt_ticks2rad(int ticks);
00072
00073
00074 private:
00075
00076 static const char * DPPTU_PAN_ABSPOS;
00077 static const char * DPPTU_TILT_ABSPOS;
00078 static const char * DPPTU_PAN_RELPOS;
00079 static const char * DPPTU_TILT_RELPOS;
00080 static const char * DPPTU_PAN_RESOLUTION;
00081 static const char * DPPTU_TILT_RESOLUTION;
00082 static const char * DPPTU_PAN_MIN;
00083 static const char * DPPTU_PAN_MAX;
00084 static const char * DPPTU_TILT_MIN;
00085 static const char * DPPTU_TILT_MAX;
00086 static const char * DPPTU_LIMITENFORCE_QUERY;
00087 static const char * DPPTU_LIMITENFORCE_ENABLE;
00088 static const char * DPPTU_LIMITENFORCE_DISABLE;
00089 static const char * DPPTU_IMMEDIATE_EXECUTION;
00090 static const char * DPPTU_SLAVED_EXECUTION;
00091 static const char * DPPTU_AWAIT_COMPLETION;
00092 static const char * DPPTU_HALT_ALL;
00093 static const char * DPPTU_HALT_PAN;
00094 static const char * DPPTU_HALT_TILT;
00095 static const char * DPPTU_PAN_SPEED;
00096 static const char * DPPTU_TILT_SPEED;
00097 static const char * DPPTU_PAN_ACCEL;
00098 static const char * DPPTU_TILT_ACCEL;
00099 static const char * DPPTU_PAN_BASESPEED;
00100 static const char * DPPTU_TILT_BASESPEED;
00101 static const char * DPPTU_PAN_UPPER_SPEED_LIMIT;
00102 static const char * DPPTU_PAN_LOWER_SPEED_LIMIT;
00103 static const char * DPPTU_TILT_UPPER_SPEED_LIMIT;
00104 static const char * DPPTU_TILT_LOWER_SPEED_LIMIT;
00105 static const char * DPPTU_RESET;
00106 static const char * DPPTU_STORE;
00107 static const char * DPPTU_RESTORE;
00108 static const char * DPPTU_FACTORY_RESET;
00109 static const char * DPPTU_ECHO_QUERY;
00110 static const char * DPPTU_ECHO_ENABLE;
00111 static const char * DPPTU_ECHO_DISABLE;
00112 static const char * DPPTU_ASCII_VERBOSE;
00113 static const char * DPPTU_ASCII_TERSE;
00114 static const char * DPPTU_ASCII_QUERY;
00115 static const char * DPPTU_VERSION;
00116
00117 char *__device_file;
00118 int __fd;
00119 bool __opened;
00120 unsigned int __timeout_ms;
00121
00122 char __obuffer[DPPTU_MAX_OBUFFER_SIZE];
00123 char __ibuffer[DPPTU_MAX_IBUFFER_SIZE];
00124
00125 int __pan_resolution;
00126 int __tilt_resolution;
00127 int __pan_upper_limit;
00128 int __pan_lower_limit;
00129 int __tilt_lower_limit;
00130 int __tilt_upper_limit;
00131
00132 };
00133
00134 #endif