Mundarija:
- Ta'minotlar
- 1 -qadam: kirish
- 2-qadam: Ushbu loyihada ishlatiladigan materiallar va yumshoq buyumlar
- 3 -qadam: nima qilish kerak?
- 4 -qadam: sxemalar
- 5 -qadam: Qanday qilish kerak?
- 6-qadam: Psevdo-kod
- 7 -qadam: kod
- 8 -qadam: Tashqi havolalar
Video: To'pni kuzatuvchi robot: 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Shunday qilib, men qanday qilib to'pni kuzatib turadigan robotni aytaman, bu robot to'pni aniqlaydi va unga ergashadi. Bu asosan zamonaviy dunyoda ishlatilishi mumkin bo'lgan avtomatlashtirilgan kuzatuv usuli. Shunday qilib, keling, qurilishni boshlaylik …
QAYD: Bu qism vazifasi Deakin universiteti, IT maktabi, SIT-210 o'rnatilgan tizimlarni ishlab chiqish
Ta'minotlar
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
1 -qadam: kirish
Bugungi kuzatuvning asosiy kamchiligi shundaki, bu odamlarning ishtirokiga bog'liq bo'lib, biz hammamiz bilamizki, bizni chalg'itishi mumkin, shuning uchun biz mintaqalarni avtonom va uzluksiz kuzatib boradigan tizimni kashf qilish juda muhim edi. Shuningdek, biz bir vaqtning o'zida qarorlar qabul qilishda va ularga javob berishda yoqimsiz yoki keraksiz narsalar va xavflarni aniqlamoqchimiz. Shunday qilib, avtomatlashtirilgan kuzatuvga erishish uchun aqlli tizimlar va kompyuterlar yordamida ob'ektlarni kuzatish muhim va hal qiluvchi ahamiyatga ega.
Har qanday tashqi kuzatuv tizimi o'z nuqtai nazari bo'yicha harakatlanayotgan ob'ektlarni kuzatishi, bu ob'ektlarni tasniflashi va ularning ayrim faoliyatini aniqlashi kerak. Men ushbu ob'ektlarni real stsenariylarda kuzatish va tasniflash usulini ishlab chiqdim. Bitta kamerada ob'ektlarni kuzatish fonni olib tashlash, so'ngra viloyat yozishmalari yordamida amalga oshiriladi. Bu chegara qutilarining tezligi, o'lchami va masofasini o'z ichiga olgan bir nechta signallarni hisobga oladi.
2-qadam: Ushbu loyihada ishlatiladigan materiallar va yumshoq buyumlar
Amaldagi apparat komponentlari:
- Raspberry Pi (x1)
- Raspberry Pi kamera moduli (x1)
- Ultrasonik sensor (x3)
- SparkFun Dual H-Bridge dvigatellari L298 (x1)
- DC vosita (x1)
- Non paneli (x1)
- Ulanish simlari
Ishlatilgan dasturiy ta'minot:
OpenCV
Qo'l asboblari:
Python
3 -qadam: nima qilish kerak?
Har qanday tashqi kuzatuv tizimi o'z nuqtai nazari bo'yicha harakatlanayotgan ob'ektlarni kuzatishi, bu ob'ektlarni tasniflashi va ularning ayrim faoliyatini aniqlashi kerak. Men ushbu ob'ektlarni real stsenariylarda kuzatish va tasniflash usulini ishlab chiqdim. Bitta kamerada ob'ektlarni kuzatish fonni olib tashlash, so'ngra viloyat yozishmalari yordamida amalga oshiriladi. Bu chegara qutilarining tezligi, o'lchami va masofasini o'z ichiga olgan bir nechta signallarni hisobga oladi.
Rasmlarni ramkadan -kadrga aniqlashda muhim narsa - bu ramkaning tushishining oldini olish edi, chunki bot ramkaning tushishi tufayli to'pning harakat yo'nalishini sezmasa, limbo holatiga o'tishi mumkin. Agar to'p kamera doirasidan tashqariga chiqsa, u bizni "noaniq" holatga o'tkazadi, bu holda, bot 360 graduslik burilishni amalga oshirib, to'p orqaga qaytguncha atrofdagi bo'shliqni ko'radi. kamera va keyin o'z yo'nalishi bo'yicha harakat qilishni boshlang.
Tasvirni tahlil qilish uchun men har bir kadrni olaman va keyin kerakli rang bilan maskalanaman. Keyin men barcha konturlarni topaman va ularning eng kattasini topaman va uni to'rtburchak bilan bog'layman. Va asosiy rasmda to'rtburchakni ko'rsating va to'rtburchak markazining koordinatalarini toping.
Nihoyat, bot to'pning koordinatalarini uning koordinata o'qi markaziga olib kelishga harakat qiladi. Robot shunday ishlaydi. Buni foton zarrachasi kabi IoT qurilmasi yordamida yanada yaxshilash mumkin, bu sizga biror narsa aniqlanganda va robot unga ergashayotgani yoki robot izini yo'qotib, endi bazaga qaytayotganida sizga xabar berishga imkon beradi..
Tasvirni qayta ishlash uchun siz malina pi -ga OpenCV dasturini o'rnatishingiz kerak, bu men uchun juda qiyin edi.
OpenCV -ni o'rnatish uchun kerakli ma'lumotlarni ushbu havola orqali olishingiz mumkin: bu erni bosing
4 -qadam: sxemalar
Yuqorida men o'z loyihamning sxemalarini keltirdim va u bilan birga bosilgan elektron platalar (PCB).
Va bu erda siz bajarishingiz kerak bo'lgan asosiy ulanishlar:
• Birinchidan, Raspberry Pi Camera moduli to'g'ridan -to'g'ri Raspberry Pi -ga ulangan.
• Ultrasonik sensorlar VCC umumiy terminalga GND (er) bilan ulanadi va ultrasonik sensorning qolgan ikkita porti Raspberry Pi -dagi GPIO pinlariga ulanadi.
• Motorlar H-Bridge yordamida ulanadi.
• Quvvat Batareya yordamida ta'minlanadi.
Men shuningdek, ultratovush sensori va uning ishlashini tushunishga yordam beradigan videoni qo'shdim.
va agar siz yuqoridagi videoni topa olmasangiz, ushbu havolaga kirishingiz mumkin.
5 -qadam: Qanday qilish kerak?
Men bu loyihani to'pni kuzatib turadigan asosiy robot tasvirini yaratdim. Robot ramkalarni olish va to'pni kuzatish orqali tasvirni qayta ishlash uchun kameradan foydalanadi. To'pni kuzatish uchun uning rangi, o'lchami, shakli kabi turli xil xususiyatlar qo'llaniladi.
Robot qattiq kodli rangni topadi, so'ngra shu rangdagi to'pni qidiradi va unga ergashadi. Men bu loyihada Raspberry Pi-ni mikro-nazoratchi sifatida tanladim, chunki u bizga kamera modulidan foydalanishga imkon beradi va kodga katta moslashuvchanlikni beradi, chunki u foydalanuvchilar uchun juda qulay bo'lgan python tilidan foydalanadi va tasvirlarni tahlil qilish uchun OpenCV kutubxonasidan foydalanishga imkon beradi.
Dvigatellarning aylanish yo'nalishini o'zgartirish yoki to'xtatish uchun H-ko'prigi ishlatilgan.
Tasvirni tahlil qilish uchun men har bir kadrni olaman va keyin kerakli rang bilan maskalanaman. Keyin men barcha konturlarni topaman va ularning eng kattasini topaman va uni to'rtburchak bilan bog'layman. Va asosiy rasmda to'rtburchakni ko'rsating va to'rtburchak markazining koordinatalarini toping.
Nihoyat, bot to'pning koordinatalarini uning koordinata o'qi markaziga olib kelishga harakat qiladi. Robot shunday ishlaydi. Buni foton zarrachasi kabi IoT qurilmasi yordamida yanada yaxshilash mumkin, bu sizga biror narsa aniqlanganda va robot unga ergashayotgani yoki robot izini yo'qotib, endi bazaga qaytayotganida sizga xabar berishga imkon beradi.. Va buning uchun biz qurilmalarni bir -biriga bog'laydigan va IFTTT tetiklari bo'lgan maxsus tetiklar bo'yicha muayyan harakatlarni bajarishga imkon beradigan onlayn dasturiy platformadan foydalanamiz.
6-qadam: Psevdo-kod
Bu erda biz to'pni aniqlaydigan OpenCV yordamida aniqlash qismining soxta kodi.
7 -qadam: kod
Yuqorida kod parchalari, pastda esa kodning batafsil tavsifi berilgan.
# kerakli paketlarni import qilish
BIZ HAMMA KERAK BO'LGAN paketlarni import qilamiz
picamera.array importidan PiRGBArray #Malinali pi -da echim muammosi bo'lgani uchun VideoCapture yordamida kadrlarni yozib ololmaydi.
pikamera importidan PiCamera import RPi. GPIO sifatida GPIO import vaqti
Endi biz uskunani o'rnatdik va Raspberry PI -ga ulangan PIN -kodlarni tayinladik.
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 #Chap ultrasonik sensor
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #Old ultrasonik sensor
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #O'ng ultratovush sensori
GPIO_ECHO3 = 35
MOTOR1B = 18 #Chap motor
MOTOR1E = 22
MOTOR2B = 21 #O'ng dvigatel
MOTOR2E = 19
LED_PIN = 13 #Agar u to'pni topsa, u chiroqni yondiradi
# Pimlarni chiqish va kirish sifatida o'rnating
GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # GPIO.setup -ni ishga tushirish (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.sozlashni ishga tushirish (GPIO_ECHO3, GPIO. IN) GPIO. sozlash (LED_PIN, GPIO. OUT)
# Triggerni noto'g'ri (past) ga o'rnating
GPIO.output (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO.output (GPIO_TRIGGER3, False)
BU FUNKSIYA ULTRASONIK SENSORLARNING BARCHASINI BOSHQAMIZDAGI OBEKTIYALARDAN masofani yig'adi.
# Modulni o'rnatishga ruxsat bering
def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Pinlarni chiqish va kirish sifatida belgilash GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Triggerni False -ga o'rnating. (Past) GPIO.output (GPIO_TRIGGER, False) #Modulga vaqtni belgilashga ruxsat bering.yotish (0.01) #masofa> 5: #GPIO.output (GPIO_TRIGGER, True) vaqtini ishga tushirish uchun 10us pulsini yuboring. Uxlash (0.00001) GPIO. chiqish (GPIO_TRIGGER, False) begin = time.time (), GPIO.input (GPIO_ECHO) == 0 va time.time ()
DC MOTORLARINI RASPBERRY PI bilan ishlashga jalb qilish
GPIO. sozlash (MOTOR1B, GPIO. OUT)
GPIO. sozlash (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
ROBOTNI ISHLATISH VA FARKLI YO'LLARDA HARAKAT QILISH UCHUN FUNKSIYALARNI TAYYORLASH
def oldinga ():
GPIO.utput (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def teskari (): GPIO. chiqish (MOTOR1B), GPIO. LOW) GPIO.utput (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) defotturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.utput (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.utput (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH)
def stop ():
GPIO.utput (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR1B, GPIO. LOW)
KAMERA MODULINI ISHLATISH VA Sozlamalarni sozlash
#KAMERA OLISH
# kamerani ishga tushiring va kamerani suratga olish kamerasiga havola oling = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (camera, size = (160, 120)) # kameraga ruxsat bering isinish vaqtiga uyqu (0,001)
HOZIR BOT TOPGA QO'SHIQ BO'LADIGAN VA YO'LDAGI TOSHIQLARNI QO'YLAYDI.
while (1 <10): { #masofa old ultrasonik sensor masofasidan keladiC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #masofa o'ng ultrasonik sensor masofasidan keladiR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #chap ultrasonik sensor masofasidan keladiL = sonar (GPIO_TRIGGER1), GPIO_ECHO1) if (masofaC = 8: o'ngga burilish () vaqt. uxlash (0.00625) to'xtash () vaqt. uxlash (0.0125) oldinga () vaqt. uxlash (0.00625) to'xtash () vaqt. uxlash (0.0125) #xozir topilgan == 0: chapga burilish () vaqt. uxlash (0,00625) elif masofasiL> = 8: chapga burilish () vaqt. uxlash (0,00625) to'xtash () vaqt. uxlash (0,0125) oldinga () vaqt. uxlash (0,00625) to'xtash () vaqt. uxlash. (0.0125) o'ngga burilish () vaqt. uxlash (0.00625) to'xtash () vaqt. uxlash (0.0125) boshqa: to'xtatish () vaqt. uxlash (0.01) boshqa: #aks holda u oldinga siljiydi () vaqt. uxlash (0.00625) agar (masofa C> 10): #top koordinatalarini kameraning tasavvur o'qi markaziga olib keladi. if (centre_x = 20): if (centre_x0): flag = 1 chap burilish () time.sleep (0.025) oldinga () time.sleep (0.00003125)) stop () time.sleep (0.00625) other: stop () time.sleep (0.01)
boshqa:
#agar u to'pni topsa va u juda yaqin bo'lsa, u chiroqni yoqadi. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # oqimga tayyorgarlik keyingi kadr}
Kerakli tozalash ishlarini bajaring
GPIO.cleanup () #barcha GPIO pinlarini bepul
8 -qadam: Tashqi havolalar
Namoyish videosiga havola: bu erni bosing (Youtube)
Git-hub kodiga havola: bu erni bosing (Git-Hub)
Tavsiya:
Ish stoli COVID19 Tracker soat bilan! Raspberry Pi bilan ishlaydigan kuzatuvchi: 6 qadam
Ish stoli COVID19 Tracker soat bilan! Raspberry Pi bilan ishlaydigan kuzatuvchi: Biz bilamizki, biz har doim o'lishimiz mumkin, hatto men bu xabarni yozayotganda o'lishim mumkin, axir men, siz, biz hammamiz o'likmiz. COVID -19 pandemiyasi tufayli butun dunyo larzaga keldi. Biz buni qanday oldini olishni bilamiz, lekin salom! biz qanday ibodat qilishni va nima uchun ibodat qilishni bilamiz, shunday qilamizmi
SW -520D tebranish sensori metall to'pni burish kaliti - Visuino: 6 qadam
SW-520D tebranish sensori metall shar burish sensori-Visuino: Bu SW-520D asosiy burilish kaliti yo'nalishni aniqlash uchun osongina ishlatilishi mumkin. Idishning ichida quti tik turganida pinlar bilan aloqa qiladigan to'p bor. Kosonni egib qo'ying va sharlar tegmasin, shuning uchun aloqa o'rnatilmaydi
Har tomonlama g'ildirak va OpenCV -ga asoslangan ranglarni kuzatuvchi robot: 6 qadam
Rangni kuzatish roboti ko'p yo'nalishli g'ildirak va OpenCV -ga asoslangan: Men ranglarni kuzatishni amalga oshirish uchun har tomonlama g'ildirak shassisidan foydalanaman va men OpenCVBot nomli mobil dasturidan foydalanaman. Bu erda dasturiy ta'minot ishlab chiqaruvchilarga rahmat aytaman, OpenCV Bot aslida tasvirni qayta ishlash orqali har qanday ob'ektni aniqlaydi yoki kuzatadi
Arduino -dan foydalanadigan DIY Quyosh kuzatuvchi robot: 3 qadam
DIY Arduino yordamida quyoshni kuzatuvchi robot: Bu videoni quyosh kuzatuvchisi uchun darslik, izoh qoldiring! boshlaylik
To'pni kuzatish 180 ° kamera: 5 qadam (rasmlar bilan)
To'pni kuzatish 180 ° kamera: Mening birinchi loyihamga xush kelibsiz! Men o'zim yaratgan narsalar bilan bo'lishishdan va o'z kuzatuv kamerangizni yaratish bosqichlarini ko'rsatishdan juda xursandman. Bu loyiha Python bilan birgalikda OpenCV kutubxonasi yordamida amalga oshirildi