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.
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.
Substitutionle permite hacer uso de args de roslaunch que representan todo o parte de una cadena YAML. p.ej.: 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: Atributos
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>
<arg name="whitelist" default="[3, 2]"/>
<rosparam param="whitelist" subst_value="True">
$(arg whitelist)
</rosparam>
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;
}