One folder of timestamped PCDs.
Local tools like bag_to_pcd read one topic and write a folder of timestamped PCD files. That is great for debugging a sensor stream, checking fields, or handing one frame to another tool.
“Rosbag to PCD” can mean two very different jobs. Sometimes you want every PointCloud2 frame exported to disk. Other times you really want one mapped point cloud from the whole recording. The right path depends on which of those jobs you are actually doing.
Local tools like bag_to_pcd read one topic and write a folder of timestamped PCD files. That is great for debugging a sensor stream, checking fields, or handing one frame to another tool.
If what you really need is a point cloud map, you still need LiDAR SLAM and, when available, GNSS-backed georeferencing. That is the job LidarFlow is built for.
Before SLAM runs, LidarFlow lists the topics it found and flags the ones it can use.
Local conversions need a ROS env, the right pcl_ros build, and matching topic names. The browser path skips all three.
SLAM, registration, and georeferencing run with clear run progress instead of opaque logs.
You get one mapped point cloud plus PLY, trajectory, and metadata — not a directory of timestamped frames.
If you are already in a ROS environment and only need per-frame exports, use the upstream tool directly.
ros2 run pcl_ros bag_to_pcd --ros-args \ -p bag_path:=rosbag2_2025_01_01/ \ -p topic_name:=/pointcloud \ -p output_directory:=pcds
Good for timestamped frame exports. Not a full mapping pipeline.
If you need custom filtering, field transforms, or one-off post-processing, a small Python script gives you more control.
import rosbag
from sensor_msgs import point_cloud2
with rosbag.Bag("input.bag") as bag:
for _, msg, t in bag.read_messages("/pc"):
points = list(point_cloud2.read_points(msg))
# write one PCD per frameFlexible, but you still own the rest of the pipeline.
If you want a mapped output instead of a folder of raw frames, upload the recording through the browser and let LidarFlow handle validation, SLAM, georeferencing, and artifact delivery.
.mcap or ROS1 .bagoutput.pcd, map.ply, metadata, and trajectory artifactsROS1 .bag and .mcap are supported now. ROS2 .db3 is not, and rather than pretend otherwise we document the reindex workaround on the ROS2 .db3 status page. Free while we are testing.
Related reading: what a PCD file is, the MCAP variant, supported LiDAR sensors.
Yes. Upload the .bag or .mcap file in the browser and LidarFlow runs the reconstruction on its own infrastructure, then returns output.pcd and map.ply. Nothing is installed on your machine. The manual route with pcl_ros or GLIM still needs a working ROS environment.
A dump writes each PointCloud2 message to its own file in sensor coordinates. Stacking those files gives you a smeared cloud because the sensor moved between frames. A SLAM reconstruction estimates the sensor trajectory, closes loops, and corrects drift so every scan lands in one consistent map frame.
Not yet. LidarFlow accepts ROS1 .bag and .mcap today. If you have a .db3 bag, reindex it to MCAP with the rosbag2 MCAP storage plugin and upload that. You can also join the waitlist on the ROS2 .db3 status page.
The run still works. You get a metric map in a local frame with the origin at the start of the recording. Georeferencing to WGS84 is the only step that needs GNSS fixes, so without them that step is skipped.