Real-time LiDAR point cloud detection system using NVIDIA's CUDA-PointPillars, optimized for autonomous vehicle applications.
- Ubuntu (20 and higher, other distros likely supported, just check nvidia's support matrix for container toolkit requirements)
- NVIDIA GPU with compute capability 5.2 or higher (Tesla M60 or RTX A5000 supported...email me if you need something else supported)
- NVIDIA Container Toolkit
- Docker and Docker Compose
- At least 8GB GPU memory recommended
- High-performance LiDAR point cloud detection (60-100 FPS target)
- CUDA-accelerated processing
- Containerized development environment
- TensorRT 8.6.3 optimization
- Support for both dev and prod environments
Built on NVIDIA's CUDA-PointPillars with the following optimizations:
- C++17 standard implementation
- CUDA architecture support for:
- Tesla M60 (sm_52)
- RTX A5000 (sm_86)
- TensorRT integration for inference acceleration
- WAY faster than python-based implementations
-
Either use the script in "Fresh install scripts" or install manually from below (still check the script for the list of requirements, as it can change and installdeps.sh has the latest list)
-
Install NVIDIA Container Toolkit (this can get tricky sometimes):
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit
-
Clone repository:
git clone https://github.com/hernantech/lidar0 cd ecocar-y3-lidar -
Build the container:
docker compose build
-
Start development environment:
docker compose run --rm pointpillars bash
- Write code in the
./srcdirectory - Build changes:
docker compose build
- Run tests:
docker compose run --rm pointpillars ./tests/run_tests.sh
The project uses a multi-stage build process:
- Base image:
nvcr.io/nvidia/tensorrt:24.03-py3- the
py3-igpuversion is for jetsons and includes a lot of unnecessary BS for the AUTERA
- the
- Development dependencies included in builder stage (I should probably point it to my fork... I'll do that later)
- Runtime image optimized for deployment
- Automatic GPU detection and utilization
- Shared volume mounting for data processing
- (optionally, we can route pcaps to udp outside of the container and then use shell scripts to eat/process the udp packets within the container)
- Place input data in the
./datadirectory - Data directory is mounted to
/workspace/datain the container - Data directory is git-ignored to prevent large files in the repo
- Target performance: 60-100 FPS
- Optimized CUDA flags for both debug and release builds
- Memory limits configured in Docker Compose
- GPU memory management optimized through TensorRT
- Test suite available in
./tests - Run tests through Docker Compose to ensure consistent environment
- Automated testing environment matches production configuration
- Production-ready container available after build
- Supports deployment to Autera system
- Runtime container includes only necessary artifacts
- Optimized for minimal image size and maximum performance
- Fork the repository
- Create a feature branch
username/feature_name - Make changes in
./src - Run tests to verify changes
- Submit pull request