Members of DIY Drones using optical flow sensors, such as the ADNS3080 that is available in the DIYDrones store, or the Centeye vision sensors might be interested in the work I presented last week at ICRA.


The method, described in the video above, allows to calibrate the viewing direction of optic-flow sensors thanks to a very simple calibration process as long as you have a 3-axis rate gyroscope. It is particularly useful when one needs a correct orientation for de-rotation (removing the component induced by rotation from an optic-flow vector), but it is generally useful for all types of applications, from obstacle avoidance to ego-motion estimation.


The paper can be downloaded here and the code for off-line calibration here.

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • Hi Randy,

    Thanks for the feedback!

    The choice for the focal length of your lens really depends on a lot of things. To name a few:

    - Amount of light in the environment. A bigger zoom usually means that the sensor gets less light. In my application, I chose a small zoom typically because I want to operate indoors with low light.

    - The features that are present in the environment. To optimize the quality of the features that are detected by the sensor, on might want to have a large zoom or not. Typically, if the environment is composed of big patches that have the same color (think big uniform walls), one shouldn't zoom too much in order to keep some corners of these patches in the field of view.

    - The resolution. Larger zoom usually means more resolution in the optical flow measurement.

    I'd say the sampling rate should be determined by the dynamics of your typical motion (and the resolution of your sensor I guess). Choose fast update rate for fast dynamics (and vice versa).



  • Developer

    Wow, fantastic work!

    There are a number of interesting things in that paper, at least for me.  Obviously the calibration process is fantastic and I wish I could free up the time immediately to implement in arducopter.  There are other things too:

         1. I've long suspected there must be a delay between the optical flow sensor and the gyros but I'm surprised it is as long as 20ms.  This is great to know as I'm sure it must cause some issues with our current code.

         2. interesting that you used 25hz and a 4.6mm lens. My original implementation with the sparkfun eval board used 20hz and a 4.6mm lens.  The final diydrones product uses an 8mm lens and the arducopter code runs at 50hz but maybe we should reconsider those choices.

    Thanks again for sharing!

  • @Ruwan: Were you presenting anything flying-related ?

    @Geoffrey: Thanks for you comment ;)

  • @Adrien- This is very cool and practical! Thank You!

  • Moderator

    I was there @ICRA. Too bad I missed your talk :-(

This reply was deleted.