Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
cad3261
safer scenario parsing
voshch Sep 7, 2026
fc72e33
fix rviz panel dropdowns
voshch Sep 7, 2026
327c674
arena_robots: format
voshch Sep 7, 2026
0af6f71
humansim: ci
voshch Sep 7, 2026
07bb607
fix node.py variable scope
voshch Sep 7, 2026
64caa04
ped yaw
voshch Sep 9, 2026
90cc707
cli update
voshch Sep 9, 2026
d5ad070
isaac: arena cam
voshch Sep 9, 2026
4f7795d
forward screenshots from isaac container
voshch Sep 9, 2026
7d14dcd
bump arena_isaac
voshch Sep 9, 2026
f076c49
xhost failure-tolerant for headless
voshch Sep 10, 2026
c2530f5
podman support
voshch Sep 10, 2026
6c05dd9
gz share ROS_DOMAIN_ID
voshch Sep 10, 2026
27ca6ae
podman support vol. 2
voshch Sep 10, 2026
596b53b
`arena feature` shows installed
voshch Sep 10, 2026
8f02d46
unified $ARENA_SCREENSHOTS_DIR
voshch Sep 10, 2026
e577945
cleanup
voshch Sep 10, 2026
e27ece1
isaac: viewport editable
voshch Sep 11, 2026
7674ea0
fix double odom pub
voshch Sep 11, 2026
4dc47ae
whitelist dockerignores
voshch Sep 11, 2026
d01f384
arena_cam: better keymap
voshch Sep 11, 2026
80a36c2
oops lol
voshch Sep 11, 2026
8ff37f0
rootless
voshch Sep 11, 2026
76d5cf9
arena_isaac: fix fix camera
voshch Sep 11, 2026
e65ec6e
safer docker
voshch Sep 11, 2026
5ea3795
bump arena_evaluation
voshch Sep 11, 2026
ec43eba
isaac: NO MORE LOCKSTEP DEADLOCKS
voshch Sep 12, 2026
fa5a645
docker-in-docker compose5 compat under podman
voshch Sep 12, 2026
8d654f4
pre-create gz image dir
voshch Sep 12, 2026
3126c6f
classic builder compat
voshch Sep 12, 2026
be0dd90
bump arena_evaluation
voshch Sep 12, 2026
de9ddf3
bump arena_evaluation
voshch Sep 12, 2026
0c9b999
dynamic docker socket detection
voshch Sep 13, 2026
5dda54b
bump humansim
voshch Sep 17, 2026
525832f
bump arena_models
voshch Sep 17, 2026
5aefee7
world semantic markers
voshch Sep 17, 2026
db4bee4
arena_isaac: expose isaac.viewport settings
voshch Sep 18, 2026
4f55682
publish robot base frame in descriptor
voshch Sep 18, 2026
9889583
record arena cam takes to video via ffmpeg
voshch Sep 18, 2026
ccbfd01
multi-cam recordings
voshch Sep 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
*
!pyproject.toml
!uv.lock
!_meta/docker/features/docker/entrypoint.sh
!arena_isaac/isaacsim_msgs
!utils/msgs/arena_people_msgs
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ A modular ROS 2 (Jazzy) platform for researching and benchmarking autonomous rob

## Installation

