HenryZh47 / lidar-depth-image-renderer

OpenMP and CUDA implementations of lidar depth image renderer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LiDAR Depth Image Renderer

The package projects one or more LiDAR point clouds in map frame to a camera, generating a depth image for the camera. Parallel versions are implemented in both OpenMP and CUDA.

This is a class project for 15-618 Parallel Computer Architecture and Programming, Spring 2020.

Demo Video:

Demo Video

Getting Started

Dependencies

  1. Ubuntu 18.04
  2. ROS Melodic Follow the installation guide here.
  3. OpenCV 3
  4. OpenMP
  5. CUDA 10

Building

  1. Install python-catkin-tools
  2. Create a ROS workspace and clone our package into src directory
  3. Build with catkin build

Benchmark

  1. Run ./benchmark.sh -b <your_dataset.bag> -t <play_duration> under scripts
  2. Example: ./benchmark.sh -b ~/Downloads/objdet_2019-08-17-16-37-39_3.bag -t 10
  3. It should automatically build and run tests for all three implementations
  4. Observe produced CSV logging files under current working directory
  5. Process and visualize raw results by running python3 visualize.py under scripts

Launching

We use ROS launch files to configure parameters and run executables.

  1. For sequential version, use launch file subt.launch
  2. For OpenMP version, use launch file subt_omp.launch
  3. For CUDA version, use launch file subt_cuda.launch

CUDA Version

GPU parallel version with CUDA.

  • To compile, checkout your GPU compute capability here, and add it to NVCC compile flags in CMakeList.

OpenMP Version

CPU parallel version using OpenMP multi-threading directives.

Results

We achieved on average 120.0x speed up using CUDA implementation. speed-up-comparison

Authors

About

OpenMP and CUDA implementations of lidar depth image renderer


Languages

Language:C++ 54.3%Language:CMake 15.9%Language:Cuda 12.7%Language:Python 12.6%Language:Shell 3.7%Language:C 0.8%