Questions in terms of EnergyFunctional::marginalizeFrame_imu function
Opened this issue · 5 comments
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!
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
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?
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.
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!
It shouldn't have much impact. In my test M_num2
will exceed 25 very soon.