Mündəricat:

Top İzləmə Robotu: 8 addım
Top İzləmə Robotu: 8 addım

Video: Top İzləmə Robotu: 8 addım

Video: Top İzləmə Robotu: 8 addım
Video: Эти 8 продуктов Разрушают Надпочечники, Избегайте их! + Топ 10 самых Полезных продуктов... 2024, Iyul
Anonim
Top İzləmə Robotu
Top İzləmə Robotu
Top İzləmə Robotu
Top İzləmə Robotu
Top İzləmə Robotu
Top İzləmə Robotu

Beləliklə, burada bir topu izləyən bir robotun necə olacağını söyləyəcəyəm ki, bu da bir topu tanıyacaq və onu izləyəcək. Əsasən müasir dünyada istifadə edilə bilən avtomatik bir müşahidə texnikasıdır. Odur ki, yalnız içəri girib tikintiyə başlayaq …

Qeyd: Bu, Deakin Universiteti, İT Məktəbi, SIT-210 Gömülü Sistem İnkişafına təqdim olunan hissə tapşırığıdır

Təchizat

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

Addım 1: Giriş

Giriş
Giriş

Bugünkü müşahidə böyük bir çatışmazlığı təmin edir ki, bu da hamımızın bildiyimiz kimi asanlıqla diqqəti yayındıra biləcəyimiz insanların iştirakı ilə bağlıdır, buna görə də bölgələri avtonom və davamlı olaraq izləyə bilən bir sistem kəşf etmək bizim üçün çox vacib idi. Eyni zamanda qərarlar verərkən pis və ya arzuolunmaz şeyləri və təhlükələri müəyyən etmək və buna uyğun olaraq cavab vermək istəyirik. Beləliklə, ağıllı sistemlərin və kompüterlərin istifadəsi ilə obyektlərin izlənməsi avtomatlaşdırılmış nəzarətə nail olmaq üçün vacib və vacibdir.

Hər hansı bir açıq müşahidə sistemi öz baxış sahəsində hərəkət edən cisimləri izləyə, bu obyektləri təsnif edə və bəzi fəaliyyətlərini aşkar edə bilməlidir. Bu obyektləri real ssenarilərdə izləmək və təsnif etmək üçün bir üsul hazırladım. Tək bir kamerada obyektlərin izlənməsi arxa plan çıxarılması və sonra bölgə yazışmaları ilə aparılır. Bu, məhdudiyyət qutularının sürətləri, ölçüləri və məsafələri daxil olmaqla bir çox işarəni nəzərə alır.

Addım 2: Bu Layihədə İstifadə Edilən Materiallar və Yumşaq Məhsullar

Bu Layihədə İstifadə Edilən Materiallar və Yumşaq Məhsullar
Bu Layihədə İstifadə Edilən Materiallar və Yumşaq Məhsullar
Bu Layihədə İstifadə Edilən Materiallar və Yumşaq Məhsullar
Bu Layihədə İstifadə Edilən Materiallar və Yumşaq Məhsullar
Bu Layihədə İstifadə Edilən Materiallar və Yumşaq Məhsullar
Bu Layihədə İstifadə Edilən Materiallar və Yumşaq Məhsullar

İstifadə olunan Avadanlıq Komponentləri:

  • Moruq Pi (x1)
  • Raspberry Pi Kamera Modulu (x1)
  • Ultrasonik Sensor (x3)
  • SparkFun Dual H-Bridge motor sürücüləri L298 (x1)
  • DC Motor (x1)
  • Çörək paneli (x1)
  • Bağlayıcı tellər

İstifadə olunan proqram:

OpenCV

Əl alətləri:

Python

Addım 3: Nə etməli?

Hər hansı bir açıq müşahidə sistemi öz baxış sahəsində hərəkət edən cisimləri izləyə, bu obyektləri təsnif edə və bəzi fəaliyyətlərini aşkar edə bilməlidir. Bu obyektləri real ssenarilərdə izləmək və təsnif etmək üçün bir üsul hazırladım. Tək bir kamerada obyektlərin izlənməsi arxa plan çıxarılması və sonra bölgə yazışmaları ilə aparılır. Bu, məhdudiyyət qutularının sürətləri, ölçüləri və məsafələri daxil olmaqla bir çox işarəni nəzərə alır.

Çərçivə ilə şəkilləri aşkar edərkən vacib bir şey, çərçivə düşməsinin qarşısını almaq idi, çünki bot çərçivə düşmələri səbəbiylə topun hərəkət istiqamətini fərq etmədikdə bot bir vəziyyətdə ola bilər. Top kamera aralığından kənara çıxarsa, məhdud vəziyyət dediyimiz vəziyyətə girəcək, bu halda, bot, çərçivə içərisinə qayıdana qədər ətrafındakı boşluğu görmək üçün 360 dərəcə dönür. kamera və sonra öz istiqamətində hərəkət etməyə başlayın.

