diff --git a/CMakeLists.txt b/CMakeLists.txt index e7638cd..3ab3568 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,10 @@ if(${rclcpp_VERSION_MAJOR} GREATER_EQUAL 20) add_compile_definitions(RCLCPP_SUPPORTS_MATCHED_CALLBACKS) endif() +if(${rclcpp_VERSION_MAJOR} GREATER_EQUAL 17) + add_compile_definitions(RCLCPP_SUPPORTS_POST_SET_PARAMS_CALLBACK) +endif() + ament_auto_add_library(laser_scan_filters SHARED src/laser_scan_filters.cpp) ament_auto_add_library(laser_filter_chains SHARED src/scan_to_cloud_filter_chain.cpp diff --git a/include/laser_filters/speckle_filter.h b/include/laser_filters/speckle_filter.h index f071afa..861f8be 100644 --- a/include/laser_filters/speckle_filter.h +++ b/include/laser_filters/speckle_filter.h @@ -174,6 +174,18 @@ class LaserScanSpeckleFilter : public filters::FilterBasedeclare_parameter("filter_type", rclcpp::ParameterType::PARAMETER_INTEGER, desc); + params_interface_->declare_parameter("max_range", rclcpp::ParameterType::PARAMETER_DOUBLE, desc); + params_interface_->declare_parameter("max_range_difference", rclcpp::ParameterType::PARAMETER_DOUBLE, desc); + params_interface_->declare_parameter("filter_window", rclcpp::ParameterType::PARAMETER_INTEGER, desc); + #endif + // get params if (!filters::FilterBase::getParam(std::string("filter_type"), filter_type)) { @@ -214,6 +226,11 @@ class LaserScanSpeckleFilter : public filters::FilterBaseadd_post_set_parameters_callback( + std::bind(&LaserScanSpeckleFilter::reconfigureCB, this, std::placeholders::_1)); + #endif + return true; } ///////////////////////////////////////////////////// @@ -248,11 +265,8 @@ class LaserScanSpeckleFilter : public filters::FilterBase parameters) + void reconfigureCB(std::vector parameters) { - auto result = rcl_interfaces::msg::SetParametersResult(); - result.successful = true; - for (auto parameter : parameters) { if(logging_interface_ != nullptr) @@ -289,9 +303,6 @@ class LaserScanSpeckleFilter : public filters::FilterBase