Sign inSign up

cogrobot/robo720

By cogrobot

•Updated 30 days ago

Docker Image to be used for ROBO.720 Advanced Robotics course hosted by Tampere University

Image
0

108

cogrobot/robo720 repository overview

⁠ROBO.720 Advanced Robotics

⁠What is this?

This is the official Docker image for the ROBO.720 Advanced Robotics course. It contains a fully configured environment including ROS 2 Humble, Gazebo, RViz, and all necessary dependencies required to complete the course exercises.

⁠Supported Tags

  • humble: Base image containing ROS 2 Humble and course dependencies.
  • latest: Most recent image containing ROS 2 and course dependencies.
  • humble-webrtc-intel: Humble image with a web GUI and Intel GPU acceleration along with ROS 2 and course dependencies.

⁠Quick Reference / Setup Guide

Important - There are FOUR options available. Choose one that is suitable for your machine. Sub-Option D2 is a fallback to work on most machines but without GPU acceleration that means your CPU will to all the Graphics heavy-lifting.

To use this image, you will need to map a local directory to the container so that your workspace files persist between runs.

⁠1. Setup the Local Workspace Volume

Create a directory on your host machine and a Docker volume:

mkdir -p ~/Docker_appdata/ROBO720/home/student/

docker volume create --driver local --opt type=none --opt device=$HOME/Docker_appdata/ROBO720/home/student/ --opt o=bind ROBO720_data
⁠2. Run the Container

Select the command based on your hardware configuration. Options A, B, and C map local X11 and PulseAudio sockets for native Linux GUI applications. Option D runs a lightweight browser-accessible stream.

Option A: Standard / iGPU (Intel / AMD)

docker run -it \
  --name advanced_robotics \
  --network host \
  --user student \
  --workdir /home/student/ros2_ws/ \
  --device /dev/snd \
  --device /dev/dri:/dev/dri \
  -e DISPLAY=$DISPLAY \
  -e SHELL=/bin/bash \
  -e QT_X11_NO_MITSHM=1 \
  -e IGN_IP=127.0.0.1 \
  -e PULSE_SERVER=unix:${XDG_RUNTIME_DIR}/pulse/native \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ${XDG_RUNTIME_DIR}/pulse:${XDG_RUNTIME_DIR}/pulse \
  -v ~/.config/pulse/cookie:/home/student/.config/pulse/cookie \
  -v ROBO720_data:/home/student/ \
  cogrobot/robo720:humble

Option B: Nvidia dGPU (Requires Nvidia Container Toolkit)

  • Install nvidia container toolkit:
sudo apt-get install -y nvidia-container-toolkit
  • Configure Your Docker Engine Runtime:
sudo nvidia-ctk runtime configure --runtime=docker
  • Restart the Daemon to Load the Pipeline:
sudo systemctl restart docker
  • Verify by running:
docker run --rm --gpus all ubuntu nvidia-smi
docker run -it \
  --name advanced_robotics \
  --network host \
  --user student \
  --workdir /home/student/ros2_ws/ \
  --runtime nvidia \
  --gpus all \
  --device /dev/snd \
  --device /dev/dri:/dev/dri \
  -e DISPLAY=$DISPLAY \
  -e SHELL=/bin/bash \
  -e QT_X11_NO_MITSHM=1 \
  -e IGN_IP=127.0.0.1 \
  -e PULSE_SERVER=unix:${XDG_RUNTIME_DIR}/pulse/native \
  -e NVIDIA_DRIVER_CAPABILITIES=all \
  -e NVIDIA_VISIBLE_DEVICES=all \
  -e __NV_PRIME_RENDER_OFFLOAD=1 \
  -e __GLX_VENDOR_LIBRARY_NAME=nvidia \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ${XDG_RUNTIME_DIR}/pulse:${XDG_RUNTIME_DIR}/pulse \
  -v ~/.config/pulse/cookie:/home/student/.config/pulse/cookie \
  -v ROBO720_data:/home/student/ \
  cogrobot/robo720:humble

Option C: Mac Users (Apple Silicon - Experimental) Requires XQuartz installed on the host and network connections enabled in XQuartz settings. Run xhost +localhost on your Mac terminal before launching.

Macs do not have a built-in X11 display server. You must install XQuartz:

  1. Install from the official site or run brew install xquartz.
  2. Open XQuartz -> Settings -> Security -> Check "Allow connections from network clients".
  3. Restart your Mac.
  4. Important: Every time you boot up and want to use the container, authorize Docker to stream windows by running: xhost +localhost (or xhost + if localhost fails).
