mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-05 20:47:46 +08:00
feat: add parameter synchronization and validation methods in Parameters and OBCameraNode classes
This commit is contained in:
@@ -23,6 +23,9 @@ Parameters::Parameters(rclcpp::Node *node)
|
||||
[this](const std::vector<rclcpp::Parameter> ¶meters) {
|
||||
for (const auto ¶meter : parameters) {
|
||||
if (param_functions_.find(parameter.get_name()) != param_functions_.end()) {
|
||||
if (suppress_runtime_change_warning_) {
|
||||
continue;
|
||||
}
|
||||
auto functions = param_functions_[parameter.get_name()];
|
||||
if (functions.empty()) {
|
||||
RCLCPP_WARN_STREAM(logger_, "Parameter " << parameter.get_name()
|
||||
@@ -130,6 +133,23 @@ void Parameters::setParamValue(T ¶m, const T &value) {
|
||||
}
|
||||
}
|
||||
|
||||
void Parameters::syncParameterValue(const std::string ¶m_name, const std::string &value) {
|
||||
const bool previous_suppression = suppress_runtime_change_warning_;
|
||||
suppress_runtime_change_warning_ = true;
|
||||
try {
|
||||
rcl_interfaces::msg::SetParametersResult result =
|
||||
node_->set_parameter(rclcpp::Parameter(param_name, value));
|
||||
suppress_runtime_change_warning_ = previous_suppression;
|
||||
if (!result.successful) {
|
||||
RCLCPP_WARN_STREAM(logger_, "Parameter: " << param_name << " was not set: "
|
||||
<< result.reason);
|
||||
}
|
||||
} catch (const std::exception &e) {
|
||||
suppress_runtime_change_warning_ = previous_suppression;
|
||||
RCLCPP_WARN_STREAM(logger_, "Parameter: " << param_name << " was not set: " << e.what());
|
||||
}
|
||||
}
|
||||
|
||||
void Parameters::removeParam(const std::string ¶m_name) {
|
||||
node_->undeclare_parameter(param_name);
|
||||
param_functions_.erase(param_name);
|
||||
|
||||
Reference in New Issue
Block a user