ros2_control - rolling
Loading...
Searching...
No Matches
chained_filter.hpp
1// Copyright 2025 ros2_control PMC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef CHAINED_FILTER_CONTROLLER__CHAINED_FILTER_HPP_
16#define CHAINED_FILTER_CONTROLLER__CHAINED_FILTER_HPP_
17
18#include <memory>
19#include <string>
20#include <vector>
21
22#include "controller_interface/chainable_controller_interface.hpp"
23#include "filters/filter_chain.hpp"
24#include "rclcpp/rclcpp.hpp"
25#include "rclcpp_lifecycle/state.hpp"
26
27#include "chained_filter_controller/chained_filter_parameters.hpp"
28
29namespace chained_filter_controller
30{
31
33{
34public:
35 controller_interface::CallbackReturn on_init() override;
36
38
40
41 controller_interface::CallbackReturn on_configure(
42 const rclcpp_lifecycle::State & previous_state) override;
43
44 controller_interface::CallbackReturn on_activate(
45 const rclcpp_lifecycle::State & previous_state) override;
46
47 controller_interface::return_type update_and_write_commands(
48 const rclcpp::Time & time, const rclcpp::Duration & period) override;
49
50protected:
51 std::vector<hardware_interface::StateInterface::SharedPtr> on_export_state_interfaces_list()
52 override;
53
54 std::vector<hardware_interface::CommandInterface::SharedPtr> on_export_reference_interfaces_list()
55 override
56 {
57 // This controller does not export any reference (command) interfaces.
58 return {};
59 }
60
61 controller_interface::return_type update_reference_from_subscribers(
62 const rclcpp::Time & time, const rclcpp::Duration & period) override;
63
64 std::shared_ptr<chained_filter::ParamListener> param_listener_;
65 chained_filter::Params params_;
66
67 std::vector<std::unique_ptr<filters::FilterChain<double>>> filters_;
68};
69} // namespace chained_filter_controller
70#endif // CHAINED_FILTER_CONTROLLER__CHAINED_FILTER_HPP_
Definition chained_filter.hpp:33
std::vector< hardware_interface::StateInterface::SharedPtr > on_export_state_interfaces_list() override
Virtual method implemented by chainable controllers to export read-only interfaces.
Definition chained_filter.cpp:145
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 chained_filter.cpp:166
controller_interface::CallbackReturn on_init() override
Extending interface with initialization method which is individual for each controller.
Definition chained_filter.cpp:27
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 chained_filter.cpp:120
controller_interface::InterfaceConfiguration command_interface_configuration() const override
Get configuration for controller's required command interfaces.
Definition chained_filter.cpp:41
std::vector< hardware_interface::CommandInterface::SharedPtr > on_export_reference_interfaces_list() override
Virtual method that each chainable controller should implement to export its read/write chainable int...
Definition chained_filter.hpp:54
controller_interface::InterfaceConfiguration state_interface_configuration() const override
Get configuration for controller's required state interfaces.
Definition chained_filter.cpp:46
Virtual class to implement when integrating a controller that can be preceded by other controllers.
Definition chainable_controller_interface.hpp:38
Configuring what command/state interfaces to claim.
Definition controller_interface_base.hpp:72