Daftar Isi:

Robot Pelacakan Bola: 8 Langkah
Robot Pelacakan Bola: 8 Langkah

Video: Robot Pelacakan Bola: 8 Langkah

Video: Robot Pelacakan Bola: 8 Langkah
Video: The Revenge: Timo Boll vs. KUKA Robot 2024, November
Anonim
Robot Pelacakan Bola
Robot Pelacakan Bola
Robot Pelacakan Bola
Robot Pelacakan Bola
Robot Pelacakan Bola
Robot Pelacakan Bola

Nah kali ini saya akan memberi tahu cara membuat robot pelacak bola yaitu robot yang akan mengidentifikasi bola dan mengikutinya. Ini pada dasarnya adalah teknik pengawasan otomatis yang dapat digunakan di dunia modern. Jadi, mari kita masuk dan mulai membangun…

CATATAN: Ini bagian tugas yang diserahkan ke Deakin University, School of IT, SIT-210 Embedded Systems Development

Perlengkapan

www.hackster.io/junejarohan/ball-tracking-robot-7a9865

Langkah 1: Pendahuluan

pengantar
pengantar

Pengawasan hari ini memberikan kelemahan utama yang bertumpu pada keterlibatan manusia yang seperti kita semua tahu dapat dengan mudah terganggu, jadi sangat penting bagi kami untuk menemukan sistem yang dapat memantau daerah secara mandiri dan terus menerus. Dan juga kami ingin mengidentifikasi hal-hal dan bahaya yang menjengkelkan atau tidak diinginkan sambil secara bersamaan membuat keputusan dan meresponsnya dengan tepat. Jadi pelacakan objek dengan menggunakan sistem cerdas dan komputer sangat penting dan krusial untuk mencapai pengawasan otomatis.

Setiap sistem pengawasan luar ruangan harus dapat melacak objek yang bergerak di bidang pandangnya, mengklasifikasikan objek ini dan mendeteksi beberapa aktivitasnya. Saya telah mengembangkan metode untuk melacak dan mengklasifikasikan objek-objek ini dalam skenario yang realistis. Pelacakan objek dalam satu kamera dilakukan menggunakan pengurangan latar belakang, diikuti dengan korespondensi wilayah. Ini memperhitungkan beberapa isyarat termasuk kecepatan, ukuran dan jarak kotak pembatas.

Langkah 2: Bahan dan Perangkat Lunak yang Digunakan dalam Proyek Ini

Bahan dan Perangkat Lunak yang Digunakan dalam Proyek Ini
Bahan dan Perangkat Lunak yang Digunakan dalam Proyek Ini
Bahan dan Perangkat Lunak yang Digunakan dalam Proyek Ini
Bahan dan Perangkat Lunak yang Digunakan dalam Proyek Ini
Bahan dan Perangkat Lunak yang Digunakan dalam Proyek Ini
Bahan dan Perangkat Lunak yang Digunakan dalam Proyek Ini

Komponen Perangkat Keras yang Digunakan:

  • Raspberry Pi (x1)
  • Modul Kamera Raspberry Pi (x1)
  • Sensor Ultrasonik (x3)
  • Driver motor SparkFun Dual H-Bridge L298 (x1)
  • Motor DC (x1)
  • Papan tempat memotong roti (x1)
  • Menghubungkan Kabel

Perangkat Lunak yang Digunakan:

OpenCV

Perkakas:

Python

Langkah 3: Apa yang Harus Dilakukan?

Setiap sistem pengawasan luar ruangan harus dapat melacak objek yang bergerak di bidang pandangnya, mengklasifikasikan objek ini dan mendeteksi beberapa aktivitasnya. Saya telah mengembangkan metode untuk melacak dan mengklasifikasikan objek-objek ini dalam skenario yang realistis. Pelacakan objek dalam satu kamera dilakukan menggunakan pengurangan latar belakang, diikuti dengan korespondensi wilayah. Ini memperhitungkan beberapa isyarat termasuk kecepatan, ukuran dan jarak kotak pembatas.

