17#ifndef MOTION_PRIMITIVES_CONTROLLERS__MOTION_PRIMITIVES_BASE_CONTROLLER_HPP_
18#define MOTION_PRIMITIVES_CONTROLLERS__MOTION_PRIMITIVES_BASE_CONTROLLER_HPP_
25#include <realtime_tools/lock_free_queue.hpp>
26#include <realtime_tools/realtime_server_goal_handle.hpp>
27#include "controller_interface/controller_interface.hpp"
28#include "rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp"
29#include "rclcpp_lifecycle/state.hpp"
30#include "realtime_tools/realtime_buffer.hpp"
31#include "realtime_tools/realtime_publisher.hpp"
32#include "realtime_tools/realtime_thread_safe_box.hpp"
34#include "control_msgs/msg/motion_primitive.hpp"
35#include "rclcpp_action/rclcpp_action.hpp"
37namespace motion_primitives_controllers
39enum class ExecutionState : uint8_t
49using MotionType = control_msgs::msg::MotionPrimitive;
50enum class MotionHelperType : uint8_t
55 MOTION_SEQUENCE_START = 100,
56 MOTION_SEQUENCE_END = 101
59enum class ReadyForNewPrimitive : uint8_t
70 controller_interface::CallbackReturn
on_init()
override;
76 controller_interface::CallbackReturn on_configure(
77 const rclcpp_lifecycle::State & previous_state)
override;
79 controller_interface::CallbackReturn on_activate(
80 const rclcpp_lifecycle::State & previous_state)
override;
82 controller_interface::CallbackReturn on_deactivate(
83 const rclcpp_lifecycle::State & previous_state)
override;
85 controller_interface::return_type
update(
86 const rclcpp::Time & time,
const rclcpp::Duration & period)
override;
89 std::string tf_prefix_;
91 using MotionPrimitive = control_msgs::msg::MotionPrimitive;
94 std::atomic<bool> has_active_goal_ =
false;
95 rclcpp::TimerBase::SharedPtr goal_handle_timer_;
96 rclcpp::Duration action_monitor_period_ = rclcpp::Duration(std::chrono::milliseconds(20));
98 void reset_command_interfaces();
99 bool set_command_interfaces();
101 bool print_error_once_ =
true;
103 std::atomic<bool> cancel_requested_ =
false;
105 std::atomic<bool> robot_stop_requested_ =
false;
106 bool was_executing_ =
false;
107 ExecutionState execution_status_;
108 ReadyForNewPrimitive ready_for_new_primitive_;
109 MotionPrimitive current_moprim_;
Definition controller_interface.hpp:27
Definition motion_primitives_base_controller.hpp:66
controller_interface::InterfaceConfiguration command_interface_configuration() const override
Get configuration for controller's required command interfaces.
Definition motion_primitives_base_controller.cpp:48
controller_interface::return_type update(const rclcpp::Time &time, const rclcpp::Duration &period) override
Definition motion_primitives_base_controller.cpp:108
controller_interface::InterfaceConfiguration state_interface_configuration() const override
Get configuration for controller's required state interfaces.
Definition motion_primitives_base_controller.cpp:82
controller_interface::CallbackReturn on_init() override
Extending interface with initialization method which is individual for each controller.
Definition motion_primitives_base_controller.cpp:31
Configuring what command/state interfaces to claim.
Definition controller_interface_base.hpp:58