-
Notifications
You must be signed in to change notification settings - Fork 134
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bad optimization on INTEL/MIT datasets #87
Comments
Could you paste the changes you made here? Though currently be default it only actually optimizes if a loop closure is added (just to save computation) so be careful with that. Or call the forceUpdate function which should bypass the condition and forces the optimization to trigger. Best, |
First of all, thanks for your quick response. I applied minimal modifications to the test code in examples as shown in the code snipped pasted here : ############################### Usage: int main(int argc, char* argv[]) { std::string output_folder; RobustSolverParams params; graphNValues = gtsam::load2D(g2ofile, params.setPcmSimple2DParams(pcm_t, pcm_R, verbosity); return 0; Best, |
Ah, I see, if you are doing 2d g2o you should probably turn off diagonal damping https://github.com/MIT-SPARK/Kimera-RPGO/blob/master/include/KimeraRPGO/SolverParams.h#L91 just add a line:
Sorry we have mostly been testing with the 3D case and forgot that diagonal damping was set to true by default. Updated example script in 8c5e163 |
Yes, I am first trying the 2D case, and then I am going to move to the 3D datasets. Still, I added the line that you suggested but the results remain unchanged, it still works on M3500, but not on INTEL or MIT. Doing some research could be that the problem is in the underlying GTSAM solver. Reading this issue, gtsam_issue, in fact, without using RPGO, but directly GTSAM's implementation of GNC + GaussNewton, using the params specified in the issue, it converges as expected, while instead if using GNC + LM it never converges, no matter how many iterations. So, the reason behind the poor convergence results of RPGO on these datasets could be that it uses GNC + LM. Unfortunately, I am not able to test RPGO + GNC + GN because it gives me the following error ##################### Thrown when a linear system is ill-posed. The most common cause for this ########################## Best, |
Re: diagonal damping:
If you give it a different initialization though, for example doing this:
It works better:
|
Re: gtsam issue. I will follow this more closely. |
Thanks, Yun Chang! Using the relative transformations from the odometry measurements, instead of using the initial estimate given from the vertices, allows for the expected convergence behavior. I think the issue can be closed, being that the issue is more related to a problem with GTSAM, that RPGO itself. Kind Regards, |
Hello Yun Chang!
I am working on Robust Optimization for SLAM and was trying to use RPGO to compare with other methods on standard datasets ( M3500, INTEL, CSAIL, MIT ).
I used the snippet in the examples folder (RpgoReadG2o.cpp), but unfortunately, I am unable to converge to a reasonable solution on all datasets except M3500 ( classic, without additional noise ).
Being that I still didn't add any outliers to the dataset, I disabled outlier rejection as it was explained in #84, and used the same params for using only GNC.
These are the results that I obtained from the optimization, do you have any idea as to why these results and how to fix them?
The params I have used are :
Thanks in advance for your time,
EO.
The text was updated successfully, but these errors were encountered: