MRPT  1.9.9
CTuMicos.h
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #ifndef CTuMicos_H
11 #define CTuMicos_H
12 
13 #include <mrpt/comms/CSerialPort.h>
16 
17 namespace mrpt::hwdrivers
18 {
19 /** This class implements initialization and comunication methods to
20  * control a Tilt Unit model DT-80, working in radians .
21  * \ingroup mrpt_hwdrivers_grp
22  */
24 {
25  public:
26  /** Default constructor */
27 
28  CTuMicos(){};
29 
30  /** Destructor */
31 
32  virtual ~CTuMicos() { close(); }
33  /*************************** Commands ***************************/
34 
35  public:
36  /** Search limit forward */
37 
38  virtual bool rangeMeasure();
39 
40  /** Specification of positions in absolute terms */
41 
42  virtual bool moveToAbsPos(char axis, double nRad);
43 
44  /** Query position in absolute terms */
45 
46  virtual bool absPosQ(char axis, double& nRad);
47 
48  /** Specify desired axis position as an offset from the current position. \n
49  * This method recives the number of radians to move.
50  * \code
51  * Example of use:
52  * TT-500 *
53  * A *
54  * TO * Current Tilt position is -500
55  * TO500 *
56  * A *
57  * TT * Current Pan position is 1000
58  * \endcode
59  */
60 
61  virtual bool moveToOffPos(char axis, double nRad);
62 
63  /** Query position in relative terms */
64 
65  virtual bool offPosQ(char axis, double& nRad);
66 
67  /** Query max movement limit of a axis in absolute terms */
68 
69  virtual bool maxPosQ(char axis, double& nRad);
70 
71  /** Query min movement limit of a axis in absolute terms */
72 
73  virtual bool minPosQ(char axis, double& nRad);
74 
75  /** Query if exist movement limits */
76 
77  virtual bool enableLimitsQ(bool& enable); // Query if exist some limit
78 
79  /** Enable/Disable movement limits */
80 
81  virtual bool enableLimits(bool set);
82 
83  /** With I mode (default) instructs pan-tilt unit to immediately
84  * execute positional commands. \n
85  * In S mode instructs pan-tilt unit to execute positional commands
86  * only when an Await Position Command Completion command is executed
87  * or when put into Immediate Execution Mode. \n
88  * \code
89  * Example of use of S mode:
90  * DR *
91  * S *
92  * PP1500 *
93  * TP-900 *
94  * PP * Current Pan position is 0
95  * TP * Current Tilt position is 0
96  * A *
97  * PP * Current Pan position is 1500
98  * TP * Current Tilt position is -900
99  * \endcode
100  */
101 
102  virtual bool inmediateExecution(bool set);
103 
104  /** Wait the finish of the last position command to
105  * continue accept commands
106  */
107 
108  virtual bool aWait(void);
109 
110  /** Inmediately stop all */
111 
112  virtual bool haltAll();
113 
114  /** Inmediately stop */
115 
116  virtual bool halt(char axis);
117 
118  /** Specification of turn speed */
119 
120  virtual bool speed(char axis, double radSec);
121 
122  /** Query turn speed */
123 
124  virtual bool speedQ(char axis, double& radSec);
125 
126  /** Specification (de/a)celeration in turn */
127 
128  virtual bool aceleration(char axis, double radSec2);
129 
130  /** Query (de/a)celeration in turn */
131 
132  virtual bool acelerationQ(char axis, double& radSec2);
133 
134  /** Specification of velocity to which start and finish
135  * the (de/a)celeration
136  */
137 
138  virtual bool baseSpeed(char axis, double radSec);
139 
140  /** Query velocity to which start and finish
141  * the (de/a)celeration
142  */
143 
144  virtual bool baseSpeedQ(char axis, double& radSec);
145 
146  /** Specification of velocity upper limit */
147 
148  virtual bool upperSpeed(char axis, double radSec);
149 
150  /** Query velocity upper limit */
151 
152  virtual bool upperSpeedQ(char axis, double& radSec);
153 
154  /** Specification of velocity lower limit */
155 
156  virtual bool lowerSpeed(char axis, double radSec);
157 
158  /** Query velocity lower limit */
159 
160  virtual bool lowerSpeedQ(char axis, double& radSec);
161 
162  /** Reset PTU to initial state */
163 
164  virtual bool reset(void);
165 
166  /** Save or restart default values */
167 
168  virtual bool save(void);
169 
170  /** Restore default values */
171 
172  virtual bool restoreDefaults(void);
173 
174  /** Restore factory default values */
175 
176  virtual bool restoreFactoryDefaults(void);
177 
178  /** Version and CopyRights */
179 
180  virtual bool version(char* nVersion);
181 
182  /** Number of version */
183 
184  virtual void nversion(double& nVersion);
185 
186  /** Query power mode */
187 
188  virtual bool powerModeQ(bool transit, char& mode);
189 
190  /** Specification of power mode */
191 
192  virtual bool powerMode(bool transit, char mode);
193 
194  /** Clear controller internal stack */
195 
196  bool clear();
197 
198  /** Set limits of movement */
199 
200  virtual bool setLimits(char axis, double& l, double& u);
201 
202  /* Change motion direction */
203 
204  virtual bool changeMotionDir();
205 
206  /**************************** State Queries ********************/
207 
208  virtual int checkErrors();
209 
210  /** Clear errors **/
211 
212  virtual void clearErrors() {}
213  /*************************** Other member methods *****************/
214 
215  public:
216  /** PTU and serial port initialization */
217 
218  virtual bool init(const std::string& port);
219 
220  /** Close Connection with serial port */
221 
222  virtual void close();
223 
224  /** To obtains the mistake for use discrete values when the movement
225  * is expressed in radians. Parameters are the absolute position in
226  * radians and the axis desired
227  */
228 
229  virtual double radError(char axis, double nRadMoved);
230 
231  /** To obtain the discrete value for a number of radians */
232 
233  virtual long radToPos(char axis, double nRad);
234 
235  /** To obtain the number of radians for a discrete value */
236 
237  virtual double posToRad(char axis, long nPos);
238 
239  /** Performs a scan in the axis indicated and whit the precision desired. \n
240  * \param <axis> {Pan or Till} \n
241  * \param <tWait> {Wait time betwen commands} \n
242  * \param <initial> {initial position}
243  * \param <final> {final position}
244  * \param <radPre> {radians precision for the scan}
245  */
246 
247  virtual bool scan(
248  char axis, int wait, float initial, float final, double radPre);
249 
250  /** Query verbose mode */
251 
252  virtual bool verboseQ(bool& modo);
253 
254  /** Set verbose. \n
255  * \conde
256  * Example of response with FV (verbose) active:
257  * FV *
258  * PP * Current pan position is 0
259  * Example of response with FT (terse) active:
260  * FT *
261  * PP * 0
262  * \endcode
263  */
264 
265  virtual bool verbose(bool set);
266 
267  /** Query echo mode */
268 
269  virtual bool echoModeQ(bool& mode);
270 
271  /** Enable/Disable echo response with command. \n
272  * \code
273  * Example of use (EE supposed):
274  * PP * 22
275  * ED *
276  * <pp entered again, but not echoed>* 22
277  * \endcode
278  */
279 
280  virtual bool echoMode(bool mode);
281 
282  /** Query the pan and tilt resolution per position moved
283  * and initialize local atributes
284  */
285 
286  virtual bool resolution(void);
287 
288  /** Check if ptu is moving */
289 
290  virtual double status(double& rad);
291 
292  /*************************** Methods for internal use ****************/
293 
294  private:
295  /** To transmition commands to the PTU */
296 
297  virtual bool transmit(const char* command);
298 
299  /** To receive the responseof the PTU */
300 
301  virtual bool receive(const char* command, char* response);
302 
303  /** Used to obtains a number of radians */
304 
305  virtual bool radQuerry(char axis, char command, double& nRad);
306 
307  /** Method used for asign a number of radians with a command */
308 
309  virtual bool radAsign(char axis, char command, double nRad);
310 
311  /** Convert string to double */
312 
313  static double convertToDouble(char* sDouble);
314 
315  /** Convert string to long */
316 
317  static long convertToLong(char* sLong);
318 
319  /**************************** Atributes ********************/
320 
321  public:
322  /* Index of the Tilt axis in use */
323 
325 
326 }; // End of class
327 
328 }
329 #endif
330 
331 
virtual bool receive(const char *command, char *response)
To receive the responseof the PTU.
Definition: CTuMicos.cpp:542
virtual bool powerMode(bool transit, char mode)
Specification of power mode.
Definition: CTuMicos.cpp:367
virtual bool echoMode(bool mode)
Enable/Disable echo response with command.
Definition: CTuMicos.cpp:605
virtual bool aWait(void)
Wait the finish of the last position command to continue accept commands.
Definition: CTuMicos.cpp:252
virtual bool echoModeQ(bool &mode)
Query echo mode.
Definition: CTuMicos.cpp:594
virtual bool setLimits(char axis, double &l, double &u)
Set limits of movement.
Definition: CTuMicos.cpp:392
virtual bool absPosQ(char axis, double &nRad)
Query position in absolute terms.
Definition: CTuMicos.cpp:63
virtual bool verboseQ(bool &modo)
Query verbose mode.
Definition: CTuMicos.cpp:572
virtual bool speed(char axis, double radSec)
Specification of turn speed.
Definition: CTuMicos.cpp:113
virtual bool init(const std::string &port)
PTU and serial port initialization.
Definition: CTuMicos.cpp:432
virtual bool restoreDefaults(void)
Restore default values.
Definition: CTuMicos.cpp:313
This class implements initialization and comunication methods to control a generic Pan and Tilt Unit...
Definition: CPtuBase.h:21
virtual long radToPos(char axis, double nRad)
To obtain the discrete value for a number of radians.
Definition: CTuMicos.cpp:737
Contains classes for various device interfaces.
virtual bool upperSpeedQ(char axis, double &radSec)
Query velocity upper limit.
Definition: CTuMicos.cpp:186
CTuMicos()
Default constructor.
Definition: CTuMicos.h:28
virtual double status(double &rad)
Check if ptu is moving.
Definition: CTuMicos.cpp:627
bool clear()
Clear controller internal stack.
Definition: CTuMicos.cpp:378
virtual bool moveToOffPos(char axis, double nRad)
Specify desired axis position as an offset from the current position.
Definition: CTuMicos.cpp:72
virtual bool offPosQ(char axis, double &nRad)
Query position in relative terms.
Definition: CTuMicos.cpp:86
virtual bool radQuerry(char axis, char command, double &nRad)
Used to obtains a number of radians.
Definition: CTuMicos.cpp:632
virtual bool moveToAbsPos(char axis, double nRad)
Specification of positions in absolute terms.
Definition: CTuMicos.cpp:49
virtual bool transmit(const char *command)
To transmition commands to the PTU.
Definition: CTuMicos.cpp:519
virtual double posToRad(char axis, long nPos)
To obtain the number of radians for a discrete value.
Definition: CTuMicos.cpp:748
virtual bool save(void)
Save or restart default values.
Definition: CTuMicos.cpp:302
virtual bool haltAll()
Inmediately stop all.
Definition: CTuMicos.cpp:257
virtual double radError(char axis, double nRadMoved)
To obtains the mistake for use discrete values when the movement is expressed in radians.
Definition: CTuMicos.cpp:508
virtual bool acelerationQ(char axis, double &radSec2)
Query (de/a)celeration in turn.
Definition: CTuMicos.cpp:142
static double convertToDouble(char *sDouble)
Convert string to double.
Definition: CTuMicos.cpp:770
virtual bool minPosQ(char axis, double &nRad)
Query min movement limit of a axis in absolute terms.
Definition: CTuMicos.cpp:104
Versatile class for consistent logging and management of output messages.
virtual bool resolution(void)
Query the pan and tilt resolution per position moved and initialize local atributes.
Definition: CTuMicos.cpp:616
virtual bool aceleration(char axis, double radSec2)
Specification (de/a)celeration in turn.
Definition: CTuMicos.cpp:131
virtual bool version(char *nVersion)
Version and CopyRights.
Definition: CTuMicos.cpp:335
This class implements initialization and comunication methods to control a Tilt Unit model DT-80...
Definition: CTuMicos.h:23
virtual bool baseSpeed(char axis, double radSec)
Specification of velocity to which start and finish the (de/a)celeration.
Definition: CTuMicos.cpp:153
GLsizei const GLchar ** string
Definition: glext.h:4101
virtual bool baseSpeedQ(char axis, double &radSec)
Query velocity to which start and finish the (de/a)celeration.
Definition: CTuMicos.cpp:164
virtual bool scan(char axis, int wait, float initial, float final, double radPre)
Performs a scan in the axis indicated and whit the precision desired.
Definition: CTuMicos.cpp:725
virtual bool radAsign(char axis, char command, double nRad)
Method used for asign a number of radians with a command.
Definition: CTuMicos.cpp:709
static long convertToLong(char *sLong)
Convert string to long.
Definition: CTuMicos.cpp:759
virtual bool halt(char axis)
Inmediately stop.
Definition: CTuMicos.cpp:268
GLint mode
Definition: glext.h:5669
virtual bool maxPosQ(char axis, double &nRad)
Query max movement limit of a axis in absolute terms.
Definition: CTuMicos.cpp:95
virtual void close()
Close Connection with serial port.
Definition: CTuMicos.cpp:494
virtual bool reset(void)
Reset PTU to initial state.
Definition: CTuMicos.cpp:282
virtual bool lowerSpeedQ(char axis, double &radSec)
Query velocity lower limit.
Definition: CTuMicos.cpp:208
virtual bool enableLimits(bool set)
Enable/Disable movement limits.
Definition: CTuMicos.cpp:230
virtual bool speedQ(char axis, double &radSec)
Query turn speed.
Definition: CTuMicos.cpp:122
virtual bool changeMotionDir()
Definition: CTuMicos.cpp:406
virtual bool restoreFactoryDefaults(void)
Restore factory default values.
Definition: CTuMicos.cpp:324
virtual bool inmediateExecution(bool set)
With I mode (default) instructs pan-tilt unit to immediately execute positional commands.
Definition: CTuMicos.cpp:241
virtual bool enableLimitsQ(bool &enable)
Query if exist movement limits.
Definition: CTuMicos.cpp:219
virtual void clearErrors()
Clear errors.
Definition: CTuMicos.h:212
virtual ~CTuMicos()
Destructor.
Definition: CTuMicos.h:32
virtual bool lowerSpeed(char axis, double radSec)
Specification of velocity lower limit.
Definition: CTuMicos.cpp:197
virtual bool rangeMeasure()
Search limit forward.
Definition: CTuMicos.cpp:29
virtual bool verbose(bool set)
Set verbose.
Definition: CTuMicos.cpp:583
virtual bool powerModeQ(bool transit, char &mode)
Query power mode.
Definition: CTuMicos.cpp:356
virtual void nversion(double &nVersion)
Number of version.
Definition: CTuMicos.cpp:346
virtual int checkErrors()
Check errors, returns 0 if there are not errors or error code otherwise.
Definition: CTuMicos.cpp:782
virtual bool upperSpeed(char axis, double radSec)
Specification of velocity upper limit.
Definition: CTuMicos.cpp:175



Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 7d5e6d718 Fri Aug 24 01:51:28 2018 +0200 at lun nov 2 08:35:50 CET 2020