56 controller_interface::CallbackReturn
on_init()
override;
62 controller_interface::CallbackReturn on_configure(
63 const rclcpp_lifecycle::State & previous_state)
override;
65 controller_interface::CallbackReturn on_activate(
66 const rclcpp_lifecycle::State & previous_state)
override;
68 controller_interface::CallbackReturn on_deactivate(
69 const rclcpp_lifecycle::State & previous_state)
override;
74 const rclcpp::Time & time,
const rclcpp::Duration & period)
override;
77 const rclcpp::Time & time,
const rclcpp::Duration & period)
override;
79 using ControllerReferenceMsg = geometry_msgs::msg::TwistStamped;
80 using OdomStateMsg = nav_msgs::msg::Odometry;
81 using TfStateMsg = tf2_msgs::msg::TFMessage;
82 using ControllerStateMsg = control_msgs::msg::MecanumDriveControllerState;
85 std::shared_ptr<mecanum_drive_controller::ParamListener> param_listener_;
86 mecanum_drive_controller::Params params_;
118 ControllerReferenceMsg current_ref_;
120 rclcpp::Duration ref_timeout_ = rclcpp::Duration::from_seconds(0.0);
123 rclcpp::Subscription<ControllerReferenceMsg>::SharedPtr ref_subscriber_ =
nullptr;
126 rclcpp::Publisher<OdomStateMsg>::SharedPtr odom_s_publisher_;
127 std::unique_ptr<OdomStatePublisher> rt_odom_state_publisher_;
128 OdomStateMsg odom_state_msg_;
131 rclcpp::Publisher<TfStateMsg>::SharedPtr tf_odom_s_publisher_;
132 std::unique_ptr<TfStatePublisher> rt_tf_odom_state_publisher_;
133 TfStateMsg tf_odom_state_msg_;
136 rclcpp::Publisher<ControllerStateMsg>::SharedPtr controller_s_publisher_;
137 std::unique_ptr<ControllerStatePublisher> controller_state_publisher_;
138 ControllerStateMsg controller_state_msg_;
149 void reference_callback(
const std::shared_ptr<ControllerReferenceMsg> msg);
151 double velocity_in_center_frame_linear_x_;
152 double velocity_in_center_frame_linear_y_;
153 double velocity_in_center_frame_angular_z_;
156 std::unique_ptr<control_toolbox::RateLimiter<double>> limiter_linear_x_;
157 std::unique_ptr<control_toolbox::RateLimiter<double>> limiter_linear_y_;
158 std::unique_ptr<control_toolbox::RateLimiter<double>> limiter_angular_z_;
162 std::queue<std::array<double, 3>> previous_two_commands_;
controller_interface::return_type update_and_write_commands(const rclcpp::Time &time, const rclcpp::Duration &period) override
Execute calculations of the controller and update command interfaces.
Definition mecanum_drive_controller.cpp:469
controller_interface::return_type update_reference_from_subscribers(const rclcpp::Time &time, const rclcpp::Duration &period) override
Update reference from input topics when not in chained mode.
Definition mecanum_drive_controller.cpp:416