I am currently trying to do 3D SLAM with two 2D Lidars and possibly additional IMU in ROS. However, there seems to be no ROS package available to meet my needs. The closest one would be laser_pipeline stack, but the documentation only tells me about fusioning LaserScans from "one source" although what I need is fusioning vertical scan and horizontal scan into one 3D PointCloud2. So I currently need another package to fusion scans from different sources. Anybody have an idea how to solve this problem?
I think that you will find that the laser_assembler in the laser_pipeline does exactly what you are looking for.
laser_scan_assembler node accepts one topic as input. But you can remap or mux multiple laser scanners into that input topic and the assembler should be able to handle it. The algorithm should be using the actual headers from the incoming laser scans and consequently should be able to assemble them separately.
ALternatively you could just assemble the two scanners separately and then fuse the point clouds using the
point_cloud_assembler node in the same package.