Contents
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; }