Isi kandungan:

Robot Penjejakan Bola: 8 Langkah
Robot Penjejakan Bola: 8 Langkah

Video: Robot Penjejakan Bola: 8 Langkah

Video: Robot Penjejakan Bola: 8 Langkah
Video: robot line follower, robot penjejak garis 2024, Julai
Anonim
Robot Penjejakan Bola
Robot Penjejakan Bola
Robot Penjejakan Bola
Robot Penjejakan Bola
Robot Penjejakan Bola
Robot Penjejakan Bola

Jadi dalam ini, saya akan memberitahu bagaimana membuat robot pelacak bola yang robot akan mengenal pasti bola dan mengikutinya. Ini pada dasarnya adalah teknik pengawasan automatik yang dapat digunakan di dunia moden. Oleh itu, mari kita masuk dan mula membina …

CATATAN: Tugasan bahagian ini diserahkan kepada Deakin University, School of IT, SIT-210 Embedded Systems Development

Bekalan

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

Langkah 1: Pengenalan

Pengenalan
Pengenalan

Pengawasan hari ini memberikan kelemahan utama iaitu bergantung pada penglibatan manusia yang mana kita semua tahu dapat terganggu dengan mudah, jadi sangat penting bagi kita untuk menemukan sistem yang dapat memantau wilayah secara autonomi dan terus menerus. Kami juga ingin mengenal pasti perkara dan bahaya yang menjengkelkan atau tidak diingini sambil membuat keputusan dan bertindak balas dengan sewajarnya. Oleh itu, penjejakan objek dengan penggunaan sistem dan komputer pintar adalah penting dan penting untuk mencapai pengawasan automatik.

Mana-mana sistem pengawasan luar mesti dapat mengesan objek yang bergerak dalam bidang pandangannya, mengklasifikasikan objek ini dan mengesan beberapa aktiviti mereka. Saya telah mengembangkan kaedah untuk mengesan dan mengklasifikasikan objek-objek ini dalam senario realistik. Penjejakan objek dalam satu kamera dilakukan menggunakan pengurangan latar belakang, diikuti dengan korespondensi wilayah. Ini mengambil kira banyak isyarat termasuk halaju, ukuran dan jarak kotak pengikat.

Langkah 2: Bahan dan Perisai yang Digunakan dalam Projek Ini

Bahan dan Perisian Lunak yang Digunakan dalam Projek Ini
Bahan dan Perisian Lunak yang Digunakan dalam Projek Ini
Bahan dan Perisian Lunak yang Digunakan dalam Projek Ini
Bahan dan Perisian Lunak yang Digunakan dalam Projek Ini
Bahan dan Perisian Lunak yang Digunakan dalam Projek Ini
Bahan dan Perisian Lunak yang Digunakan dalam Projek Ini

Komponen Perkakasan Yang Digunakan:

  • Raspberry Pi (x1)
  • Modul Kamera Raspberry Pi (x1)
  • Sensor Ultrasonik (x3)
  • Pemacu motor SparkFun Dual H-Bridge L298 (x1)
  • Motor DC (x1)
  • Papan Roti (x1)
  • Wayar Penyambung

Perisian yang Digunakan:

OpenCV

Alatan tangan:

Python

Langkah 3: Apa yang Perlu Dilakukan?

Mana-mana sistem pengawasan luar mesti dapat mengesan objek yang bergerak dalam bidang pandangannya, mengklasifikasikan objek ini dan mengesan beberapa aktiviti mereka. Saya telah mengembangkan kaedah untuk mengesan dan mengklasifikasikan objek-objek ini dalam senario realistik. Penjejakan objek dalam satu kamera dilakukan menggunakan pengurangan latar belakang, diikuti dengan korespondensi wilayah. Ini mengambil kira banyak isyarat termasuk halaju, ukuran dan jarak kotak pengikat.

Perkara yang penting semasa mengesan gambar demi bingkai gambar adalah untuk mengelakkan terjadinya penurunan bingkai kerana bot tersebut dapat memasuki keadaan limbo jika bot gagal memperhatikan arah pergerakan bola kerana penurunan bingkai. Sekiranya bola keluar dari jangkauan kamera, ia akan masuk ke dalam keadaan yang kita sebut sebagai keadaan limbo, dalam hal ini, bot membuat putaran 360 derajat untuk melihat ruang di sekitarnya hingga bola kembali dalam bingkai kamera dan kemudian mula bergerak ke arahnya.

