10#ifndef _QR_PLANNER_HPP
11#define _QR_PLANNER_HPP
13#include <driver_msgs/msg/bool_stamped.hpp>
14#include <localization_msgs/msg/odometry.hpp>
16#include <planner_msgs/action/qr.hpp>
17#include <planner_msgs/msg/wrench_plan.hpp>
18#include <rclcpp/rclcpp.hpp>
19#include <rclcpp_action/rclcpp_action.hpp>
57 explicit QRPlanner(
const rclcpp::NodeOptions & options);
62 void odometryCallback(
const localization_msgs::msg::Odometry::SharedPtr msg);
64 rclcpp_action::GoalResponse handle_goal(
65 const rclcpp_action::GoalUUID & uuid, std::shared_ptr<const QRAction::Goal> goal);
67 rclcpp_action::CancelResponse handle_cancel(
const std::shared_ptr<GoalHandleQR> goal_handle);
69 void handle_accepted(
const std::shared_ptr<GoalHandleQR> goal_handle);
72 void _runPlannerLogic(
const std::shared_ptr<GoalHandleQR> & goal_handle);
76 void udpReceiveThread();
77 void sendStartSignal();
78 bool parse_signal_to_pose(
const std::string & data_str,
PoseData & pose);
81 rclcpp::CallbackGroup::SharedPtr callback_group_;
82 rclcpp::Publisher<planner_msgs::msg::WrenchPlan>::SharedPtr pub_;
83 rclcpp::Publisher<driver_msgs::msg::BoolStamped>::SharedPtr zed_power_pub_;
84 rclcpp::Subscription<localization_msgs::msg::Odometry>::SharedPtr sub_;
85 rclcpp_action::Server<QRAction>::SharedPtr action_server_;
87 std::shared_ptr<GoalHandleQR> active_goal_handle_;
88 localization_msgs::msg::Odometry::SharedPtr current_odom_;
91 std::unique_ptr<planner_msgs::msg::WrenchPlan> computeControlCommand(
92 const std::shared_ptr<localization_msgs::msg::Odometry> & odom,
const PoseData & target);
95 void computeSearchMotion(
96 const std::shared_ptr<localization_msgs::msg::Odometry> & odom,
97 std::unique_ptr<planner_msgs::msg::WrenchPlan> & msg);
102 std::mutex odom_mutex_;
103 std::mutex pose_mutex_;
104 std::mutex goal_mutex_;
107 std::string remote_ip_;
111 std::thread udp_thread_;
Definition: qr_planner.hpp:55
~QRPlanner()
Definition: qr_planner.cpp:74
Definition: qr_planner.hpp:22
planner_msgs::action::QR QRAction
Definition: qr_planner.hpp:24
rclcpp_action::ServerGoalHandle< QRAction > GoalHandleQR
Definition: qr_planner.hpp:25
Definition: qr_planner.hpp:28
bool is_finished
Definition: qr_planner.hpp:36
uint8_t z_mode
Definition: qr_planner.hpp:35
float z
Definition: qr_planner.hpp:32
float roll
Definition: qr_planner.hpp:33
float det_conf
Definition: qr_planner.hpp:42
bool is_searching
Definition: qr_planner.hpp:37
bool is_error
Definition: qr_planner.hpp:38
float det_y
Definition: qr_planner.hpp:40
float x
Definition: qr_planner.hpp:30
float yaw
Definition: qr_planner.hpp:34
float det_x
Definition: qr_planner.hpp:39
float y
Definition: qr_planner.hpp:31
float det_z
Definition: qr_planner.hpp:41
Definition: qr_planner.hpp:46
float z
Definition: qr_planner.hpp:49
float x
Definition: qr_planner.hpp:47
float y
Definition: qr_planner.hpp:48
float roll
Definition: qr_planner.hpp:50
float yaw
Definition: qr_planner.hpp:51