The rotational angle of the scanning mirror is reported by a shaft encoder with 2000 positions. While this sounds plentiful, consider that in 90 degrees, there are only 500 positions, thus a image with a 90 degrees field-of-view would have more than 2 pixels per shaft position.
The motor that drives the mirror has limited power, requiring some time to accelerate the motor to the desired operating speed. This turns out to be a benefit as there are no sudden accelerations, so we can safely assume that the velocity is constant during the time required to acquire 1 buffer (1024 samples requires 1/16 second at 16k samples per second). A least-squares linear fit of the data is performed to map the integral data into real values. The least-squares fit adequately determines relative changes in phi.
The absolute position of the scanning mirror has not been specified by the manufacturer, and we have been in an ongoing process to calibrate it. The value available from the shaft encoder is a counter that starts at 0 when the device is powered on. In the data packet returned from the rangefinder, there is a bit that signifies that the shaft encoder has passed a preset ``zero'' position. It is not specified at what angle this occurs, and this is the value we have been seeking. To find it, we created a range event near the azimuth (a ceiling tile was raised, shown in figure 4). A scan was taken in one direction, followed by a 180 degrees horizontal rotation where another scan was taken. The data from second scan was reversed ( ), and the two compared. If the horizon is well-known, then the two events marking the missing tile should coincide. A process of refining our estimate of the zero position of the shaft encoder has lead us to a value refined to the nearest 0.01 degrees. We have concluded that the mirror's zero position occurs 131.77 degrees prior to the beam being horizontal.
The panning-tilting unit is another source of inaccuracy. The manufacturer claims it can be positioned every 0.771 minutes of arc, or 14,000 positions in 180 degrees. However, when a pan of 180 degrees is requested, the position is off by several tenths of a degree.
Another source of imprecision is the mirror that performs the line-scanning operation. It should be angled at 45 degrees from the laser beam, but the accuracy here is suspect. The plane scanned out is not truly a plane, but a nearly-flat cone. Once the angle of the cone is known, compensation of the error can be made in software.