diff --git a/system/dummy_diag_publisher/CMakeLists.txt b/system/dummy_diag_publisher/CMakeLists.txt
index cecb317bf9c34..794e7d35e1194 100644
--- a/system/dummy_diag_publisher/CMakeLists.txt
+++ b/system/dummy_diag_publisher/CMakeLists.txt
@@ -4,11 +4,15 @@ project(dummy_diag_publisher)
find_package(autoware_cmake REQUIRED)
autoware_package()
-ament_auto_add_executable(${PROJECT_NAME}
- src/dummy_diag_publisher_node.cpp
+ament_auto_add_library(${PROJECT_NAME} SHARED
src/dummy_diag_publisher_core.cpp
)
+rclcpp_components_register_node(${PROJECT_NAME}
+ PLUGIN "DummyDiagPublisher"
+ EXECUTABLE ${PROJECT_NAME}_node
+)
+
ament_auto_package(INSTALL_TO_SHARE
launch
config
diff --git a/system/dummy_diag_publisher/include/dummy_diag_publisher/dummy_diag_publisher_core.hpp b/system/dummy_diag_publisher/include/dummy_diag_publisher/dummy_diag_publisher_core.hpp
index 8398c15b8e8f6..071e665ece6ec 100644
--- a/system/dummy_diag_publisher/include/dummy_diag_publisher/dummy_diag_publisher_core.hpp
+++ b/system/dummy_diag_publisher/include/dummy_diag_publisher/dummy_diag_publisher_core.hpp
@@ -35,7 +35,7 @@ struct DiagConfig
class DummyDiagPublisher : public rclcpp::Node
{
public:
- DummyDiagPublisher();
+ explicit DummyDiagPublisher(const rclcpp::NodeOptions & options);
private:
enum Status {
diff --git a/system/dummy_diag_publisher/launch/dummy_diag_publisher_node.launch.xml b/system/dummy_diag_publisher/launch/dummy_diag_publisher_node.launch.xml
index 8e71ce37543c2..9d9193fb5f7a7 100644
--- a/system/dummy_diag_publisher/launch/dummy_diag_publisher_node.launch.xml
+++ b/system/dummy_diag_publisher/launch/dummy_diag_publisher_node.launch.xml
@@ -4,7 +4,7 @@
-
+
diff --git a/system/dummy_diag_publisher/src/dummy_diag_publisher_core.cpp b/system/dummy_diag_publisher/src/dummy_diag_publisher_core.cpp
index cfe1692c91df9..9abf325e62833 100644
--- a/system/dummy_diag_publisher/src/dummy_diag_publisher_core.cpp
+++ b/system/dummy_diag_publisher/src/dummy_diag_publisher_core.cpp
@@ -245,12 +245,14 @@ void DummyDiagPublisher::onTimer()
updater_.force_update();
}
-DummyDiagPublisher::DummyDiagPublisher()
-: Node(
- "dummy_diag_publisher", rclcpp::NodeOptions()
- .allow_undeclared_parameters(true)
- .automatically_declare_parameters_from_overrides(true)),
- updater_(this)
+rclcpp::NodeOptions override_options(rclcpp::NodeOptions options)
+{
+ return options.allow_undeclared_parameters(true).automatically_declare_parameters_from_overrides(
+ true);
+}
+
+DummyDiagPublisher::DummyDiagPublisher(const rclcpp::NodeOptions & options)
+: Node("dummy_diag_publisher", override_options(options)), updater_(this)
{
// Parameter
@@ -277,3 +279,6 @@ DummyDiagPublisher::DummyDiagPublisher()
timer_ = rclcpp::create_timer(
this, get_clock(), period_ns, std::bind(&DummyDiagPublisher::onTimer, this));
}
+
+#include
+RCLCPP_COMPONENTS_REGISTER_NODE(DummyDiagPublisher)
diff --git a/system/dummy_diag_publisher/src/dummy_diag_publisher_node.cpp b/system/dummy_diag_publisher/src/dummy_diag_publisher_node.cpp
deleted file mode 100644
index a532e8d1c6d01..0000000000000
--- a/system/dummy_diag_publisher/src/dummy_diag_publisher_node.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2020 Tier IV, Inc.
-//
-// 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 "dummy_diag_publisher/dummy_diag_publisher_core.hpp"
-
-#include
-
-int main(int argc, char ** argv)
-{
- rclcpp::init(argc, argv);
- auto node = std::make_shared();
- rclcpp::spin(node);
- rclcpp::shutdown();
- return 0;
-}