- Hardware yang Dibutuhkan:
- Persyaratan Pemrograman:
- Menyiapkan Pemrosesan di Raspberry Pi:
- Diagram Sirkuit:
- Program Pelacakan Bola Raspberry Pi:
- Cara Kerja Robot Pelacak Bola Raspberry Pi:
Bidang Robotika, Kecerdasan Buatan, dan Pembelajaran Mesin berkembang pesat sehingga pasti akan mengubah gaya hidup umat manusia dalam waktu dekat. Robot dianggap memahami dan berinteraksi dengan dunia nyata melalui sensor dan pemrosesan pembelajaran mesin. Pengenalan gambar adalah salah satu cara populer di mana robot dianggap memahami objek dengan melihat dunia nyata melalui kamera seperti yang kita lakukan. Dalam proyek ini, gunakan kekuatan Raspberry Pi untuk membangun Robot yang dapat melacak bola dan mengikutinya seperti robot yang memainkan sepak bola.
OpenCV adalah alat yang sangat terkenal dan sumber terbuka yang digunakan untuk pemrosesan Gambar, tetapi dalam tutorial ini untuk menyederhanakannya kami menggunakan IDE Pemrosesan. Karena pemrosesan untuk ARM juga telah merilis pustaka GPIO untuk diproses, kami tidak perlu lagi beralih antara python dan pemrosesan untuk bekerja dengan Raspberry Pi. Kedengarannya keren bukan? Jadi mari kita mulai.
Hardware yang Dibutuhkan:
- Raspberry Pi
- Modul kamera dengan kabel pita
- Sasis Robot
- Gear motor dengan roda
- Pengemudi motor L293D
- Bank daya atau sumber daya portabel lainnya
Persyaratan Pemrograman:
- Monitor atau tampilan lain untuk Raspberry pi
- Papan kunci atau mouse untuk Pi
- Memproses perangkat lunak ARM
Catatan: Layar harus terhubung ke Pi melalui kabel selama pemrograman karena hanya dengan demikian video kamera dapat dilihat
Menyiapkan Pemrosesan di Raspberry Pi:
Seperti yang diceritakan sebelumnya, kami akan menggunakan lingkungan pemrosesan untuk Memprogram Raspberry Pi kami dan bukan cara default menggunakan python. Jadi, ikuti langkah-langkah di bawah ini:
Langkah 1: - Hubungkan Raspberry Pi Anda ke monitor, keyboard, dan mouse Anda, lalu hidupkan.
Langkah 2: - Pastikan Pi Anda terhubung ke koneksi internet aktif karena kami akan mengunduh beberapa hal.
Langkah 3: - Klik Processing ARM, untuk mendownload IDE pemrosesan untuk Raspberry Pi. Hasil download akan berupa file ZIP.
Langkah 4: - Setelah diunduh, ekstrak file di folder ZIP Anda di direktori pilihan Anda. Saya baru saja mengekstraknya di desktop saya.
Langkah 5: - Sekarang, buka folder yang diekstrak dan klik pada file bernama pemrosesan. Ini harus membuka jendela seperti yang ditunjukkan di bawah ini.
Langkah 6: - Ini adalah lingkungan tempat kita akan mengetik kode kita. Bagi orang-orang yang akrab dengan Arduino, jangan kaget YA IDE-nya memang terlihat mirip dengan Arduino dan begitu pula programnya.
Langkah 7: - Kami membutuhkan dua perpustakaan agar program mengikuti bola kami berfungsi, untuk menginstal lalu cukup klik Sketsa -> Impor Perpustakaan -> Tambah Perpustakaan . Kotak dialog berikut akan terbuka.
Langkah 8: - Gunakan kotak teks kiri atas untuk mencari Raspberry Pi dan tekan enter, hasil pencarian Anda akan terlihat seperti ini.
Langkah 9: - Cari perpustakaan bernama "GL Video" dan "Hardware I / O" dan klik instal untuk menginstalnya. Pastikan Anda menginstal kedua pustaka.
Langkah 10: - Berdasarkan internet Anda, penginstalan akan memakan waktu beberapa menit. Setelah selesai kami siap untuk memproses perangkat lunak.
Diagram Sirkuit:
Diagram rangkaian Proyek Pelacakan Bola Raspberry Pi ini ditunjukkan di bawah ini.
Seperti yang Anda lihat, rangkaian melibatkan kamera PI, modul Pengemudi Motor dan sepasang motor yang terhubung ke Raspberry pi. Sirkuit lengkap ditenagai oleh Mobile Power bank (diwakili oleh baterai AAA di sirkuit di atas).
Karena detail pin tidak disebutkan di Raspberry Pi, kita perlu memverifikasi pin menggunakan gambar di bawah ini
Untuk menggerakkan Motor, kita membutuhkan empat pin (A, B, A, B). Empat pin ini terhubung dari GPIO14,4,17 dan 18 masing-masing. Kabel oranye dan putih bersama-sama membentuk koneksi untuk satu motor. Jadi kami memiliki dua pasangan seperti itu untuk dua motor.
Motor tersebut dihubungkan ke modul Driver Motor L293D seperti yang ditunjukkan pada gambar dan modul driver tersebut ditenagai oleh power bank. Pastikan bahwa arde bank daya terhubung ke arde Raspberry Pi, baru kemudian koneksi Anda akan berfungsi.
Itu saja kita selesai dengan koneksi Hardware kita, mari kembali ke lingkungan pemrosesan kita dan mulai memprogram untuk mengajari robot kita cara melacak bola.
Program Pelacakan Bola Raspberry Pi:
Program Pemrosesan lengkap dari proyek ini diberikan di akhir halaman ini, yang langsung Anda gunakan. Lebih jauh tepat di bawah, saya telah menjelaskan cara kerja kode sehingga Anda dapat menggunakannya untuk proyek serupa lainnya.
The Konsep Program ini sangat sederhana. Meskipun tujuan dari proyek ini adalah untuk melacak bola, kami sebenarnya tidak akan melakukannya. Kami hanya akan mengidentifikasi bola menggunakan warnanya. Seperti yang kita semua tahu, video hanyalah bingkai gambar yang berkelanjutan. Jadi kami mengambil setiap gambar dan membaginya menjadi piksel. Kemudian kami membandingkan setiap warna piksel dengan warna bola; jika pertandingan ditemukan maka kita dapat mengatakan bahwa kita telah menemukan bola. Dengan informasi ini kita juga dapat mengidentifikasi posisi bola (warna piksel) di layar. Jika posisinya jauh kiri kita gerakkan robot ke kanan, jika posisinya jauh kanan kita pindahkan robot ke kiri sehingga posisi pixel selalu berada di tengah layar. Anda dapat menonton video Daniel shiffman di Computer Vision untuk mendapatkan gambaran yang jelas.
Seperti biasa, kami mulai dengan mengimpor dua pustaka yang kami unduh. Ini dapat dilakukan dengan dua baris berikut. Pustaka Perangkat Keras I / O digunakan untuk mengakses pin GPIO PI langsung dari lingkungan pemrosesan, pustaka glvideo digunakan untuk mengakses modul kamera Raspberry Pi.
import processing.io. *; import gohai.glvideo. *;
Di dalam fungsi pengaturan kami menginisialisasi pin output untuk mengontrol motor dan juga mendapatkan video dari kamera pi dan mengukurnya di jendela ukuran 320 * 240.
void setup () {size (320, 240, P2D); video = GLCapture baru (ini); video.start (); trackColor = warna (255, 0, 0); GPIO.pinMode (4, GPIO.OUTPUT); GPIO.pinMode (14, GPIO.OUTPUT); GPIO.pinMode (17, GPIO.OUTPUT); GPIO.pinMode (18, GPIO.OUTPUT); }
The kekosongan imbang adalah seperti infinite loop kode di dalam lingkaran ini akan mengeksekusi selama program ini dihentikan. Jika sumber kamera tersedia, kami membaca video yang keluar darinya
void draw () {background (0); jika (video.available ()) {video.read (); }}
Kemudian kami mulai membagi bingkai video menjadi piksel. Setiap piksel memiliki nilai merah, hijau dan biru. Nilai-nilai ini disimpan dalam variabel r1, g1 dan b1
untuk (int x = 0; x <video.width; x ++) {untuk (int y = 0; y <video.height; y ++) {int loc = x + y * video.width; // Apa warna warna saat ini currentColor = video.pixels; float r1 = merah (currentColor); float g1 = hijau (currentColor); float b1 = biru (currentColor);
Untuk mendeteksi warna bola pada awalnya, kita harus mengklik warnanya. Setelah diklik, warna bola akan disimpan dalam variabel yang disebut trackColour .
void mousePressed () {// Simpan warna di mana mouse diklik di variabel trackColor int loc = mouseX + mouseY * video.width; trackColor = video.pixels; }
Setelah kami memiliki warna trek dan warna saat ini, kami harus membandingkannya. Perbandingan ini menggunakan fungsi dist. Ia memeriksa seberapa dekat warna saat ini dengan warna trek.
float d = dist (r1, g1, b1, r2, g2, b2);
The nilai dist akan menjadi nol yang sama persis. Jadi, jika nilai dist kurang dari nilai yang ditentukan (Rekor dunia) maka kita asumsikan bahwa kita telah menemukan warna lintasannya. Kemudian kita mendapatkan lokasi dari piksel tersebut dan menyimpannya di variabel terdekat X dan terdekat Y untuk mencari lokasi bola
jika (d <worldRecord) {worldRecord = d; terdekatX = x; terdekatY = y; }
Kami juga menggambar elips di sekitar warna yang ditemukan untuk menunjukkan bahwa warna tersebut telah ditemukan. Nilai posisi juga dicetak di konsol, ini akan banyak membantu saat debugging.
if (worldRecord <10) {// Gambarlah lingkaran pada isi piksel yang dilacak (trackColor); strokeWeight (4.0); stroke (0); elips (terdekatX, terdekatY, 16, 16); println (terdekatX, terdekatY);
Akhirnya kita dapat membandingkan posisi X terdekat dan Y terdekat dan menyesuaikan motor sedemikian rupa sehingga warnanya sampai ke tengah layar. Kode di bawah ini digunakan untuk memutar robot ke kanan karena posisi X dari warna ditemukan di sebelah kiri layar (<140)
jika (terdekatX <140) {GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.LOW); penundaan (10); GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.HIGH); println ("Belok Kanan"); }
Demikian pula kita dapat memeriksa posisi X dan Y untuk mengontrol motor ke arah yang diperlukan. Seperti biasa, Anda dapat merujuk ke bagian bawah halaman untuk program lengkapnya.
Cara Kerja Robot Pelacak Bola Raspberry Pi:
Setelah Anda siap dengan perangkat keras dan program, inilah waktunya untuk bersenang-senang. Sebelum kami menguji bot kami di darat, kami harus memastikan semuanya berfungsi dengan baik. Hubungkan Pi Anda untuk memantau dan meluncurkan kode pemrosesan. Anda harus melihat umpan video di jendela kecil. Sekarang, bawa bola ke dalam bingkai dan klik pada bola untuk mengajari robot bahwa ia harus melacak warna khusus ini. Sekarang gerakkan bola di sekitar layar dan Anda akan melihat roda berputar.
Jika semuanya berfungsi seperti yang diharapkan, lepaskan bot di tanah dan mulai mainkan. Pastikan ruangan diterangi secara merata untuk hasil terbaik. Pekerjaan lengkap proyek ini ditunjukkan pada video di bawah ini. Harap Anda memahami proyek tersebut dan menikmati membangun sesuatu yang serupa. Jika Anda memiliki masalah, jangan ragu untuk mempostingnya di bagian komentar di bawah atau bantuan.