A 2d laser scanner is mounted on a rotary axis. I wish to determine the transformation matrix from the center of the axis to the center of the scanner, using only the input from the scanner and the angle of rotation.
The 2d scanner itself is assumed to be calibrated, it will accurately measure the position of any object inside the plane of the laser, in regards to the scanner origin.
The rotary axis is calibrated as well, it will accurately measure the angle of its own movement.
The scanner is aligned and mounted close to the center of rotation, but the exact offset is unknown, and may drift over time.
Assume it is impractical to measure the position and orientation of the scanner directly. I am looking for a way to determine the exact values for the 6 degrees of offset the scanner may have in relation to the axis, determined solely on the 2d information from the scanner and the rotation angle from the axis.
I am mainly interested in the 4 offsets depicted here, since the other two do not matter in regard to generating a consistent 3d point cloud from the input data.
By scanning a known calibration object, it should be possible to determine these offsets. What are the mathematical formulas for this?
What sort of calibration information is required at a minimum? Is it for example possible to determine all parameters simply by scanning a flat surface, knowing nothing about the surface except that it is flat?
(The transformation matrix from rotation axis to world is unknown as well, but that one is trivial to determine once the transformation from axis to camera is known.)
Example
On the left the camera is placed exactly on the rotational axis. The camera scans a planar object with reference points A B and C. Based on the laser distance measurements and the angle of the axis, this planar object can be reconstructed.
On the right, the camera has an unknown offset to the axis. It scans the same object. If the point cloud is constructed without knowing this offset, the planar surface maps to a curved surface.
Can I calculate the offset based on the surface curvature?
If I know the real-world distances and angles between A, B and C, how can I calculate the camera offsets from that? What would be the minimum number of reference points I need for all 4 offsets?