ptu_directedperception
Driver.h
Go to the documentation of this file.
1 
7 #ifndef _DRIVER_H
8 #define _DRIVER_H
9 
10 //==============================================================================
11 // Includes
12 //==============================================================================
13 #include <boost/lexical_cast.hpp>
14 #include <base-logging/Logging.hpp>
15 #include "iodrivers_base/Driver.hpp"
16 
17 #include "Cmd.h"
18 
19 //==============================================================================
20 // Declaration
21 //==============================================================================
22 namespace ptu {
23 
24 class Driver : public iodrivers_base::Driver {
25 private:
26  static const int DEFAULT_BAUDRATE;
27  static const int MAX_PACKET_SIZE;
28  static const float DEGREEPERTICK;
29  static const float DEGREEPERSECARC;
30 
31  float mPanResolutionDeg;
32  float mTiltResolutionDeg;
33 
34  float mMinPanRad;
35  float mMaxPanRad;
36  float mMinTiltRad;
37  float mMaxTiltRad;
38 
39 protected:
43  int extractPacket(const uint8_t* buffer, size_t size) const;
44 
45 
46 public:
47 
48  // Constructors and destructors.
49  Driver();
50  ~Driver();
51 
53  float getMinPanRad() { return mMinPanRad; }
55  float getMaxPanRad() { return mMaxPanRad; }
57  float getMinTiltRad() { return mMinTiltRad; }
59  float getMaxTiltRad() { return mMaxTiltRad; }
60 
62  void initialize();
63 
70  void write(const std::string& msg);
71 
77  //TODO fix timeout! Could be remove could be set via iodrivers_base?
78  std::string readAns();
79 
84  template<typename T>
85  T getQuery(const std::string& answer) {
86  return boost::lexical_cast<T>( answer.substr(2, answer.find_last_of("0123456789")-1) );
87  }
88 
95  int getPos(Axis axis, bool offset);
96 
103  float getPosDeg(Axis axis, bool offset);
104 
106  float getPosRad(Axis axis, bool offset);
107 
116  bool setPosDeg(const Axis &axis, const bool &offset, const float &val, const bool &awaitCompletion = false);
117 
119  bool setPosRad(const Axis &axis, const bool &offset, const float &val, const bool &awaitCompletion = false);
120 
130  bool setPos(const Axis& axis, const bool& offset = false, const int& val = 0,
131  const bool& awaitCompletion = false);
132 
134  void setSpeed(Axis axis, int speed);
135 
137  void setSpeedDeg(Axis axis, float speed);
138 
140  void setSpeedRad(Axis axis, float speed);
141 
143  void setHalt();
144 };
145 
146 } // end of namespace ptu
147 
148 #endif // _DRIVER_H
std::string readAns()
Definition: Driver.cpp:81
float getMinTiltRad()
Definition: Driver.h:57
float getMaxTiltRad()
Definition: Driver.h:59
void setHalt()
Definition: Driver.cpp:228
Definition: Cmd.h:21
bool setPosDeg(const Axis &axis, const bool &offset, const float &val, const bool &awaitCompletion=false)
Definition: Driver.cpp:168
void setSpeed(Axis axis, int speed)
Definition: Driver.cpp:204
~Driver()
Definition: Driver.cpp:141
int extractPacket(const uint8_t *buffer, size_t size) const
Definition: Driver.cpp:106
void write(const std::string &msg)
Definition: Driver.cpp:75
void setSpeedDeg(Axis axis, float speed)
Definition: Driver.cpp:211
float getPosDeg(Axis axis, bool offset)
Definition: Driver.cpp:156
void initialize()
Definition: Driver.cpp:33
float getMinPanRad()
Definition: Driver.h:53
bool setPos(const Axis &axis, const bool &offset=false, const int &val=0, const bool &awaitCompletion=false)
Definition: Driver.cpp:183
Driver()
Definition: Driver.cpp:135
int getPos(Axis axis, bool offset)
Definition: Driver.cpp:149
Axis
Definition: Cmd.h:26
float getMaxPanRad()
Definition: Driver.h:55
bool setPosRad(const Axis &axis, const bool &offset, const float &val, const bool &awaitCompletion=false)
Definition: Driver.cpp:176
T getQuery(const std::string &answer)
Definition: Driver.h:85
float getPosRad(Axis axis, bool offset)
Definition: Driver.cpp:161
Definition: Driver.h:24
void setSpeedRad(Axis axis, float speed)
Definition: Driver.cpp:223