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 public:
33  DirectedPerceptionPTU(const char *device_file, unsigned int timeout_ms = 10);
34  virtual ~DirectedPerceptionPTU();
35 
36  // pan/tilt, radians
37  virtual void set_pan_tilt_rad(float pan, float tilt);
38  virtual void get_pan_tilt_rad(float &pan, float &tilt);
39  virtual void get_limits(float &pan_min, float &pan_max, float &tilt_min, float &tilt_max);
40 
41  virtual void reset();
42  virtual void stop_motion();
43 
44  // ticks
45  virtual void set_pan(int pan);
46  virtual void set_tilt(int tilt);
47  virtual void set_pan_tilt(int pan, int tilt);
48  virtual int get_pan();
49  virtual int get_tilt();
50  virtual void get_pan_tilt(int &pan, int &tilt);
51  virtual int min_pan();
52  virtual int max_pan();
53  virtual int min_tilt();
54  virtual int max_tilt();
55 
56 private:
57  void open();
58  void close();
59  void send(const char *command, int value);
60  void send(const char *command);
61  void write(const char *buffer);
62  bool read(char *buffer, unsigned int buffer_size);
63  bool result_ok();
64  bool data_available();
65  int query_int(const char *query_command);
66  int pan_rad2ticks(float r);
67  int tilt_rad2ticks(float r);
68  float pan_ticks2rad(int ticks);
69  float tilt_ticks2rad(int ticks);
70 
71 private:
72  // commands
73  static const char *DPPTU_PAN_ABSPOS;
74  static const char *DPPTU_TILT_ABSPOS;
75  static const char *DPPTU_PAN_RELPOS;
76  static const char *DPPTU_TILT_RELPOS;
77  static const char *DPPTU_PAN_RESOLUTION;
78  static const char *DPPTU_TILT_RESOLUTION;
79  static const char *DPPTU_PAN_MIN;
80  static const char *DPPTU_PAN_MAX;
81  static const char *DPPTU_TILT_MIN;
82  static const char *DPPTU_TILT_MAX;
83  static const char *DPPTU_LIMITENFORCE_QUERY;
84  static const char *DPPTU_LIMITENFORCE_ENABLE;
85  static const char *DPPTU_LIMITENFORCE_DISABLE;
86  static const char *DPPTU_IMMEDIATE_EXECUTION;
87  static const char *DPPTU_SLAVED_EXECUTION;
88  static const char *DPPTU_AWAIT_COMPLETION;
89  static const char *DPPTU_HALT_ALL;
90  static const char *DPPTU_HALT_PAN;
91  static const char *DPPTU_HALT_TILT;
92  static const char *DPPTU_PAN_SPEED;
93  static const char *DPPTU_TILT_SPEED;
94  static const char *DPPTU_PAN_ACCEL;
95  static const char *DPPTU_TILT_ACCEL;
96  static const char *DPPTU_PAN_BASESPEED;
97  static const char *DPPTU_TILT_BASESPEED;
98  static const char *DPPTU_PAN_UPPER_SPEED_LIMIT;
99  static const char *DPPTU_PAN_LOWER_SPEED_LIMIT;
100  static const char *DPPTU_TILT_UPPER_SPEED_LIMIT;
101  static const char *DPPTU_TILT_LOWER_SPEED_LIMIT;
102  static const char *DPPTU_RESET;
103  static const char *DPPTU_STORE;
104  static const char *DPPTU_RESTORE;
105  static const char *DPPTU_FACTORY_RESET;
106  static const char *DPPTU_ECHO_QUERY;
107  static const char *DPPTU_ECHO_ENABLE;
108  static const char *DPPTU_ECHO_DISABLE;
109  static const char *DPPTU_ASCII_VERBOSE;
110  static const char *DPPTU_ASCII_TERSE;
111  static const char *DPPTU_ASCII_QUERY;
112  static const char *DPPTU_VERSION;
113 
114  char * device_file_;
115  int fd_;
116  bool opened_;
117  unsigned int timeout_ms_;
118 
119  char obuffer_[DPPTU_MAX_OBUFFER_SIZE];
120  char ibuffer_[DPPTU_MAX_IBUFFER_SIZE];
121 
122  int pan_resolution_;
123  int tilt_resolution_;
124  int pan_upper_limit_;
125  int pan_lower_limit_;
126  int tilt_lower_limit_;
127  int tilt_upper_limit_;
128 };
129 
130 #endif
DirectedPerceptionPTU::min_tilt
virtual int min_tilt()
Get minimum tilt in motor ticks.
Definition: dp_ptu.cpp:321
DirectedPerceptionPTU::get_pan
virtual int get_pan()
Get current pan in motor ticks.
Definition: dp_ptu.cpp:276
DirectedPerceptionPTU::set_pan_tilt_rad
virtual void set_pan_tilt_rad(float pan, float tilt)
Set pan and tilt in radians.
Definition: dp_ptu.cpp:240
DirectedPerceptionPTU
Definition: dp_ptu.h:29
DirectedPerceptionPTU::stop_motion
virtual void stop_motion()
Stop currently running motion.
Definition: dp_ptu.cpp:192
DirectedPerceptionPTU::get_pan_tilt_rad
virtual void get_pan_tilt_rad(float &pan, float &tilt)
Get pan/tilt in radians.
Definition: dp_ptu.cpp:261
DirectedPerceptionPTU::set_pan_tilt
virtual void set_pan_tilt(int pan, int tilt)
Set pan and tilt in motor ticks.
Definition: dp_ptu.cpp:220
DirectedPerceptionPTU::get_pan_tilt
virtual void get_pan_tilt(int &pan, int &tilt)
Get current position in motor ticks.
Definition: dp_ptu.cpp:250
DirectedPerceptionPTU::max_tilt
virtual int max_tilt()
Get maximum tilt in motor ticks.
Definition: dp_ptu.cpp:312
DirectedPerceptionPTU::~DirectedPerceptionPTU
virtual ~DirectedPerceptionPTU()
Destructor.
Definition: dp_ptu.cpp:107
DirectedPerceptionPTU::set_pan
virtual void set_pan(int pan)
Set pan in motor ticks.
Definition: dp_ptu.cpp:201
DirectedPerceptionPTU::get_tilt
virtual int get_tilt()
Get current tilt in motor ticks.
Definition: dp_ptu.cpp:285
DirectedPerceptionPTU::set_tilt
virtual void set_tilt(int tilt)
Set tilt in motor ticks.
Definition: dp_ptu.cpp:210
DirectedPerceptionPTU::reset
virtual void reset()
Reset the PTU.
Definition: dp_ptu.cpp:343
DirectedPerceptionPTU::get_limits
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:333
DirectedPerceptionPTU::min_pan
virtual int min_pan()
Get minimum pan in motor ticks.
Definition: dp_ptu.cpp:303
DirectedPerceptionPTU::DirectedPerceptionPTU
DirectedPerceptionPTU(const char *device_file, unsigned int timeout_ms=10)
Constructor.
Definition: dp_ptu.cpp:97
DirectedPerceptionPTU::max_pan
virtual int max_pan()
Get maximum pan in motor ticks.
Definition: dp_ptu.cpp:294