ICP Trasformazione Precisione che variano con traduzione iniziale

voti
0

Buongiorno a tutti,

Ho costruito un oleodotto percezione nuvola di punti per il mio robot in simulazione con le nuvole di punti Library (PCL) e in particolare il modulo iterativo Closest Point (ICP). Sto avendo difficoltà a ottenere la matrice di trasformazione corretto dal PCL ICP. Inizialmente ho pensato che fosse qualcosa con i miei particolari nuvole di punti o il mio codice, ma lo stesso accade con il codice e la nuvola di punti tutorial.

Per un esempio di lavoro minimo, ho copiato il codice di Interactive ICP , compilato e utilizzato il monkey.ply di file e funziona come previsto. Tuttavia, quando cambio solo la componente di traslazione della trasformazione dal valore iniziale nel tutorial di t = <0.0, 0.0, 0.4> a t = <1.0, 1.0, 0.0> , l'uscita matrice di trasformazione ICP è fuori da almeno 0.2 in ciascun asse compreso l'asse Z non tradotta.

C'è qualcosa che mi manca quando si tratta di traduzione iniziale tra le nuvole? Esiste una traduzione in minima tra le nuvole per ICP al lavoro?

Vedere l'uscita di seguito utilizzando il monkey.ply di file, ho accorciato l'uscita così la sua più leggibile:

Codice copiato DA interactive_icp.cpp

Applying this rigid transformation to: cloud_in -> cloud_icp
Rotation matrix :
     |  0.924 -0.383  0.000 | 
R =  |  0.383  0.924  0.000 | 
     |  0.000  0.000  1.000 | 
Translation vector :
t = <  0.000,  0.000,  0.400 >

Applied 1 ICP iteration(s) in 11 ms

ICP has converged, score is 0.0256485
ICP has converged, score is +2e-02
~
~
ICP has converged, score is +8e-06-> cloud_in
ICP has converged, score is +3e-12-> cloud_in
ICP transformation 14 : cloud_icp -> cloud_in
ICP transformation 15 : cloud_icp -> cloud_in
Rotation matrix :81 -0.036 |
     |  0.924  0.381 -0.036 |
R =  | -0.381  0.924  0.012 |
     |  0.037  0.003  0.999 |
Translation vector :, -0.402
t = <  0.016, -0.006, -0.402 >

CAMBIATI traduzione da t = <0.0, 0.0, 0.4> a t = <1.0, 1.0, 0.0>

Rotation matrix :
     |  0.924 -0.383  0.000 | 
R =  |  0.383  0.924  0.000 | 
     |  0.000  0.000  1.000 | 
Translation vector :
t = <  1.000,  1.000,  0.000 >

Applied 1 ICP iteration(s) in 11 ms

ICP has converged, score is 0.157621
ICP has converged, score is +2e-01
~
~
ICP has converged, score is +8e-09-> cloud_in
ICP has converged, score is +5e-12-> cloud_in
ICP transformation 24 : cloud_icp -> cloud_in
ICP transformation 25 : cloud_icp -> cloud_in
Rotation matrix :75 -0.025 |
     |  0.927  0.375 -0.025 |
R =  | -0.375  0.927  0.029 |
     |  0.034 -0.017  0.999 |
Translation vector :,  0.265
t = < -1.391, -0.471,  0.265 >

Qualsiasi aiuto a tutti sarebbe apprezzato!

Mahalo,

Chris Rowe

È pubblicato 13/02/2020 alle 21:54
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

Se sei nuovo di ICP e punto di registrazione nuvola, vi consiglio di leggere il primo capitolo del SIGGRAPH esercitazione tecniche moderne e le domande di registrazione in tempo reale non rigido . E 'molto breve, ma contiene una buona informazione.

Tornando alla tua domanda.

C'è qualcosa che mi manca quando si tratta di traduzione iniziale tra le nuvole?

Sì, ICP ha bisogno di una buona prima trasformazione per cominciare . E dalla trasformazione intendo sia traslazione e rotazione.

Il presupposto fondamentale fatta da ICP (punto più vicino Iterative) algoritmo è:
Le superfici (o nuvole di punti) sono in ruvida allineamento iniziale. Pertanto punto più vicino corrispondenze approssimative corrispondenze verità a terra.

Esiste una traduzione in minima tra le nuvole per ICP al lavoro?

Suppongo che non ci sia una risposta diretta. Il più vicino, meglio è.

AFAIK dipende anche dal metodo di associazione dati. (Ci sono molte varianti al ICP originale. Come descritto nel documento efficiente Varianti dell'algoritmo ICP ).

ICP è di solito usato come ultimo passo nella registrazione nuvola di punti. Per ottenere una buona trasformazione iniziale, è possibile utilizzare un metodo di registrazione feature based come questo .

Risposto il 14/03/2020 a 12:21
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more