Mundarija:

To'pni kuzatuvchi robot: 8 qadam
To'pni kuzatuvchi robot: 8 qadam

Video: To'pni kuzatuvchi robot: 8 qadam

Video: To'pni kuzatuvchi robot: 8 qadam
Video: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, Noyabr
Anonim
To'pni kuzatuvchi robot
To'pni kuzatuvchi robot
To'pni kuzatuvchi robot
To'pni kuzatuvchi robot
To'pni kuzatuvchi robot
To'pni kuzatuvchi robot

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

Kirish
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

Loyihada ishlatiladigan materiallar va yumshoq buyumlar
Loyihada ishlatiladigan materiallar va yumshoq buyumlar
Loyihada ishlatiladigan materiallar va yumshoq buyumlar
Loyihada ishlatiladigan materiallar va yumshoq buyumlar
Loyihada ishlatiladigan materiallar va yumshoq buyumlar
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

Image
Image
Sxemalar
Sxemalar
Sxemalar
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

Soxta kod
Soxta kod

Bu erda biz to'pni aniqlaydigan OpenCV yordamida aniqlash qismining soxta kodi.

7 -qadam: kod

Kod
Kod
Kod
Kod
Kod
Kod
Kod
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: