Skip to content

Containerized development workflow for NorLab perception or control projects leveraging docker and nvidia-docker technology.

Notifications You must be signed in to change notification settings

norlab-ulaval/dockerized-norlab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation



Shows an the dark NorLab logo in light mode and light NorLab logo in dark mode.

Dockerized-NorLab

NorLab TeamCity GUI (VPN/intranet access)   •   norlabulaval (Docker Hub)   Jetson-Containers   •  

Containerized development workflow for NorLab perception or control projects
leveraging docker and nvidia-docker technology.


semantic-release: conventional commits GitHub release (with filter)


Maintainer Luc Coupal



Features

  • CUDA support via nvidia-docker
  • Multi architectures: l4t/arm64, linux/amd64
  • Multi OS versions:
    • Jetpack: r35.2.1, r35.4.1, r36.2.8 ...
    • Ubuntu: focal, jammy
  • Multi ros2 distros: foxy, humble ...
  • Multi ros2 packages: core, base, desktop
  • Multi packages (non-exhaustive list):
    • Numerical computing: numpy, numba, pycuda, tensorrt
    • Deep-learning: pytorch, torch2trt, tensordict
    • Vision: opencv, torchvision
    • NorLab perception stack: libpointmatcher[-ros], norlab-icp-mapper[-ros]
    • NorLab control stack: (in progress)
    • MLOps: ray, omegaconf, hydra-core, wandb
    • Deep-rl: stable-baseline3
    • Simulation: gym, f1tenth-gym

Why

  1. custom dependency management;
  2. development environment consistency;
  3. codebase stabilization trough continuous integration pipeline;
  4. easy deployment to robots compute box;
  5. results reproducibility.

Recommanded reading by Tobit Flatscher


Basic usage

Note: Dockerized-Norlab images are intended to be used as base images for Dockerized-NorLab-Project

  1. Pick an images that fit your project, the most basic one is dockerized-norlab-dependencies-full

  2. Pick the tag that fit your needs, e.g. DN-bleeding-foxy-base-l4t-pytorch-r35.4.1
    Notes: bleeding is for the DN dev branch, foxy is the ros version, base is the ROS package type, l4t-pytorch is the Jetson container pkg, r35.4.1 is the Jetpack version

  3. Pull the image from Dockerhub

    docker pull norlabulaval/dockerized-norlab-dependencies-full:DN-bleeding-foxy-base-l4t-pytorch-r35.4.1
  4. Pull the image from Dockerhub

     docker run -it --rm \
         --env ROS_DOMAIN_ID=1 --env DISPLAY="${DISPLAY}" --env QT_X11_NO_MITSHM=1 \
         --net host -p 2222:2222 -p 6006:6006 -p 7777:7777 \
         --privileged \
         -v /etc/localtime:/etc/localtime:ro -v /tmp/.X11-unix:/tmp/.X11-unix:rw -v /tmp/.docker.xauth:/tmp/.docker.xauth:rw \
         norlabulaval/dockerized-norlab-dependencies-full:DN-bleeding-foxy-base-l4t-pytorch-r35.4.1

    Note:

    • Add the --runtime nvidia flag if you have nvidia gpu and nvidia-docker is installed.
    • For MacOs user, replace the line --net host -p 2222:2222 -p 6006:6006 -p 7777:7777 with --net bridge.

Available images

Notes:

  • All images also have a tag pinned for each release version, starting from release v0.5.2, e.g. DN-v0.5.2-foxy-ros-core-l4t-r35.2.1.
  • Bleeding tags are build from the latest dev branch version (e.g. DN-bleeding-foxy-base-l4t-pytorch-r35.4.1) and are rebuild each week.
  • All images are multi-architecture build (amr64 and amd64).
  • Most have CUDA support via nvidia-docker base image, both for L4T (aka Jetson OS) and ubuntu.

Dockerized-Norlab Perception

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Dockerized-Norlab Control

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Dockerized-Norlab Dependencies

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Dockerized-VAUL Dependencies

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Base images

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Docker Image Version (tag) Docker Image Version (tag) Docker Image Version (tag)

Docker Image Version (tag)


Build matrix summary › [ Services ... ] x [ build tag ... ]


For developer and maintainer

Clone repository

 git clone --recurse-submodule https://github.com/norlab-ulaval/dockerized-norlab.git

Usage example

Assuming a docker builder with multi-architecture docker-container driver named local-builder-multiarch-virtual execute the following in repository root

export BUILDX_BUILDER=local-builder-multiarch-virtual \
  && export NBS_OVERRIDE_BUILD_MATRIX_MAIN=".env.build_matrix.main" \
  && export NBS_OVERRIDE_ADD_DOCKER_CMD_AND_FLAG="build --push" \
  && source dockerized-norlab-scripts/build_script/dn_build_all.bash

Note: To create a multi-architecture docker builder with architecture virtualization

docker buildx create \
    --name local-builder-multiarch-virtual \
    --driver docker-container \
    --node local \
    --platform linux/amd64,linux/arm64 \
    --bootstrap \
    --use

About

Containerized development workflow for NorLab perception or control projects leveraging docker and nvidia-docker technology.

Resources

Stars

Watchers

Forks

Packages

No packages published