Aruco calibration app - mintforpeople/robobo-programming GitHub Wiki

ArUco calibration

Before proceeding to carry out any detection with Aruco method in Robobo, it is necessary to calibrate the camera. To do it, we have created a specific Android app that must be installed in the Robobo smartphone:

Download the app

This app can help you to get a better experience with the OpenCV camera by eliminating some distortions that could be introduced by the lens of the camera. This document will serve as a guide to calibrate the camera correctly.

For calibration, first of all, we need to print a ChArUco, a chessboard combined with ArUcos that tries to combine the benefits of both:

The most important part of this process is to obtain a proper Charuco board. You can make one yourself (ie, using calib.io), ordering one online or getting one on a local camera store. In any case, its fundamental that the board its totally flat and to use a 8x11 Charuco.

Be careful when you print it to verify that the selected dimensions are not modified by the printer. We recommend to measure the size of the printed aruco with a ruler or similar.

App Use

To use the App and the Charuco board, you should:

  • Place the Charuco board in a flat surface (for instance, in a wall)
  • Modify the properties corresponding with your charuco board on the settings view (Menu -> Settings) and click "Done". Remember that the sizes should be on mm and, if you use the recommended (calib.io), it would not be necessary to modify them because they already appear in the app by default.
  • Choose the camera to be calibrated, front or back (by using the "Change camera" button).
  • Capture pictures of the Charuco board (by using the "Capture" button). It´s necessary take between 10 and 15 images with different angles.
  • Calibrate the camera using the photos taken (by using the "Calibrate" button).

Important Notes

It is important to remember that:

  • The boards needs to be flat.
  • The illumination should be clear.
  • The pictures should contain the Charuco board.
  • The calibration process should be done for each camera.

For Developers

The calibration is carried out by using a Camera Matrix and a Distortion Coefficients Vector. Each calibration saves the obtained value for that camera in the camera.properties file of the Android Sytem. There would be only one matrix and vector for each camera with the names using the following format:

distCoeffs# ... cameraMatrix# ...

Where # it's the camera identifier.