From 6091a5879b9b61d31ad1e04cba19b07e6a361aab Mon Sep 17 00:00:00 2001 From: "julia.sanchez" Date: Mon, 30 Nov 2020 20:15:16 +0100 Subject: [PATCH] [feat][ROS] Allow inheritance from LidarSlamNode -Extract main part from LidarSlamNode.cxx -Adapt CMakeLists consequently -Make call back virtual and private members protected --- ros_wrapping/lidar_slam/CMakeLists.txt | 5 ++++- ros_wrapping/lidar_slam/src/LidarSlamNode.cxx | 19 ------------------ ros_wrapping/lidar_slam/src/LidarSlamNode.h | 4 ++-- .../lidar_slam/src/LidarSlamNode_main.cxx | 20 +++++++++++++++++++ 4 files changed, 26 insertions(+), 22 deletions(-) create mode 100644 ros_wrapping/lidar_slam/src/LidarSlamNode_main.cxx diff --git a/ros_wrapping/lidar_slam/CMakeLists.txt b/ros_wrapping/lidar_slam/CMakeLists.txt index 0ec4afa3..d0bb9441 100644 --- a/ros_wrapping/lidar_slam/CMakeLists.txt +++ b/ros_wrapping/lidar_slam/CMakeLists.txt @@ -145,7 +145,10 @@ include_directories( ## Declare a C++ executable ## With catkin_make all packages are built within a single CMake context ## The recommended prefix ensures that target names across packages don't collide -add_executable(lidar_slam_node src/LidarSlamNode.cxx) +add_executable(lidar_slam_node +src/LidarSlamNode.cxx +src/LidarSlamNode_main.cxx +) ## Rename C++ executable without prefix ## The above recommended prefix causes long target names, the following renames the diff --git a/ros_wrapping/lidar_slam/src/LidarSlamNode.cxx b/ros_wrapping/lidar_slam/src/LidarSlamNode.cxx index 645d01c1..307ff86f 100644 --- a/ros_wrapping/lidar_slam/src/LidarSlamNode.cxx +++ b/ros_wrapping/lidar_slam/src/LidarSlamNode.cxx @@ -684,23 +684,4 @@ void LidarSlamNode::SetSlamParameters(ros::NodeHandle& priv_nh) SetKeypointsExtractorParam(double, "slam/ke/edge_depth_gap_threshold", EdgeDepthGapThreshold) SetKeypointsExtractorParam(double, "slam/ke/edge_saliency_threshold", EdgeSaliencyThreshold) SetKeypointsExtractorParam(double, "slam/ke/edge_intensity_gap_threshold", EdgeIntensityGapThreshold) -} - -//------------------------------------------------------------------------------ -/*! - * @brief Main node entry point. - */ -int main(int argc, char **argv) -{ - ros::init(argc, argv, "lidar_slam"); - ros::NodeHandle nh; - ros::NodeHandle priv_nh("~"); - - // create lidar slam node, which subscribes to pointclouds - LidarSlamNode slam(nh, priv_nh); - - // handle callbacks until shut down - ros::spin(); - - return 0; } \ No newline at end of file diff --git a/ros_wrapping/lidar_slam/src/LidarSlamNode.h b/ros_wrapping/lidar_slam/src/LidarSlamNode.h index 0656057e..928a0f9c 100644 --- a/ros_wrapping/lidar_slam/src/LidarSlamNode.h +++ b/ros_wrapping/lidar_slam/src/LidarSlamNode.h @@ -54,7 +54,7 @@ public: * @brief New lidar frame callback, running SLAM and publishing TF. * @param[in] cloud New Lidar Frame, published by velodyne_pointcloud/cloud_node. */ - void ScanCallback(const CloudV& cloud); + virtual void ScanCallback(const CloudV& cloud); //---------------------------------------------------------------------------- /*! @@ -71,7 +71,7 @@ public: */ void SlamCommandCallback(const lidar_slam::SlamCommand& msg); -private: +protected: //---------------------------------------------------------------------------- /*! diff --git a/ros_wrapping/lidar_slam/src/LidarSlamNode_main.cxx b/ros_wrapping/lidar_slam/src/LidarSlamNode_main.cxx new file mode 100644 index 00000000..b942f517 --- /dev/null +++ b/ros_wrapping/lidar_slam/src/LidarSlamNode_main.cxx @@ -0,0 +1,20 @@ +#include "LidarSlamNode.h" + +//------------------------------------------------------------------------------ +/*! + * @brief Main node entry point. + */ +int main(int argc, char **argv) +{ + ros::init(argc, argv, "lidar_slam"); + ros::NodeHandle nh; + ros::NodeHandle priv_nh("~"); + + // Create lidar slam node, which subscribes to pointclouds coming from conversion node + LidarSlamNode slam(nh, priv_nh); + + // handle callbacks until shut down + ros::spin(); + + return 0; +} \ No newline at end of file -- GitLab