Common
common packages for kyubic
 
Loading...
Searching...
No Matches
pdla_planner.hpp
Go to the documentation of this file.
1#ifndef _PDLA_PLANNER_HPP
2#define _PDLA_PLANNER_HPP
3
4#include <cstdint>
5#include <localization_msgs/msg/odometry.hpp>
6#include <mutex>
8#include <planner_msgs/action/pdla.hpp>
9#include <planner_msgs/msg/wrench_plan.hpp>
10#include <rclcpp/rclcpp.hpp>
11#include <rclcpp_action/rclcpp_action.hpp>
12#include <rclcpp_action/server_goal_handle.hpp>
13#include <timer/timeout.hpp>
14
15#include "planner_msgs/action/pdla.hpp"
16
18{
19
21{
22 double x;
23 double y;
24 double z;
25 double roll;
26 double yaw;
27};
28
29class PDLAPlanner : public rclcpp::Node
30{
31public:
32 explicit PDLAPlanner(const rclcpp::NodeOptions & options);
33
34private:
35 uint64_t fine_timer_ms_;
36 double look_ahead_scale;
37 Tolerance reach_tolerance, waypoint_tolerance;
38
39 rclcpp::CallbackGroup::SharedPtr callback_group_;
40
41 rclcpp::Publisher<planner_msgs::msg::WrenchPlan>::SharedPtr pub_;
42 rclcpp::Subscription<localization_msgs::msg::Odometry>::SharedPtr sub_;
43 rclcpp_action::Server<planner_msgs::action::PDLA>::SharedPtr action_server_;
44
45 rclcpp::TimerBase::SharedPtr timer_;
46 std::shared_ptr<timer::Timeout> timeout_;
47
48 // Action Callbacks
49 rclcpp_action::GoalResponse handle_goal(
50 const rclcpp_action::GoalUUID & uuid,
51 std::shared_ptr<const planner_msgs::action::PDLA::Goal> goal);
52 rclcpp_action::CancelResponse handle_cancel(
53 const std::shared_ptr<rclcpp_action::ServerGoalHandle<planner_msgs::action::PDLA>> goal_handle);
54 void handle_accepted(
55 const std::shared_ptr<rclcpp_action::ServerGoalHandle<planner_msgs::action::PDLA>> goal_handle);
56
57 void odometryCallback(const localization_msgs::msg::Odometry::SharedPtr msg);
58
59 void _runPlannerLogic(
60 const std::shared_ptr<rclcpp_action::ServerGoalHandle<planner_msgs::action::PDLA>> &
61 goal_handle);
62 bool _checkReached(
63 PoseData & target, localization_msgs::msg::Odometry::SharedPtr & odom_copy, Tolerance tol);
64 void _print_waypoint(std::string label, size_t step_idx);
65
66 void timerCallback();
67
68 bool fine_flag_ = false;
69 std::vector<PoseData> target_pose_;
70
71 bool last_reached_ = false;
72 rclcpp::Time fine_reached_time_;
73
74 bool first_reached_ = true;
75 rclcpp::Time first_reached_time_;
76
77 std::string file_path_;
78 uint8_t step_state_ = planner_msgs::action::PDLA::Feedback::RUNNING;
79
80 std::mutex odom_mutex_;
81 std::mutex goal_mutex_;
82 std::shared_ptr<localization_msgs::msg::Odometry> current_odom_;
83 std::shared_ptr<rclcpp_action::ServerGoalHandle<planner_msgs::action::PDLA>> active_goal_handle_;
84
85 size_t step_idx = 0;
86};
87
88} // namespace planner::pdla_planner
89
90#endif // !_PDLA_PLANNER_HPP
Definition: path_csv_loader.hpp:53
Definition: pdla_planner.hpp:30
Definition: pdla_feedback_repub.hpp:19
Definition: pdla_planner.hpp:21
double roll
Definition: pdla_planner.hpp:25
double z
Definition: pdla_planner.hpp:24
double x
Definition: pdla_planner.hpp:22
double yaw
Definition: pdla_planner.hpp:26
double y
Definition: pdla_planner.hpp:23
timeout library