Untuk analisis gambar, saya mengambil setiap bingkai dan kemudian menutupnya dengan warna yang diperlukan. Kemudian saya menjumpai semua kontur dan mencari yang paling besar di antara mereka dan mengikatnya dalam bentuk segi empat tepat. Dan tunjukkan segi empat tepat pada gambar utama dan cari koordinat pusat segi empat tepat.

Akhirnya, bot cuba membawa koordinat bola ke pusat paksi koordinatnya. Inilah cara robot berfungsi. Ini dapat dipertingkatkan lagi dengan menggunakan peranti IoT seperti zarah foton yang dapat memberitahu anda apabila ada sesuatu yang dikesan dan robot itu mengikutinya atau ketika robot telah kehilangan jejaknya dan kini kembali ke pangkalan.

Untuk tujuan pemprosesan gambar, anda perlu memasang perisian OpenCV pada raspberry pi anda yang agak sukar bagi saya.

Anda boleh mendapatkan maklumat yang diperlukan untuk memasang OpenCV melalui pautan ini: klik di sini

Langkah 4: Skematik

Image
Image
Skematik
Skematik
Skematik
Skematik

Di atas saya telah memberikan skema untuk projek saya dan bersama dengannya adalah Printed Circuit Board (PCB).

Dan berikut adalah beberapa sambungan utama yang perlu anda lakukan:

• Pertama sekali modul Raspberry Pi Camera disambungkan secara langsung ke Raspberry Pi.

• Sensor ultrasonik VCC disambungkan ke terminal biasa sama dengan GND (ground) dan baki dua port sensor ultrasonik disambungkan ke pin GPIO pada Raspberry Pi.

• Motor dihubungkan menggunakan H-Bridge.

• Kuasa dibekalkan menggunakan Bateri.

Saya juga telah menambahkan video yang mungkin membantu memahami fungsi sensor ultrasonik dan bagaimana ia berfungsi.

dan juga anda boleh mengikuti pautan ini jika anda tidak menemui video di atas.

Langkah 5: Bagaimana Melakukannya?

Saya membuat projek ini menggambarkan robot asas yang dapat mengesan bola. Robot menggunakan kamera untuk melakukan pemprosesan gambar dengan mengambil bingkai dan mengesan bola. Untuk mengesan bola pelbagai ciri seperti warna, ukuran, bentuknya digunakan.

Robot mencari warna yang keras dan kemudian mencari bola warna itu dan mengikutinya. Saya telah memilih Raspberry Pi sebagai pengawal mikro dalam projek ini kerana membolehkan kami menggunakan modul kameranya dan memberikan fleksibiliti dalam kod kerana menggunakan bahasa python yang sangat mesra pengguna dan juga membolehkan kami menggunakan perpustakaan OpenCV untuk menganalisis gambar.

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

Untuk analisis gambar, saya mengambil setiap bingkai dan kemudian menutupnya dengan warna yang diperlukan. Kemudian saya menjumpai semua kontur dan mencari yang paling besar di antara mereka dan mengikatnya dalam bentuk segi empat tepat. Dan tunjukkan segi empat tepat pada gambar utama dan cari koordinat pusat segi empat tepat.

Akhirnya, bot cuba membawa koordinat bola ke pusat paksi koordinatnya. Inilah cara robot berfungsi. Ini dapat dipertingkatkan lagi dengan menggunakan peranti IoT seperti zarah foton yang dapat memberitahu anda apabila ada sesuatu yang dikesan dan robot itu mengikutinya atau ketika robot telah kehilangan jejaknya dan kini kembali ke pangkalan. Dan untuk melakukan ini, kita akan menggunakan platform perisian dalam talian yang menghubungkan peranti dan membolehkan mereka melakukan tindakan tertentu pada pencetus tertentu iaitu pencetus IFTTT.

Langkah 6: Pseudo-Code

Kod Pseudo
Kod Pseudo

Berikut adalah kod pseudo untuk bahagian pengesanan menggunakan OpenCV di mana kita mengesan bola.