Hal penting saat mendeteksi gambar frame demi frame adalah untuk menghindari frame drop karena bot bisa masuk ke keadaan limbo jika bot gagal memperhatikan arah pergerakan bola karena frame drop. Jika bola keluar dari jangkauan kamera, itu akan masuk ke apa yang kita sebut keadaan limbo, dalam hal ini, bot membuat putaran 360 derajat untuk melihat ruang di sekitarnya sampai bola kembali ke bingkai. kamera dan kemudian mulai bergerak ke arahnya.

Untuk analisis gambar, saya mengambil setiap frame dan kemudian menutupinya dengan warna yang dibutuhkan. Kemudian saya menemukan semua kontur dan menemukan yang terbesar di antara mereka dan mengikatnya dalam persegi panjang. Dan tunjukkan persegi panjang pada gambar utama dan temukan koordinat pusat persegi panjang.

Akhirnya, bot mencoba membawa koordinat bola ke pusat sumbu koordinatnya. Beginilah cara robot bekerja. Ini dapat ditingkatkan lebih lanjut dengan menggunakan perangkat IoT seperti partikel foton yang dapat memberi tahu Anda ketika ada sesuatu yang terdeteksi dan bahwa robot mengikutinya atau ketika robot kehilangan jejaknya dan sekarang kembali ke pangkalan..

Untuk keperluan pemrosesan gambar, Anda perlu menginstal perangkat lunak OpenCV pada raspberry pi Anda yang cukup rumit bagi saya.

Anda bisa mendapatkan informasi yang diperlukan untuk menginstal OpenCV melalui tautan ini: klik di sini

Langkah 4: Skema

Image
Image
skema
skema
skema
skema

Di atas saya telah memberikan skema untuk proyek saya dan bersama dengan itu adalah Printed Circuit Board (PCB).

Dan berikut adalah beberapa koneksi utama yang perlu Anda lakukan:

• Pertama-tama modul Kamera Raspberry Pi terhubung langsung ke Raspberry Pi.

• Sensor ultrasonik VCC terhubung ke terminal umum yang sama dengan GND (ground) dan sisa dua port sensor ultrasonik terhubung ke pin GPIO pada Raspberry Pi.

• Motor terhubung menggunakan H-Bridge.

• Daya disuplai menggunakan Baterai.

Saya juga telah menambahkan video yang mungkin dapat membantu pemahaman cara kerja sensor ultrasonik dan cara kerjanya.

dan juga Anda dapat mengikuti tautan ini jika Anda tidak dapat menemukan video di atas.

Langkah 5: Bagaimana Melakukannya?

Saya membuat proyek ini menggambarkan robot dasar yang dapat melacak bola. Robot menggunakan kamera untuk melakukan pemrosesan gambar dengan mengambil bingkai dan melacak bola. Untuk melacak bola berbagai fitur seperti warna, ukuran, bentuk digunakan.

Robot menemukan warna hardcode dan kemudian mencari bola warna itu dan mengikutinya. Saya telah memilih Raspberry Pi sebagai mikrokontroler dalam proyek ini karena memungkinkan kita untuk menggunakan modul kamera dan memberikan fleksibilitas yang besar dalam kode karena menggunakan bahasa python yang sangat user friendly dan juga memungkinkan kita menggunakan perpustakaan OpenCV untuk menganalisis gambar.

Sebuah H-Bridge telah digunakan untuk mengubah arah putaran motor atau untuk menghentikannya.

Untuk analisis gambar, saya mengambil setiap frame dan kemudian menutupinya dengan warna yang dibutuhkan. Kemudian saya menemukan semua kontur dan menemukan yang terbesar di antara mereka dan mengikatnya dalam persegi panjang. Dan tunjukkan persegi panjang pada gambar utama dan temukan koordinat pusat persegi panjang.

