RS-LiDAR-16 User Manual
5.1.2 Data Field
Data field comprises data blocks that contain valid measurement data. Each data filed contains 12
blocks. Each block is 100-byte long and is a complete measurement data set. Each data block begins
with a 2-byte start identifier “0xffee”, then a two-byte azimuth value (rotational angle). Each azimuth
value records 32 sets of channel data reported by the 16 laser channels for two sequence. (Please see
chapter 9 for the relationship between channel sequence and vertical angel.)
5.1.2.1 Azimuth Value
The reported azimuth is associated with the first laser firing in each sequence of 16 laser firings. The
Azimuth Value is recorded by the encoder. The zero position on the encoder indicates the zero degree
of azimuth value on RS-LiDAR-16. In one data block, there are 32 sets of laser data indicating two
sequence of the 16 laser firings, however only every-other encoder angle is reported for alternate firing
sequences. So under single return mode user can choose to interpolate that unreported encoder stamp
(Refer to 5.1.2.2). The resolution of Azimuth is 0.01°.
For example, in Figure 10, the azimuth value is calculated through the following steps:
Get azimuth values: 0x00
,
0x44
Combine to a 16 bit, unsigned integer: 0x0044
Convert to decimal: 68
Divided by 100
Result: 0.68°
Hence the firing angle is 0.68°
Note: the position of 0° on sensor is the Y axis positive direction in Figure 14.
5.1.2.2 Azimuth Value Interpolation
Because the RS-LIDAR-16 reports the azimuth value for every-other firing sequence, it’s helpful to
interpolate the un-reported azimuth when the LiDAR works under single return. There are several ways
to interpolate the un-reported azimuth, but the one given below is simple and straight forward.
Consider a single data packet. The time between the first firing of the first sequence of sixteen firings
(Data Block 1) and the first firing of the third sequence of sixteen laser firings (Data Block 2) is
~100.0 µs. If you assume the rotation speed over that short interval is constant, you can assume the
azimuth of the (N+1) set of sixteen laser firings is halfway between the azimuth reported with the Nth set
of 16 laser firings and the azimuth reported with the (N+2) set of laser firings.
Below is pseudo-code that performs the interpolation. The code checks to see if the azimuth rolled over
from 359.99° to 0° between firing sequence N and N+2.