Repositori ini berisi implementasi deteksi objek secara real-time disertai estimasi jarak (kedalaman/depth) objek menggunakan model YOLOv11 dan Kamera Depth Orbbec Astra melalui SDK OpenNI2.
Sistem ini mengambil aliran video warna (RGB) dan aliran kedalaman (depth map) secara bersamaan, melakukan penyelarasan (image registration), mendeteksi objek menggunakan YOLOv11 pada aliran warna, lalu mengambil nilai jarak fisik (dalam meter) pada titik tengah bounding box objek tersebut.
- Real-Time Object Detection: Menggunakan model YOLOv11 (nano) yang cepat dan akurat.
- Depth Alignment (Registrasi Citra): Menyelaraskan koordinat piksel antara kamera warna (RGB) dan sensor kedalaman sehingga data jarak sangat presisi dengan posisi objek di layar.
- Estimasi Jarak Objek: Mengukur jarak objek dari kamera dalam satuan meter secara langsung pada layar.
- Visualisasi Peta Kedalaman: Menampilkan peta kedalaman (depth map) dengan visualisasi warna (colormap Jet) untuk memudahkan analisis spasial.
├── astra-win32-driver-4.3.0.22/ # Folder berisi driver resmi sensor Astra untuk Windows
│ ├── SensorDriver_V4.3.0.22.exe # File instalasi driver
│ └── readme.txt # Petunjuk singkat instalasi driver
├── main.py # Program utama deteksi YOLOv11 & Kamera Depth
├── openini.py # Script pengujian koneksi & inisialisasi awal OpenNI2
├── yolo11n.pt # Pre-trained weights YOLOv11 Nano (default)
├── yolov8n.pt # Pre-trained weights YOLOv8 Nano (cadangan)
└── README.md # Dokumentasi proyek (file ini)
Sebelum menjalankan kode Python, Anda harus menginstal driver Orbbec Astra pada sistem Windows Anda:
- Masuk ke folder
astra-win32-driver-4.3.0.22. - Klik ganda pada file
SensorDriver_V4.3.0.22.exedan ikuti petunjuk instalasi hingga selesai. - Lepaskan (cabut) kabel kamera Astra dari USB, pasang kembali, lalu nyalakan ulang (reboot) komputer Anda.
Proyek ini membutuhkan Python 3.8 atau yang lebih baru. Anda dapat menginstal seluruh dependensi menggunakan file requirements.txt yang tersedia:
pip install -r requirements.txtNote
Pustaka openni di atas adalah wrapper Python untuk OpenNI2.
Sebelum menjalankan program deteksi lengkap, lakukan verifikasi koneksi kamera menggunakan script pengujian openini.py:
python openini.pyJika sukses, script akan mencetak informasi deteksi frame kedalaman di terminal Anda tanpa ada error.
Jalankan program utama untuk memulai deteksi objek dan pengukuran jarak secara real-time:
python main.py- Program akan memuat model
yolo11n.ptdan membuka dua jendela tampilan:- YOLOv11 Color Detection: Menampilkan aliran video warna dengan bounding box, label kelas objek, akurasi deteksi, dan jarak objek dalam meter (misal:
person (0.85): 1.25m). - Astra Depth Map: Menampilkan visualisasi sensor kedalaman dengan gradasi warna.
- YOLOv11 Color Detection: Menampilkan aliran video warna dengan bounding box, label kelas objek, akurasi deteksi, dan jarak objek dalam meter (misal:
- Tekan tombol
qpada keyboard Anda saat jendela gambar aktif untuk menghentikan program dan keluar secara aman.
- Inisialisasi OpenNI2 & Device: Membuka koneksi ke kamera Orbbec Astra yang terhubung.
-
Penyelarasan Aliran (Depth-to-Color Alignment): Menggunakan perintah
device.set_image_registration_mode(openni2.IMAGE_REGISTRATION_DEPTH_TO_COLOR)agar posisi koordinat X dan Y pada citra warna sejajar dengan citra kedalaman. -
Konversi Buffer:
- Bingkai warna dikonversi menjadi array NumPy 8-bit RGB dan diubah ke format BGR agar kompatibel dengan OpenCV.
- Bingkai kedalaman dikonversi menjadi array NumPy 16-bit untuk menyimpan resolusi kedalaman mentah (dalam milimeter).
- Inference YOLOv11: Mendeteksi objek pada bingkai warna dan mengambil koordinat bounding box-nya.
-
Perhitungan Jarak: Mengambil nilai kedalaman pada koordinat tengah kotak pembatas:
$$\text{center}_x = \frac{x_1 + x_2}{2}, \quad \text{center}_y = \frac{y_1 + y_2}{2}$$ Nilai kedalaman ini kemudian dikonversi dari milimeter ke meter dengan membaginya dengan 1000.
- Error:
OpenNI2.dll not foundatau kegagalan inisialisasi OpenNI Beberapa sistem Windows memerlukan pencantuman direktori redistributabel OpenNI2 secara manual. Anda dapat memodifikasi baris inisialisasi dimain.pydanopenini.pymenjadi:openni2.initialize("C:/Program Files/OpenNI2/Redist") # Sesuaikan dengan lokasi instalasi SDK OpenNI2 Anda
- Error:
DeviceOpenUsingModes: no devices foundPastikan kabel USB kamera Astra sudah terhubung dengan benar (disarankan menggunakan port USB 3.0) dan driver sensor telah diinstal dengan benar. Coba cabut dan colokkan kembali kamera ke port USB lain. - Model YOLO Terlalu Lambat
Secara default program ini berjalan di CPU menggunakan model Nano (
yolo11n.pt). Jika Anda memiliki GPU Nvidia dengan CUDA terkonfigurasi, PyTorch akan mendeteksi CUDA secara otomatis untuk performa yang lebih cepat.