Do experimento ao veículo - o framework ROS - Instituto Eldorado
11 de Novembro de 2026

Do experimento ao veículo – o framework ROS

Lucas

Lucas Dalmedico Gessoni

Autor
Do experimento ao veículo - o framework ROS

Este é o quarto artigo de uma série de quatro artigos sobre como processar câmeras grande-angular para auxiliar a estacionar um carro elétrico.

Nos posts anteriores, cada peça foi mostrada separada: a vista de cima, a segmentação e o mapa de ocupação e a cena sintética em que tudo foi testado. Mas um veículo não processa uma foto e para. As quatro câmeras entregam dezenas de imagens por segundo, vários programas precisam trabalhar ao mesmo tempo sobre elas, e o resultado tem de chegar a uma tela, a um registro ou, no futuro, ao sistema que conduz. Para montar esse sistema usamos o ROS, o padrão de fato da robótica.

O que é o ROS

ROS quer dizer Robot Operating System, mas apesar do nome não é um sistema operacional: ele roda sobre o Linux. É um conjunto de bibliotecas e ferramentas de código aberto para construir software de robôs e carros autônomos a partir de peças pequenas que conversam entre si. Usamos a versão atual, o ROS 2 (distribuição Jazzy).
Para que serve, na prática:

  • Não reinventar a comunicação. Fazer programas trocarem imagens, mapas e posições de forma confiável e rápida é um problema difícil e comum a todo robô; o ROS já resolve.
  • Peças trocáveis. Como todos falam a mesma língua, dá para trocar uma peça sem mexer nas outras. No nosso caso, trocar as câmeras simuladas pelas reais é trocar um programa por outro, facilitando a integração futura com HW real.
  • Um ecossistema pronto. Há programas ROS para câmeras, lidars, GPS e mapas, e ferramentas para visualizar, gravar e reproduzir dados.
  • Padrão da indústria e da pesquisa. Muitos robôs comerciais e projetos de carro autônomo, como o Autoware, são construídos sobre ROS 2.

Como funciona: os blocos essenciais

Nós

Um nó é um programa com uma única responsabilidade: ler uma câmera, rodar a IA, montar a vista de cima. Um sistema ROS é um conjunto de nós rodando ao mesmo tempo, no mesmo computador ou em vários.

Tópicos e mensagens

Os nós não chamam uns aos outros diretamente. Eles conversam por tópicos: canais com nome, como camera/front/image_raw . Quem produz dados publica num tópico; quem precisa deles assina o tópico e recebe cada mensagem publicada. Funciona como uma rádio: a câmera transmite sem saber quem está ouvindo, e quantos nós quiserem podem sintonizar.

O que trafega são mensagens de tipos padronizados: Image para imagens, CameraInfo para a calibração intrínseca de uma câmera, OccupancyGrid para mapas de ocupação. Por serem padrão, qualquer ferramenta ROS sabe exibir o nosso mapa sem que tenhamos escrito uma linha para isso.

Parâmetros

Cada nó tem parâmetros, valores ajustáveis sem mudar o código: o tamanho da área mostrada na vista de cima, a resolução do mapa, o modelo de câmera. O mesmo nó serve para as câmeras olho-de-peixe e para webcams, mudando um parâmetro.

Arquivos de lançamento

Ninguém inicia dez programas à mão. Um arquivo de lançamento (launch file) descreve quais nós iniciar, com quais parâmetros e com quais nomes, e sobe o sistema inteiro com um comando.

Transformações (TF)

Um robô é feito de peças em lugares diferentes: o centro do veículo, cada câmera, cada sensor. O ROS mantém uma árvore de sistemas de coordenadas (frames) e das transformações entre eles, chamada TF. É aqui que a calibração extrínseca do primeiro post mora: a posição e a orientação de cada câmera em relação ao centro do veículo. Qualquer nó pode perguntar “onde está a câmera da frente?” e receber a resposta atual.

Serviços e ações

Além dos tópicos, há serviços (uma pergunta, uma resposta: “recalibre agora”) e ações (tarefas longas, com progresso e cancelamento: “estacione nesta vaga”).

Ferramentas

  • RViz, o visualizador: mostra imagens, mapas, a TF e o modelo do veículo, tudo junto.
  • rosbag, o gravador: grava tudo o que passa nos tópicos e reproduz depois, como se o veículo estivesse rodando. É como se testa um algoritmo novo com os dados de um dia de testes, no escritório.
  • Linha de comando: listar nós e tópicos, ver as mensagens, medir a taxa de cada tópico.

O nosso sistema, em nós e tópicos

Do experimento ao veículo - o framework ROS

  • Quatro nós de câmera, um por câmera, publicam a imagem e a calibração. Hoje eles leem os renders da cena sintética, quadro a quadro, a 20 imagens por segundo; no veículo, serão substituídos pelos drivers das câmeras reais, publicando nos mesmos tópicos.
  • O nó de segmentação assina as quatro imagens, roda o modelo de IA do segundo post e publica uma máscara por câmera.
  • O nó da vista de cima assina as quatro imagens e publica a vista semiesférica.
  • O nó do mapa de ocupação assina as quatro máscaras e publica o mapa.
  • A posição das câmeras vem de um nó padrão do ROS, o
    robot_state_publisher , que lê a descrição do veículo e a calibração e publica a TF.

Um detalhe que o ROS ajuda a resolver: as quatro câmeras não entregam imagens exatamente no mesmo instante. Os nós de vista de cima e de mapa sincronizam as mensagens pelo horário em que cada imagem foi tirada, e só processam um conjunto quando as quatro são do mesmo momento.

Como organizar o projeto

A decisão de organização mais importante do projeto foi: todo o processamento — câmeras, calibração, vista de cima, mapa de ocupação — mora numa biblioteca Python comum, que não sabe que o ROS existe. O nó só recebe as mensagens, chama a biblioteca e publica o resultado.

Do experimento ao veículo - o framework ROS

Assim, a biblioteca pode ser testada sem o ROS, com um comando sobre uma pasta de imagens; o resultado é o mesmo dentro e fora dele, então um número medido fora vale dentro; e, se um dia o veículo usar outro sistema, só os nós, finos, precisam ser reescritos.

Docker: o mesmo ambiente em qualquer computador

Cada versão do ROS pede uma versão específica do Ubuntu e uma lista de dependências; instalar tudo à mão em cada computador é lento e frágil. Por isso tudo roda em contêineres Docker: um contêiner é um ambiente empacotado — sistema, bibliotecas e configuração — que roda igual em qualquer máquina com Docker, sem mexer no sistema de quem usa.

O resultado

Do experimento ao veículo - o framework ROS

O RViz com o sistema completo, sobre a animação do veículo estacionando: à esquerda, o mapa de ocupação montado com as máscaras da IA; à direita, a vista de cima.

Para fechar a série

Ao longo destes posts, saímos de quatro imagens olho-de-peixe e chegamos a um sistema que mostra ao motorista o entorno visto de cima e monta um mapa do que está livre e ocupado. Foi desenvolvido e medido numa cena sintética inicialmente, mas já integrado ao ROS para facilitar integração futura no carro real.

Cadastre-se em nossa newsletter

Ao se cadastrar aqui você concorda com a nossa Política de Privacidade.