Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags. |
Introdução ao roswtf
Description: Introdução à ferramenta roswtf.Keywords: roswtf
Tutorial Level: BEGINNER
Next Tutorial: Navegando a wiki
Antes de começar esse tutorial, por favor verifique que NÃO há um roscore rodando.
Verificando sua instalação
roswtf examina seu sistema e tenta encontrar problemas. Tente por exemplo:
$ roscd $ roswtf
Você verá um resultado parecido com:
Stack: ros ================================================================================ Static checks summary: No errors or warnings ================================================================================ Cannot communicate with master, ignoring graph checks
Se sua instalação rodou corretamente, você deve ver um texto similar ao de cima. O resultado exato varia de acordo com a versão do ROS. Analisando por partes:
"Stack: ros": roswtf usa o diretório atual para determinar quais verificações executar. Isso nos diz que o comando foi executado no stack chamado ros.
- "Static checks summary": aqui são reportados erros no sistema de arquivos. "No errors or warnings" quer dizer que não há erros ou avisos.
"Cannot communicate with master, ignoring graph checks": quer dizer que, como o roscore não está rodando, o roswtf não conseguiu se comunicar com o master e portanto não executou nenhuma verificação de conexões.
Verificações durante execução
Agora nós queremos que o Master esteja rodando, então comece a rodar um roscore:
$ roscore
Agora em outro terminal, rode a mesma sequência novamente:
$ roscd $ roswtf
Você verá algo como:
Stack: ros ================================================================================ Static checks summary: No errors or warnings ================================================================================ Beginning tests of your ROS graph. These may take awhile... analyzing graph... ... done analyzing graph running graph rules... ... done running graph rules Online checks summary: Found 1 warning(s). Warnings are things that may be just fine, but are sometimes at fault WARNING The following node subscriptions are unconnected: * /rosout: * /rosout
roswtf examinou seu grafo em execução agora que o roscore está rodando. Dependendo de quantos nodes do ROS estejam rodando, isso pode levar um tempo para terminar. No exemplo acima, um aviso foi produzido:
WARNING The following node subscriptions are unconnected: * /rosout: * /rosout
roswtf está avisando que o nó (node) rosout está subscrito a um tópico (topic) onde nenhum nó está publicando. Nesse caso, isso é esperado porque não tem mais nada rodando, então o aviso pode ser ignorado.
Erros
roswtf vai avisar (warn) sobre coisas que parecem suspeitas mas podem ser normais para o seu sistema. Quando ele diz que algo é um erro, isso significa que há problemas com certeza.
Para demonstrar um error, vamos mudar o ROS_PACKAGE_PATH para um valor ruim. Também vamos parar de rodar o roscore para simplificar o resultado.
$ roscd $ ROS_PACKAGE_PATH=ruim:$ROS_PACKAGE_PATH roswtf
Desta vez você verá algo como:
Stack: ros ================================================================================ Static checks summary: Found 1 error(s). ERROR Not all paths in ROS_PACKAGE_PATH [ruim] point to an existing directory: * ruim ================================================================================ Cannot communicate with master, ignoring graph checks
Como pode ver, o roswtf agora mostra um erro sobre a variável ROS_PACKAGE_PATH. A mensagem diz que nem todos os caminhos na variável apontam para um diretório existente.
O roswtf pode apontar muitos outros tipos de erro. Se você está tendo dificuldades com algum problema de compilação ou comunicação, tente rodar esta ferramenta e ver se ela te ajuda a identificar o problema.
Agora que você já sabe usar o roswtf, aprenda mais sobre como navigar pela wiki.