Isi kandungan:
- Bekalan
- Langkah 1: Pengenalan
- Langkah 2: Bahan dan Perisai yang Digunakan dalam Projek Ini
- Langkah 3: Apa yang Perlu Dilakukan?
- Langkah 4: Skematik
- Langkah 5: Bagaimana Melakukannya?
- Langkah 6: Pseudo-Code
- Langkah 7: Kod
- Langkah 8: Pautan Luar
Video: Robot Penjejakan Bola: 8 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
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
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
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
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
Berikut adalah kod pseudo untuk bahagian pengesanan menggunakan OpenCV di mana kita mengesan bola.
Langkah 7: 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:
Cara Membina PHIL - Robot Penjejakan Ringan: 6 Langkah (dengan Gambar)
Cara Membangun PHIL - Robot Penjejakan Ringan: Dalam Instruksional ini saya akan menunjukkan kepada anda bagaimana saya membuat robot penjejak cahaya paksi dua ini menggunakan Arduino Uno. Semua CAD dan kod akan disertakan sehingga anda dapat membuatnya sendiri tanpa memerlukan kemahiran memprogram atau merancang. Semua yang anda perlukan
Bola Pingpong LED-Bola: 16 Langkah (dengan Gambar)
LED Ball Tennis Ball-Ball: BackstorySetelah membina panel rata bola tenis meja beberapa saat yang lalu, saya mula bertanya-tanya Adakah mungkin membuat panel 3D dari bola tenis meja. Digabungkan dengan minat saya untuk membuat " seni " dari bentuk geometri berulang I
Robot Bola Sepak (atau Bola Sepak, Jika Anda Hidup di Sebelah Kolam): 9 Langkah (dengan Gambar)
Robot Bola Sepak (atau Bola Sepak, Sekiranya Anda Hidup di Sebelah Kolam): Saya mengajar robotik di tinker-robot-labs.tk Murid saya telah mencipta robot ini yang bermain bola sepak (atau bola sepak, jika anda tinggal di seberang kolam). Tujuan saya dengan projek ini adalah untuk mengajar anak-anak bagaimana berinteraksi dengan robot melalui Bluetooth. Kami
Cara Memasang Lengan Robot Kayu yang Mengesankan (Bahagian 1: Robot untuk Penjejakan Garis) - Berdasarkan Mikro: Bit: 9 Langkah
Cara Memasang Lengan Robot Kayu yang Mengesankan (Bahagian 1: Robot untuk Penjejakan Garis) - Berdasarkan Mikro: Bit: Lelaki kayu ini mempunyai tiga bentuk, sangat berbeza dan mengagumkan. Kemudian mari kita masuk satu persatu
Penjejakan Bola 180 ° Kamera: 5 Langkah (dengan Gambar)
Penjejakan Bola 180 ° Kamera: Selamat datang ke projek pertama saya! Saya teruja untuk berkongsi apa yang telah saya buat dan menunjukkan kepada anda langkah-langkah untuk membina kamera penjejak anda sendiri. Projek ini dimungkinkan dengan menggunakan perpustakaan OpenCV bersama dengan Python