Bagaimana Pustaka Open-Source Mempercepat Pengembangan Visi Robot
Artikel ini adalah bagian dari Proyek Khusus AspenCore tentang robot dengan bimbingan visi.
Sistem visi robot memerlukan berbagai macam kemampuan, namun ekosistem open-source menawarkan solusi untuk hampir setiap kebutuhan. Dari pengolahan citra dasar dan pengenalan objek hingga perencanaan gerakan canggih dan hindaran tabrakan, pengembang dapat memanfaatkan koleksi kaya pustaka. Di bawah ini kami menyoroti pustaka pengolahan citra open-source kunci yang memungkinkan aplikasi robotik canggih. (Catatan: laporan ini fokus pada algoritma citra dasar dan sengaja mengecualikan kerangka kerja visi yang didorong AI.)
Setiap diskusi tentang perangkat lunak visi robot harus mengakui pustaka OpenCV. OpenCV yang banyak digunakan dan kaya fitur menyediakan lebih dari 2.500 algoritma di seluruh modul seperti:
core – struktur data dan utilitas dasar yang dibagikan oleh semua modul;
imgproc – pemfilteran linier/non-linier, transformasi geometri, konversi ruang warna, analisis histogram, dan lainnya;
video – estimasi gerakan, pengurangan latar belakang, dan pelacakan objek;
calib3d – kalibrasi kamera, estimasi pose, dan algoritma geometri dasar;
features2d – detektor fitur, deskriptor, dan rutinitas pencocokan;
objdetect – deteksi kelas dan instance objek yang telah ditentukan.
Ditulis dalam C++, OpenCV menawarkan binding bahasa untuk C++, Python, Java, dan MATLAB, dan berjalan di Windows, Linux, Android, dan macOS. Ia juga mendukung himpunan instruksi SIMD dan menyediakan akselerasi GPU melalui CUDA (modul gpu) dan OpenCL (modul ocl). Rilis OpenCV 4.0 terbaru memperkenalkan peningkatan kinerja dan mengintegrasikan algoritma Kinect Fusion yang populer.
Sementara kedalaman OpenCV adalah kekuatan, ini juga dapat menimbulkan kurva pembelajaran yang curam bagi pengembang yang ingin prototipe cepat. Pustaka SimpleCV berbasis Python mengatasi kesenjangan ini. Dibangun di atas OpenCV, SimpleCV menawarkan API tingkat tinggi yang intuitif yang memungkinkan pengembang kurang berpengalaman untuk mengimplementasikan tugas machine vision umum dengan panggilan Python yang ringkas. Misalnya, pengambilan ambang citra dapat dilakukan dengan satu baris:
from SimpleCV import Image, Color, Display # Buat citra separuh-def separuh def halfsies(left, right): result = left crop = right.crop(right.width/2.0, 0, right.width/2.0, right.height) result = result.blit(crop, (left.width/2, 0)) return result # Muat citra img = Image('https://i.imgur.com/lfAeZ4n.png') # Binaris dengan ambang 90 dan balik hasil output = img.binarize(90).invert() # Buat citra samping-samping result = halfsies(img, output) # Tampilkan dan simpan result.show() result.save('juniperbinary.png')
Gambar 1. Hasil dari kode Python di atas (Sumber: SimpleCV)
Di luar manipulasi citra dasar, baik OpenCV maupun SimpleCV menyediakan algoritma canggih yang esensial untuk persepsi robotika, seperti pengenalan objek, penyelarasan, dan navigasi aman. Struktur data sentral dalam tugas ini adalah point cloud—representasi multidimensi dari objek yang ditangkap oleh kamera kedalaman. Point cloud memungkinkan operasi inti robotika seperti identifikasi, penyelarasan, dan pemasangan. Point Cloud Library (PCL) menyediakan algoritma untuk filtering, segmentasi, ekstraksi titik kunci, dan lainnya, menjadikannya tak tergantikan untuk persepsi 3D.
Gambar 2. Dataset point cloud untuk torus dasar. (Sumber: Wikimedia Commons/Kieff).