Akhirnya, bot mencoba membawa koordinat bola ke pusat sumbu koordinatnya. Beginilah cara robot bekerja. Ini dapat ditingkatkan lebih lanjut dengan menggunakan perangkat IoT seperti partikel foton yang dapat memberi tahu Anda ketika ada sesuatu yang terdeteksi dan bahwa robot mengikutinya atau ketika robot kehilangan jejaknya dan sekarang kembali ke pangkalan.. Dan untuk melakukan ini kita akan menggunakan platform perangkat lunak online yang menghubungkan perangkat dan memungkinkan mereka untuk melakukan tindakan tertentu pada pemicu tertentu yaitu pemicu IFTTT.

Langkah 6: Pseudo-Code

Kode Semu
Kode Semu

Berikut adalah pseudo-code untuk bagian pendeteksian menggunakan OpenCV dimana kita mendeteksi sebuah bola.

Langkah 7: Kode

Kode
Kode
Kode
Kode
Kode
Kode
Kode
Kode

Di atas adalah cuplikan kode dan di bawah ini adalah deskripsi terperinci dari kode tersebut.

# impor paket yang diperlukan

KAMI IMPORT SEMUA PAKET YANG DIPERLUKAN

from picamera.array import PiRGBArray #Karena ada masalah resolusi di raspberry pi, tidak akan dapat menangkap frame dengan VideoCapture

dari picamera impor PiCamera impor RPi. GPIO sebagai GPIO waktu impor impor numpy sebagai np

SEKARANG KITA SET UP PERANGKAT KERAS DAN MENENTUKAN PIN YANG TERHUBUNG PADA RASPBERRY PI

GPIO.setmode(GPIO. PAPAN)

GPIO_TRIGGER1 = 29 #Sensor ultrasonik kiri

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 #Sensor ultrasonik depan

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #Sensor ultrasonik kanan

GPIO_ECHO3 = 35

MOTOR1B=18 #Motor Kiri

MOTOR1E = 22

MOTOR2B=21 #Motor Kanan

MOTOR2E = 19

LED_PIN=13 #Jika menemukan bola, maka led akan menyala

# Atur pin sebagai output dan input

GPIO.setup(GPIO_TRIGGER1, GPIO. OUT) # Memicu GPIO.setup(GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup(GPIO_TRIGGER2, GPIO. OUT) # Memicu GPIO.setup(GPIO_ECHO2, GPIO. IN) GPIO.setup(GPIO_TRIGGER3, GPIO. OUT) # Pemicu GPIO.setup(GPIO_ECHO3, GPIO. IN) GPIO.setup(LED_PIN, GPIO. OUT)

# Setel pemicu ke Salah (Rendah)

GPIO.output(GPIO_TRIGGER1, False) GPIO.output(GPIO_TRIGGER2, False) GPIO.output(GPIO_TRIGGER3, False)

FUNGSI INI MENGGUNAKAN SEMUA SENSOR ULTRASONIK MENGUMPULKAN JARAK DARI OBJEK DI SEKITAR BOT KAMI

# Izinkan modul untuk diselesaikan

def sonar(GPIO_TRIGGER, GPIO_ECHO): start=0 stop=0 # Atur pin sebagai output dan input GPIO.setup(GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup(GPIO_ECHO, GPIO. IN) # Echo # Atur pemicu ke False (Rendah) GPIO.output(GPIO_TRIGGER, False) # Izinkan modul untuk menyelesaikan time.sleep(0.01) # while distance > 5: #Kirim pulsa 10us untuk memicu GPIO.output(GPIO_TRIGGER, True) time.sleep(0.00001) GPIO. output(GPIO_TRIGGER, False) begin = time.time() sedangkan GPIO.input(GPIO_ECHO)==0 dan time.time()

MENDAPATKAN MOTOR DC BEKERJA DENGAN PI RASPBERRY

GPIO.setup(MOTOR1B, GPIO. OUT)

GPIO.setup(MOTOR1E, GPIO. OUT)

GPIO.setup(MOTOR2B, GPIO. OUT) GPIO.setup(MOTOR2E, GPIO. OUT)

