xobx-cherif / car-smart-cam

An ADAS system that uses Jetson Nano as the hardware - Traffic sign detection - Forward collision warning - Lane departure warning.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Advanced driver-assistance system using Jetson Nano

An advanced driver-assistance system on Jetson Nano embedded computer with four main functions: forward collision warning, lane departure warning, traffic sign recognition and overspeed warning. This repository contains source code for Jetson Nano, not including the source code for model training and conversion.

Blog posts:

Update 21/12/2020: I created an image of my SD card here. You can flash and run this image on Jetson Nano.

For TensorRT 7 support: Currently, only TensorRT e and 6 are supported. TensorRT 7 has a lot of deprecated APIs and I think there is no way to run this project directly with that version. I don't have time to continue with this project soon, so I really need your contributions to extend this project further.

I. DEVELOPMENT ENVIRONMENT AND BUILD

Requirements:

  • CMake >= 3.10
  • Qt 5
  • OpenCV >= 4.0.1
  • C++ 17 compiler
  • CUDA 10.1
  • TensorRT 5.1.5-1+cuda10.1, or - TensorRT 6.0.1.8+10.2. This project should work with TensorRT 5 and TensorRT 6. TensorRT 7 is not supported for now.

Setup for Linux - Ubuntu 18.04

Setup

  • Install QT:
sudo apt-get install build-essential
sudo apt-get install qtcreator
sudo apt-get install qt5-default
sudo apt-get install qt5-doc
sudo apt-get install qt5-doc-html qtbase5-doc-html
sudo apt-get install qtbase5-examples
sudo /sbin/ldconfig -v
  • Install OpenCV
https://linuxize.com/post/how-to-install-opencv-on-ubuntu-18-04/
  • Install protobuf 3.6.1
https://github.com/protocolbuffers/protobuf

Models and test data

  • Download models and testing data here and put into root folder of this project.

Compile and Run

cd <project directory>
mkdir build
cd build
cmake -DCUDA_INCLUDE_DIRS=/usr/local/cuda-10.1/include ..
make
  • Run
./CarSmartCam

Known issues

Issue: cublas_v2.h not found

fatal error: cublas_v2.h: No such file or directory
 #include <cublas_v2.h>
          ^~~~~~~~~~~~~
compilation terminated.
  • Step 1: Find lib: find /usr/local/ -name cublas_v2.h.
  • Step 2: Export to path: export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/cuda-10.2/targets/x86_64-linux/include/.
  • Step 3: Use CMake and build.

Issue: /usr/bin/ld: cannot find -lcudart, /usr/bin/ld: cannot find -lcublas

sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so
sudo ln -s /usr/local/cuda/lib64/libcublas.so /usr/lib/libcublas.so

Note: The paths can be different on your computer.

Issue: Qt5Multimedia missing

Could not find a package configuration file provided by "Qt5Multimedia"
  with any of the following names:

    Qt5MultimediaConfig.cmake
    qt5multimedia-config.cmake

How to fix?

sudo apt-get install qttools5-dev-tools libqt5svg5-dev qtmultimedia5-dev

Issue: Need to specify CUDA root

[cmake] CMake Error at /usr/share/cmake-3.10/Modules/FindCUDA.cmake:682 (message):
[cmake]   Specify CUDA_TOOLKIT_ROOT_DIR

How to fix?

export CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2/

You should change the path corresponding to your environment.

II. REFERENCES:

About

An ADAS system that uses Jetson Nano as the hardware - Traffic sign detection - Forward collision warning - Lane departure warning.


Languages

Language:C++ 83.2%Language:Cuda 6.9%Language:Python 5.4%Language:CMake 2.2%Language:C 1.7%Language:SWIG 0.4%Language:Dockerfile 0.2%Language:Shell 0.1%