This is a LOAM (Lidar Odometry and Mapping) ROS package for Velodyne VLP-16 3D laser scanner. This package is a simple modified copy of loam_velodyne git repository from laboshinl, which is again a modified copy of the original one release by Ji Zhang. His change on top of the original one is that he changed the scanRegistration.cpp to make it work with his dataset. I fixed a bug on laserOdometry.cpp to get rid of the matrix NaN error during L-M optimization step. Please cite Zhang et al.'s paper if this package is used.
J. Zhang and S. Singh. LOAM: Lidar Odometry and Mapping in Real-time. Robotics: Science and Systems Conference (RSS). Berkeley, CA, July 2014.(PDF)(VIDEO)(SRC FILES)
Wiki Webpage by the Author: http://wiki.ros.org/loam_velodyne
Here I assume you have a Catkin worksapce under ~/ros_workspace/catkin_ws.
(1) gitclone the package into your "src" folder.
(2) compile the package
(3) download a ROS bag file for test dataset.
(4) run the package and rosbag file
YOU SHOULD SEE A RESULT SIMILAR TO THEIR DEMO VIDEO (nsh_indoor_outdoor DEMO VIDEO, gates_oscillating_motion DEMO VIDEO) and laboshinl VLP-16 DEMO VIDEO. GOOD LUCK.
After two modifications (laboshinl and I), the algorithm starts diverging at some point when "gates_oscillating_motion" dataset is being processed. Needs parameters tuning?
Laser Odometry and Mapping (Loam) is a realtime method for state estimation and mapping using a 3D lidar. The program contains two major threads running in parallel. An "odometry" thread computes motion of the lidar between two sweeps, at a higher frame rate. It also removes distortion in the point cloud caused by motion of the lidar. A "mapping" thread takes the undistorted point cloud and incrementally builds a map, while simultaneously computes pose of the lidar on the map at a lower frame rate. The lidar state estimation is combination of the outputs from the two threads.
If an IMU is available, the orientation (integrated from angular rate) and acceleration measurements are used to deal with general motion of the lidar, while the program takes care of the linear motion.
The program is tested on a laptop with 2.5 GHz quad cores and 6 Gib memory (the program consumes two cores). It uses a Velodyne VLP-16 lidar.
Wiki Webpage: http://wiki.ros.org/loam_velodyne