ICP Precisión Transformación varía con la traducción inicial

votos
0

Buen día a todos,

He sido la construcción de un oleoducto percepción de nubes de puntos para mi robot en simulación utilizando nube de puntos Library (PCL) y, específicamente, el módulo iterativo punto más cercano (ICP). Estoy teniendo dificultades para obtener la matriz de transformación correcta de PCL ICP. Al principio me pareció que era algo con mis nubes de puntos particulares o mi código, pero lo mismo ocurre con el código y el punto tutorial nube.

Para un ejemplo de trabajo mínimo, he copiado el código interactivo ICP , compilado y utilizado el monkey.ply archivo y funciona como se esperaba. Sin embargo, cuando cambio sólo el componente de traslación de la transformación desde el valor inicial en el tutorial de t = <0,0, 0,0, 0,4> a t = <1,0, 1,0, 0,0> , la matriz de transformación de salida ICP es apagado por al menos 0,2 en cada eje que incluye el eje Z no traducida.

¿Hay algo que me falta cuando se trata de la traducción inicial entre las nubes? ¿Hay una traducción mínima entre las nubes de la PIC al trabajo?

Ver el resultado a continuación utilizando el monkey.ply archivo, acorté la salida por lo que su más legible:

CÓDIGO copiado de 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 >

CAMBIADO TRADUCCIÓN DE 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 >

Cualquier ayuda en absoluto sería apreciada!

Mahalo,

Chris Rowe

Publicado el 13/02/2020 a las 21:54
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Si eres nuevo en la PIC y el registro nube de puntos, le recomiendo que lea el primer capítulo de los tutoriales SIGGRAPH técnicas modernas y solicitudes de registro en tiempo real para no rígida . Es muy corta, pero contiene una buena información.

Volviendo a su pregunta.

¿Hay algo que me falta cuando se trata de la traducción inicial entre las nubes?

Sí, ICP necesita una buena transformación inicial para empezar . Y por transformación me refiero tanto traslación y rotación.

La suposición fundamental realizado por ICP (la más cercana iterativo Point) algoritmo es:
Las superficies (o nubes de puntos) están en la alineación inicial áspera. Por lo tanto punto más cercano correspondencias correspondencias aproximadas terreno la verdad.

¿Hay una traducción mínima entre las nubes de la PIC al trabajo?

Supongo que no es una respuesta directa. Cuanto más cerca, mejor.

AFAIK también depende del método de asociación de datos. (Hay muchas variantes a la ICP originales. Como se describe en el documento Efficient variantes de la ICP Algoritmo ).

ICP se utiliza generalmente como un último paso en el registro de punto de enturbiamiento. Para obtener una buena transformación inicial, puede utilizar algún método de registro basado función como esta .

Respondida el 14/03/2020 a las 12:21
fuente por usuario

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