Prerequisites: [Docker](https://docs.docker.com/engine/install/) installation with [nvidia-container-toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) for GPU support. Current user must be in group `docker`.
Prerequisites: [Docker](https://docs.docker.com/engine/install/) installation with [nvidia-container-toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) for GPU support. Current user must be in group `docker`. Podman also works through the `podman-docker` alias package, with the API socket enabled (`systemctl --user enable --now podman.socket`).
Afterwards, run the following commands to install Arena:

### Basic Installation
Expand Down
20 changes: 16 additions & 4 deletions _meta/docker/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
x-podman:
in_pod: false

services:
arena:
image: "${ARENA_IMAGE}"
pull_policy: "never"
build:
context: .
dockerfile: src/Arena/_meta/docker/features/docker/Dockerfile
context: ${ARENA_WS_DIR}/src/Arena
dockerfile: _meta/docker/features/docker/Dockerfile
args:
- gid=${HOST_GID}
- uid=${HOST_UID}
devices:
- "/dev/snd:/dev/snd"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "${ARENA_DOCKER_SOCK:-/var/run/docker.sock}:/var/run/docker.sock"
- "/tmp/.X11-unix:/tmp/.X11-unix:rw"
- "/run/user/${HOST_UID}/pulse:/tmp/pulse"
- "shared:/tmp/shared"
Expand All @@ -24,6 +27,8 @@ services:
- "$HOST_ARENA_WS_DIR/.uv-cache:/opt/arena_ws/.uv-cache"
- "$HOST_ARENA_WS_DIR/.env:/opt/arena_ws/.env"
- "$HOST_ARENA_DATA_DIR:/opt/arena_ws/data"
- "$HOST_ARENA_SCREENSHOTS_DIR:/opt/arena_ws/screenshots"
- "$HOST_ARENA_SCREENSHOTS_DIR:/home/arena/.gz/gui/pictures"
environment:
- QT_X11_NO_MITSHM=1
- TMPDIR=/tmp/shared
Expand All @@ -37,21 +42,28 @@ services:
- ARENA_IMAGE_TAG
- ARENA_PROJECT_NAME
- ARENA_ROS_DISTRO
- ARENA_DOCKER_SOCK
- ARENA_USERNS_MODE
- HOST_UID
- HOST_GID
- HOST_ARENA_WS_DIR
- HOST_ARENA_DATA_DIR
- HOST_ARENA_SCREENSHOTS_DIR
- ARENA_DATA_DIR=/opt/arena_ws/data
- ARENA_SCREENSHOTS_DIR=/opt/arena_ws/screenshots
- ROSNAV_AGENTS_DIR=/opt/arena_ws/data/agents
- HF_HOME=/opt/arena_ws/data/hf
- LLM_API_ENDPOINT
- RMW_IMPLEMENTATION=rmw_fastrtps_cpp
- ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-1}
- GZ_PARTITION=arena-${ROS_DOMAIN_ID:-1}
- GZ_IP=127.0.0.1
- CYCLONEDDS_URI=file:///opt/arena_ws/src/Arena/_meta/docker/cyclonedds.${ARENA_NET:-local}.xml
- FASTRTPS_DEFAULT_PROFILES_FILE=/opt/arena_ws/src/Arena/_meta/docker/fastdds.${ARENA_NET:-local}.xml
env_file:
- .env
- ${ARENA_WS_DIR}/.env
user: "${HOST_UID}"
userns_mode: ${ARENA_USERNS_MODE:-}
group_add:
- sudo
- audio
Expand Down
15 changes: 10 additions & 5 deletions _meta/docker/features/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ARG ROS_DISTRO=jazzy
FROM osrf/ros:${ROS_DISTRO}-desktop AS base
FROM docker.io/osrf/ros:${ROS_DISTRO}-desktop AS base


RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
Expand Down Expand Up @@ -37,7 +37,7 @@ FROM base AS python_deps
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv

WORKDIR /build
COPY src/Arena/pyproject.toml uv.lock* ./
COPY pyproject.toml uv.lock* ./

RUN uv venv /opt/venv --system-site-packages

Expand Down Expand Up @@ -71,8 +71,9 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
&& rm -rf /var/lib/apt/lists/*

# install lightsfm
ADD https://github.com/robotics-upo/lightsfm.git /lightsfm
RUN cd /lightsfm && make && make install
RUN git clone --depth 1 https://github.com/robotics-upo/lightsfm.git /lightsfm \
&& make -C /lightsfm && make -C /lightsfm install \
&& rm -rf /lightsfm



Expand All @@ -94,8 +95,12 @@ RUN mkdir -p install
RUN mkdir -p log
RUN chown -R ${uid}:${gid} /opt/arena_ws

# gz cache mount points
RUN mkdir -p /home/${username}/.gz/gui/pictures /home/${username}/.gz/sim /home/${username}/.gz/rendering
RUN chown -R ${uid}:${gid} /home/${username}/.gz

COPY src/Arena/_meta/docker/features/docker/entrypoint.sh /entrypoint.sh

COPY _meta/docker/features/docker/entrypoint.sh /entrypoint.sh
RUN ln -fs src/Arena/_meta/docker/features/docker/source.container ./source

RUN chmod +x /entrypoint.sh
Expand Down
7 changes: 0 additions & 7 deletions _meta/docker/features/docker/Dockerfile.dockerignore

This file was deleted.

18 changes: 1 addition & 17 deletions _meta/docker/features/docker/source.container
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,12 @@ export ARENA_DIR="$ARENA_WS_DIR/src/Arena"
export ARENA_VENV_DIR="/opt/venv"
export ARENA_FEATURES_DIR="$ARENA_DIR/_meta/docker/features"

docker_env=""
docker_env="${docker_env} ARENA_PROJECT_NAME=$ARENA_PROJECT_NAME"
docker_env="${docker_env} ARENA_IMAGE=$ARENA_IMAGE"
docker_env="${docker_env} ARENA_IMAGE_TAG=$ARENA_IMAGE_TAG"
docker_env="${docker_env} ARENA_WS_DIR=$ARENA_WS_DIR"
docker_env="${docker_env} ARENA_ROS_DISTRO=$ARENA_ROS_DISTRO"
docker_env="${docker_env} HOST_UID=$HOST_UID"
docker_env="${docker_env} HOST_GID=$HOST_GID"
docker_env="${docker_env} HOST_ARENA_WS_DIR=$HOST_ARENA_WS_DIR"
docker_env="${docker_env} HOST_ARENA_DATA_DIR=$HOST_ARENA_DATA_DIR"
docker_env="${docker_env} ARENA_DATA_DIR=$ARENA_DATA_DIR"
docker_env="${docker_env} ROSNAV_AGENTS_DIR=$ROSNAV_AGENTS_DIR"


export docker_env

HOST_UID=$(id -u)
export HOST_UID
HOST_GID=$(id -g)
export HOST_GID

export arena_compose_sudo="sudo"
export arena_compose_sudo="sudo -E"
source "$ARENA_DIR/_meta/docker/lib"

source src/Arena/_meta/tools/source
6 changes: 3 additions & 3 deletions _meta/docker/features/isaac/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# --- Stage 1: Builder (Python 3.12 + ROS Jazzy) ---
# Isaac Sim 6.0 bundles Python 3.12, matching Jazzy's native interpreter, so the
# messages are built against the system python3 with no deadsnakes/venv detour.
FROM osrf/ros:jazzy-desktop AS builder
FROM docker.io/osrf/ros:jazzy-desktop AS builder

RUN apt-get update && apt-get install -y \
build-essential cmake git curl \
Expand All @@ -14,8 +14,8 @@ RUN python3 --version && \

WORKDIR /opt/msg_build

ADD src/Arena/arena_isaac/isaacsim_msgs src/isaacsim_msgs
ADD src/Arena/utils/msgs/arena_people_msgs src/arena_people_msgs
ADD arena_isaac/isaacsim_msgs src/isaacsim_msgs
ADD utils/msgs/arena_people_msgs src/arena_people_msgs

# Install build dependencies (Including NumPy for the C-extensions)
RUN . /opt/ros/jazzy/setup.sh && \
Expand Down
6 changes: 6 additions & 0 deletions _meta/docker/features/isaac/docker-compose.podman.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
services:
isaac:
devices:
- nvidia.com/gpu=all
security_opt:
- label=disable
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ services:
image: "arena_isaac:${ARENA_IMAGE_TAG}"
pull_policy: "never"
build:
context: .
dockerfile: src/Arena/_meta/docker/features/isaac/Dockerfile
context: ${ARENA_WS_DIR}/src/Arena
dockerfile: _meta/docker/features/isaac/Dockerfile
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "${ARENA_DOCKER_SOCK:-/var/run/docker.sock}:/var/run/docker.sock"
- "/tmp/.X11-unix:/tmp/.X11-unix:rw"
- "shared:/tmp/shared"
- "$HOST_ARENA_WS_DIR/src/Arena/.venv:/opt/venv"
Expand All @@ -16,6 +16,8 @@ services:
- "$HOST_ARENA_WS_DIR/log:/opt/arena_ws/log"
- "$HOST_ARENA_WS_DIR/.env:/opt/arena_ws/.env"
- "$HOST_ARENA_DATA_DIR:/opt/arena_ws/data"
- "$HOST_ARENA_SCREENSHOTS_DIR:/opt/arena_ws/screenshots"
- "$HOST_ARENA_SCREENSHOTS_DIR:/root/Documents/Kit/shared/screenshots"
environment:
- DISPLAY
- TMPDIR=/tmp/shared
Expand All @@ -28,15 +30,20 @@ services:
- ARENA_IMAGE_TAG
- ARENA_PROJECT_NAME
- ARENA_ROS_DISTRO
- ARENA_DOCKER_SOCK
- ARENA_USERNS_MODE
- HOST_UID
- HOST_ARENA_WS_DIR
- HOST_ARENA_DATA_DIR
- HOST_ARENA_SCREENSHOTS_DIR
- ARENA_DATA_DIR=/opt/arena_ws/data
- ARENA_SCREENSHOTS_DIR=/opt/arena_ws/screenshots
- HF_HOME=/opt/arena_ws/data/hf
- ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-1}
- LLM_API_ENDPOINT
env_file:
- .env
- ${ARENA_WS_DIR}/.env
userns_mode: ${ARENA_USERNS_MODE:-}
stdin_open: true
tty: true
network_mode: host
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
services:
vllm:
image: vllm/vllm-openai:latest
image: docker.io/vllm/vllm-openai:latest
network_mode: host
ipc: host
volumes:
Expand Down
Loading
Loading