[Documentation] [TitleIndex] [WordIndex

Etiqueta <rosparam>

La etiqueta <rosparam> habilita el uso de rosparam archivos YAML para cargar y descargar parámetros de ROS Parameter Server. También se puede utilizar para eliminar parámetros. La etiqueta <rosparam> se puede colocar dentro de una etiqueta <node>, en cuyo caso el parámetro se trata como un private name.

Los comandos delete y dump se ejecutan antes del comando load, así como antes de que se carguen otros parámetros en el Parameter Server. Los comandos delete y dump se ejecutan en el orden declarado.

El comando load se considera aditivo: si declara un diccionario o espacio de nombres de parámetros, esos parámetros se agregarán a cualquier otro parámetro declarado para ese espacio de nombres. De manera similar, los comandos load pueden anular" los parámetros declarados previamente.

La etiqueta <rosparam> puede hacer referencia a un archivo YAML o contener texto YAML sin procesar. Si el texto YAML define un diccionario, el atributo param puede omitirse.

Atributos

  • command="load|dump|delete"

    (optional, default=load)

    rosparam command.

    file="$(find pkg-name)/path/foo.yaml"

    (load or dump commands)

    Name of rosparam file.

    param="param-name"

    Name of parameter. ns="namespace" (optional)

    Scope the parameters to the specified namespace.

    subst_value="true|false"

    (optional)

    Allows use of substitution args in the YAML text.

Ejemplos

<rosparam command="load" file="$(find rosparam)/example.yaml" />
<rosparam command="delete" param="my/param" />

<rosparam param="a_list">[1, 2, 3, 4]</rosparam>

<rosparam>
  a: 1
  b: 2
</rosparam>

Substitutionle permite hacer uso de args de roslaunch que representan todo o parte de una cadena YAML. p.ej.:

<arg name="whitelist" default="[3, 2]"/>
<rosparam param="whitelist" subst_value="True">
 $(arg whitelist)
</rosparam>

También son útiles para incrustar $(find ...) en cadenas yaml y, en menor medida, cualquiera de los otros patrones de sustitución.

Ejemplo de acceso a una lista en código roscpp:

XmlRpc::XmlRpcValue v;
    nh_.param("subscribed_to_nodes", v, v);
    for(int i =0; i < v.size(); i++)
    {
      node_names_.push_back(v[i]);
      std::cerr << "node_names: " << node_names_[i] << std::endl;
    }

2024-04-27 12:46