Skip to content

Installation

Isarsoft Perception is compatible with two distinct platforms, the server and edge variants. The server platform refers to workstations and servers with dedicated NVIDIA GPUs, while the edge platform is compatible with NVIDIA Jetson devices. The initial setup for the two platforms differs slightly.

The deployment is fully containerised and orchestrated via Docker and Docker Compose. The full dependency and compatibility matrix can be found below.

Dependency Version
Operating System Ubuntu Server 22.04 LTS
GPU Driver 535.147.05
Docker 24.0.7
Compose v2.21.0

Info

Newer software versions for GPU Driver and Docker may be backwards compatible. Check the respective documentation to learn more.

Dependency Version
Operating System L4T 35.3.1
JetPack 5.1.1
Docker 24.0.7
Compose v2.21.0

Supported Jetson Devices

  • Jetson Orin AGX 64GB
  • Jetson Orin AGX 32GB
  • Jetson Orin NX 16GB
  • Jetson Xavier AGX

Setup

The following commands set up all dependencies for Isarsoft Perception.

# OS Updates
sudo apt update && sudo apt upgrade

# GPU Driver
sudo apt install nvidia-headless-535 nvidia-utils-535 libnvidia-decode-535 libnvidia-encode-535

# Docker + GPU runtime
curl https://get.docker.com | sh && sudo systemctl --now enable docker
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
    && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
    && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
        sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
        sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install nvidia-docker2

# Reboot
sudo reboot

Tip

We recommend to disable the unattended upgrades feature in Ubuntu to avoid automatically upgrading the dependencies by the following steps:

  • Execute the command:
    sudo dpkg-reconfigure unattended-upgrades
    
  • Select No in the pop-up window.
# OS Updates
sudo apt update && sudo apt upgrade

# Remove jetpack packages
sudo apt purge nvidia-jetpack
sudo apt autoremove

# Docker + GPU runtime
curl https://get.docker.com | sh && sudo systemctl --now enable docker
sudo apt install nvidia-container-runtime

# Reboot
sudo reboot

Docker Configuration

Add the properties default-runtime, log-opts and exec-opts to the docker deamon configuration:

/etc/docker/daemon.json
{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "default-runtime": "nvidia",
    "log-opts": {
        "max-size": "100m",
        "max-file": "3"
    },
    "exec-opts": ["native.cgroupdriver=cgroupfs"]
}

Warning

Disabling systemd cgroup management in Docker via the exec-opts property is the workaround for a known issue with nvidia-container-runtime resulting in loss of GPU access in containers.

Restart the docker deamon to apply new configuration:

sudo systemctl restart docker

Tip

To be able to run docker commands without sudo, add the user to the docker group:

sudo usermod -aG docker $USER

Log out and log back in so that your group membership is re-evaluated. Running groups should contain the docker group.

Tip

Changes can be verified by running docker info.

Deployment

There are two options for deploying Isarsoft Perception: via Deploy Token or Release Archive.

The Release Archive is a full copy of the software and is suitable for environments with restricted access to the internet. It contains everything to install and run the software in a single file archive. Updating the software involves copying another full sized archive of the most recent version.

Deployment via Deploy Token will fetch from a container and package registry automatically. This makes deployments more convenient and enables incremental updates, where only the most recent changes between releases are downloaded. It requires internet access or respective firewall exceptions and proxies for the registries.

Note

Many instructions in the documentation of Isarsoft Perception assume the top level project folder to be named perception. Docker Compose will use this name as the project prefix and e.g. containers and volumes will be named accordingly. It is recommended to use the same naming schema as in the following instructions.

# Create a project directory.
mkdir perception && cd perception

# Add valid user and token here
export USER=<username>
export TOKEN=<token>
export VERSION=3.11.3
export PLATFORM=server

# Fetch orchestration
curl --user "$USER:$TOKEN" "https://gitlab.com/api/v4/projects/13396821/packages/generic/perception/$VERSION-$PLATFORM/perception-$VERSION-$PLATFORM.tar.gz" | tar -xzvf -
# Fetch images
docker login -u $USER -p $TOKEN registry.gitlab.com
docker compose pull
# Verify images were downloaded
docker images
# Create a project directory.
mkdir perception && cd perception

# Add valid user and token here
export USER=<username>
export TOKEN=<token>
export VERSION=3.11.3
export PLATFORM=edge

# Fetch orchestration
curl --user "$USER:$TOKEN" "https://gitlab.com/api/v4/projects/13396821/packages/generic/perception/$VERSION-$PLATFORM/perception-$VERSION-$PLATFORM.tar.gz" | tar -xzvf -
# Fetch images
docker login -u $USER -p $TOKEN registry.gitlab.com
docker compose pull
# Verify images were downloaded
docker images

Option 2: Release Archive

# Create a project directory
mkdir perception && cd perception

# Move software archive to this location and unpack
mv /path/to/perception-3.11.3-server.tar.gz .
tar -xzvf perception-3.11.3-server.tar.gz

# Import all docker images
docker load -i images.tar.gz
# Verify images were loaded
docker images
# Create a project directory
mkdir perception && cd perception

# Move software archive to this location and unpack
mv /path/to/perception-3.11.3-edge.tar.gz .
tar -xzvf perception-3.11.3-edge.tar.gz

# Import all docker images
docker load -i images.tar.gz
# Verify images were loaded
docker images

Launch Software

Consider changing settings in the .env file. Launch the software:

docker compose up -d

Warning

Important: The first start will take up to 30 minutes while the device is running hardware specific optimizations. Frontend and API will be available right away, but none of the applications will run.

The frontend dashboard can now be accessed via https://[HOSTNAME/IP]:8443. Default login information is user systemadmin with password systemadmin.