#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 //#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> file = std::make_shared>(path); std::array 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 pose = std::make_shared(); 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