4 #include "../header/B_approach.h"
13 sonarMsgs = boost::circular_buffer<float>(averageNum);
16 this->pubPlat = pubPlat;
23 void B_approach::sonarCallback(
const sensor_msgs::Range &sensor_range)
25 look_caresses_pkg::platform_control msg;
26 sonarMsgs.push_front(sensor_range.range);
28 if (sonarMsgs.full()){
31 float sum = std::accumulate(sonarMsgs.begin(), sonarMsgs.end(), 0.0);
32 float average = sum/averageNum;
33 ROS_INFO(
"[B] Sonar Range average: %f", average);
36 msg.body_vel.linear.x = 30;
37 msg.body_vel.angular.z = 0.05;
40 msg.body_vel.linear.x = 0;
41 msg.body_vel.angular.z = 0;
45 msg.body_vel.linear.x = 0;
46 msg.body_vel.angular.z = 0;
59 sonarMsgs.erase(sonarMsgs.begin(), sonarMsgs.end());
61 ROS_INFO(
"[B] Started");
66 look_caresses_pkg::platform_control plat_msgs_headup;
67 float body_config_headup[4] = {0.0, 0.4, 0, -0.1};
68 float body_config_speed_headup[4] = {0.0, -1.0, -1.0, -1.0};
69 for (
int i =0; i<4; i++){
70 plat_msgs_headup.body_config[i] = body_config_headup[i];
71 plat_msgs_headup.body_config_speed[i] = body_config_speed_headup[i];
74 pubPlat.publish(plat_msgs_headup);
77 ros::Rate loop_rate2(2);
78 while (ros::ok() && counter<6){
85 ROS_INFO(
"[B] Finished");
92 void B_approach::subTopics(){
93 subRange = nh.subscribe(
"/miro/rob01/sensors/sonar_range", 1000, &B_approach::sonarCallback,
this);
100 void B_approach::unsubTopics(){
int main()
main for approachin phase. MiRo goes straight until the sensor detect something (ideally the user han...
B_approach(ros::NodeHandle nh, ros::Publisher pubPlat)
Costructor for phase B task.