cartographer/sensor/compressed_point_cloud.h¶
Overview¶
CompressedPointCloud provides lossy compression for point clouds using grid-based quantization. Reduces memory/storage for large 3D lidar scans.
Class: cartographer::sensor::CompressedPointCloud¶
Compression Algorithm¶
Quantize points to a 3D grid (configurable resolution)
Deduplicate points in same voxel
Encode as integer grid indices + residuals
Store as byte arrays
Construction¶
explicit CompressedPointCloud(const PointCloud& point_cloud,
float compression_ratio = 0.1f);
compression_ratio— Target size ratio (0.1 = 10% of original)
Decompression¶
PointCloud Decompress() const;
Returns approximate original point cloud.
Serialization¶
proto::CompressedPointCloud ToProto() const;
static CompressedPointCloud FromProto(const proto::CompressedPointCloud& proto);
Proto Format¶
message CompressedPointCloud {
int32 version = 1;
float resolution = 2;
repeated int32 cell_indices = 3; // Packed 3D indices
repeated float residuals = 4; // Quantization residuals
}
Usage¶
// Compress large point cloud
sensor::PointCloud large_cloud = lidar->GetScan();
sensor::CompressedPointCloud compressed(large_cloud, 0.1f);
// Store/transmit
auto proto = compressed.ToProto();
SaveToFile(proto);
// Decompress for processing
sensor::PointCloud decompressed = compressed.Decompress();
Configuration¶
Compression ratio tradeoffs:
0.05— High compression, more loss0.1— Balanced (default)0.2— Lower compression, higher fidelity
See Also¶
PointCloud — Uncompressed representation
RangeData — SLAM input format