Files
Tangent_Planner/include/tangent_planner_node.h
T
2023-01-21 11:33:15 +01:00

87 lines
3.0 KiB
C++
Executable File

#ifndef TANGENT_PLANNER_TANGENT_PLANNER_NODE_H
#define TANGENT_PLANNER_TANGENT_PLANNER_NODE_H
#include "tangent_planner.h"
#include "memory.h"
#include "nav_msgs/Odometry.h"
#include "geometry_msgs/Pose2D.h"
#include "ros/ros.h"
#include "sensor_msgs/Range.h"
#include "read.hpp"
#include <tf/transform_datatypes.h>
//#include "tangent_planner/nav_path_start.h"
//#include "tangent_planner/nav_path_stop.h"
//#include "tangent_planner/nav_get_patrol_name.h"
//#include "tangent_planner/nav_get_status.h"
//#include "tangent_planner/nav_low_bat.h"
#include "thread"
namespace Planner {
class TangentPlannerNode : public TangentPlanner {
public:
TangentPlannerNode();
~TangentPlannerNode();
void set_publisher(const ros::Publisher &publisher);
void odometry_subscriber_callback(const nav_msgs::Odometry &msg);
void tof_subscriber_callback(const sensor_msgs::Range &msg);
void twist_publisher_callback();
// bool start_patrolling_callback(tangent_planner::nav_path_startRequest &req, tangent_planner::nav_path_startResponse &res);
//
// bool stop_patrolling_callback(tangent_planner::nav_path_stopRequest &req, tangent_planner::nav_path_stopResponse &res);
//
// bool get_patrol_path_name_callback(tangent_planner::nav_get_patrol_nameRequest &req,
// tangent_planner::nav_get_patrol_nameResponse &res);
//
// bool get_current_status_callback(tangent_planner::nav_get_statusRequest &req, tangent_planner::nav_get_statusResponse &res);
//
// bool low_battery_callback(tangent_planner::nav_low_batRequest &req, tangent_planner::nav_low_batResponse &res);
void computeVelocity();
bool is_started();
bool going_home = false;
ros::ServiceServer start_patrolling;
ros::ServiceServer stop_patrolling;
ros::ServiceServer get_patrol_path_name;
ros::ServiceServer get_current_status;
ros::ServiceServer low_battery;
std::string path_file_name;
void start_thread();
private:
void read_path_file(const char* path){
std::shared_ptr<DATA_FILE<float,10>> file = std::make_shared<DATA_FILE<float, 10>>(path);
std::array<float,10> in={0.f};
while(file->read(in)){
tf::Quaternion q(in[4],in[5],in[6], in[3]);
tf::Matrix3x3 m(q);
double roll, pitch, yaw;
m.getRPY(roll, pitch, yaw);
std::shared_ptr<geometry_msgs::Pose2D> pose = std::make_shared<geometry_msgs::Pose2D>();
pose->x = in[1];
pose->y = in[0];
pose->theta = yaw;
global_plan_.insert(global_plan_.begin(), pose);
}
setGoal();
file.reset();
}
void read_path_file(std::string path);
ros::Publisher twist_publisher;
bool started_ = false;
// std::mutex mtx_;
};
}
#endif //TANGENT_PLANNER_TANGENT_PLANNER_NODE_H