70 lines
2.6 KiB
Markdown
70 lines
2.6 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
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:
|
|
```bash
|
|
docker compose build --build-arg BLENDER_VERSION=4.5.3 renderer
|
|
```
|
|
|
|
## Rendern (Test-Daten erzeugen)
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
docker compose run --rm pipeline pipeline/run_pipeline.py data/simulation/Scene8
|
|
# -> data/evaluations/Scene8/robot_state.json
|
|
```
|
|
|
|
## Benchmark gegen Ground-Truth
|
|
|
|
```bash
|
|
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:
|
|
|
|
```powershell
|
|
curl.exe -k -H "X-API-Key: <KEY>" https://localhost:9443/api/endpoints
|
|
```
|