Nomes globais
Nós, tópicos, serviços e parâmetros são coletivamente denominados como recursos de grafo. Todos esses tipos de recurso são identificados por uma string pequena chamada nomes de recursos de grafo. Recursos de grafo são encontrados facilmente, tanto nas linhas de comando de ROS, quanto em código. Ambos rosnode info
e ros_init
esperam nomes para seus nós; Também, rostopic_echo
e o construtor para o ros::- Publisher
esperam nomes para seus tópicos. Todas essas são instâncias de nomes de recursos de grafo. Em seguida, temos alguns recursos de grafo específicos que já foram apresentados:
/teleop_turtle
/turtlesim
/turtle1/cmd_vel
/turtle1/pose
/run_id
/count_and_log/set_logger_level
Esses nomes são todos exemplos de classes de nomes específicas chamadas nomes globais. Elas são chamadas de nomes globais pois fazem sentido em qualquer lugar em que são utilizadas. Estes nomes tem sentido claro e inequívoco, seja utilizando-as como argumentos para um dos muitos argumentos de comando ou dentro de um nó. Nenhum contexto adicional ou informação é necessária para decidir a qual recurso o nome se refere.
Existem diversas partes de um nome global:
⏩ Uma barra
/
, que identifica o nome como global.
⏩ Uma sequência de zero ou mais namespaces, separados por barras. Namespaces são utilizados para agrupar recursos de grafo relacionados. O exemplo acima inclui dois namespaces explícitos, denominados
turtle1
ecount_and_log
. Múltiplos níveis de namespaces são permitidos, então esta é uma forma válida (mas improvável) de um nome global, consistindo em 11 namespaces aninhados:/a/b/c/d/e/f/g/h/i/j/k/l
Nomes globais que não mencionam explicitamente algum namespace - incluindo três dos exemplos acima - são considerados como se estivessem dentro de nomes globais.
⏩ Um nome base que descreve o próprio recurso. Os nomes base no exemplo acima são
teleop_turtle
,turtlesim
,cmd_vel
,pose
,run_id
, eset_logger_level
.
Note que, se nomes globais fossem necessários por toda parte, então haveria pouco a ganhar-se com a complexidade de utilizar namespaces, além de trazer, talvez, uma maior facilidade aos seres humanos para acompanhar as coisas. A vantagem real desse sistema de nomeação vem da utilização de nomes relativos e de nomes públicos.