event/touch.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2015 Aldebaran
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16 */
17 
18 #ifndef TOUCH_EVENT_REGISTER_HPP
19 #define TOUCH_EVENT_REGISTER_HPP
20 
21 #include <string>
22 
23 #include <boost/make_shared.hpp>
24 #include <boost/shared_ptr.hpp>
25 #include <boost/thread/mutex.hpp>
26 #include <boost/enable_shared_from_this.hpp>
27 
28 #include <qi/session.hpp>
29 
30 #include <ros/ros.h>
31 #include <naoqi_bridge_msgs/Bumper.h>
32 #include <naoqi_bridge_msgs/HandTouch.h>
33 #include <naoqi_bridge_msgs/HeadTouch.h>
34 
35 #include <naoqi_driver/tools.hpp>
37 
38 // Converter
39 #include "../src/converters/touch.hpp"
40 // Publisher
41 #include "../src/publishers/basic.hpp"
42 // Recorder
43 #include "../recorder/basic_event.hpp"
44 
45 namespace naoqi
46 {
47 
55 template<class T>
56 class TouchEventRegister: public boost::enable_shared_from_this<TouchEventRegister<T> >
57 {
58 
59 public:
60 
65  TouchEventRegister(const std::string& name, const std::vector<std::string> keys, const float& frequency, const qi::SessionPtr& session );
67 
68  void resetPublisher( ros::NodeHandle& nh );
70 
71  void startProcess();
72  void stopProcess();
73 
74  void writeDump(const ros::Time& time);
75  void setBufferDuration(float duration);
76 
77  void isRecording(bool state);
78  void isPublishing(bool state);
79  void isDumping(bool state);
80 
81  void touchCallback(std::string &key, qi::AnyValue &value, qi::AnyValue &message);
82  void touchCallbackMessage(std::string &key, bool &state, naoqi_bridge_msgs::Bumper &msg);
83  void touchCallbackMessage(std::string &key, bool &state, naoqi_bridge_msgs::HandTouch &msg);
84  void touchCallbackMessage(std::string &key, bool &state, naoqi_bridge_msgs::HeadTouch &msg);
85 
86 
87 private:
88  void registerCallback();
89  void unregisterCallback();
90  void onEvent();
91 
92 private:
95  //boost::shared_ptr<recorder::BasicEventRecorder<T> > recorder_;
96 
97  qi::SessionPtr session_;
98  qi::AnyObject p_memory_;
99  unsigned int serviceId;
100  std::string name_;
101 
102  boost::mutex mutex_;
103 
108 
109 protected:
110  std::vector<std::string> keys_;
111 }; // class
112 
113 
114 class BumperEventRegister: public TouchEventRegister<naoqi_bridge_msgs::Bumper>
115 {
116 public:
117  BumperEventRegister( const std::string& name, const std::vector<std::string> keys, const float& frequency, const qi::SessionPtr& session ) : TouchEventRegister<naoqi_bridge_msgs::Bumper>(name, keys, frequency, session) {}
118 };
119 
120 class HeadTouchEventRegister: public TouchEventRegister<naoqi_bridge_msgs::HeadTouch>
121 {
122 public:
123  HeadTouchEventRegister( const std::string& name, const std::vector<std::string> keys, const float& frequency, const qi::SessionPtr& session ) : TouchEventRegister<naoqi_bridge_msgs::HeadTouch>(name, keys, frequency, session) {}
124 };
125 
126 class HandTouchEventRegister: public TouchEventRegister<naoqi_bridge_msgs::HandTouch>
127 {
128 public:
129  HandTouchEventRegister( const std::string& name, const std::vector<std::string> keys, const float& frequency, const qi::SessionPtr& session ) : TouchEventRegister<naoqi_bridge_msgs::HandTouch>(name, keys, frequency, session) {}
130 };
131 
132 //QI_REGISTER_OBJECT(BumperEventRegister, touchCallback)
133 //QI_REGISTER_OBJECT(HeadTouchEventRegister, touchCallback)
134 
136  ::qi::ObjectTypeBuilder<TouchEventRegister<naoqi_bridge_msgs::Bumper> > b;
137  QI_VAARGS_APPLY(__QI_REGISTER_ELEMENT, TouchEventRegister<naoqi_bridge_msgs::Bumper>, touchCallback)
138  b.registerType();
139  return true;
140  }
141 static bool BOOST_PP_CAT(__qi_registration, __LINE__) = _qiregisterTouchEventRegisterBumper();
142 
144  ::qi::ObjectTypeBuilder<TouchEventRegister<naoqi_bridge_msgs::HandTouch> > b;
145  QI_VAARGS_APPLY(__QI_REGISTER_ELEMENT, TouchEventRegister<naoqi_bridge_msgs::HandTouch>, touchCallback)
146  b.registerType();
147  return true;
148  }
149 static bool BOOST_PP_CAT(__qi_registration, __LINE__) = _qiregisterTouchEventRegisterHandTouch();
150 
152  ::qi::ObjectTypeBuilder<TouchEventRegister<naoqi_bridge_msgs::HeadTouch> > b;
153  QI_VAARGS_APPLY(__QI_REGISTER_ELEMENT, TouchEventRegister<naoqi_bridge_msgs::HeadTouch>, touchCallback)
154  b.registerType();
155  return true;
156  }
157 static bool BOOST_PP_CAT(__qi_registration, __LINE__) = _qiregisterTouchEventRegisterHeadTouch();
158 
159 } //naoqi
160 
161 #endif
tools.hpp
naoqi::HeadTouchEventRegister
Definition: event/touch.hpp:120
naoqi::TouchEventRegister::session_
qi::SessionPtr session_
Definition: event/touch.hpp:97
naoqi::TouchEventRegister::publisher_
boost::shared_ptr< publisher::BasicPublisher< T > > publisher_
Definition: event/touch.hpp:94
naoqi::TouchEventRegister::~TouchEventRegister
~TouchEventRegister()
Definition: event/touch.cpp:67
naoqi::TouchEventRegister::name_
std::string name_
Definition: event/touch.hpp:100
msg
msg
boost::shared_ptr< naoqi::recorder::GlobalRecorder >
naoqi::TouchEventRegister::isStarted_
bool isStarted_
Definition: event/touch.hpp:104
naoqi::TouchEventRegister::touchCallbackMessage
void touchCallbackMessage(std::string &key, bool &state, naoqi_bridge_msgs::Bumper &msg)
Definition: event/touch.cpp:207
ros.h
session
session
naoqi::_qiregisterTouchEventRegisterBumper
static bool _qiregisterTouchEventRegisterBumper()
Definition: event/touch.hpp:135
naoqi::TouchEventRegister
GlobalRecorder concept interface.
Definition: event/touch.hpp:56
naoqi::TouchEventRegister::mutex_
boost::mutex mutex_
Definition: event/touch.hpp:102
naoqi::TouchEventRegister::isPublishing
void isPublishing(bool state)
Definition: event/touch.cpp:148
naoqi
Definition: converter.hpp:29
naoqi::TouchEventRegister::writeDump
void writeDump(const ros::Time &time)
Definition: event/touch.cpp:126
naoqi::TouchEventRegister::onEvent
void onEvent()
naoqi::_qiregisterTouchEventRegisterHandTouch
static bool _qiregisterTouchEventRegisterHandTouch()
Definition: event/touch.hpp:143
naoqi::TouchEventRegister::isDumping_
bool isDumping_
Definition: event/touch.hpp:107
naoqi::TouchEventRegister::resetRecorder
void resetRecorder(boost::shared_ptr< naoqi::recorder::GlobalRecorder > gr)
Definition: event/touch.cpp:79
naoqi::TouchEventRegister::touchCallback
void touchCallback(std::string &key, qi::AnyValue &value, qi::AnyValue &message)
Definition: event/touch.cpp:172
naoqi::TouchEventRegister::isDumping
void isDumping(bool state)
Definition: event/touch.cpp:155
naoqi::TouchEventRegister::unregisterCallback
void unregisterCallback()
Definition: event/touch.cpp:167
naoqi::TouchEventRegister::serviceId
unsigned int serviceId
Definition: event/touch.hpp:99
naoqi::HandTouchEventRegister
Definition: event/touch.hpp:126
naoqi::TouchEventRegister::p_memory_
qi::AnyObject p_memory_
Definition: event/touch.hpp:98
naoqi::HandTouchEventRegister::HandTouchEventRegister
HandTouchEventRegister(const std::string &name, const std::vector< std::string > keys, const float &frequency, const qi::SessionPtr &session)
Definition: event/touch.hpp:129
name
name
naoqi::BumperEventRegister::BumperEventRegister
BumperEventRegister(const std::string &name, const std::vector< std::string > keys, const float &frequency, const qi::SessionPtr &session)
Definition: event/touch.hpp:117
naoqi::BumperEventRegister
Definition: event/touch.hpp:114
naoqi::TouchEventRegister::setBufferDuration
void setBufferDuration(float duration)
Definition: event/touch.cpp:135
ros::Time
globalrecorder.hpp
naoqi::TouchEventRegister::TouchEventRegister
TouchEventRegister()
Constructor for recorder interface.
Definition: event/touch.cpp:36
naoqi::TouchEventRegister::isRecording
void isRecording(bool state)
Definition: event/touch.cpp:141
naoqi::_qiregisterTouchEventRegisterHeadTouch
static bool _qiregisterTouchEventRegisterHeadTouch()
Definition: event/touch.hpp:151
naoqi::TouchEventRegister::resetPublisher
void resetPublisher(ros::NodeHandle &nh)
Definition: event/touch.cpp:73
naoqi::TouchEventRegister::isPublishing_
bool isPublishing_
Definition: event/touch.hpp:105
naoqi::HeadTouchEventRegister::HeadTouchEventRegister
HeadTouchEventRegister(const std::string &name, const std::vector< std::string > keys, const float &frequency, const qi::SessionPtr &session)
Definition: event/touch.hpp:123
naoqi::TouchEventRegister::stopProcess
void stopProcess()
Definition: event/touch.cpp:106
naoqi::TouchEventRegister::startProcess
void startProcess()
Definition: event/touch.cpp:85
naoqi::BOOST_PP_CAT
static bool BOOST_PP_CAT(__qi_registration, __LINE__)
naoqi::TouchEventRegister::keys_
std::vector< std::string > keys_
Definition: event/touch.hpp:110
naoqi::TouchEventRegister::registerCallback
void registerCallback()
Definition: event/touch.cpp:162
ros::NodeHandle
naoqi::TouchEventRegister::converter_
boost::shared_ptr< converter::TouchEventConverter< T > > converter_
Definition: event/touch.hpp:93
naoqi::TouchEventRegister::isRecording_
bool isRecording_
Definition: event/touch.hpp:106


naoqi_driver
Author(s): Karsten Knese
autogenerated on Sat Feb 3 2024 03:50:06