1 #ifndef INCLUDED_ACOUSTIC_TOUCH_LIBACOUSTICTOUCH_H 2 #define INCLUDED_ACOUSTIC_TOUCH_LIBACOUSTICTOUCH_H 26 #include <boost/enable_shared_from_this.hpp> 27 #include <boost/algorithm/string.hpp> 30 #include <alsa/asoundlib.h> 31 #include <alsa/mixer.h> 36 #include "ros/console.h" 37 #include "ros/package.h" 40 #include "ros/subscriber.h" 41 #include "xmlrpcpp/XmlRpcValue.h" 44 #include "std_msgs/Empty.h" 45 #include "std_msgs/Float64.h" 46 #include "std_msgs/Int8.h" 47 #include "std_msgs/String.h" 48 #include "common_msgs/KeyValuePair.h" 49 #include "common_msgs/KeyValuePairArray.h" 50 #include "arduino_msgs/sensorStates.h" 51 #include "touch_gesture_msgs/SoundGesture.h" 54 #include "acoustic_touch_recognition/MenuOptions.h" 68 #define HOST "127.0.0.1" // localhost 71 #define OUTPUT_BUFFER_SIZE 1024 74 #define RESET_COLOR "\e[m" 75 #define MAKE_ITALIC "\e[3m" 76 #define MAKE_WHITE "\e[1;97m" 77 #define MAKE_GREEN "\e[1;32m" 78 #define MAKE_BLACK "\e[0;30m" 79 #define MAKE_RED "\e[1;31m" 80 #define MAKE_BLUE "\e[1;34m" 81 #define MAKE_CYAN "\e[1;36m" 82 #define MAKE_BROWN "\e[0;33m" 83 #define MAKE_PURPLE "\e[1;35m" 84 #define MAKE_YELLOW "\e[1;33m" 85 #define MAKE_BLUE_UNDERLINE "\e[4;34m" 86 #define MAKE_YELLOW_UNDERLINE "\e[4;33m" 89 #define CK_DEBUG false 90 #define CK_LOG_PATH "/log/chuck/" 91 #define CK_FILE_PATH "/scripts/chuck/" 92 #define CK_FILE_NAME "audio_analyzer.ck" 93 #define CK_PULSE_LATENCY 60 // pulseaudio latency in msecs 118 num_attrib_(vector<double>(33,0)),
141 void setAttributes(vector<double>);
142 void clearAttributes();
145 void setWaiting(
bool);
147 vector<double> getAttributes()
const;
148 int getMicNum()
const;
149 string getMicId()
const;
151 bool isWaiting()
const;
153 SoundGesture &operator = (
const SoundGesture &SG);
175 void startGestureCallback(
const std_msgs::Int8::ConstPtr& msg);
176 void endGestureCallback(
const touch_gesture_msgs::SoundGesture::ConstPtr& msg);
177 bool optionsCallback(acoustic_touch_recognition::MenuOptions::Request &req,
178 acoustic_touch_recognition::MenuOptions::Response &res);
179 void timerCallback(
const ros::TimerEvent&);
180 void shutdownCallback(
const ros::TimerEvent&);
183 void setSoundGestures(vector<SoundGesture> s_gests);
184 void setSoundGestures(SoundGesture s_gest,
int index);
185 void clearSoundGestures();
186 void clearSoundGestures(
int index);
187 void setClassAttributes(
string index,
string c_att);
188 void setFile(
string path);
192 vector<SoundGesture> getSoundGestures()
const;
193 SoundGesture getSoundGestures(
int index)
const;
197 bool fileExists(
string path);
198 void createArffFile();
199 void writeGestures();
246 const vector<string> &,
const vector<int> &,
const vector<int> &,
const string & =
"default");
248 const vector<string> &,
const vector<int> &,
const vector<int> &,
const vector<bool> &,
const string & =
"default");
252 static void getShellOutput(
const string &,
string *,
string *);
253 static string fetchAlsaModel(
const string &);
254 static vector<string> fetchAlsaModels(
const vector<string> &);
255 static vector<string> fetchAlsaIDs(
const string &);
256 static vector<int> fetchChucKIndexes(
const string &);
259 string getRobot()
const;
260 string getChucKMode()
const;
261 map<string, ck_cardAttribs_t> getSoundCards()
const;
262 vector<string> getSoundCardIDs()
const;
263 string getSoundCardID(
const int &)
const;
264 int getSoundCardIndex(
const string &)
const;
265 int getSoundCardNumber(
const string &)
const;
266 int getSoundCardVolume(
const string &)
const;
267 bool getSoundCardCapacitive(
const string &)
const;
268 bool getKillChucK()
const;
271 void setRobot(
const string &);
273 void setSoundCards(
const vector<string> &);
274 void setSoundCards(
const vector<string> &,
const vector<int> &);
275 void setSoundCards(
const vector<string> &,
const vector<int> &,
const vector<int> &);
276 void setSoundCards(
const vector<string> &,
const vector<int> &,
const vector<int> &,
const vector<bool> &);
277 void setSoundCardIDs(
const vector<string> &);
278 void setSoundCardIndex(
const int &,
const string &);
279 void setSoundCardNumber(
const int &,
const string &);
280 void setSoundCardVolume(
const int &,
const string &);
281 void setSoundCardCapacitive(
const bool &,
const string &);
282 void setKillChucK(
const bool &);
285 void printSoundCards()
const;
286 void setAttributesAlsa();
287 void setAttributesPulse();
288 void setSoundCardInputVol(
const int &,
const string &);
289 void chucKThread(
const string &);
290 void launchChucK(
const bool & =
CK_DEBUG);
326 void oscCallback(
int);
327 void capacitiveCallback(
const arduino_msgs::sensorStates::ConstPtr &);
328 void classifReadyCallback(
const std_msgs::Empty::ConstPtr &);
329 void sendOscMsg(
string,
int);
333 void setTrainLabels(
string);
336 vector<std::string> getShellOutput(
const std::string);
349 acoustic_touch_recognition::MenuOptions
srv_;
int mic_num_
Definition: libacoustic_touch.h:157
string path_
Definition: libacoustic_touch.h:223
ros::AsyncSpinner aspin_
Definition: libacoustic_touch.h:341
Definition: IpEndpointName.h:41
acoustic_touch_recognition::MenuOptions srv_
Definition: libacoustic_touch.h:349
Definition: OscReceivedElements.h:474
ros::NodeHandle nh_
Definition: libacoustic_touch.h:340
string robot_
Definition: libacoustic_touch.h:294
vector< string > label_names_
Definition: libacoustic_touch.h:220
XmlRpc::XmlRpcValue train_labels_
Definition: libacoustic_touch.h:219
#define CK_DEBUG
Definition: libacoustic_touch.h:89
bool waiting_
Definition: libacoustic_touch.h:160
vector< ChucKPacketListener > chuck_listeners_
Definition: libacoustic_touch.h:369
int mic_amount_
Definition: libacoustic_touch.h:358
ros::ServiceServer settings_srv_
Definition: libacoustic_touch.h:208
const string mode_
Definition: libacoustic_touch.h:214
Front-end to create instance objects step by step.
Definition: libacoustic_touch.h:166
ros::Subscriber classif_ready_sub_
Definition: libacoustic_touch.h:344
Declares all PStreams classes.
uint32_t index
Definition: libacoustic_touch.h:236
uint32_t number
Definition: libacoustic_touch.h:237
AcousticTouchInterface & at_iface_
Definition: libacoustic_touch.h:323
vector< string > label_names_
Definition: libacoustic_touch.h:361
XmlRpc::XmlRpcValue class_labels_
Definition: libacoustic_touch.h:218
ChucKHandler * chuck_handler_
Definition: libacoustic_touch.h:363
bool capacitive
Definition: libacoustic_touch.h:239
ros::Timer timer_
Definition: libacoustic_touch.h:209
string mic_id_
Definition: libacoustic_touch.h:158
vector< thread > ck_threads_
Definition: libacoustic_touch.h:298
ros::NodeHandle nh_
Definition: libacoustic_touch.h:203
bool classif_state_
Definition: libacoustic_touch.h:356
This class is in charge of handling multiple instances of chuck, as much instances as the user wants...
Definition: libacoustic_touch.h:232
vector< string > sndcard_ids_
Definition: libacoustic_touch.h:296
const string mode_
Definition: libacoustic_touch.h:353
This class describes an audio client.
Definition: libacoustic_touch.h:305
vector< IpEndpointName > ip_endpoints_
Definition: libacoustic_touch.h:368
ros::Timer shutdown_timer_
Definition: libacoustic_touch.h:210
ChucKPacketListener(AcousticTouchInterface &ati)
Definition: libacoustic_touch.h:318
string robot_
Definition: libacoustic_touch.h:352
ros::ServiceClient client_
Definition: libacoustic_touch.h:348
SoundGesture(int m_num, string m_id, vector< double > atts)
Parametrized constructor. In this case sets the empty flag to false.
Definition: libacoustic_touch.h:130
ros::Subscriber gest_start_sub_
Definition: libacoustic_touch.h:205
vector< thread > osc_threads_
Definition: libacoustic_touch.h:367
XmlRpc::XmlRpcValue mics_
Definition: libacoustic_touch.h:359
int mic_amount_
Definition: libacoustic_touch.h:215
mutex osc_mutex_
Definition: libacoustic_touch.h:366
map< string, ck_cardAttribs_t > sound_cards_
Definition: libacoustic_touch.h:297
bool empty_
Definition: libacoustic_touch.h:159
fstream sound_file_
Definition: libacoustic_touch.h:224
ros::Rate loop_rate_
Definition: libacoustic_touch.h:342
vector< SoundGesture > sound_gestures_
Definition: libacoustic_touch.h:216
ros::Publisher gesture_pub_
Definition: libacoustic_touch.h:204
ros::Subscriber gest_end_sub_
Definition: libacoustic_touch.h:207
vector< double > num_attrib_
Definition: libacoustic_touch.h:156
ros::Subscriber capacitive_sub_
Definition: libacoustic_touch.h:343
ros::Publisher gesture_end_pub_
Definition: libacoustic_touch.h:345
bool with_GUI_
Definition: libacoustic_touch.h:354
bool kill_chuck_
Definition: libacoustic_touch.h:299
SoundGesture(int m_num=0, string m_id="")
Empty constructor. Admits number and id. Sets also the empty flag to true.
Definition: libacoustic_touch.h:115
int cap_state_
Definition: libacoustic_touch.h:355
uint32_t volume
Definition: libacoustic_touch.h:238
string chuck_mode_
Definition: libacoustic_touch.h:295
~ChucKHandler()
Definition: libacoustic_touch.h:249
Definition: libacoustic_touch.h:234
Definition: OscPacketListener.h:46
ros::Publisher gesture_start_pub_
Definition: libacoustic_touch.h:346
vector< UdpListeningReceiveSocket * > udp_sockets_
Definition: libacoustic_touch.h:370
This nested class describes a chuck packet listener. A nested class is also a member variable of the ...
Definition: libacoustic_touch.h:316
ros::Publisher loud_noise_pub_
Definition: libacoustic_touch.h:347
~SoundGesture()
Definition: libacoustic_touch.h:138
string robot_
Definition: libacoustic_touch.h:213
bool flag_start_sub_
Definition: libacoustic_touch.h:206
XmlRpc::XmlRpcValue class_labels_
Definition: libacoustic_touch.h:360