Skip to content

OpenMP and CUDA implementations of lidar depth image renderer

Notifications You must be signed in to change notification settings

HenryZh47/lidar-depth-image-renderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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