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{
32public:
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
56private:
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
71private:
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
DirectedPerception PTU implementation.
Definition: dp_ptu.h:31
virtual int get_tilt()
Get current tilt in motor ticks.
Definition: dp_ptu.cpp:285
DirectedPerceptionPTU(const char *device_file, unsigned int timeout_ms=10)
Constructor.
Definition: dp_ptu.cpp:97
virtual void get_pan_tilt(int &pan, int &tilt)
Get current position in motor ticks.
Definition: dp_ptu.cpp:250
virtual int get_pan()
Get current pan in motor ticks.
Definition: dp_ptu.cpp:276
virtual void reset()
Reset the PTU.
Definition: dp_ptu.cpp:343
virtual void set_pan(int pan)
Set pan in motor ticks.
Definition: dp_ptu.cpp:201
virtual void stop_motion()
Stop currently running motion.
Definition: dp_ptu.cpp:192
virtual int max_pan()
Get maximum pan in motor ticks.
Definition: dp_ptu.cpp:294
virtual void set_pan_tilt_rad(float pan, float tilt)
Set pan and tilt in radians.
Definition: dp_ptu.cpp:240
virtual ~DirectedPerceptionPTU()
Destructor.
Definition: dp_ptu.cpp:107
virtual void get_pan_tilt_rad(float &pan, float &tilt)
Get pan/tilt in radians.
Definition: dp_ptu.cpp:261
virtual int max_tilt()
Get maximum tilt in motor ticks.
Definition: dp_ptu.cpp:312
virtual int min_pan()
Get minimum pan in motor ticks.
Definition: dp_ptu.cpp:303
virtual int min_tilt()
Get minimum tilt in motor ticks.
Definition: dp_ptu.cpp:321
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
virtual void set_tilt(int tilt)
Set tilt in motor ticks.
Definition: dp_ptu.cpp:210
virtual void set_pan_tilt(int pan, int tilt)
Set pan and tilt in motor ticks.
Definition: dp_ptu.cpp:220