Sistem analisis gerakan Squat cerdas menggunakan Computer Vision (MediaPipe) dan Depth Sensor (OpenNI/Orbbec). Sistem ini mendeteksi postur tubuh, menghitung repetisi squat yang valid, dan memberikan feedback koreksi postur (anti-bungkuk & anti-cheat) secara real-time.
Sistem ini dirancang Modular dan Cross-Platform, sehingga dapat dikembangkan di Windows (Fitur Lengkap) maupun MacOS/Linux (Mode UI Development).
Pastikan struktur folder Anda terlihat seperti ini agar driver terbaca dengan benar:
Tubes_PCD_Squat/
│
├── drivers/ # [WINDOWS ONLY] Driver OpenNI2 & Konfigurasi Hardware
│ ├── OpenNI2.dll # Library utama OpenNI
│ ├── OpenNI.ini # Config file
│ └── OpenNI2/
│ └── Drivers/ # DLL Driver spesifik (Orbbec/PS1080)
│
├── core/ # [BRAIN] Logika Utama (Backend Logic)
│ ├── __init__.py
│ └── squat_logic.py # Class SquatAnalyzer (Matematika sudut, counter, logic)
│
├── main_desktop.py # Aplikasi Desktop (Full Feature: Depth + Suara + CV2 Window)
├── main_web.py # Aplikasi Web Dashboard (Streamlit UI - Cross Platform)
├── requirements.txt # Daftar library Python
└── README.md # Dokumentasi Project
- Python 3.8 - 3.10 (Disarankan 3.10).
- Hardware: Kamera Orbbec Astra Pro terhubung via USB.
- OS: Windows 10/11 (Wajib untuk fitur Suara & Depth).
- Python 3.9 - 3.11.
- Hardware: Webcam Laptop Standar (Fitur Depth akan otomatis non-aktif).
- OS: MacOS / Linux.
git clone <repository_url>
cd Tubes_PCD_Squat
Agar library tidak bentrok dengan project lain.
Windows:
python -m venv PCDvenv
.\PCDvenv\Scripts\activate
Mac / Linux:
python3 -m venv PCDvenv
source PCDvenv/bin/activate
A. Pengguna Windows (Luthfi): Install semua library termasuk driver suara dan OpenNI.
pip install -r requirements.txt
B. Pengguna Mac/Linux (Adrian & Fanza):
JANGAN jalankan requirements.txt penuh karena pywin32 dan openni akan error di Mac. Install manual saja:
pip install opencv-python-headless numpy mediapipe streamlit pyttsx3
Menjalankan aplikasi native dengan performa maksimal, fitur suara (Text-to-Speech), dan deteksi jarak (Depth).
python main_desktop.py
- Kontrol: Tekan
qpada window kamera untuk keluar. - Fitur: Depth Safety Check, Voice Feedback (Threaded), Anti-Crash.
Digunakan untuk pengembangan UI Dashboard dan Presentasi. Aman dijalankan di Mac (Mode RGB Only).
streamlit run main_web.py
- Akses: Buka browser di
http://localhost:8501 - Fitur Windows: Depth Sensor ON, Suara ON.
- Fitur Mac: Depth Sensor OFF (Disabled), Suara OFF (Silent Mode), tapi logika squat tetap jalan.
Ini adalah "Otak" matematika aplikasi. Berisi perhitungan sudut dan State Machine.
- Input: Landmarks MediaPipe.
- Output: Dictionary berisi
{reps, feedback, angle, color, voice_command}. - Catatan: File ini Platform Agnostic (Bisa jalan di mana saja). Jika ingin mengubah sensitivitas squat, ubah
SMOOTHING_FACTORatauHIP_DROP_THRESHOLDdi file ini.
Tim UI (Adrian & Fanza) fokus mengembangkan file ini.
- Gunakan variabel
datayang dikembalikan olehanalyzer.analyze()untuk menampilkan metrik. - Kalian bebas mempercantik tampilan Streamlit (CSS, Grafik, Layout).
- Jangan ubah folder
drivers/karena hanya bisa dites di Windows.
- Error
OpenNI2.dll not found(Windows):
- Pastikan folder
drivers/ada di root project dan strukturnya benar. - Pastikan Python architecture (64-bit) cocok dengan DLL.
- Error
ModuleNotFoundError: pywin32(Mac):
- Abaikan atau uninstall pywin32. Mac tidak butuh ini. Kode
main_web.pysudah otomatis mendeteksi OS dan mematikan fitur suara jika bukan Windows.
- Kamera Blank / Hitam / Error:
- Ubah index kamera di sidebar Streamlit (pilih 0, 1, atau 2).
- Di
main_desktop.py, ubah variabelWEBCAM_INDEX.
Tugas Besar Pengolahan Citra Digital (PCD)
- Logic & Hardware Integration: Luthfi Satrio Wicaksono
- UI/UX Dashboard: Adrian & Fanza