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 e count_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, e set_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.