2 #include "../header/C_interaction.h"
16 this->pubPlat = pubPlat;
37 void C_interaction::classCallback(
const std_msgs::String &pattern)
40 if (!strcmp(pattern.data.c_str() ,
"CarBottomTop") || !strcmp(pattern.data.c_str() ,
"CarTopBottom")){
43 }
else if (!strcmp(pattern.data.c_str() ,
"PatHead") || !strcmp(pattern.data.c_str() ,
"FixedHead")){
69 void C_interaction::showHappiness(
int loneliness){
71 look_caresses_pkg::platform_control plat_msgs_happy;
74 plat_msgs_happy.tail = 1 - (loneliness/100.0);
79 plat_msgs_happy.eyelid_closure = 0.4;
83 if (counterSound == 5){
85 plat_msgs_happy.sound_index_P1 = 12 + rand()%5;
92 pubPlat.publish(plat_msgs_happy);
104 positiveApproach = 0;
105 negativeApproach = 0;
108 ROS_INFO(
"[C] Started");
110 bool miroHappy =
false;
113 ROS_INFO(
"[C] I have a Loneliness value of: [%d]", loneliness);
115 look_caresses_pkg::platform_control plat_msgs_caresses;
116 float body_config_caresses[4] = {0.0, 0.85, -0.25, -0.25};
117 float body_config_speed_caresses[4] = {0.0, -1.0, -1.0, -1.0};
118 for (
int i =0; i<4; i++){
119 plat_msgs_caresses.body_config[i] = body_config_caresses[i];
120 plat_msgs_caresses.body_config_speed[i] = body_config_speed_caresses[i];
123 ros::Rate loop_rate3(1);
124 for (
int i =0; i<3; i++){
125 plat_msgs_caresses.sound_index_P1 = 12 + rand()%5;
126 pubPlat.publish(plat_msgs_caresses);
133 ros::Rate loop_rate(2);
138 if (positiveApproach > 10){
140 ROS_INFO(
"[C] I am becoming happier :) (loneliness:%d)", loneliness);
141 showHappiness(loneliness);
143 positiveApproach = 0;
145 if (negativeApproach > 25){
147 ROS_INFO(
"[C] I'm going away :'( (loneliness: %d)", loneliness);
150 if (loneliness < (20 - rand() % 10)) {
151 ROS_INFO(
"[C] I am satisfied! (loneliness:%d)", loneliness);
164 look_caresses_pkg::platform_control msg;
165 msg.body_vel.linear.x = -30;
166 msg.body_vel.angular.z = -0.05;
167 ros::Rate loop_rate2(1);
168 for (
int i = 0; i<4; i++){
169 pubPlat.publish(msg);
173 ROS_INFO(
"[C] Finished");
180 void C_interaction::subTopics(){
182 subClass = nh.subscribe(
"/miro/look4caresses/classifyGesture", 1000, &C_interaction::classCallback,
this);
189 void C_interaction::unsubTopics(){
int main(int loneliness)
Main for Task C. The task updates the loneliness value if MiRo receive caresses, and make MiRo acts h...
C_interaction(ros::NodeHandle nh, ros::Publisher pubPlat)
Costructor for phase C task.