Skip to content

Evaluate if the ROS parameters handling can be improved #350

@christophfroehlich

Description

@christophfroehlich

There are wrappers for getting ROS parameters with the comment

// TODO(anyone): to-be-removed once this functionality becomes supported by the param API directly

bool PidROS::get_boolean_param(const std::string & param_name, bool & value)
{
declare_param(param_name, rclcpp::ParameterValue(value));
rclcpp::Parameter param;
if (node_params_->has_parameter(param_name))
{
node_params_->get_parameter(param_name, param);
if (rclcpp::PARAMETER_BOOL != param.get_type())
{
RCLCPP_ERROR(
node_logging_->get_logger(), "Wrong parameter type '%s', not boolean", param_name.c_str());
return false;
}
value = param.as_bool();
return true;
}
else
{
return false;
}
}
// TODO(anyone): to-be-removed once this functionality becomes supported by the param API directly
bool PidROS::get_double_param(const std::string & param_name, double & value)
{
declare_param(param_name, rclcpp::ParameterValue(value));
rclcpp::Parameter param;
if (node_params_->has_parameter(param_name))
{
node_params_->get_parameter(param_name, param);
if (rclcpp::PARAMETER_DOUBLE != param.get_type())
{
RCLCPP_ERROR(
node_logging_->get_logger(), "Wrong parameter type '%s', not double", param_name.c_str());
return false;
}
value = param.as_double();
RCLCPP_DEBUG_STREAM(
node_logging_->get_logger(), "parameter '" << param_name << "' in node '"
<< node_base_->get_name() << "' value is " << value
<< std::endl);
return true;
}
else
{
RCLCPP_ERROR_STREAM(
node_logging_->get_logger(), "parameter '" << param_name << "' in node '"
<< node_base_->get_name() << "' does not exists"
<< std::endl);
return false;
}
}

Evaluate, if there is already a cleaner way in the rclcpp API. If not, we should consider using generate_parameter_library here, which is already a dependency of this package.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions