diff --git a/localization/yabloc/yabloc_monitor/CMakeLists.txt b/localization/yabloc/yabloc_monitor/CMakeLists.txt index aa1515661b2f6..7267cda53714f 100644 --- a/localization/yabloc/yabloc_monitor/CMakeLists.txt +++ b/localization/yabloc/yabloc_monitor/CMakeLists.txt @@ -4,12 +4,16 @@ project(yabloc_monitor) find_package(autoware_cmake REQUIRED) autoware_package() -ament_auto_add_executable(yabloc_monitor - src/yabloc_monitor_node.cpp +ament_auto_add_library(${PROJECT_NAME} src/yabloc_monitor_core.cpp src/availability_module.cpp ) -ament_target_dependencies(yabloc_monitor) + +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "YabLocMonitor" + EXECUTABLE ${PROJECT_NAME}_node + EXECUTOR SingleThreadedExecutor +) ament_auto_package( INSTALL_TO_SHARE diff --git a/localization/yabloc/yabloc_monitor/launch/yabloc_monitor.launch.xml b/localization/yabloc/yabloc_monitor/launch/yabloc_monitor.launch.xml index cf9f73977d35d..3073208e2e1a2 100644 --- a/localization/yabloc/yabloc_monitor/launch/yabloc_monitor.launch.xml +++ b/localization/yabloc/yabloc_monitor/launch/yabloc_monitor.launch.xml @@ -1,7 +1,7 @@ <launch> <arg name="param_file" default="$(find-pkg-share yabloc_monitor)/config/yabloc_monitor.param.yaml"/> - <node name="yabloc_monitor" pkg="yabloc_monitor" exec="yabloc_monitor" output="screen"> + <node pkg="yabloc_monitor" exec="yabloc_monitor_node" output="both"> <param from="$(var param_file)"/> <remap from="~/input/yabloc_pose" to="/localization/pose_estimator/yabloc/pf/pose"/> </node> diff --git a/localization/yabloc/yabloc_monitor/package.xml b/localization/yabloc/yabloc_monitor/package.xml index 22a5d0eded6b6..a42a734dbab31 100644 --- a/localization/yabloc/yabloc_monitor/package.xml +++ b/localization/yabloc/yabloc_monitor/package.xml @@ -20,6 +20,7 @@ <depend>diagnostic_updater</depend> <depend>geometry_msgs</depend> <depend>rclcpp</depend> + <depend>rclcpp_components</depend> <test_depend>ament_cmake_gtest</test_depend> <test_depend>ament_lint_auto</test_depend> diff --git a/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.cpp b/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.cpp index 876b86fd2bc9e..31e6ec9c51e7a 100644 --- a/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.cpp +++ b/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.cpp @@ -18,7 +18,8 @@ #include <memory> -YabLocMonitor::YabLocMonitor() : Node("yabloc_monitor"), updater_(this) +YabLocMonitor::YabLocMonitor(const rclcpp::NodeOptions & options) +: Node("yabloc_monitor", options), updater_(this) { updater_.setHardwareID(get_name()); updater_.add("yabloc_status", this, &YabLocMonitor::update_diagnostics); @@ -46,3 +47,6 @@ void YabLocMonitor::update_diagnostics(diagnostic_updater::DiagnosticStatusWrapp stat.summary(diagnostic_msgs::msg::DiagnosticStatus::ERROR, "NG"); } } + +#include <rclcpp_components/register_node_macro.hpp> +RCLCPP_COMPONENTS_REGISTER_NODE(YabLocMonitor) diff --git a/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.hpp b/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.hpp index 8b8b937da205b..5dd46d63de6f2 100644 --- a/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.hpp +++ b/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.hpp @@ -25,7 +25,7 @@ class YabLocMonitor : public rclcpp::Node { public: - YabLocMonitor(); + explicit YabLocMonitor(const rclcpp::NodeOptions & options = rclcpp::NodeOptions()); private: void update_diagnostics(diagnostic_updater::DiagnosticStatusWrapper & stat); diff --git a/localization/yabloc/yabloc_monitor/src/yabloc_monitor_node.cpp b/localization/yabloc/yabloc_monitor/src/yabloc_monitor_node.cpp deleted file mode 100644 index 9b58325c852ea..0000000000000 --- a/localization/yabloc/yabloc_monitor/src/yabloc_monitor_node.cpp +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2023 TIER IV -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "yabloc_monitor_core.hpp" - -#include <memory> - -int main(int argc, char ** argv) -{ - rclcpp::init(argc, argv); - rclcpp::NodeOptions node_options; - auto node = std::make_shared<YabLocMonitor>(); - - rclcpp::spin(node); - - return 0; -}