ICP Transformace přesnost mění s počáteční Překlad

hlasů
0

Dobrý den všem,

Byl jsem budování vnímání potrubí point cloud pro mé robot v simulaci pomocí Point Cloud Library (PCL) a konkrétně na nejbližší modul iterativní Point (ICP). Mám potíže dostat správné transformační matice z PCL ICP. Původně jsem si myslel, že to bylo něco s mými konkrétních bodových mraků nebo můj kód, ale to samé se děje pomocí tutorial kódu a mračno bodů.

Minimální pracovní příklad, kopírovat jsem kód Interactive ICP , sestavil a používal monkey.ply soubor a funguje podle očekávání. Nicméně, když se změní pouze translační složku přechodu od počáteční hodnoty v kurzu o t = <0,0, 0,0, 0,4> k t = <1,0, 1,0, 0,0> , ICP výstup transformační matice se liší o alespoň 0,2 v každé osy, včetně nepřekládané ose Z..

Je tu něco, co mi chybí, pokud jde o počáteční překladu mezi mraky? Existuje minimální překlad mezi mraky na ICP do práce?

Podívejte se na výstup níže pomocí monkey.ply souboru jsem zkrátil výstup, takže její lepší čitelnost:

CODE zkopírované z 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 >

ZMĚNA překlad z t = <0,0, 0,0, 0,4> k 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 >

Jakákoliv pomoc vůbec by ocenili!

Mahalo,

Chris Rowe

Položena 13/02/2020 v 21:54
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Pokud jste nový ICP a bodového zápisu cloud, doporučuji, abyste si přečetli první kapitolu z SIGGRAPH výukových moderních postupů a aplikací pro Real-Time Non-rigidní registrace . Je to velmi krátké, ale obsahuje správné informace.

Zpět k vaší otázce.

Je tu něco, co mi chybí, pokud jde o počáteční překladu mezi mraky?

Ano, ICP potřebuje dobrou počáteční transformace pro začátek . A transformací myslím i překlad a rotaci.

Základním předpokladem provádí ICP (opakujících nejbližší bod) algoritmus je:
Plochy (nebo bod mraky) jsou v hrubé počáteční vyrovnání. Proto nejbližší bod korespondencí přibližné pozemní pravdu korespondence.

Existuje minimální překlad mezi mraky na ICP do práce?

Domnívám se, že není přímá odpověď. Čím blíže, tím lépe.

Pokud vím to také závisí na způsobu Data Association. (Existuje mnoho variant na původní ICP. Jak je popsáno v dokumentu Efektivní variant ICP algoritmus ).

ICP se obvykle používá jako poslední krok při registraci bodu zákalu. Chcete-li získat dobrou počáteční transformace, můžete použít některé funkce založené na způsob registrace, jako je tento .

Odpovězeno 14/03/2020 v 12:21
zdroj uživatelem

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