docker run -it \
  --name advanced_robotics \
  -p 11345:11345 \
  --user student \
  --workdir /home/student/ros2_ws/ \
  -e DISPLAY=host.docker.internal:0 \
  -e SHELL=/bin/bash \
  -e QT_X11_NO_MITSHM=1 \
  -e IGN_IP=127.0.0.1 \
  -v ROBO720_data:/home/student/ \
  cogrobot/robo720:humble

Mac Limitations: CPU-based software rendering means Gazebo/RViz will be laggy. There is no sound mapping. Network is isolated, requiring additional -p flags for physical hardware connections.

Option D: Web-Based GUI via WebRTC (Easy Access / No X11 Needed) This deployment is developed with the help of Selkies Open-Source Project⁠ to stream the fully-accelerated container desktop straight to your web browser. Use this option if you don't want to set up local X11 servers, are using an isolated system, or want an effortless remote setup.

Choose your execution command based on your machine's graphics support:

Sub-Option D1: Intel Hardware Encoding (Intel GPU Acceleration)

docker run -d --name advanced_robotics_webRTC \
  --device /dev/dri/renderD128 \
  --device /dev/dri/card1 \
  --group-add audio \
  --group-add 992 \
  --group-add 44 \
  --user student \
  --workdir /home/student/ros2_ws/ \
  -p 8080:8080 \
  -e IGN_IP=127.0.0.1 \
  -e DISPLAY=:99 \
  -e RESOLUTION=1920x1080x24 \
  -e SELKIES_PORT=8080 \
  -e SELKIES_USER=student \
  -e SELKIES_PASSWD=123 \
  -e SELKIES_ENCODER=vah264enc \
  -e LIBVA_DRIVER_NAME=iHD \
  -v ROBO720_data:/home/student/ \
  cogrobot/robo720:humble-webrtc-intel

*Note: You may need to change --device /dev/dri/renderD128 \ --device /dev/dri/card1 \ according to your system. You can identify it by running

ls -l /dev/dri/by-path/

This will show you all available nodes, something like this:

total 0
lrwxrwxrwx 1 root root  8 Aug 28 19:47 pci-0000:00:02.0-card -> ../card1
lrwxrwxrwx 1 root root 13 Aug 28 19:47 pci-0000:00:02.0-render -> ../renderD128
lrwxrwxrwx 1 root root  8 Aug 28 19:47 pci-0000:01:00.0-card -> ../card0
lrwxrwxrwx 1 root root 13 Aug 28 19:47 pci-0000:01:00.0-render -> ../renderD129

Select the correct matching pair (pci-0000:02:00.0 or pci-0000:01:00.0) and use that.

Sub-Option D2: Software Encoding (Compatibility Mode)

docker run -d --name advanced_robotics_webRTC_Soft \
  --group-add audio \
  --group-add 44 \
  --user student \
  --workdir /home/student/ros2_ws/ \
  -p 8080:8080 \
  -e IGN_IP=127.0.0.1 \
  -e DISPLAY=:99 \
  -e RESOLUTION=1920x1080x24 \
  -e SELKIES_PORT=8080 \
  -e SELKIES_USER=student \
  -e SELKIES_PASSWD=123 \
  -e SELKIES_ENCODER=x264enc \
  -v ROBO720_data:/home/student/ \
  cogrobot/robo720:humble-webrtc-intel

After getting the container to run, You can access the WebGUI by using the following credentials.

You can run apps and tools in accelerated environment by adding tag gpu infront of your command. For example, inside container terminal, run Gazebo ignition with gpu by following:

gpu ign gazebo

For Software encoded version, you can run commands as usual, though running with gpu tag won't create error since it detects automatically.


⁠3. Re-entering the Container

You only need to run the docker run command once. To return to your workspace later (applies to Options A, B, and C):

# Start the stopped container
docker start advanced_robotics

# Open an interactive terminal
docker exec -it advanced_robotics bash

(For Option D, simply re-run your browser instance or use docker start advanced_robotics_webRTC / advanced_robotics_webRTC_Soft if the container was stopped).

⁠4. Code & Workflow

Any new workspaces, files, or source code you place inside ~/Docker_appdata/ROBO720/home/student/ on your host machine will instantly be available inside the container at /home/student/. You can edit your code in VS Code locally while compiling/running it through the Docker container terminal.

Go to ~/Docker_appdata/ROBO720/home/student/ros2_ws/ on host and clone course repo:

cd ~/Docker_appdata/ROBO720/home/student/ros2_ws/
git clone https://github.com/tau-alma/robo720_2026.git
⁠5. Follow rest of the steps from course Git and start working.

https://github.com/tau-alma/robo720_2026⁠

Tag summary

Content type

Image

Digest

sha256:2dd804c70…

Size

1.5 GB

Last updated

about 1 month ago

docker pull cogrobot/robo720