Visual odometry
9 years
Hi everyone.
Isn't there a way to use something called, "visual odometry" using a roborealm module? I hear it's supposed to be more useful than using encoders. How is it done? I've tried looking in the tutorials, but couldn't find anything. And in the documentation I didn't know where to look for it...
Anonymous 7 years
We do have an experimental module that provides visual odometry (i.e. tracking movement based on image shifts) but we found it not to be very reliable in our tests and are waiting on further research. It may work reasonably well on concrete due to the many different unique patterns seen in concrete floors but it fails significantly when used on carpet. As most will probably want to use it on carpet that seems to be a big flaw.

Note that in our case we were testing the optical mouse configuration where the camera would look at the floor/ceiling to calculate movement. Note that unlike a mouse you do need to calculate rotation too.

Note that also in scenes of a lot of movement image based odometry can get easily confused as it assumes that most of the scene is not changing.

Was there anything in particular that you were trying to use visual odometry on? Perhaps if we can find a good example that works we may release that module.

Anonymous from United Kingdom  [99 posts] 7 years
I spent a bit of time working on this using the optical flow module.   I integrated the optical flow data to measure how far the robot moved.  Demo video is at:

The obvious weakness is that moving objects in the scene ruin the approach.
not very promising!
I supervised a student who did his final project on this (only implementing on an ARM8 based embedded system so we couldn't use roborealm:-(  )
His results were adequate but not completely satisfying.  
The best demo to come out of it was using it as a "robot dance partner"
Consider it a second best to using traditional odometry and MCL with distance sensors.  Take a look at

Some hints, rebuild the optical flow by starting with something clever like SURF or SIFT. (Coming to roborealm sometime soon!) You will need to do lots of filtering.  

have fun,
Vishnu from India  [1 posts] 7 years
i disagree with Mr genter. optical mouse have been used in visual odometry in many micro mouse bots (which require very high precision) and it is one of the foolproof methods even today
Anonymous 7 years

Yes, it does work very well in that environment ...  you need high frame rates and a very low possibility for parallax effects which the micro mouse bots have. They are essential optical mice with wheels ... and we know that this technique works well since all the optical mice use it.

Now, try to do the same with 1ft ground clearance between the camera and the ground with NO additional illumination other than what's in the environment (mice use a led light) over an uneven terrain (long carpet threads or soil) AND at only < 30 fps (optical mouse use 1000fps ... yes, that's 1000 fps!). You'll notice the results are quite different and not as reliable!

Or perhaps you know of a technique that solves these issues? There is always new stuff that comes out that we're not aware off. Or perhaps you know of a paper or two that has show this technique to be reliable outside of the above contraints?


This forum thread has been closed due to inactivity (more than 4 months) or number of replies (more than 50 messages). Please start a New Post and enter a new forum thread with the appropriate title.

 New Post   Forum Index