ros2_control - rolling
Loading...
Searching...
No Matches
magnetometer_broadcaster.hpp
1// Copyright 2026 Christian Rauch
2// Copyright 2021 PAL Robotics SL.
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16/*
17 * Authors: Christian Rauch, Subhas Das, Denis Stogl, Victor Lopez
18 */
19
20#ifndef MAGNETOMETER_BROADCASTER__MAGNETOMETER_BROADCASTER_HPP_
21#define MAGNETOMETER_BROADCASTER__MAGNETOMETER_BROADCASTER_HPP_
22
23#include <memory>
24
25#include <controller_interface/controller_interface.hpp>
26#include <magnetometer_broadcaster/magnetometer_broadcaster_parameters.hpp>
27#include <realtime_tools/realtime_publisher.hpp>
28#include <semantic_components/magnetic_field_sensor.hpp>
29#include <sensor_msgs/msg/magnetic_field.hpp>
30
31namespace magnetometer_broadcaster
32{
33
35{
36public:
38
40
41 controller_interface::CallbackReturn on_init() override;
42
43 controller_interface::CallbackReturn on_configure(
44 const rclcpp_lifecycle::State & previous_state) override;
45
46 controller_interface::CallbackReturn on_activate(
47 const rclcpp_lifecycle::State & previous_state) override;
48
49 controller_interface::CallbackReturn on_deactivate(
50 const rclcpp_lifecycle::State & previous_state) override;
51
52 controller_interface::return_type update(
53 const rclcpp::Time & time, const rclcpp::Duration & period) override;
54
55protected:
56 std::shared_ptr<ParamListener> param_listener_;
57 Params params_;
58
59 std::unique_ptr<semantic_components::MagneticFieldSensor> magnetometer_;
60
62 rclcpp::Publisher<sensor_msgs::msg::MagneticField>::SharedPtr sensor_state_publisher_;
63 std::unique_ptr<StatePublisher> realtime_publisher_;
64 sensor_msgs::msg::MagneticField state_message_;
65};
66
67} // namespace magnetometer_broadcaster
68
69#endif // MAGNETOMETER_BROADCASTER__MAGNETOMETER_BROADCASTER_HPP_
Definition controller_interface.hpp:27
Definition magnetometer_broadcaster.hpp:35
controller_interface::return_type update(const rclcpp::Time &time, const rclcpp::Duration &period) override
Control step update. Command interfaces are updated based on on reference inputs and current states....
Definition magnetometer_broadcaster.cpp:108
controller_interface::InterfaceConfiguration state_interface_configuration() const override
Get configuration for controller's required state interfaces.
Definition magnetometer_broadcaster.cpp:33
controller_interface::InterfaceConfiguration command_interface_configuration() const override
Get configuration for controller's required command interfaces.
Definition magnetometer_broadcaster.cpp:27
controller_interface::CallbackReturn on_init() override
Extending interface with initialization method which is individual for each controller.
Definition magnetometer_broadcaster.cpp:41
Definition realtime_publisher.hpp:55
Configuring what command/state interfaces to claim.
Definition controller_interface_base.hpp:72