Skip to content
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

change to ceres error #19

Open
Natalie-ZG opened this issue Nov 8, 2019 · 1 comment
Open

change to ceres error #19

Natalie-ZG opened this issue Nov 8, 2019 · 1 comment

Comments

@Natalie-ZG
Copy link

Hi.
Thanks for your excellent work firstly.

I have tried to modify "#if 1" to "#if 0" at this part below to change to ceres instead of Theia sfm. But I got different results comparing to using Theia sfm with the same ros bag. It can pass the makeLoopEdgeMsgWithConsistencyCheck with Theia, but not with ceres. I'm confused whether I was wrong to switch the dependence.

cerebro/src/Cerebro.cpp

   #if 1
   //--
   float pnp_goodness = StaticTheiaPoseCompute::PNP( world_point_uv, feature_position_uv_d, op1__b_T_a, pnp__msg  );
   //--END
   #else
   //--
   op1__b_T_a = odom_b_T_a; // setting initial guess as odometry rel pose with translation as zero
   // op1__b_T_a(0,3) = 0.0; op1__b_T_a(1,3) = 0.0; op1__b_T_a(2,3) = 0.0;
   float pnp_goodness = StaticCeresPoseCompute::PNP( world_point_uv, feature_position_uv_d, op1__b_T_a, pnp__msg  );
   //--END
   #endif

Would you please help me with this issue? Thanks again.

@mpkuse
Copy link
Owner

mpkuse commented Nov 8, 2019

actually you are better off using the theia pose computation for now. For that to work you need theia.

Here is why the standard ceres based method fails:
The theia's pose computation is a 2 step process a) closed form computation of the pose b) non-linear refinement stage.

In my ceres based method, it is only refining the input pose. If the initial estimate of the pose is bad it won't work as expected. This is especially the case under kidnap, when the poses from odometry is really a bad guess for relative pose computation at loop candidates.

I am working to eliminate the dependence on theia. Look at my branch: robust-pose-computation
However it is not ready yet.

Let me know if this answers your question.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants