From 49e69bd5af08cd4a08e53af1ec668d471336890a Mon Sep 17 00:00:00 2001 From: Kento Yabuuchi Date: Wed, 19 Jun 2024 09:29:29 +0900 Subject: [PATCH] feat(yabloc_pose_initializer): componentize yabloc_pose_initializer node (#7506) * change the node to component Signed-off-by: Kento Yabuuchi * remove useless node.cpp Signed-off-by: Kento Yabuuchi * add rclcpp_components as dependency Signed-off-by: Kento Yabuuchi --------- Signed-off-by: Kento Yabuuchi Signed-off-by: Simon Eisenmann --- .../yabloc_pose_initializer/CMakeLists.txt | 20 ++++++++------ .../camera/camera_pose_initializer.hpp | 2 +- .../launch/yabloc_pose_initializer.launch.xml | 2 +- .../yabloc_pose_initializer/package.xml | 1 + .../camera/camera_pose_initializer_core.cpp | 8 ++++-- .../camera/camera_pose_initializer_node.cpp | 26 ------------------- 6 files changed, 21 insertions(+), 38 deletions(-) delete mode 100644 localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_node.cpp diff --git a/localization/yabloc/yabloc_pose_initializer/CMakeLists.txt b/localization/yabloc/yabloc_pose_initializer/CMakeLists.txt index 91b272b413c4c..2e6d31ae2f12b 100644 --- a/localization/yabloc/yabloc_pose_initializer/CMakeLists.txt +++ b/localization/yabloc/yabloc_pose_initializer/CMakeLists.txt @@ -20,18 +20,22 @@ find_package(OpenCV REQUIRED) # =================================================== # Executable # Camera -set(TARGET camera_pose_initializer_node) -ament_auto_add_executable(${TARGET} +ament_auto_add_library(${PROJECT_NAME} src/camera/lane_image.cpp src/camera/marker_module.cpp src/camera/projector_module.cpp src/camera/semantic_segmentation.cpp - src/camera/camera_pose_initializer_core.cpp - src/camera/camera_pose_initializer_node.cpp) -target_include_directories(${TARGET} PUBLIC include) -target_include_directories(${TARGET} SYSTEM PRIVATE ${EIGEN3_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}) -target_link_libraries(${TARGET} ${PCL_LIBRARIES} Sophus::Sophus) -ament_target_dependencies(${TARGET} OpenCV) + src/camera/camera_pose_initializer_core.cpp) +target_include_directories(${PROJECT_NAME} PUBLIC include) +target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE ${EIGEN3_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}) +target_link_libraries(${PROJECT_NAME} ${PCL_LIBRARIES} Sophus::Sophus) +ament_target_dependencies(${PROJECT_NAME} OpenCV) + +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "yabloc::CameraPoseInitializer" + EXECUTABLE ${PROJECT_NAME}_node + EXECUTOR MultiThreadedExecutor +) # =================================================== ament_auto_package(INSTALL_TO_SHARE config launch) diff --git a/localization/yabloc/yabloc_pose_initializer/include/yabloc_pose_initializer/camera/camera_pose_initializer.hpp b/localization/yabloc/yabloc_pose_initializer/include/yabloc_pose_initializer/camera/camera_pose_initializer.hpp index 979d1b370699e..eb2942a76e5df 100644 --- a/localization/yabloc/yabloc_pose_initializer/include/yabloc_pose_initializer/camera/camera_pose_initializer.hpp +++ b/localization/yabloc/yabloc_pose_initializer/include/yabloc_pose_initializer/camera/camera_pose_initializer.hpp @@ -43,7 +43,7 @@ class CameraPoseInitializer : public rclcpp::Node using LaneletMapBin = autoware_map_msgs::msg::LaneletMapBin; using RequestPoseAlignment = tier4_localization_msgs::srv::PoseWithCovarianceStamped; - CameraPoseInitializer(); + explicit CameraPoseInitializer(const rclcpp::NodeOptions & options = rclcpp::NodeOptions()); private: const int angle_resolution_; diff --git a/localization/yabloc/yabloc_pose_initializer/launch/yabloc_pose_initializer.launch.xml b/localization/yabloc/yabloc_pose_initializer/launch/yabloc_pose_initializer.launch.xml index 83c2c8fe09287..964cc61420b9c 100644 --- a/localization/yabloc/yabloc_pose_initializer/launch/yabloc_pose_initializer.launch.xml +++ b/localization/yabloc/yabloc_pose_initializer/launch/yabloc_pose_initializer.launch.xml @@ -2,7 +2,7 @@ - + diff --git a/localization/yabloc/yabloc_pose_initializer/package.xml b/localization/yabloc/yabloc_pose_initializer/package.xml index 7ed16c9a8b82d..22e9bdd0dd553 100644 --- a/localization/yabloc/yabloc_pose_initializer/package.xml +++ b/localization/yabloc/yabloc_pose_initializer/package.xml @@ -22,6 +22,7 @@ lanelet2_extension libopencv-dev rclcpp + rclcpp_components sensor_msgs tier4_localization_msgs visualization_msgs diff --git a/localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_core.cpp b/localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_core.cpp index 083e7dd5bcd43..dd97ea2ad888f 100644 --- a/localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_core.cpp +++ b/localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_core.cpp @@ -26,8 +26,9 @@ namespace yabloc { -CameraPoseInitializer::CameraPoseInitializer() -: Node("camera_pose_initializer"), angle_resolution_(declare_parameter("angle_resolution")) +CameraPoseInitializer::CameraPoseInitializer(const rclcpp::NodeOptions & options) +: Node("camera_pose_initializer", options), + angle_resolution_(declare_parameter("angle_resolution")) { using std::placeholders::_1; using std::placeholders::_2; @@ -216,3 +217,6 @@ CameraPoseInitializer::PoseCovStamped CameraPoseInitializer::create_rectified_in } } // namespace yabloc + +#include +RCLCPP_COMPONENTS_REGISTER_NODE(yabloc::CameraPoseInitializer) diff --git a/localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_node.cpp b/localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_node.cpp deleted file mode 100644 index 2bcfe073351f8..0000000000000 --- a/localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_node.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2023 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 "yabloc_pose_initializer/camera/camera_pose_initializer.hpp" - -int main(int argc, char * argv[]) -{ - rclcpp::init(argc, argv); - auto node = std::make_shared(); - rclcpp::executors::MultiThreadedExecutor executor; - executor.add_node(node); - executor.spin(); - rclcpp::shutdown(); - return 0; -}