MIRA
IPTU.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) by
3  * MetraLabs GmbH (MLAB), GERMANY
4  * and
5  * Neuroinformatics and Cognitive Robotics Labs (NICR) at TU Ilmenau, GERMANY
6  * All rights reserved.
7  *
8  * Contact: info@mira-project.org
9  *
10  * Commercial Usage:
11  * Licensees holding valid commercial licenses may use this file in
12  * accordance with the commercial license agreement provided with the
13  * software or, alternatively, in accordance with the terms contained in
14  * a written agreement between you and MLAB or NICR.
15  *
16  * GNU General Public License Usage:
17  * Alternatively, this file may be used under the terms of the GNU
18  * General Public License version 3.0 as published by the Free Software
19  * Foundation and appearing in the file LICENSE.GPL3 included in the
20  * packaging of this file. Please review the following information to
21  * ensure the GNU General Public License version 3.0 requirements will be
22  * met: http://www.gnu.org/copyleft/gpl.html.
23  * Alternatively you may (at your option) use any later version of the GNU
24  * General Public License if such license has been publicly approved by
25  * MLAB and NICR (or its successors, if any).
26  *
27  * IN NO EVENT SHALL "MLAB" OR "NICR" BE LIABLE TO ANY PARTY FOR DIRECT,
28  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
29  * THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF "MLAB" OR
30  * "NICR" HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  * "MLAB" AND "NICR" SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING,
33  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
34  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
35  * ON AN "AS IS" BASIS, AND "MLAB" AND "NICR" HAVE NO OBLIGATION TO
36  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR MODIFICATIONS.
37  */
38 
47 #ifndef _MIRA_IPTU_H_
48 #define _MIRA_IPTU_H_
49 
50 #include <transform/Pose.h>
51 
52 namespace mira { namespace robot {
53 
55 
57 class IPTU
58 {
59 public:
62 
63  template<typename Reflector>
64  void reflect(Reflector& r)
65  {
66  r.interface("IPTU");
67 
68  r.method("setPan", &IPTU::setPan, this, "Set the pan angle.",
69  "pan", "pan angle", 0.);
70  r.method("getPan", &IPTU::getPan, this, "Get the current pan angle.");
71  r.method("addPan", &IPTU::addPan, this, "Adds value to current pan angle.",
72  "dPan", "pan angle increment", 0.);
73 
74  r.method("setTilt", &IPTU::setTilt, this, "Set the tilt angle.",
75  "tilt", "tilt angle", 0.);
76  r.method("getTilt", &IPTU::getTilt, this, "Get the current tilt angle.");
77  r.method("addTilt", &IPTU::addTilt, this, "Adds value to current tilt angle.",
78  "dTilt", "tilt angle increment", 0.);
79 
80  r.method("lookAt", &IPTU::lookAt, this,
81  "Moves the PTU to look at the specified target in the given target frame.",
82  "target", "target position", Eigen::Vector3f(1., 2., 3.),
83  "targetFrame", "transformation frame id for target position", "/maps/MapFrame",
84  "tolerance", "tolerance in deg. If difference between current view direction "
85  "and desired direction is closer than this threshold, the PTU is not moved.", 30);
86 
87  r.method("halt", &IPTU::halt, this, "Stops all movement.");
88  }
89 
90  virtual ~IPTU() {}
91 
93 
94 public:
97  virtual void setPan(double pan) = 0;
98  virtual double getPan() = 0;
99  virtual void addPan(double dPan) = 0;
100 
101  virtual void setTilt(double tilt) = 0;
102  virtual double getTilt() = 0;
103  virtual void addTilt(double dTilt) = 0;
104 
105  virtual void lookAt(const Eigen::Vector3f& target, const std::string& targetFrame, double tol) = 0;
106 
107  virtual void halt() = 0;
108 
110 };
111 
113 
114 }} // namespace
115 
116 #endif
virtual void halt()=0
virtual void addTilt(double dTilt)=0
An interface class for objects with a PTU.
Definition: IPTU.h:57
virtual void setTilt(double tilt)=0
virtual void setPan(double pan)=0
virtual ~IPTU()
Definition: IPTU.h:90
virtual double getPan()=0
virtual void lookAt(const Eigen::Vector3f &target, const std::string &targetFrame, double tol)=0
void reflect(Reflector &r)
Definition: IPTU.h:64
virtual double getTilt()=0
virtual void addPan(double dPan)=0