Configurando parâmetros em arquivos de launch

Outro método muito comum para configurar parâmetros é fazer isso dentro de um arquivo de launch.

Sumário

  1. Configurando parâmetros
  2. Configurando parâmetros privados
    1. Lendo parâmetros de um arquivo

Configurando parâmetros

Para solicitar ao roslaunch a configuração do valor de um parâmetro, use um elemento param:

<param name="param-name" value="param-value" />

Este elemento, como esperado, atribui o valor designado ao parâmetro com o nome fornecido. O parâmetro deve, como sempre, ser um nome relativo. Por exemplo, esse fragmento de um arquivo launch é equivalente ao conjunto de comandos de configuração rosparam:

<group ns="duck_colors">
   <param name="huey" value="red" />
   <param name="dewey" value="blue" />
   <param name="louie" value="green" />
   <param name="webby" value="pink" />
</group>

Configurando parâmetros privados

Uma outra opção é incluir elementos param como filhos de um elemento node.

<node ...>
   <param name="param-name" value="param-value" />
   ...
</node>

Com essa construção, os nomes dos parâmetros são tratados como nomes privados para aquele nó.

⏩ Essa é uma exceção às regras usuais para resolução de nomes. Nomes de parâmetros dados em elementos param que são filhos dos elementos node são sempre resolvidos como nomes privados, independentemente se começam com ~ ou até mesmo /.

Por exemplo, nos poderíamos utilizar um código como esse para realizar o launch do node pubvel_with_max com seu parâmetro private max_vel definido corretamente:

<node
  pkg="agitr"
  type="pubvel_with_max"
  name="publish_velocity"
/>
  <param name="max_vel" value="3" />
</node>

A Lista 7.3 mostra um arquivo de launch completo que inicia um turtlesim e nossos dois programas exemplo. O seu resultado deveria ser mostrar uma tartaruga turtlesim movendo-se rapidamente em um fundo amarelo.

Lista 7.3

Um arquivo de launch chamado fast_yellow.launch. Ele inicia os programas exemplo da Lista 7.1 e 7.2 e define o parâmetro max_vel.
1   <launch>
2     <node
3       pkg="turtlesim"
4       type="turtlesim_node"
5       name="turtlesim"
6     />
7     <node
8       pkg=" a g i t r "
9       type="pubvel_with_max "
10      name="publish_velocity"
11     >
12      <param name="max_vel" value="3" />
13    </node>
14    <node  
15      pkg=" a g i t r "
16      type="set_bg_color "
17      name="set_bg_color "
18    /> 
19   </launch>

Lendo parâmetros de um arquivo

Por fim, arquivos de launch também suportam um equivalente ao rosparam load, para configurar múltiplos parâmetros de uma única vez.

<rosparam command="load" file="path-to-param-file" />

O arquivo de parâmetros listado aqui é normalmento aquele criado pelo rosparam dump. Assim como outras referências a arquivos específicos (tais como o elemento include da Seção 6.5.1, normalmente se usa uma substituição utilizando find para especificar o nome de um arquivo relacionado a um diretório de pacotes:

<rosparam
   command="load"
   file="$(find package-name)/param-file"
/>

Juntamente com o rosparam load, essa opção pode ser útil na testagem, pois nos permite recriar os parâmetros que estavam em uso em algum momento do passado.