Sign inSign up

murauto/mur_dev_stack

By murauto

•Updated over 5 years ago

Development stack for MUR autonomous stack

Image
0

1.0K

murauto/mur_dev_stack repository overview

⁠MUR Docker

Repo for MUR auto's dev stack docker image, refer to the usage section if not trying to compile the docker image.

⁠Features

Base image: nvidia/cudagl:10.0-devel-ubuntu18.04

  • CUDA 10.0
  • OpenGL (glvnd 1.2)
  • cuDNN 7.6.5
  • TensorRT 7.0
  • ROS Melodic
  • Gazebo 9.15.0
  • CMake 3.18.2
  • OpenCV 4.1.1 (With CUDA/cuDNN)
    • Modify Installers/CMake/opencv_build.sh to change version/compile flags
  • Pylon 6.1.1
    • Coded as wget in Dockerfile.
  • tkDNN v0.5

⁠Build instructions

Retrive the missing binaries and place it in Installers as such,

Installers/
├─ OpenCV/
│  └─ opencv_build.sh
├─ tkDNN/
│  └─ install_tkDNN.sh
└─ readme.md

Run sudo make to build

⁠Modifying versions

The following docker build args⁠ are exposed with their default values,

ARG CUDA_VERSION=cuda10.0
ARG CUDNN_VERSION=7.6.5.32
ARG TENSORRT_VERSION=7.0.0

ARG CMAKE_VERSION=3.18.2

If the major versions of CUDA/cuDNN/TensorRT changes, it is not enough to simply change the corrosponding ARGs, but modification of the docker file is required, eg. upgrading Tensor RT from 7 to 8 requires libnvinfer7 -> libnvinfer8.

⁠Usage

The docker image is based off of Nvidia's cudagl images, development with CUDA will require an Nvidia GPU, the lastest GPU driver and the Nvidia docker toolkit⁠ on the host machine. Machines without an Nvidia GPU should still be able to run and develop non CUDA based code.

A compiled docker image is hosted on docker hub under murauto/mur_dev_stack⁠.

⁠Simplified Docker launcher script

Refer to https://github.com/MURDriverless/mur_docker_launcher⁠, for a simplified launcher script to automate launching of the docker images.

⁠Manual Method

First allow X clients from any hosts to connect with,

xhost +

This allows any one to connect your host machine's X11 server, technically a sercurity fault

Then launch the docker image with sudo ./run.sh

docker run --gpus all \
    -v /tmp/.X11-unix/:/tmp/.X11-unix/:ro \
    -e DISPLAY=$(echo $DISPLAY) \
    --device=/dev/bus \
    -it \
    murauto/mur_dev_stack
⁠Meaning of the flags
  • --gpus all enable pass through of all physical gpus
  • -v /tmp/.X11-unix/:/tmp/.X11-unix/:ro mount host's /tmp/.X11-unix/ to the image's /tmp/.X11-unix/ with read-only (:ro)
  • -e DISPLAY=$(echo $DISPLAY) export the DISPLAY env variable in the image to point to the host's display
  • --device=/dev/bus allows the container access to /dev/bus (USB/Serial device access)
  • -it Enable interactive terminal

⁠TODO

  • Integrate with Docker hub's CI?
  • Find a way to share compiled image (Docker HUB?)
    • Using Docker hub
  • Put OpenCV in (Test if opencv is installed properly)
    • Opencv Tested
    • Integrate into dockerfile?
  • Integrate tkdnn into dockerfile?
  • Split up Installers folder
  • Refer to Simplified launcher script⁠
    • Use XAuth alternative to xhost
    • VSCode integration tutorial
    • Exposing Ports and forwarding ros packets to remote machines
  • Missing Utilities
    • ifconfig
    • ping
    • vim
  • Install gtk and gtk3 module for lidar_dev sudo apt install libcanberra-gtk-module libcanberra-gtk3-module

Tag summary

Content type

Image

Digest

Size

4.5 GB

Last updated

almost 6 years ago

docker pull murauto/mur_dev_stack