Acessando parâmetros da linha de comando

Vamos começar com alguns comandos para ver como os parâmetros funcionam.

Sumário

  1. Parâmetros de Listagem
  2. Parâmetros de consulta
  3. Parâmetros de configuração
  4. Criação e carregamento de arquivos de parâmetro

Parâmetros de Listagem

Para ver uma lista de todos os parâmetros existentes, use este comando:

rosparam list

No sistema do autor, sem nós em execução, a saída é:

/rosdistro
/roslaunch/uris/host_donatello__38217
/rosversion
/run_id

Cada uma dessas strings é um nome - especificamente, um nome de recurso de gráfico global (consulte o Capítulo 5) - que o servidor de parâmetro associou a algum valor.

⏩ Na versão atual do ROS, o servidor de parâmetroa é na verdade parte do mestre, então ele é iniciado automaticamente por roscore ou roslaunch. Em quase todos os casos, o servidor de parâmetros funciona corretamente nos bastidores e não há razão para pensar sobre isso explicitamente. Lembre-se, entretanto, de que todos os parâmetros são “propriedade” do servidor de parâmetros, e não de qualquer nó específico. Isso significa que os parâmetros - mesmo aqueles criados com nomes privados - continuarão a existir mesmo depois que o nó para o qual eles se destinam for encerrado.

Parâmetros de consulta

Para solicitar ao servidor de parâmetros o valor de um parâmetro, use o comando rosparam get:

rosparam get parameter_name

Por exemplo, para ler o valor do parâmetro /rosdistro, use este comando:

rosparam get /rosdistro

A saída é a string indigo, o que não é uma grande surpresa. Também é possível recuperar os valores de cada parâmetro em um namespace:

rosparam get namespace

No computador do autor, a saída é:

rosdistro: indigo
roslaunch:
uris: host_donatello__38217: http://donatello:38217/
rosversion: 1.11.9
run_id: e574a908-70c5-11e4-899e-60d819d10251

Parâmetros de configuração

Para atribuir um valor a um parâmetro, use um comando como este:

rosparam set parameter_name parameter_value

Este comando pode modificar os valores dos parâmetros existentes ou criar novos. Por exemplo, esses comandos criam parâmetros de string que armazenam as preferências de guarda-roupa de um determinado grupo de patos de desenho animado:

rosparam set /duck_colors/huey red
rosparam set /duck_colors/dewey blue
rosparam set /duck_colors/louie green
rosparam set /duck_colors/webby pink

⏩ Como alternativa, podemos definir vários parâmetros no mesmo namespace de uma vez:

rosparam set namespace values

Os valores devem ser especificados como um dicionário YAML que mapeia nomes de parâmetros para valores. Aqui está um exemplo que tem o mesmo efeito que os quatro comandos acima:

rosparam set /duck_colors "huey: red
dewey: blue
louie: green
webby: pink"

Observe que essa sintaxe requer caracteres de nova linha no próprio comando. Isso não é um problema porque a aspa inicial “marca” sinaliza para o bash que o comando ainda não está completo. Pressionar Enter quando um argumento entre aspas é aberto insere um caractere de nova linha, conforme desejado, em vez de executar o comando.

⚠️ Os espaços após os dois pontos são importantes, para garantir que rosparam trate isso como uma coleção de parâmetros no namespace /duck_colors, ao invés de um parâmetro de string único chamado duck_colors no namespace global.

Criação e carregamento de arquivos de parâmetro

Para armazenar todos os parâmetros de um namespace, no formato YAML, em um arquivo, use rosparam dump:

rosparam dump filename 

O oposto de dump é load, que lê os parâmetros de um arquivo e os adiciona ao servidor de parâmetros:

rosparam load filename namespace

Para ambos os comandos, o argumento do namespace é opcional e o padrão é o namespace global (/). A combinação de dump e load pode ser útil para teste, porque fornece uma maneira rápida de obter uma captura instantânea dos parâmetros em vigor em um determinado momento e recriar esse cenário mais tarde.