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> on_export_state_interfaces() override;
52
53 controller_interface::return_type update_reference_from_subscribers(
54 const rclcpp::Time & time, const rclcpp::Duration & period) override;
55
56 std::shared_ptr<chained_filter::ParamListener> param_listener_;
57 chained_filter::Params params_;
58
59 std::vector<std::unique_ptr<filters::FilterChain<double>>> filters_;
60 std::vector<double> output_state_values_;
61};
62} // namespace chained_filter_controller
63#endif // CHAINED_FILTER_CONTROLLER__CHAINED_FILTER_HPP_
Definition chained_filter.hpp:33
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:162
controller_interface::CallbackReturn on_init() override
Extending interface with initialization method which is individual for each controller.
Definition chained_filter.cpp:26
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
std::vector< hardware_interface::StateInterface > on_export_state_interfaces() override
Definition chained_filter.cpp:142
controller_interface::InterfaceConfiguration command_interface_configuration() const override
Get configuration for controller's required command interfaces.
Definition chained_filter.cpp:40
controller_interface::InterfaceConfiguration state_interface_configuration() const override
Get configuration for controller's required state interfaces.
Definition chained_filter.cpp:45
Definition chainable_controller_interface.hpp:37
Configuring what command/state interfaces to claim.
Definition controller_interface_base.hpp:58