RonaldSun / VI-Stereo-DSO

Direct sparse odometry combined with stereo cameras and IMU
387 stars 124 forks source link

Questions in terms of EnergyFunctional::marginalizeFrame_imu function #20

Open minghanz opened 4 years ago

minghanz commented 4 years ago

Hi,

I read through your code and I have a question in the EnergyFunctional::marginalizeFrame_imu function (in EnergyFunctional.cpp).

J_all_half is not added to any matrix after calculation. Theoretically it should be added to HM_change_half like how J_all is processed. Maybe it should be something like: HM_change_half += (J_all_half.transpose()*Weight*J_all_half);

In current implementation HM_change_half is always zero matrix at the end. Is it a mistake or it should actually work this way?

Thank you!

RonaldSun commented 4 years ago

Hi HM_change_half shouldn't be zero theoretically. In my test, dynamic margin dosen't perform well so I set HM_change_half to zero and put off dynamic magrin. Actually HM_imu_half has no effect

minghanz commented 4 years ago

Thanks for your reply.

But I noticed that use_Dmargin is set to true in main_dso_pangolin.cpp. So actually dynamic marginalization is running, but the HM_imu and bM_imu is reset to zeros when dynamic marginalization happens (because the HM_imu_half and bM_imu_half are zeros)? Can I turn on the dynamic marginalization by simply assigning value to HM_change_half as I mentioned above?

RonaldSun commented 4 years ago

Yes, you can try. I set use_Dmargin to False at here https://github.com/RonaldSun/VI-Stereo-DSO/blob/master/src/OptimizationBackend/EnergyFunctional.cpp#L1330-L1335 You can modify it yourself.

minghanz commented 4 years ago

So you turn off use_Dmargin after M_num2>25, but before that dynamic marginalization could still happen. In that case HM_imu and bM_imu are reset to zeros when it happens (essentially removing previous marginalization information)? Does that affect the stability of the system?

Thank you!

RonaldSun commented 4 years ago

It shouldn't have much impact. In my test M_num2 will exceed 25 very soon.