2012-12-30 14 views
6

Una rapida introduzione:
Stiamo sviluppando un sistema di posizionamento che funziona come segue. La nostra fotocamera è situata su un robot ed è rivolta verso l'alto (guardando il soffitto). Sul soffitto abbiamo qualcosa come punti di riferimento, grazie ai quali possiamo calcolare la posizione del robot. Ecco come si presenta:Correzione programmatica dell'inclinazione della telecamera in un sistema di posizionamento

enter image description here

Il nostro problema:
La fotocamera è inclinata un po '(0-4 gradi credo), perché la superficie del robot non è perfettamente uniforme. Ciò significa che quando il robot gira ma rimane con le stesse coordinate, la telecamera guarda una posizione diversa sul soffitto e quindi il nostro programma di posizionamento produce una posizione diversa del robot, anche se si è girato e non è stato spostato po.

La nostra soluzione attuale (hardcoded):
Abbiamo scattato alcune foto di prova dalla fotocamera, ruotandola attorno all'asse dell'obiettivo. Dalle immagini abbiamo dedotto che è inclinato di ca. 4 gradi nella "direzione verso l'alto" dell'immagine. Utilizzando alcune semplici trasformazioni geometriche siamo riusciti a ridurre l'effetto di inclinazione e trovare la posizione reale della telecamera. Nelle immagini seguenti il ​​punto grigio indica il centro dell'immagine, il punto nero è il vero punto sul soffitto al di sotto del quale è posizionata la fotocamera. Il punto nero è stato trasformato dal punto grigio (la sua posizione è stata calcolata correggendo la posizione del punto grigio). Come puoi facilmente notare, i punti grigi formano un cerchio sul soffitto e il punto nero è il centro di questo cerchio.

enter image description here

enter image description here

enter image description here

enter image description here

Il problema con la nostra soluzione:
Il nostro approccio è completamente portabile. Se spostassimo la fotocamera su un nuovo robot, l'angolo e la direzione di inclinazione dovrebbero essere completamente ricalibrati. Pertanto abbiamo voluto lasciare all'utente la fase di calibrazione, che richiederebbe alcune immagini, valutando i parametri di inclinazione da lui e quindi impostandoli nel programma. La mia domanda è: puoi trovare una soluzione migliore (più automatica) per calcolare i parametri di inclinazione o correggere l'inclinazione sulle immagini?

+1

Non riesci a mettere una specie di piattaforma di livellamento sotto la telecamera?Sono sicuro che ci sia una soluzione software a questo, ma probabilmente non sarà banale, potenzialmente difficile da implementare, e come saprai che funziona in tutti i casi? Il livellamento della fotocamera sembra una soluzione molto più semplice e completa. – Richard

+0

Sì, abbiamo anche pensato a una soluzione hardware, in particolare con un occhio di bue, ma ci piacerebbe anche conoscere altre possibilità, se esistono. – Wojtek

risposta

5

Bel lavoro. Avere una calibrazione automatica è una bella sfida.

Un'idea sarebbe utilizzare le linee parallele dalle tegole del tetto: Se la fotocamera è perfettamente orizzontale, anche tutte le linee saranno parallele nell'immagine. Se la fotocamera è inclinata, tutte le linee saranno secanti (si intersecano nel punto di fuga).

Ora, questo è probabilmente molto difficile da implementare. Con la fotocamera che stai utilizzando, la distorsione deve essere corretta per prima in modo che le linee siano effettivamente diritte.

L'approccio pratico è probabilmente più semplice e più robusto. Mentre lo descrivi, sembra che possa essere automatizzato per diventare facile da usare. Fai in modo che il robot si accenda da solo e identifica in modo pragmatico quale punto rimane nello stesso punto dell'immagine.

+0

Grazie per la risposta. Effettivamente, la configurazione completamente automatica sembra improbabile, il nostro professore è della stessa opinione. Abbiamo pensato di utilizzare un accelerometro, ce ne sono alcuni molto piccoli disponibili sul mercato. Vedremo :) – Wojtek

+0

Abbiamo appena installato un accelerometro sulla nostra scheda sul bus i2c. Sembra funzionare bene, ora dobbiamo scrivere un pezzo di codice e speriamo che funzionerà. Volevo solo fartelo sapere. – Wojtek

Problemi correlati