Parametros en ROS 2

En este tutorial se trataran los parametros de ROS 2

Un parametro es como una variable global. Son containers que pueden guardar informacion accesible por otros nodos. Ten en cuenta que los parametros no has sido diseñados para un alto rendimiento y normalmente son usados para informacion estatica

Los parámetros suelen ser usados para realizar configuraciones. Los parámetros pueden contener diferentes tipos de mensajes (Strings, floats, booleans...). En este tutorial podrás aprender a como poder crear un parámetro y después leer el mismo.

En este tutorial se usara el paquete creado en el tutorial #7

 ros2_ws/
  src/
    cpp_float/ #Puedes ser creativo y cambiar este nombre
      src/
        parameters/
          test_parameters.cpp
        topics/
          listener_float.cpp
          talker_float.cpp
      CMakeLists.txt
      package.xml

#include <iostream>

#include "rclcpp/rclcpp.hpp"

int main(int argc, char ** argv)
{
  rclcpp::init(argc, argv);

  auto node = rclcpp::Node::make_shared("get_parameters");

  auto parameter_service = std::make_shared<rclcpp::parameter_service::ParameterService>(node);

  auto parameters_client = std::make_shared<rclcpp::parameter_client::SyncParametersClient>(node);
  //Set parameters
  auto set_parameters_results = parameters_client->set_parameters({
    rclcpp::parameter::ParameterVariant("parameter_number", 1),
    rclcpp::parameter::ParameterVariant("parameter_string", "hello"),
    rclcpp::parameter::ParameterVariant("parameter_boolean", true),

  });
  for (auto & result : set_parameters_results) {
    if (!result.successful) {
      std::cerr << "Failed to set parameter: " << result.reason << std::endl;
    } else {
      std::cerr << "Parameter set" << std::endl;
    }
  }

  // Get parameters
  for (auto & parameter : parameters_client->get_parameters({"parameter_number", "parameter_string", "parameter_boolean"})) {
    std::cout << "Parameter name: " << parameter.get_name() << std::endl;
    std::cout << "Parameter value (" << parameter.get_type_name() << "): " <<
      parameter.value_to_string() << std::endl;
  }

  return 0;
}

En el archivo CMakeLists.txt es necesario llamar al archivo recién creado. Añade la siguiente linea dentro de macro(targets)

  custom_executable(parameters test_parameters)

El siguiente comando construirá e instalara de nuevo el paquete

$ cd ~/ros2_ws
$ ament build --symlink-install --only-package cpp_float

Ejecuta lo siguiente para comprobar lo recién creado

$ test_parameters

Deberías de obtener lo siguiente:

Parameter set
Parameter set
Parameter set
Parameter name: parameter_number
Parameter value (integer): 1
Parameter name: parameter_string
Parameter value (string): hello
Parameter name: parameter_boolean
Parameter value (bool): true

¿Necesitas más capacidad de cómputo? Estate atento