The Boxed Man Project
| src | ||
| .gitignore | ||
| main.py | ||
| README.md | ||
| requirements.txt | ||
BoxedMan 📦🚶♂️
En interaktiv visualisering og fysisk projektionsinstallation bygget i Python.
- Projektoren viser en ren hvid flade, hvor en rød autonom "Peg Man" bevæger sig rundt i sin kasse.
- Webkameraet overvåger projektionsfladen og detekterer fysiske skygger eller silhuetter (fx hænder, kroppe, papstykker).
- Skyggerne omsættes i realtid til faste 2D-kollisionsobjekter (solids), som Peg Man kan gå på, klatre op ad, hoppe ned fra og interagere med.
🛠️ Teknologistak
- Computer Vision: OpenCV (
cv2) – 4-punkts homografisk perspektivtransformation, adaptiv skyggeudtræk og polygonapproksimering. - Fysikmotor: Pymunk (Chipmunk 2D) – realtids segment/polygon kollisionshåndtering og raycasts.
- Grafik & Display: Pygame-ce – fuldskærms rendering på projektor.
🚀 Installation & Kørsel
1. Klargør miljø
# Opret og aktivér virtuelt miljø
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
# Installer afhængigheder
pip install -r requirements.txt
2. Kalibrering (Første gang)
Når du starter BoxedMan første gang med projektor og kamera sat op, åbnes kalibreringsvinduet automatisk.
Du kan også køre kalibreringen direkte når som helst:
python main.py --calibrate
- Klik på de 4 hjørner af den hvide projektionsflade i kamera-vinduet i rækkefølgen:
- Øverst-Venstre
- Øverst-Højre
- Nederst-Højre
- Nederst-Venstre
- Tryk på 'c' for at bekræfte og gemme kalibreringen.
- Tryk på 'r' for at nulstille punkterne hvis du klikkede forkert.
3. Normal kørsel
# Standard kørsel i vindue
python main.py
# Kør i fuldskærm på projektoren
python main.py --fullscreen
# Vælg et specifikt webkamera-indeks (hvis du har flere tilsluttet, fx 0, 1, 2)
python main.py --cam 1
4. Simulerings-tilstand (Uden webcam/projektor)
Hvis du vil teste fysik og Peg Mans adfærd direkte på din skærm:
python main.py --sim
- Venstreklik og træk musen: Tegn forhindringer/skygger.
- Højreklik: Ryd alle tegnede forhindringer.
⌨️ Genvejstaster under kørsel
| Tast | Funktion |
|---|---|
| b | Tag et nyt baseline baggrundsbillede (når skærmen er helt tom for skygger) |
| d | Slå Vision Debug Mask overlay til/fra |
| c | Start 4-punkts kalibrering igen |
| r | Nulstil Peg Mans position |
| ESC | Afslut programmet |
⚙️ Konfiguration
Indstillinger som f.eks. kameraopløsning, projektorstørrelse, tyngdekraft, ganghastighed og skyggefølsomhed kan justeres i src/config.py eller gemmes i config/settings.json.