Processing LiDAR data on a rotating airborne frame
I have an airborne lidar (Velodyne 16 Puck) mounted on top of a quadrotor and scanning a particular area to build a 3D map of the area. I have written a custom code to obtain data from the Lidar and store the return values as X, Y, Z and Intensity in the Lidar's local frame. My file also contains the GPS and orientation values of the quadrotor for every scan of the lidar. I am trying to compute the translation and rotation for each scan and view it in a global frame.
I have created a sample program which parses my file for the X,Y,Z values and the GPS, orientation values and creates a pointcloud<XYZI> to store the lidar XYZ values. I then create a Eigen::Affine3f transformation matrix and perform the necessary rotation and translation and apply these transformations to get a rotated cloud. However when I start a viewer to view the pointcloud the cloud generated is incorrect. Can anyone please help me out?