Şəkil təhlili üçün hər bir çərçivəni çəkirəm və sonra lazım olan rənglə maskalayıram. Sonra bütün konturları tapıram və ən böyüyünü tapıram və düzbucaqlı bağlayıram. Və əsas görüntüdə düzbucaqlı göstərin və düzbucağın mərkəzinin koordinatlarını tapın.

Nəhayət, bot topun koordinatlarını koordinat oxunun mərkəzinə gətirməyə çalışır. Robot belə işləyir. Bu, foton hissəciyi kimi bir IoT cihazı istifadə edərək daha da artırıla bilər ki, bu da bir şey aşkar edildikdə və robotun onu izlədiyini və ya robotun izini itirdiyini və indi bazaya qayıtdığını sizə xəbər verə bilər..

Şəkil emal etmək üçün moruq pi -də mənim üçün olduqca çətin olan OpenCV proqramını qurmalısınız.

OpenCV -ni yükləmək üçün lazım olan məlumatı bu linkdən əldə edə bilərsiniz: bura vurun

Addım 4: sxemlər

Image
Image
Sxemalar
Sxemalar
Sxemalar
Sxemalar

Yuxarıda layihəmin sxemlərini təqdim etdim və bununla birlikdə Çaplı Devre Kartı (PCB) da var.

Və etməli olduğunuz əsas əlaqələrdən bəziləri:

• İlk növbədə Raspberry Pi Camera modulu birbaşa Raspberry Pi ilə bağlıdır.

• Ultrasonik sensorlar VCC, GND (torpaq) ilə eyni olan ümumi terminala bağlıdır və ultrasəs sensörünün qalan iki portu Raspberry Pi üzərindəki GPIO pinlərinə bağlıdır.

• Motorlar H-Bridge istifadə edərək bağlanır.

• Güc Batareya ilə təmin edilir.

Ultrasonik sensorun işini və necə işlədiyini başa düşməyə kömək edə biləcək bir video da əlavə etdim.

və yuxarıdakı videonu tapa bilmirsinizsə bu linki izləyə bilərsiniz.

Addım 5: Necə etməli?

Topu izləyə bilən əsas robotu əks etdirən bu layihəni hazırladım. Robot, çərçivələr alaraq görüntünün işlənməsi və topu izləmək üçün kameradan istifadə edir. Topu izləmək üçün rəngi, ölçüsü, forması kimi müxtəlif xüsusiyyətlərdən istifadə olunur.

Robot kodlu bir rəng tapır və sonra həmin rəngin topunu axtarır və onu izləyir. Raspberry Pi-ni bu layihədə mikro nəzarətçi olaraq seçdim, çünki kamera modulundan istifadə etməyimizə imkan verir və çox istifadəçi dostu olan python dilindən istifadə etdiyi üçün kodda böyük rahatlıq verir və şəkilləri təhlil etmək üçün OpenCV kitabxanasından istifadə etməyə imkan verir.

H-körpüsü, mühərriklərin fırlanma istiqamətini dəyişdirmək və ya dayandırmaq üçün istifadə edilmişdir.

Şəkil təhlili üçün hər bir çərçivəni çəkirəm və sonra lazım olan rənglə maskalayıram. Sonra bütün konturları tapıram və ən böyüyünü tapıram və düzbucaqlı bağlayıram. Və əsas görüntüdə düzbucaqlı göstərin və düzbucağın mərkəzinin koordinatlarını tapın.

Nəhayət, bot topun koordinatlarını koordinat oxunun mərkəzinə gətirməyə çalışır. Robot belə işləyir. Bu, foton hissəciyi kimi bir IoT cihazı istifadə edərək daha da artırıla bilər ki, bu da bir şey aşkar edildikdə və robotun onu izlədiyini və ya robotun izini itirdiyini və indi bazaya qayıtdığını sizə xəbər verə bilər.. Bunu etmək üçün, cihazları birləşdirən və IFTTT tetikleyiciləri olan xüsusi tetikleyiciler üzərində müəyyən hərəkətlər etməyə imkan verən bir onlayn proqram platformasından istifadə edəcəyik.

Addım 6: Yalan kod

Yalan kod
Yalan kod

Topu aşkarladığımız OpenCV istifadə edərək aşkarlama hissəsi üçün yalançı kod budur.

Addım 7: Kod

Kod
Kod
Kod
Kod
Kod
Kod
Kod
Kod

Yuxarıda kodun parçaları, aşağıda isə kodun ətraflı təsviri verilmişdir.

# lazımi paketləri idxal edin

BÜTÜN GEREKLİ PAKETLƏRİ İTHAL EDİRİK

picamera.array idxalından PiRGBArray #Moruq pi -də bir həll problemi olduğu üçün VideoCapture ilə çərçivələr çəkə bilməyəcək

picamera idxalından PiCamera idxalı RPi. GPIO olaraq GPIO idxal vaxtı id

İNDİ DONANIMI YERLƏDİK VƏ RASPBERRY PI ÜZRƏ BAĞLI PİNLƏRİ TƏHSİS ETDİK