MENDEFINISIKAN FUNGSI UNTUK MENGOPERASIKAN ROBOT DAN MEMBUATNYA BERGERAK KE ARAH YANG BERBEDA

maju kedepan():

GPIO.output(MOTOR1B, GPIO. HIGH) GPIO.output(MOTOR1E, GPIO. LOW) GPIO.output(MOTOR2B, GPIO. HIGH) GPIO.output(MOTOR2E, GPIO. LOW) def reverse(): GPIO.output(MOTOR1B, GPIO. LOW) GPIO.output(MOTOR1E, GPIO. HIGH) GPIO.output(MOTOR2B, GPIO. LOW) GPIO.output(MOTOR2E, GPIO. HIGH) def belok kanan(): GPIO.output(MOTOR1B, GPIO. LOW) GPIO.output(MOTOR1E, GPIO. HIGH) GPIO.output(MOTOR2B, GPIO. HIGH) GPIO.output(MOTOR2E, GPIO. LOW) def belok kiri(): GPIO.output(MOTOR1B, GPIO. HIGH) GPIO.output(MOTOR1E, GPIO. LOW) GPIO.output(MOTOR2B, GPIO. LOW) GPIO.output(MOTOR2E, GPIO. HIGH)

def berhenti():

GPIO.output(MOTOR1E, GPIO. LOW) GPIO.output(MOTOR1B, GPIO. LOW) GPIO.output(MOTOR2E, GPIO. LOW) GPIO.output(MOTOR2B, GPIO. LOW)

MEMBUAT MODUL KAMERA BEKERJA DAN MENYESUAIKAN PENGATURAN

#TANGKAP KAMERA

#inisialisasi kamera dan ambil referensi ke kamera pengambilan kamera mentah = PiCamera() camera.resolusi = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray(camera, size=(160, 120)) # izinkan kamera untuk waktu pemanasan. tidur(0.001)

SEKARANG MELAKSANAKAN HAL UTAMA DI MANA BOT MENGIKUTI BOLA DAN MENGHINDARI Hambatan APAPUN

while(1<10): { #jarak datang dari depan sensor ultrasonik jarakC = sonar(GPIO_TRIGGER2, GPIO_ECHO2) #jarak datang dari kanan sensor ultrasonik jarakR = sonar(GPIO_TRIGGER3, GPIO_ECHO3) #jarak datang dari kiri sensor ultrasonik jarakL = sonar(GPIO_TRIGGER1, GPIO_ECHO1) if(distanceC=8: rightturn() time.sleep(0.00625) stop() time.sleep(0.0125) forward() time.sleep(0.00625) stop() time.sleep(0.0125) #while found== 0: belok kiri() waktu.tidur (0,00625) jarak elifL>=8: belok kiri() waktu.tidur (0,00625) stop() waktu.tidur (0,0125) maju() waktu.tidur (0,00625) stop() waktu.tidur (0.0125) belok kanan() time.sleep(0.00625) stop() time.sleep(0.0125) else: stop() time.sleep(0.01) else: #jika tidak maka bergerak maju() time.sleep(0.00625) if(distanceC>10): #membawa koordinat bola ke pusat sumbu imajiner kamera if(centre_x=20): if(centre_x0): flag=1 leftturn() time.sleep(0.025) forward() time.sleep(0.00003125) stop() time.sleep(0.00625) else: stop() time.sleep(0.01)

lain:

#jika menemukan bola dan terlalu dekat menyalakan led. GPIO.output(LED_PIN, GPIO. HIGH) time.sleep(0.1) stop() time.sleep(0.1) #cv2.imshow("draw", frame) rawCapture.truncate(0) # bersihkan aliran sebagai persiapan untuk bingkai berikutnya }

LAKUKAN PEMBERSIHAN YANG DIPERLUKAN

GPIO.cleanup() #bebaskan semua pin GPIO

Langkah 8: Tautan Eksternal

Tautan ke video demonstrasi: klik di sini (Youtube)

Tautan ke Kode di Git-hub: klik di sini (Git-Hub)

Direkomendasikan: