Всем доброго времени суток,
Я строил конвейер восприятия облака точек для своего робота при моделировании с использованием библиотеки облаков точек (PCL) и, в частности, модуля итеративной ближайшей точки (ICP). У меня возникают трудности с получением правильной матрицы преобразования из PCL ICP. Сначала я думал, что это что-то с моими конкретными облаками точек или моим кодом, но то же самое происходит с использованием учебного кода и облака точек.
В качестве минимального рабочего примера я скопировал Интерактивный код ICP , скомпилировал и использовал файл monkey.ply , и он работает должным образом. Однако, когда я изменяю только трансляционную составляющую преобразования от начального значения в уроке от t = <0,0, 0,0, 0,4> до t = <1,0, 1,0, 0,0> матрица преобразования выходного сигнала ICP выключена как минимум на 0,2 по каждой оси, включая непереведенную ось Z.
Есть ли что-то, чего мне не хватает, когда дело доходит до первоначального перевода между облаками? Существует ли минимальный перевод между облаками для работы ICP?
См. Вывод ниже, используя файл monkey.ply , я сократил вывод, чтобы он стал более читабельным:
КОД, КОПИРОВАННЫЙ ИЗ интерактивной_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 >
ИЗМЕНЕННЫЙ ПЕРЕВОД С t = <0,0, 0,0, 0,4> до 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 >
Буду признателен за любую помощь!
Махало,
Крис Роу