All Projects → TheCodez → dynamic-occupancy-grid-map

TheCodez / dynamic-occupancy-grid-map

Licence: MIT License
Implementation of A Random Finite Set Approach for Dynamic Occupancy Grid Maps with Real-Time Application

Programming Languages

C++
36643 projects - #6 most used programming language
Cuda
1817 projects
CMake
9771 projects
c
50402 projects - #5 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to dynamic-occupancy-grid-map

dreyeve
[TPAMI 2018] Predicting the Driver’s Focus of Attention: the DR(eye)VE Project. A deep neural network learnt to reproduce the human driver focus of attention (FoA) in a variety of real-world driving scenarios.
Stars: ✭ 88 (-1.12%)
Mutual labels:  autonomous-driving, adas
LaneandYolovehicle-DetectionLinux
Lane depertaure and Yolo objection detection C++ Linux
Stars: ✭ 16 (-82.02%)
Mutual labels:  cuda, adas
Autonomous-Parking-System
Automatic Parking is an autonomous car maneuvering system (part of ADAS) that moves a vehicle from a traffic lane into a parking spot to perform parallel parking. The automatic parking system aims to enhance the comfort and safety of driving in constrained environments where much attention and experience is required to steer the car. The parking…
Stars: ✭ 39 (-56.18%)
Mutual labels:  autonomous-driving, adas
copilot
Lane and obstacle detection for active assistance during driving. Uses windowed sweep for lane detection. Combination of object tracking and YOLO for obstacles. Determines lane change, relative velocity and time to collision
Stars: ✭ 95 (+6.74%)
Mutual labels:  autonomous-driving, adas
bazel.cmake
bazel.cmake mimics the behavior of bazel to simplify the usability of CMake
Stars: ✭ 38 (-57.3%)
Mutual labels:  cuda
Arch-Data-Science
Archlinux PKGBUILDs for Data Science, Machine Learning, Deep Learning, NLP and Computer Vision
Stars: ✭ 92 (+3.37%)
Mutual labels:  cuda
BtcDet
Behind the Curtain: Learning Occluded Shapes for 3D Object Detection
Stars: ✭ 104 (+16.85%)
Mutual labels:  autonomous-driving
neat
[ICCV'21] NEAT: Neural Attention Fields for End-to-End Autonomous Driving
Stars: ✭ 194 (+117.98%)
Mutual labels:  autonomous-driving
pyfilter
Particle filtering and sequential parameter inference in Python
Stars: ✭ 52 (-41.57%)
Mutual labels:  particle-filter
FLAMEGPU2
FLAME GPU 2 is a GPU accelerated agent based modelling framework for C++ and Python
Stars: ✭ 25 (-71.91%)
Mutual labels:  cuda
Jampack
Experimental parallel compression algorithm
Stars: ✭ 21 (-76.4%)
Mutual labels:  cuda
ClothTOP
GPU-accelerated Cloth TOP node for TouchDesigner using the NVIDIA Flex physics solver.
Stars: ✭ 33 (-62.92%)
Mutual labels:  cuda
Awesome-3D-Object-Detection-for-Autonomous-Driving
Papers on 3D Object Detection for Autonomous Driving
Stars: ✭ 52 (-41.57%)
Mutual labels:  autonomous-driving
Fat-Clouds
GPU Fluid Simulation with Volumetric Rendering
Stars: ✭ 81 (-8.99%)
Mutual labels:  cuda
warp
continuous energy monte carlo neutron transport in general geometries on GPUs
Stars: ✭ 27 (-69.66%)
Mutual labels:  cuda
cuda memtest
Fork of CUDA GPU memtest 👓
Stars: ✭ 68 (-23.6%)
Mutual labels:  cuda
l2r
Open-source reinforcement learning environment for autonomous racing.
Stars: ✭ 38 (-57.3%)
Mutual labels:  autonomous-driving
cuda-toolkit
GitHub Action to install CUDA
Stars: ✭ 34 (-61.8%)
Mutual labels:  cuda
SoliditySHA3Miner
All-in-one mixed multi-GPU (nVidia, AMD, Intel) & CPU miner solves proof of work to mine supported EIP918 tokens in a single instance (with API).
Stars: ✭ 28 (-68.54%)
Mutual labels:  cuda
nuplan-devkit
The devkit of the nuPlan dataset.
Stars: ✭ 107 (+20.22%)
Mutual labels:  autonomous-driving

A Random Finite Set Approach for Dynamic Occupancy Grid Maps with Real-Time Application

License: MIT alt text Build and test on Ubuntu 18.04 Super-Lint

Implementation of A Random Finite Set Approach for Dynamic Occupancy Grid Maps with Real-Time Application

Note

This repository is fast moving and we currently guarentee no backwards compatibility.

Performance

Particle count Birth particle count Grid cell count* Time GPU**
Ours 3 * 10⁵ 3 * 10⁴ 6.25 * 10⁴ 79 ms NVIDIA GTX 1050 Mobile
Nuss et al. 2 * 10⁶ 2 * 10⁵ 1.44 * 10⁶ 50 ms NVIDIA GTX 980

* increasing the grid cell count to 1.44 * 10⁶ increases the runtime by only ~20ms

** the NVIDIA GTX 980 is more than twice as fast as the NVIDIA GTX 1050 Mobile

Requirements and Setup

You need OpenCV, OpenGL, GLFW3, GLEW, GLM and CUDA to compile and run this project. You can find the setup instructions for Ubuntu (tested for 18.04 LTS and 20.04 LTS) and Windows 10 below.

Ubuntu
  • OpenCV:

    sudo apt install libopencv-dev
  • GLFW3, GLEW, GLM:

    sudo apt install libglfw3-dev libglew-dev libglm-dev
  • CUDA:

    • Have the most recent nvidia driver installed on your system, then check which CUDA version it supports

      nvidia-smi -q | grep CUDA
    • Follow the corresponding instructions from the cuda toolkit archive

    • Update environment variables in your bashrc (or equivalent rc file)

      echo "\n# CUDA paths\nexport PATH=$PATH:/usr/local/cuda/bin\nexport CUDADIR=/usr/local/cuda\nexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64\n" >> ~/.bashrc
    • Reboot (if necessary, a couple of times)

    • Check that your system GPU driver is still working by executing nvidia-smi

    • To verify that your CUDA installation is working, consider compiling and running one of the examples from /usr/local/cuda/samples. In particular ones that use OpenGL+CUDA, e.g. samples/2_Graphics/Mandelbrot.

Windows 10
  • OpenCV:

    • Download and install OpenCV Windows from here.
  • GLFW3, GLEW, GLM:

    • It is recommended to place all packages in a folder dogm/external

    • In the end you should have a folder structure that's something like this:

      • dogm/external/glew-2.1.0
      • dogm/external/glfw-3.3
      • dogm/external/glm
  • CUDA:

    • Have the most recent nvidia driver installed on your system, then check which CUDA version it supports
    • Follow the corresponding instructions from the cuda toolkit archive

How to build

Use CMake to build the project:

Ubuntu

Use the local pipeline to configure, build and execute the project:

./local_pipeline_ubuntu.sh

The pipeline creates folder build and compiles executables into that folder. Call the pipeline with -h to get an overview of optional flags.

Windows 10

On Windows it's easiest to use cmake-gui. Use it to configure and generate the project like shown below (required variables are marked with a red dot):

Afterwards open the generated .sln in Visual Studio 17/19 and compile it.

Contributing

Contributions are welcome. Please make sure to apply clang-format to your code, e.g. by letting local_pipeline_ubuntu.sh check and fix formatting for you. We also recommend to include formatting with clang-format in your editor/IDE.

References

Nuss et al. "A Random Finite Set Approach for Dynamic Occupancy Grid Maps with Real-Time Application"

Dominik Nuß. "A Random Finite Set Approach for Dynamic Occupancy Grid Maps"

Homm et al. "Efficient Occupancy Grid Computation on the GPU with Lidar and Radar for Road Boundary Detection"

mitkina/dogma has also been a great reference whenever I got stuck.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].