GPIO.setmode (GPIO. BOARD)

GPIO_TRIGGER1 = 29 #Sol ultrasəs sensoru

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 #Ön ultrasəs sensoru

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #Sağ ultrasəs sensoru

GPIO_ECHO3 = 35

MOTOR1B = 18 #Sol Motor

MOTOR1E = 22

MOTOR2B = 21 #Sağ Motor

MOTOR2E = 19

LED_PIN = 13 #Topu taparsa, ledini yandırar

# Pinləri çıxış və giriş olaraq təyin edin

GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # Tetikleyici GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO2, GPIO. IN) GPIO.set GPIO_TRIGGER3, GPIO. OUT) # GPIO. qurulmasını tetikleyin (GPIO_ECHO3, GPIO. IN) GPIO.sistemi (LED_PIN, GPIO. OUT)

# Tətiyi Yanlış (Aşağı) olaraq təyin edin

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

BU FONKSİYADAN BÜTÜN ULTRASONİK SENSORLAR BÖTÜMÜMÜZDƏN OBYEKTLƏRDƏN MESAFƏ TOPLAYIR.

# Modulun həllinə icazə verin

def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Pinləri çıxış və giriş kimi təyin edin GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Tətiyi False olaraq təyin edin (Aşağı) GPIO.output (GPIO_TRIGGER, Yanlış) #Modulun vaxtı təyin etməsinə icazə verin.yuxu (0.01) #məsafə> 5: #GPIO.output (GPIO_TRIGGER, True) vaxtını tetiklemek üçün 10us nəbz göndərin. Yuxu (0.00001) GPIO. çıxış (GPIO_TRIGGER, False) start = time.time (), GPIO.input (GPIO_ECHO) == 0 və time.time ()

DC MOTORLARIN RASPBERRY PI İLƏ İŞLƏMƏSİ

GPIO. quraşdırma (MOTOR1B, GPIO. OUT)

GPIO. quraşdırma (MOTOR1E, GPIO. OUT)

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

ROBOTU İSTİFADƏ ETMƏK VƏ FƏRQLİ YÖNLƏRDƏ HƏRƏKƏT ETMƏK ÜÇÜN FUNKSİYALARI TƏYİN ETMƏK

def irəli ():

GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def tərs (): GPIO.output (MOTOR1B), GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) defotturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def leftturn (): GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E), GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH)

def stop ():

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

KAMERA MODÜLÜ İŞLƏDİRİR VƏ AYARLARI TƏŞKİQ EDİR

#KAMERA ÇEKMƏ

# kameranı işə salın və xam kamera çəkmə kamerasına istinad alın = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kamera, ölçü = (160, 120)) # kameraya icazə verin istiləşmə vaxtı. yuxu (0.001)

BOTUN TOPU İZLƏDİĞİ VƏ YOLUNDA HƏR HANGİ BİR maneənin qarşısını aldığı yerdə ƏSAS İŞLƏRİ İDARƏ EDİN

while (1 <10): { #ön ultrasəs sensoru məsafəsindən gələn məsafəC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #sağ ultrasonik sensor məsafəsindən gələn məsafəR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #sol ultrasonik sensor məsafəsindən gələn məsafə L = sonar (GPIO_TRIGGER1), GPIO_ECHO1) if (mesafəC = 8: sağa dönmə () vaxt.yuxu (0.00625) dayan () vaxt.yuxu (0.0125) irəli () vaxt.yuxu (0.00625) dayan () vaxt.yuxu (0.0125) #tapılan zaman == 0: sola dönüş () vaxt.yuxu (0.00625) elif məsafəsiL> = 8: sola dönmə () vaxt.yuxu (0.00625) dayan () vaxt.yuxu (0.0125) irəli () vaxt.yuxu (0.00625) dayan () vaxt.yuxu (0.0125) sağa () vaxt.yuxu (0.00625) dayan () vaxt.yuxu (0.0125) başqa: dayandır () vaxt.yuxu (0.01) başqa: #əks halda irəli irəliləyir () zaman.yuxu (0.00625) əgər (məsafəC> 10): #it, topun koordinatlarını kameranın xəyali oxunun mərkəzinə gətirir. if (centre_x = 20): if (centre_x0): bayraq = 1 sola dönüş () time.yuxu (0.025) irəli () time.yuxu (0.00003125)) dayandır () vaxt.yuxu (0.00625) başqa: dur () vaxt.yuxu (0.01)

başqa:

#topu tapsa və çox yaxındırsa, ledini yandırır. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # növbəti çərçivə}

GEREKLİ TEMİZLİKLƏRİ ET

GPIO.cleanup () #bütün GPIO sancaqlarını pulsuz

Addım 8: Xarici Bağlantılar

Nümayiş videosuna keçid: bura vurun (Youtube)

Git-hubdakı Kodun bağlantısı: bura vurun (Git-Hub)

Tövsiyə: