Files
appRobotRender/setup/generateSets/README.docker.md
2026-06-02 17:16:24 +02:00

2.6 KiB

Docker — Phase 1

Zwei getrennte Images (siehe doc/docker_containerization_roadmap.md):

Image Dockerfile Zweck
approbot/blender-renderer:4.5 Dockerfile.renderer Blender 4.5 headless → erzeugt Test-Szenen (Bilder, npz, Ground-Truth)
approbot/pose-pipeline:latest Dockerfile.pipeline schlanke Pose-Schätzung (das eigentliche Produkt)

Beide teilen sich das data/-Volume: Der Renderer schreibt nach data/simulation/SceneX, die Pipeline liest von dort und schreibt nach data/evaluations/SceneX.

Bauen

cd setup/generateSets
docker compose build

Die Blender-Patch-Version steht in Dockerfile.renderer (ARG BLENDER_VERSION=4.5.0) — muss unter download.blender.org existieren; bei Bedarf anpassen:

docker compose build --build-arg BLENDER_VERSION=4.5.3 renderer

Rendern (Test-Daten erzeugen)

docker compose run --rm renderer --poses 8        # nur Pose 8
docker compose run --rm renderer                  # alle robot_test_poses

CPU-Rendering ist Default. Für GPU (Cycles, deutlich schneller): NVIDIA Container Toolkit installieren und den deploy:-Block in docker-compose.yml einkommentieren.

Pose-Pipeline ausführen

docker compose run --rm pipeline pipeline/run_pipeline.py data/simulation/Scene8
# -> data/evaluations/Scene8/robot_state.json

Benchmark gegen Ground-Truth

docker compose run --rm pipeline benchmark/run_benchmark.py --scenes 8
docker compose run --rm pipeline benchmark/eval_pose.py \
    data/evaluations/Scene8/robot_state.json data/simulation/Scene8/pose.json

Hinweise

  • cv2 im Renderer liegt in Blenders gebündeltem Python (nicht System-Python) — siehe Dockerfile.renderer. Das frühere Dockerfile mit pip3 install opencv-python installierte ins falsche Python und ist ersetzt.
  • robot.json wird beim Rendern mutiert (Kamera/Pose pro Bild). Für einen einzelnen sequentiellen Lauf ok; für parallele Render-Jobs muss das vorher auf eine temporäre Config pro Job umgestellt werden (Roadmap Phase 2/4, Schlüsselpunkt 3).
  • Code wird als Volume gemountet — Änderungen an Python-Scripten wirken ohne Rebuild. Nur bei geänderten Abhängigkeiten (requirements.pipeline.txt) oder Blender-Version neu bauen.

Portainer-Stack (optional)

create-portainer-stack.bat legt den Stack per Portainer-API an. In cmd.exe ausführen (dort ist curl = curl.exe). In PowerShell zum Testen curl.exe statt curl verwenden, da curl dort ein Alias für Invoke-WebRequest ist:

curl.exe -k -H "X-API-Key: <KEY>" https://localhost:9443/api/endpoints