Fawkes API  Fawkes Development Version
dp_ptu.h
1 
2 /***************************************************************************
3  * dp_ptu.h - Controller for Directed Perception, Inc. Pan-Tilt Unit on B21
4  *
5  * Created: Wed Nov 29 23:02:42 2006 (FireVision)
6  * Copyright 2005-2009 Tim Niemueller [www.niemueller.de]
7  *
8  ****************************************************************************/
9 
10 /* This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version. A runtime exception applies to
14  * this software (see LICENSE.GPL_WRE file mentioned below for details).
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Library General Public License for more details.
20  *
21  * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22  */
23 
24 #ifndef __PLUGINS_PANTILT_DIRPERC_DP_PTU_H_
25 #define __PLUGINS_PANTILT_DIRPERC_DP_PTU_H_
26 
27 #define DPPTU_MAX_OBUFFER_SIZE 20
28 #define DPPTU_MAX_IBUFFER_SIZE 255
29 
31 {
32 
33  public:
34  DirectedPerceptionPTU(const char *device_file, unsigned int timeout_ms = 10);
35  virtual ~DirectedPerceptionPTU();
36 
37  // pan/tilt, radians
38  virtual void set_pan_tilt_rad(float pan, float tilt);
39  virtual void get_pan_tilt_rad(float &pan, float &tilt);
40  virtual void get_limits(float &pan_min, float &pan_max,
41  float &tilt_min, float &tilt_max);
42 
43  virtual void reset();
44  virtual void stop_motion();
45 
46  // ticks
47  virtual void set_pan(int pan);
48  virtual void set_tilt(int tilt);
49  virtual void set_pan_tilt(int pan, int tilt);
50  virtual int get_pan();
51  virtual int get_tilt();
52  virtual void get_pan_tilt(int &pan, int &tilt);
53  virtual int min_pan();
54  virtual int max_pan();
55  virtual int min_tilt();
56  virtual int max_tilt();
57 
58  private:
59  void open();
60  void close();
61  void send(const char *command, int value);
62  void send(const char *command);
63  void write(const char *buffer);
64  bool read(char *buffer, unsigned int buffer_size);
65  bool result_ok();
66  bool data_available();
67  int query_int(const char *query_command);
68  int pan_rad2ticks(float r);
69  int tilt_rad2ticks(float r);
70  float pan_ticks2rad(int ticks);
71  float tilt_ticks2rad(int ticks);
72 
73 
74  private:
75  // commands
76  static const char * DPPTU_PAN_ABSPOS;
77  static const char * DPPTU_TILT_ABSPOS;
78  static const char * DPPTU_PAN_RELPOS;
79  static const char * DPPTU_TILT_RELPOS;
80  static const char * DPPTU_PAN_RESOLUTION;
81  static const char * DPPTU_TILT_RESOLUTION;
82  static const char * DPPTU_PAN_MIN;
83  static const char * DPPTU_PAN_MAX;
84  static const char * DPPTU_TILT_MIN;
85  static const char * DPPTU_TILT_MAX;
86  static const char * DPPTU_LIMITENFORCE_QUERY;
87  static const char * DPPTU_LIMITENFORCE_ENABLE;
88  static const char * DPPTU_LIMITENFORCE_DISABLE;
89  static const char * DPPTU_IMMEDIATE_EXECUTION;
90  static const char * DPPTU_SLAVED_EXECUTION;
91  static const char * DPPTU_AWAIT_COMPLETION;
92  static const char * DPPTU_HALT_ALL;
93  static const char * DPPTU_HALT_PAN;
94  static const char * DPPTU_HALT_TILT;
95  static const char * DPPTU_PAN_SPEED;
96  static const char * DPPTU_TILT_SPEED;
97  static const char * DPPTU_PAN_ACCEL;
98  static const char * DPPTU_TILT_ACCEL;
99  static const char * DPPTU_PAN_BASESPEED;
100  static const char * DPPTU_TILT_BASESPEED;
101  static const char * DPPTU_PAN_UPPER_SPEED_LIMIT;
102  static const char * DPPTU_PAN_LOWER_SPEED_LIMIT;
103  static const char * DPPTU_TILT_UPPER_SPEED_LIMIT;
104  static const char * DPPTU_TILT_LOWER_SPEED_LIMIT;
105  static const char * DPPTU_RESET;
106  static const char * DPPTU_STORE;
107  static const char * DPPTU_RESTORE;
108  static const char * DPPTU_FACTORY_RESET;
109  static const char * DPPTU_ECHO_QUERY;
110  static const char * DPPTU_ECHO_ENABLE;
111  static const char * DPPTU_ECHO_DISABLE;
112  static const char * DPPTU_ASCII_VERBOSE;
113  static const char * DPPTU_ASCII_TERSE;
114  static const char * DPPTU_ASCII_QUERY;
115  static const char * DPPTU_VERSION;
116 
117  char *__device_file;
118  int __fd;
119  bool __opened;
120  unsigned int __timeout_ms;
121 
122  char __obuffer[DPPTU_MAX_OBUFFER_SIZE];
123  char __ibuffer[DPPTU_MAX_IBUFFER_SIZE];
124 
125  int __pan_resolution;
126  int __tilt_resolution;
127  int __pan_upper_limit;
128  int __pan_lower_limit;
129  int __tilt_lower_limit;
130  int __tilt_upper_limit;
131 
132 };
133 
134 #endif
virtual void set_pan_tilt(int pan, int tilt)
Set pan and tilt in motor ticks.
Definition: dp_ptu.cpp:226
virtual int get_pan()
Get current pan in motor ticks.
Definition: dp_ptu.cpp:282
virtual void set_pan(int pan)
Set pan in motor ticks.
Definition: dp_ptu.cpp:205
virtual ~DirectedPerceptionPTU()
Destructor.
Definition: dp_ptu.cpp:111
DirectedPerception PTU implementation.
Definition: dp_ptu.h:30
virtual void get_pan_tilt_rad(float &pan, float &tilt)
Get pan/tilt in radians.
Definition: dp_ptu.cpp:266
virtual void set_tilt(int tilt)
Set tilt in motor ticks.
Definition: dp_ptu.cpp:215
virtual void get_limits(float &pan_min, float &pan_max, float &tilt_min, float &tilt_max)
Get position limits in radians.
Definition: dp_ptu.cpp:345
virtual void set_pan_tilt_rad(float pan, float tilt)
Set pan and tilt in radians.
Definition: dp_ptu.cpp:243
virtual void stop_motion()
Stop currently running motion.
Definition: dp_ptu.cpp:195
virtual void reset()
Reset the PTU.
Definition: dp_ptu.cpp:357
virtual int max_tilt()
Get maximum tilt in motor ticks.
Definition: dp_ptu.cpp:322
virtual void get_pan_tilt(int &pan, int &tilt)
Get current position in motor ticks.
Definition: dp_ptu.cpp:254
virtual int min_tilt()
Get minimum tilt in motor ticks.
Definition: dp_ptu.cpp:332
virtual int min_pan()
Get minimum pan in motor ticks.
Definition: dp_ptu.cpp:311
virtual int max_pan()
Get maximum pan in motor ticks.
Definition: dp_ptu.cpp:301
DirectedPerceptionPTU(const char *device_file, unsigned int timeout_ms=10)
Constructor.
Definition: dp_ptu.cpp:98
virtual int get_tilt()
Get current tilt in motor ticks.
Definition: dp_ptu.cpp:292