Mündəricat:
- Təchizat
- Addım 1: Giriş
- Addım 2: Bu Layihədə İstifadə Edilən Materiallar və Yumşaq Məhsullar
- Addım 3: Nə etməli?
- Addım 4: sxemlər
- Addım 5: Necə etməli?
- Addım 6: Yalan kod
- Addım 7: Kod
- Addım 8: Xarici Bağlantılar
Video: Top İzləmə Robotu: 8 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
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ş
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
İ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
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
Topu aşkarladığımız OpenCV istifadə edərək aşkarlama hissəsi üçün yalançı kod budur.
Addım 7: 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ə:
İşıq İzləmə Robotu - PHIL Necə Yaranır: 6 Addım (Şəkillərlə birlikdə)
İşıq İzləmə Robotu - PHIL Necə Yaranır: Bu Təlimat kitabında Arduino Uno istifadə edərək bu iki oxlu işıq izləmə robotunu necə hazırladığımı sizə göstərəcəyəm. Bütün CAD və kod daxil ediləcək, buna görə heç bir proqramlaşdırma və ya dizayn bacarıqlarına ehtiyac olmadan özünüz qura bilərsiniz. Ehtiyacınız olacaq hər şey
ATtiny85 Geyinilə bilən Titrəmə Aktivliyi İzləmə İzləmə və Proqramlaşdırma Arduino Uno ilə ATtiny85: 4 addım (şəkillərlə)
ATtiny85 Geyinilə bilən Titrəmə Aktivliyi İzləmə Saatı və Proqramlaşdırılması Arduino Uno ilə ATtiny85: Geyinilə bilən fəaliyyət izləmə saatı necə edilir? Bu, durğunluq algıladıqda titrəmək üçün hazırlanmış geyilə bilən bir gadgetdır. Vaxtınızın çoxunu mənim kimi kompüterdə keçirirsinizmi? Özünüz də bilmədən saatlarla oturursunuz? Sonra bu cihaz f
Çox yönlü təkər və OpenCV əsasında rəng izləmə robotu: 6 addım
Çox yönlü Təkər və OpenCV -ə əsaslanan Rəng İzləmə Robotu: Rəng izləməni həyata keçirmək üçün çox yönlü təkər şassisindən istifadə edirəm və OpenCVBot adlı mobil proqramdan istifadə edirəm. Buradakı proqram təminatçıları sayəsində təşəkkür edirəm. OpenCV Bot, əslində hər hansı bir real vaxt obyektini görüntü prosesində algılar və ya izləyir
Top İzləmə 180 ° Kamera: 5 Addım (Şəkillərlə birlikdə)
Top İzləmə 180 ° Kamera: İlk layihəmə xoş gəldiniz! Etdiyimi paylaşmaqdan və öz izləmə kameranızı qurmağın addımlarını göstərməkdən məmnunam. Bu layihə Python ilə birlikdə OpenCV kitabxanasından istifadə etməklə mümkün oldu
[Arduino Robotu] Bir Motion Capture Robotu Necə Hazırlanır - Başparmak Robotu - Servo Motor - Mənbə Kodu: 26 Adım (Şəkillərlə birlikdə)
[Arduino Robotu] Bir Motion Capture Robotu Necə Hazırlanır | Başparmak Robotu | Servo Motor | Mənbə Kodu: Başparmak Robotu. MG90S servo motor potensialiometrindən istifadə olunub. Çox əyləncəli və asandır! Kod çox sadədir. Cəmi 30 sətirdir. Bir hərəkətə bənzəyir. Hər hansı bir sualınız və ya geribildiriminizi bildirin! [Təlimat] Mənbə Kodu https: //github.c