image_pipeline
A pilha padrão de câmeras do ROS: calibração, retificação, estéreo e profundidade
Licença
BSD-3-Clause
Visão geral
image_pipeline é a pilha canônica de processamento de câmeras do ROS, mantida pelo ros-perception. Seus pacotes levam as câmeras de um robô da saída bruta do driver até imagens calibradas e retificadas e dados 3D: camera_calibration (calibração interativa com tabuleiro de xadrez), image_proc (debayering e retificação), stereo_image_proc (disparidade e nuvens de pontos), depth_image_proc (conversões de profundidade para nuvem e registro) e image_view. Praticamente todo robô ROS com câmera roda alguma parte dessa pipeline.
A pilha é organizada como nós ROS 2 componíveis, conectados por tópicos image_transport e mensagens de calibração camera_info. O camera_calibration fornece a clássica GUI interativa que calcula intrínsecos monoculares ou estéreo a partir de vistas de um tabuleiro de xadrez e os grava no driver da câmera. O image_proc consome imagens brutas mais camera_info e emite variantes mono/coloridas e retificadas, cuidando do demosaico Bayer e da remoção de distorção; nós de crop/resize/decimate remodelam streams de forma barata. O stereo_image_proc roda disparidade por block matching entre pares retificados e produz nuvens de pontos estéreo, enquanto o depth_image_proc converte imagens de profundidade de sensores RGB-D em nuvens de pontos, registra a profundidade nos frames de cor e converte codificações métricas/quantizadas. Tudo suporta composição em tempo de execução para pipelines intra-processo zero-copy no ROS 2, e as convenções que ela estabeleceu — a semântica do camera_info, a nomenclatura de tópicos image_raw/image_rect — são o contrato de fato entre drivers de câmera e código de percepção em todo o ecossistema ROS.
Por que importa
image_pipeline define como câmeras funcionam no ROS: sua GUI de calibração é onde a maioria dos roboticistas calibrou sua primeira câmera, e suas convenções de tópicos e camera_info são o contrato que permite que qualquer driver de câmera ROS converse com qualquer pilha de percepção ROS.
Problema que resolve
A saída bruta de uma câmera é não calibrada, distorcida, em padrão Bayer e 2D. A image_pipeline a transforma em imagens calibradas e retificadas, mapas de disparidade e nuvens de pontos com nós padronizados e componíveis — para que o código de percepção nunca precise reimplementar o encanamento de câmera.
Pontos principais
- GUI interativa de calibração com tabuleiro de xadrez para câmeras monoculares e estéreo
- image_proc: debayering, remoção de distorção e retificação guiadas por camera_info
- stereo_image_proc: disparidade por block matching e nuvens de pontos estéreo
- depth_image_proc: conversão de profundidade em nuvem de pontos e registro de profundidade para cor
- Nós ROS 2 componíveis com suporte a pipelines intra-processo zero-copy
Para quem é
- Desenvolvedores ROS integrando câmeras
- Engenheiros de percepção construindo pipelines estéreo/RGB-D
- Estudantes de robótica calibrando sua primeira câmera
- Autores de drivers de câmera seguindo as convenções do ROS
Limitações
- O estéreo clássico por block matching é datado frente a matchers aprendidos ou baseados em SGM
- O fluxo da GUI de calibração é manual — sem calibração automatizada sem alvo
- O ajuste de desempenho (QoS, composição) fica a cargo do integrador