Open Source Robotics

Una raccolta curata di progetti, strumenti e software di robotica open source di alta qualità per la comunità della robotica.

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

Questo sito richiede JavaScript. Attiva JavaScript per esplorare i nostri progetti di robotica open source.