Software correction of the camera tilt in the positioning system

Brief introduction:
We are developing a positioning system that works as follows. Our camera is located on the robot and is directed up (looks at the ceiling). On the ceiling, we have something like a guideline, thanks to which we can calculate the position of the robot. It looks like this:

enter image description here

Our problem:
The camera tilts a little (I think, 0-4 degrees), because the surface of the robot is not quite smooth. This means that when the robot rotates, but remains in the same coordinates, the camera looks at a different position on the ceiling, and therefore our positioning program gives a different position for the robot, although it only rotates and does not move the bit.

Our current (hard-coded) solution:
We took a test photo from the camera, rotating it around the axis of the lens. From the photographs we deduced that it is tilted approx. 4 degrees in the "upward" image. Using some simple geometric transformations, we were able to reduce the tilt effect and find the real camera position. In the following pictures, the gray dot indicates the center of the image, the black dot is the real place on the ceiling, under which the camera is located. The black dot was converted from a gray dot (its position was calculated by correcting the position of the gray dots). As you can easily see, the gray dots form a circle on the ceiling, and the black dot is in the center of this circle.

enter image description here

enter image description here

enter image description here

enter image description here

The problem with our solution:
Our approach is completely incapable. If we move the camera to a new robot, the angle and direction of tilt should be completely re-calibrated. Therefore, we wanted to leave the calibration phase for the user, which would require taking some images, evaluating the tilt parameters, and then setting them in the program. My question is for you: can you come up with some better (more automatic) solution for calculating the tilt parameters or tilt correction in the pictures?

+6
source share
1 answer

Good job. Automatic calibration is a good task.

The idea would be to use parallel lines from the tiles: If the camera is completely flat, all the lines will be parallel in the picture. If the camera is tilted, all lines will be secant (they intersect at the vanishing point).

Now it is probably very difficult to implement. When using the camera, you must first correct the distortion so that the lines are really straight.

Your practical approach is probably simpler and more reliable. As you describe, it seems that it can be automated to become user friendly. Turn the robot on and pragmatically determine which point remains in the same place in the image.

+5
source

All Articles