i2Nav-WHU / FF-LINS

A Consistent Frame-to-Frame Solid-State-LiDAR-Inertial State Estimator
GNU General Public License v3.0
164 stars 24 forks source link

用提供的数据集lili-om中的schloss2.bag 会程序崩溃 #9

Closed ZYXiao-g closed 3 months ago

ZYXiao-g commented 3 months ago

图片 在schloss2.bag 运行到42秒附近时算出来的残差会变成nan。 数据采用的是仓库提供的数据.

I20240715 09:36:56.151815 3103104 ff_lins.cc:259] 259259 I20240715 09:36:56.271507 3103104 lidar_map.cc:82] New lidar keyframe at 565114.408207 with interval 0.341238 s, translation 0.625118, rotation 0.0516693 I20240715 09:36:56.274111 3103104 ff_lins.cc:242] Accumulate 2 frames at 565114.408207 with 6426 points I20240715 09:36:56.274570 3103104 ff_lins.cc:519] Add new lidar time node at 565114.408207 with dt 0.341 I20240715 09:36:56.285035 3103104 lidar_map.cc:412] Find the newest 708 featureas and average 715 features at 565114.408207, update map cost 7.00161 ms I20240715 09:36:56.285094 3103104 ff_lins.cc:259] 259259 I20240715 09:36:56.285115 3103104 optimizer.cc:407] Total 11 pose states from 565111.363400 to 565114.408207 I20240715 09:36:56.296653 3103104 optimizer.cc:127] Add 10 preintegration, 7164 lidar factors W20240715 09:36:56.301999 3103104 residual_block.cc:129]

Error in evaluating the ResidualBlock.

There are two possible reasons. Either the CostFunction did not evaluate and fill all
residual and jacobians that were requested or there was a non-finite value (nan/infinite) generated during the or jacobian computation.

Residual Block size: 4 parameter blocks x 1 residuals

For each parameter block, the value of the parameters are printed in the first column
and the value of the jacobian under the corresponding residual. If a ParameterBlock was held constant then the corresponding jacobian is printed as 'Not Computed'. If an entry of the Jacobian/residual array was requested but was not written to by user code, it is indicated by 'Uninitialized'. This is an error. Residuals or Jacobian values evaluating to Inf or NaN is also an error.

Residuals: -nan

Parameter Block 0, size: 7

 52.0676 |      3.69658 
-8.43838 |      9.21108 
0.105763 |      1.22117 

-0.013781 | -nan -0.0168553 | nan -0.0431214 | -nan 0.998833 | 0

Parameter Block 1, size: 7

 56.8699 |     -3.69658 
-9.27674 |     -9.21108 
0.107327 |     -1.22117 

0.00794325 | -nan -0.00949465 | nan -0.0430097 | -nan 0.998998 | 0

Parameter Block 2, size: 7

0.260783 |         -nan 

-0.0557228 | nan -0.0621941 | nan 0.999985 | nan -0.0010788 | nan -0.00305401 | -nan 0.00444914 | 0

Parameter Block 3, size: 1

0.00366588 | -nan

thlsealight commented 3 months ago

图片 在schloss2.bag 运行到42秒附近时算出来的残差会变成nan。 数据采用的是仓库提供的数据.

I20240715 09:36:56.151815 3103104 ff_lins.cc:259] 259259 I20240715 09:36:56.271507 3103104 lidar_map.cc:82] New lidar keyframe at 565114.408207 with interval 0.341238 s, translation 0.625118, rotation 0.0516693 I20240715 09:36:56.274111 3103104 ff_lins.cc:242] Accumulate 2 frames at 565114.408207 with 6426 points I20240715 09:36:56.274570 3103104 ff_lins.cc:519] Add new lidar time node at 565114.408207 with dt 0.341 I20240715 09:36:56.285035 3103104 lidar_map.cc:412] Find the newest 708 featureas and average 715 features at 565114.408207, update map cost 7.00161 ms I20240715 09:36:56.285094 3103104 ff_lins.cc:259] 259259 I20240715 09:36:56.285115 3103104 optimizer.cc:407] Total 11 pose states from 565111.363400 to 565114.408207 I20240715 09:36:56.296653 3103104 optimizer.cc:127] Add 10 preintegration, 7164 lidar factors W20240715 09:36:56.301999 3103104 residual_block.cc:129]

Error in evaluating the ResidualBlock.

There are two possible reasons. Either the CostFunction did not evaluate and fill all residual and jacobians that were requested or there was a non-finite value (nan/infinite) generated during the or jacobian computation.

Residual Block size: 4 parameter blocks x 1 residuals

For each parameter block, the value of the parameters are printed in the first column and the value of the jacobian under the corresponding residual. If a ParameterBlock was held constant then the corresponding jacobian is printed as 'Not Computed'. If an entry of the Jacobian/residual array was requested but was not written to by user code, it is indicated by 'Uninitialized'. This is an error. Residuals or Jacobian values evaluating to Inf or NaN is also an error.

Residuals: -nan

Parameter Block 0, size: 7

 52.0676 |      3.69658 
-8.43838 |      9.21108 
0.105763 |      1.22117 

-0.013781 | -nan -0.0168553 | nan -0.0431214 | -nan 0.998833 | 0

Parameter Block 1, size: 7

 56.8699 |     -3.69658 
-9.27674 |     -9.21108 
0.107327 |     -1.22117 

0.00794325 | -nan -0.00949465 | nan -0.0430097 | -nan 0.998998 | 0

Parameter Block 2, size: 7

0.260783 |         -nan 

-0.0557228 | nan -0.0621941 | nan 0.999985 | nan -0.0010788 | nan -0.00305401 | -nan 0.00444914 | 0

Parameter Block 3, size: 1

0.00366588 | -nan

你好,可能是后续程序优化过程出现了数据集不适配的问题。由于lili-om数据集没有办法很好的评估定位精度,建议你使用其他开源数据集。

ZYXiao-g commented 3 months ago

图片 用rqt_bag看了下lili-om的数据集,43秒左右数据确实存在一些卡顿,不过算法对数据的要求太高了。包括用自己的数据也是,跑个几十秒马上就崩溃了