qdLMF / LIO-SAM-GPU-ScanToMapOpt

A CUDA reimplementation of the line/plane odometry of LIO-SAM. A point cloud hash map (inspired by iVox of Faster-LIO) on GPU is used to accelerate 5-neighbour KNN search.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mapping drift when using the dataset provided by lio-sam

xiaoxueshengyao opened this issue · comments

Thans for your great work. While the robot will drift immediately when using the dataset "Campus dataset (small)" like this. What should I modify the project.
mapping_drift

Try use config/params-campus.yaml

Try use config/params-campus.yaml

Thanks for your reply. I had tried to use the yaml, but the drift is still occured. I tried to use more iteration, while the optimization can not converge even if the iteration is setted to 300.

Try use config/params-campus.yaml

Thanks for your reply. I had tried to use the yaml, but the drift is still occured. I tried to use more iteration, while the optimization can not converge even if the iteration is setted to 300.

Does it drift when using other bag files?

Yes, I had tried several bags. All of them drifted.

方便交流我用中文了,在我测试发现calc_surf_coeff.cu中计算面方程式使用qr分解去计算系数,但是所有得到的系数都是nan,两种方法都是同样的结果
代码如下
`for(int i = 0; i<5; i++)
{
printf("matA0: %f %f %f \n",matA0(i,0),matA0(i,1),matA0(i,2));
}

// ColPivHouseholderQR5x3 qr_decomp(matA0);
ColPivHouseholderQRNx3<5> qr_decomp(matA0);
matX0 = qr_decomp.Solve(matB0);
printf("matX0 %f %f %f\n",matX0(0,0),matX0(1,0),matX0(2,0));`

对应打印如下
image

尝试将cuda_plane_line_odometry/CMakeLists.txt中的set(CMAKE_CUDA_ARCHITECTURES 52)中的52改成你的GPU的compute capability
或者,使用注释掉的// ColPivHouseholderQR5x3 qr_decomp(matA0);
这里的qr分解,我原先想直接用Eigen的,但是报了超多模板错误,实在调不通无奈之下才写了这么个5x3的版本
我在其它项目中也碰上过关于Eigen的诡异错误
看来在kernel内盲目使用Eigen也许是个不成熟的决定