Langkah 7: Kod

Kod
Kod
Kod
Kod
Kod
Kod
Kod
Kod

Di atas adalah coretan kod dan di bawah ini adalah keterangan terperinci kod tersebut.

# import pakej yang diperlukan

KAMI MENGIMPOR SEMUA PAKEJ YANG DIPERLUKAN

dari picamera.array import PiRGBArray #Sebab ada masalah penyelesaian dalam raspberry pi, tidak akan dapat menangkap bingkai dengan VideoCapture

dari picamera import PiCamera import RPi. GPIO sebagai GPIO import time import numpy sebagai np

SEKARANG KAMI MENYEDIAKAN PERKAKASAN DAN MENDAPATKAN PIN YANG DITERUSKAN PADA RASPBERRY PI

GPIO.setmode (GPIO. BOARD)

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 # Sekiranya ia menjumpai bola, maka ia akan menyalakan led

# Tetapkan pin sebagai output dan input

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

# Tetapkan pencetus ke Salah (Rendah)

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

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

# Benarkan modul selesai

def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Tetapkan pin sebagai output dan input GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Tetapkan pencetus ke Salah (Rendah) GPIO.output (GPIO_TRIGGER, False) # Benarkan modul untuk menyelesaikan masa. Tidur (0,01) # sementara jarak> 5: #Hantar denyutan 10us untuk mencetuskan masa GPIO.output (GPIO_TRIGGER, Betul). Tidur (0.00001) GPIO. output (GPIO_TRIGGER, False) begin = time.time () manakala GPIO.input (GPIO_ECHO) == 0 dan time.time ()

MENDAPATKAN MOTOR DC UNTUK BEKERJA DENGAN PI RASPBERRY

GPIO.setup (MOTOR1B, GPIO. OUT)

GPIO.setup (MOTOR1E, GPIO. OUT)

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

MENENTUKAN FUNGSI UNTUK MENGOPERASI ROBOT DAN MEMBUATNYA BERGERAK DALAM ARAH YANG BERBEZA

def ke hadapan ():

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 rightturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def kiri (): GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH)

hentian def ():

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

MEMBUAT MODUL KAMERA BERFUNGSI DAN MENYESUAIKAN PENYELESAIAN

#CAMERA CAPTURE

#inisialisasi kamera dan ambil rujukan ke kamera tangkapan kamera mentah = PiCamera () kamera. resolusi = (160, 120) kamera. bingkai = 16 rawCapture = PiRGBArray (kamera, ukuran = (160, 120)) # izinkan kamera untuk memanaskan masa. tidur (0.001)

SEKARANG MELAKSANAKAN HAL-HAL UTAMA DI MANA BOT MENGIKUTI BOLA DAN MENGHINDARI SETIAP KESALAHAN DALAM CARA

manakala (1 <10): {#jarak yang datang dari jarak sensor ultrasonik depanC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #jarak yang datang dari jarak sensor ultrasonik kananR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #jarak yang datang dari jarak sensor ultrasonik kiriL = sonar (GPIO_TRIGGER1, GPIO_ECHO1) jika (jarakC = 8: belok kanan () waktu. Tidur (0,00625) berhenti () waktu. Tidur (0,0125) ke hadapan () waktu. Tidur (0,00625) berhenti () waktu. Tidur (0,0125) # sementara dijumpai == 0: leftturn () time.sleep (0.00625) elif jarakL> = 8: leftturn () time.sleep (0.00625) stop () time.sleep (0.0125) forward () time.sleep (0.00625) stop () time.sleep {0,0125 jarakC> 10): #it membawa koordinat bola ke pusat paksi khayalan kamera. if (centre_x = 20): if (centre_x0): flag = 1 kiri kiri () masa. tidur (0,025) ke hadapan () masa. tidur (0.00003125) berhenti () time.sleep (0.00625) lain: stop () time.sleep (0.01)

lain:

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

LAKUKAN KEBERSIHAN YANG PERLU

GPIO.cleanup () #bebas semua pin GPIO

Langkah 8: Pautan Luar

Pautan ke video demonstrasi: klik di sini (Youtube)

Pautan ke Kod di Git-hub: klik di sini (Git-Hub)

Disyorkan: