The Boxed Man Project
Find a file
2026-10-18 15:08:04 +02:00
src Initial commit: BoxedMan core architecture with vision, calibration, physics, and autonomous pegman 2026-10-18 15:08:04 +02:00
.gitignore Initial commit: BoxedMan core architecture with vision, calibration, physics, and autonomous pegman 2026-10-18 15:08:04 +02:00
main.py Initial commit: BoxedMan core architecture with vision, calibration, physics, and autonomous pegman 2026-10-18 15:08:04 +02:00
README.md Initial commit: BoxedMan core architecture with vision, calibration, physics, and autonomous pegman 2026-10-18 15:08:04 +02:00
requirements.txt Initial commit: BoxedMan core architecture with vision, calibration, physics, and autonomous pegman 2026-10-18 15:08:04 +02:00

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:
    1. Øverst-Venstre
    2. Øverst-Højre
    3. Nederst-Højre
    4. 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.