I am working on EKF-MonoSlam (Davson) method for the mere input as a webcam, (it works "fine" if we calibrate and use reasonable sigmas) , and I am trying to add the odometry of some dataset (as rosbag) as in the reference (https://github.com/rrg-polito/mono-slam) enter image description here

so the odometry (estimated pose) is added so $V_k$ is to make $r_k$ right and so $\Omega_k$ (I know I could use velocity , but I need this working first) , that is supposed to make the camera in the right track as additional measurement, but what happens is:

  • the camera refuse many matches (as the projection of it is wrong),and soon drift and get lost.

Why is that? and How to fix it?

the dataset site says that odometry data is not calibrated , so I am thinking that it maybe need some scale parameters to make the image estimate of pose match with odometry estimates, if so, how to find that scale

any help or reference ,would be appreciated ,Thank you


now I am using velocity of odometry as input and it's better (still there's errors), any link to code or explanation of adding odometrey (as control not measurement) to compare how it goes would be appreciated , this is really a headache in c++...


1 Answer 1


The Focal length is measured in pixel (in projection equation) and,

the standard unit for length (odometery) in ros is meter ,...so after making sure of the units of your data and the proper initialization of the first frame (of camera and odometrey) noticing that:

Odometrey usually taken as "robot-based" measurement not world-based,

it all came down to solving geometrical transformations.

(after applying this to my problem , the errors are now ok)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.