Repository navigation
EdgeFirst LiDAR Publisher v2.1.0
EdgeFirst LiDAR Publisher v2.1.0
Installation
Download Binaries
| Platform | Binary |
|---|---|
| Linux x86_64 | edgefirst-lidarpub-linux-x86_64 |
| Linux ARM64 | edgefirst-lidarpub-linux-aarch64 |
# Download and install (ARM64 example for Maivin/Raivin)
wget https://github.com/EdgeFirstAI/lidarpub/releases/download/v2.1.0/edgefirst-lidarpub-linux-aarch64
chmod +x edgefirst-lidarpub-linux-aarch64
sudo mv edgefirst-lidarpub-linux-aarch64 /usr/local/bin/edgefirst-lidarpubWhat's Changed
Added
- IMU-guided ground plane filter (
src/ground.rs): Region-wise PCA on a polar
grid (12 azimuth × 6 range sectors) detects and removes floor points before
clustering, preventing nearby objects from being merged via shared ground points.
Uses IMU accelerometer data (Robosense E1R built-in) to determine gravity vector
and compensate for sensor tilt. EMA smoothing for stable detection across frames. - Voxel connected-component clustering: Fast BFS over occupied voxels as an
alternative to point-level DBSCAN. ~5× faster on aarch64 (~13ms vs ~70ms for
E1R ~25k points) with coarser but adequate segmentation. - Bridge threshold for both DBSCAN and voxel clustering: Points/voxels with
fewer thanbridge_ptsneighbors are labeled as part of a cluster but do not
propagate expansion, preventing thin structures (railings, wires, ropes) from
merging separate objects. - Pipeline instrumentation: Per-stage timing with
std::time::Instant
accumulators (logged every 100 frames) andtracing::info_span!()wrappers
for Tracy profiler visualization. --clusteringalgorithm selection:""(disabled),"dbscan", or"voxel"--clustering-bridgeCLI argument for bridge threshold control--ground-filterflag to enable IMU-guided ground removal--ground-thicknessfor ground slab thickness (millimeters)--sensor-heightfor fixed sensor height override (skips PCA auto-detection)- Real-data PCD test files (
testdata/e1r_frame0.pcd,testdata/os1_frame0.pcd)
for ground filter and clustering integration tests - 7 ground filter unit tests (synthetic flat floor, tilted sensor, no IMU,
known height, wall rejection, reuse, real E1R data) - 16 clustering tests covering DBSCAN, voxel, real-data, and cross-algorithm
agreement
Changed
--clusteringchanged from boolean flag to string algorithm selector
("","dbscan","voxel") withPossibleValuesParservalidation- DBSCAN distance comparison changed from
<to<=to match standard
DBSCAN semantics (affects both scalar and NEON SIMD paths) - Cluster thread no longer catches panics silently; unrecoverable errors
terminate the process with a clear error message - Updated ARCHITECTURE.md with ground filter, clustering algorithms, and
pipeline instrumentation documentation - Updated README.md with user-level documentation for ground filter, clustering
options, bridge threshold, and troubleshooting - Updated TESTING.md with per-module test tables, manual test scenarios, and
on-target deployment instructions - Updated
lidarpub.defaultconfiguration template with all new parameters
Performance
- Ground filter: ~5-9ms on E1R ~25k points (aarch64 Cortex-A)
- Voxel clustering: ~13ms on E1R ~25k points (aarch64 Cortex-A)
- DBSCAN clustering: ~70ms on E1R ~25k points (aarch64 Cortex-A)
- Full pipeline (ground + voxel): ~29ms total, well within 100ms (10Hz) budget
Full Documentation: https://github.com/EdgeFirstAI/lidarpub#readme