hku-mars / HBA

[RAL 2023] A globally consistent LiDAR map optimization module
GNU General Public License v2.0
451 stars 62 forks source link

HBA无法优化 #18

Closed seanXMU closed 9 months ago

seanXMU commented 1 year ago

image 使用visualize.launch能正常显示点云,但是优化会直接崩溃退出。请问是什么问题呢?

seanXMU commented 1 year ago

发现是ba.hpp 的615行 remove_outlier函数中 double threshold = residuals[std::floor((1-ratio)*voxhess.plvec_voxels.size())-1]; residuals会变成residuals[-1]导致段错误,系统崩溃。请问有什么解决方法吗

gongjun136 commented 1 year ago

发现是ba.hpp 的615行 remove_outlier函数中 double threshold = residuals[std::floor((1-ratio)*voxhess.plvec_voxels.size())-1]; residuals会变成residuals[-1]导致段错误,系统崩溃。请问有什么解决方法吗

我也碰到了这种错误,感觉得自己修改下代码

zezeuser commented 1 year ago

我也遇到了这个问题,请问是否有解决的方法

发现是ba.hpp 的615行 remove_outlier函数中 double threshold = residuals[std::floor((1-ratio)*voxhess.plvec_voxels.size())-1]; residuals会变成residuals[-1]导致段错误,系统崩溃。请问有什么解决方法吗

samsdolphin commented 1 year ago

@seanXMU @gongjun136 @zezeuser 如果是这个原因,说明整个场景没有检测到平面,plvec_voxels.size()=0。我的建议是voxel_size、eigen_ratio都调大一点(如果现在很小的话),如果是使用默认参数还有这个问题。可以把点云截图放上来看看,让我判断一下hba无法找到平面的原因。

发现是ba.hpp 的615行 remove_outlier函数中 double threshold = residuals[std::floor((1-ratio)*voxhess.plvec_voxels.size())-1]; residuals会变成residuals[-1]导致段错误,系统崩溃。请问有什么解决方法吗

lilrookie76 commented 10 months ago

@seanXMU @gongjun136 @zezeuser 如果是这个原因,说明整个场景没有检测到平面,plvec_voxels.size()=0。我的建议是voxel_size、eigen_ratio都调大一点(如果现在很小的话),如果是使用默认参数还有这个问题。可以把点云截图放上来看看,让我判断一下hba无法找到平面的原因。

发现是ba.hpp 的615行 remove_outlier函数中 double threshold = residuals[std::floor((1-ratio)*voxhess.plvec_voxels.size())-1]; residuals会变成residuals[-1]导致段错误,系统崩溃。请问有什么解决方法吗

您好,我也是同样的问题,这是我的场景(r3live dataset),用visualize.launch启动 2023-12-29 15-28-15 的屏幕截图 将eigen_ratio调到0.3, voxel_size调到6.0能够不报错运行,但第二次运行launch报错,但我好像修改了一个错误的voxel_size值,我修改的是:

hba.cpp 71 ot->quater_length = voxel_size / 6.0; (4.0->6.0) 但这确实导致了我可以正常运行一次,不改这个,只改eigen_value反而运行不了