image_pipeline
Lo stack standard di ROS per le telecamere: calibrazione, rettifica, stereo e profondità
Licenza
BSD-3-Clause
Panoramica
image_pipeline è lo stack canonico di ROS per l'elaborazione delle immagini delle telecamere, mantenuto da ros-perception. I suoi pacchetti portano le telecamere di un robot dall'output grezzo del driver a immagini calibrate e rettificate e a dati 3D: camera_calibration (calibrazione interattiva con scacchiera), image_proc (debayering e rettifica), stereo_image_proc (disparità e nuvole di punti), depth_image_proc (conversioni da profondità a nuvola e registrazione) e image_view. Praticamente ogni robot ROS con una telecamera esegue una parte di questa pipeline.
Lo stack è organizzato come nodi ROS 2 componibili, collegati da topic image_transport e da messaggi di calibrazione camera_info. camera_calibration fornisce la classica GUI interattiva che calcola i parametri intrinseci monoculari o stereo da viste di una scacchiera e li scrive nel driver della telecamera. image_proc riceve le immagini grezze più camera_info ed emette varianti mono/colore e rettificate, gestendo il demosaicing Bayer e la rimozione della distorsione; i nodi crop/resize/decimate rimodellano i flussi con poco costo. stereo_image_proc calcola la disparità per block matching tra coppie rettificate e produce nuvole di punti stereo, mentre depth_image_proc converte le immagini di profondità dei sensori RGB-D in nuvole di punti, registra la profondità sui frame a colori e converte codifiche metriche/quantizzate. Tutto supporta la composizione a runtime per pipeline intra-processo zero-copy su ROS 2, e le convenzioni che ha stabilito (la semantica di camera_info, la denominazione dei topic image_raw/image_rect) sono di fatto il contratto tra driver delle telecamere e codice di percezione in tutto l'ecosistema ROS.
Perché è importante
image_pipeline definisce come funzionano le telecamere in ROS: la sua GUI di calibrazione è quella con cui la maggior parte dei robotici ha calibrato la propria prima telecamera, e le sue convenzioni su topic e camera_info sono il contratto che permette a qualsiasi driver di telecamera ROS di dialogare con qualsiasi stack di percezione ROS.
Il problema che risolve
L'output grezzo delle telecamere è non calibrato, distorto, con pattern Bayer e in 2D. image_pipeline lo trasforma in immagini calibrate e rettificate, mappe di disparità e nuvole di punti con nodi standard e componibili, così il codice di percezione non deve mai reimplementare la gestione di base delle telecamere.
Punti chiave
- GUI interattiva di calibrazione con scacchiera per telecamere monoculari e stereo
- image_proc: debayering, rimozione della distorsione e rettifica guidati da camera_info
- stereo_image_proc: disparità per block matching e nuvole di punti stereo
- depth_image_proc: conversione da profondità a nuvola di punti e registrazione della profondità sul colore
- Nodi ROS 2 componibili con supporto a pipeline intra-processo zero-copy
A chi si rivolge
- Sviluppatori ROS che integrano telecamere
- Ingegneri della percezione che costruiscono pipeline stereo/RGB-D
- Studenti di robotica che calibrano la loro prima telecamera
- Autori di driver per telecamere che seguono le convenzioni ROS
Limiti
- Lo stereo classico a block matching è datato rispetto ai matcher appresi o basati su SGM
- Il flusso di lavoro della GUI di calibrazione è manuale: nessuna calibrazione automatica senza target
- La messa a punto delle prestazioni (QoS, composizione) è lasciata all'integratore