Reputation: 2106
For a simple laser scanner I'm looking to use a single webcam and a line laser. The camera calibration itself is fairly trivial, but the relative rotation and translation of the laser in the frame of the camera proves to be a bit more difficult.
Is there a "standard" way of doing such a thing? I would reckon that projecting the laser onto the checkerboard and using the known orientation of the board in some way would provide the needed information.
--EDIT--
Attached image of setup, which should provide more information. Because of the checkerboard, the location of the plane is known. The camera angle is also known. The calibration would need to recover the LaserDist (translation from camera coordinates to laser coordinates) and the laser angle.
In the ideal case, the rotation of the line laser itself would also be taken into account (eg; aside from having a rotation over the y axis which is used to triangulate, it would be interesting to find if the line is not perfectly vertical).
Upvotes: 2
Views: 2341
Reputation: 321
There is matlab code to solve this problem here:
http://research.engineering.wustl.edu/~pless/code.html
Upvotes: 2
Reputation: 2106
The method that I finally implemented is relatively straight forward.
By projecting the laser onto the checkerboard (which has a known rotation / translation from the camera frame of reference) we can find a line of 3D points. By using multiple transformations of the checkerboard, we can find multiple lines of points that must lie on the laser plane. These points can then be given to a plane fitting algorithm.
If the laser can be rotated, multiple orientations of the laser can be used. By intersecting two laser planes, the axis of rotation of the laser module can be found.
Upvotes: 1