@@ -73,34 +73,8 @@ using utils::PointCloud2ToEigen;
7373
7474OdometryServer::OdometryServer (const rclcpp::NodeOptions &options)
7575 : rclcpp::Node(" kiss_icp_node" , options) {
76- base_frame_ = declare_parameter<std::string>(" base_frame" , base_frame_);
77- lidar_odom_frame_ = declare_parameter<std::string>(" lidar_odom_frame" , lidar_odom_frame_);
78- publish_odom_tf_ = declare_parameter<bool >(" publish_odom_tf" , publish_odom_tf_);
79- invert_odom_tf_ = declare_parameter<bool >(" invert_odom_tf" , invert_odom_tf_);
80- publish_debug_clouds_ = declare_parameter<bool >(" publish_debug_clouds" , publish_debug_clouds_);
81- position_covariance_ = declare_parameter<double >(" position_covariance" , 0.1 );
82- orientation_covariance_ = declare_parameter<double >(" orientation_covariance" , 0.1 );
83-
8476 kiss_icp::pipeline::KISSConfig config;
85- config.max_range = declare_parameter<double >(" max_range" , config.max_range );
86- config.min_range = declare_parameter<double >(" min_range" , config.min_range );
87- config.deskew = declare_parameter<bool >(" deskew" , config.deskew );
88- config.voxel_size = declare_parameter<double >(" voxel_size" , config.max_range / 100.0 );
89- config.max_points_per_voxel =
90- declare_parameter<int >(" max_points_per_voxel" , config.max_points_per_voxel );
91- config.initial_threshold =
92- declare_parameter<double >(" initial_threshold" , config.initial_threshold );
93- config.min_motion_th = declare_parameter<double >(" min_motion_th" , config.min_motion_th );
94- config.max_num_iterations =
95- declare_parameter<int >(" max_num_iterations" , config.max_num_iterations );
96- config.convergence_criterion =
97- declare_parameter<double >(" convergence_criterion" , config.convergence_criterion );
98- config.max_num_threads = declare_parameter<int >(" max_num_threads" , config.max_num_threads );
99- if (config.max_range < config.min_range ) {
100- RCLCPP_WARN (get_logger (),
101- " [WARNING] max_range is smaller than min_range, settng min_range to 0.0" );
102- config.min_range = 0.0 ;
103- }
77+ initializeParameters (config);
10478
10579 // Construct the main KISS-ICP odometry node
10680 kiss_icp_ = std::make_unique<kiss_icp::pipeline::KissICP>(config);
@@ -128,6 +102,57 @@ OdometryServer::OdometryServer(const rclcpp::NodeOptions &options)
128102 RCLCPP_INFO (this ->get_logger (), " KISS-ICP ROS 2 odometry node initialized" );
129103}
130104
105+ void OdometryServer::initializeParameters (kiss_icp::pipeline::KISSConfig &config) {
106+ RCLCPP_INFO (this ->get_logger (), " Initializing parameters" );
107+
108+ base_frame_ = declare_parameter<std::string>(" base_frame" , base_frame_);
109+ RCLCPP_INFO (this ->get_logger (), " \t Base frame: %s" , base_frame_.c_str ());
110+ lidar_odom_frame_ = declare_parameter<std::string>(" lidar_odom_frame" , lidar_odom_frame_);
111+ RCLCPP_INFO (this ->get_logger (), " \t LiDAR odometry frame: %s" , lidar_odom_frame_.c_str ());
112+ publish_odom_tf_ = declare_parameter<bool >(" publish_odom_tf" , publish_odom_tf_);
113+ RCLCPP_INFO (this ->get_logger (), " \t Publish odometry transform: %d" , publish_odom_tf_);
114+ invert_odom_tf_ = declare_parameter<bool >(" invert_odom_tf" , invert_odom_tf_);
115+ RCLCPP_INFO (this ->get_logger (), " \t Invert odometry transform: %d" , invert_odom_tf_);
116+ publish_debug_clouds_ = declare_parameter<bool >(" publish_debug_clouds" , publish_debug_clouds_);
117+ RCLCPP_INFO (this ->get_logger (), " \t Publish debug clouds: %d" , publish_debug_clouds_);
118+ position_covariance_ = declare_parameter<double >(" position_covariance" , 0.1 );
119+ RCLCPP_INFO (this ->get_logger (), " \t Position covariance: %.2f" , position_covariance_);
120+ orientation_covariance_ = declare_parameter<double >(" orientation_covariance" , 0.1 );
121+ RCLCPP_INFO (this ->get_logger (), " \t Orientation covariance: %.2f" , orientation_covariance_);
122+
123+ config.max_range = declare_parameter<double >(" data.max_range" , config.max_range );
124+ RCLCPP_INFO (this ->get_logger (), " \t Max range: %.2f" , config.max_range );
125+ config.min_range = declare_parameter<double >(" data.min_range" , config.min_range );
126+ RCLCPP_INFO (this ->get_logger (), " \t Min range: %.2f" , config.min_range );
127+ config.deskew = declare_parameter<bool >(" data.deskew" , config.deskew );
128+ RCLCPP_INFO (this ->get_logger (), " \t Deskew: %d" , config.deskew );
129+ config.voxel_size = declare_parameter<double >(" mapping.voxel_size" , config.max_range / 100.0 );
130+ RCLCPP_INFO (this ->get_logger (), " \t Voxel size: %.2f" , config.voxel_size );
131+ config.max_points_per_voxel =
132+ declare_parameter<int >(" mapping.max_points_per_voxel" , config.max_points_per_voxel );
133+ RCLCPP_INFO (this ->get_logger (), " \t Max points per voxel: %d" , config.max_points_per_voxel );
134+ config.initial_threshold =
135+ declare_parameter<double >(" adaptive_threshold.initial_threshold" , config.initial_threshold );
136+ RCLCPP_INFO (this ->get_logger (), " \t Initial threshold: %.2f" , config.initial_threshold );
137+ config.min_motion_th =
138+ declare_parameter<double >(" adaptive_threshold.min_motion_th" , config.min_motion_th );
139+ RCLCPP_INFO (this ->get_logger (), " \t Min motion threshold: %.2f" , config.min_motion_th );
140+ config.max_num_iterations =
141+ declare_parameter<int >(" registration.max_num_iterations" , config.max_num_iterations );
142+ RCLCPP_INFO (this ->get_logger (), " \t Max number of iterations: %d" , config.max_num_iterations );
143+ config.convergence_criterion = declare_parameter<double >(" registration.convergence_criterion" ,
144+ config.convergence_criterion );
145+ RCLCPP_INFO (this ->get_logger (), " \t Convergence criterion: %.2f" , config.convergence_criterion );
146+ config.max_num_threads =
147+ declare_parameter<int >(" registration.max_num_threads" , config.max_num_threads );
148+ RCLCPP_INFO (this ->get_logger (), " \t Max number of threads: %d" , config.max_num_threads );
149+ if (config.max_range < config.min_range ) {
150+ RCLCPP_WARN (get_logger (),
151+ " [WARNING] max_range is smaller than min_range, settng min_range to 0.0" );
152+ config.min_range = 0.0 ;
153+ }
154+ }
155+
131156void OdometryServer::RegisterFrame (const sensor_msgs::msg::PointCloud2::ConstSharedPtr &msg) {
132157 const auto cloud_frame_id = msg->header .frame_id ;
133158 const auto points = PointCloud2ToEigen (msg);
0 commit comments