Mundarija:
- 1 -qadam: talablar
- 2 -qadam: ma'lumotlarni o'qitish
- 3 -qadam: Pi kamera bashoratlarini amalga oshirish
- 4 -qadam: Arduino robot
- 5 -qadam: Sinov
- 6 -qadam: Barcha qo'shimcha fayllar
Video: Raspberry Pi 4 yo'l belgilarini taniydigan robot: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Bu ko'rsatma mening universitet loyihamga asoslangan. Maqsad neyron tarmoq tasvirni tahlil qiladigan tizimni yaratish edi, so'ngra tanib olish asosida arduino robotiga Ros orqali harakatlanishini aytadi.
Masalan, agar o'ngga burilish belgisi aniqlansa, robot o'ngga buriladi, agar chapga burilish belgisi aniqlansa, robot chapga buriladi, agar tan olinmasa, robot oldinga davom etadi. Ishlatiladigan ma'lumotlar to'plami - bu INI (2019) ("Fur Neuroinformatik Instituti") yo'l belgilarining rasmiy tan olinishi, bu ma'lumotlar to'plamida 43 ta sinf mavjud, ammo faqat ikkitasi kerak; Ma'lumotlar to'plamidagi 00033 va 00034 papkalar chap va o'ng burilish belgilaridir.
1 -qadam: talablar
Ushbu loyihaga qo'yiladigan talablar quyidagilar:
Arduino robot. (asosan arduino uno, motorli haydovchi va motorlar) (agar siz robotdan foydalanmasangiz kerak emas)
Malinali pi 4.
Pi kamera.
Kerakli dasturiy ta'minot:
Python 3.
OpenCV 4.
Tensor oqim.
arduino IDE (agar siz robot ishlatmasangiz kerak emas)
Ros (agar siz robotdan foydalanmasangiz kerak emas)
Sizning sevimli python g'oyangiz nima bo'lishidan qat'i nazar (malina pi ustida men Thonny -dan foydalanaman).
OpenCV va Tensorflow -ni sozlash uchun Adrian ko'rsatmalariga amal qiling. Havola:
Men iloji boricha uning darsliklarini ko'rib chiqishni maslahat beraman, ular haqiqatan ham qiziqarli va ikkalasi ham boshlanuvchilar uchun, ham o'rtachalar uchun foydalidir.
2 -qadam: ma'lumotlarni o'qitish
Poyezd skripti 43 ta sinfdan 50 000 ga yaqin rasmlarni to'playdigan ma'lumotlar bazasiga kirish uchun mo'ljallangan. Skript turli xil kutubxonalar yordamida pythonda yozilgan: os - bu ma'lumotlar bazasi joylashgan to'g'ri katalogga python skriptini bog'lash uchun. Matplotlib - bu o'quv modelidagi ma'lumotlarni ko'rsatish uchun. Tensorflow va keras - bu sun'iy neyron tarmoq modelini yaratish uchun ishlatiladigan kutubxonalar, ular modelni loyihalash uchun ishlatiladi. Numpy - bu kutubxona tasvirlarni massivga aylantirish uchun mo'ljallangan bo'lib, undan keyin bashorat qilish uchun model orqali o'tish mumkin.
Ilova qilingan skript - ma'lumotlar bazasidan model yaratish uchun python kodi. Bu (5, 5) kirishga ega bo'lgan konvolyutsion 2D va relu faollashuvi, so'ngra birlashuvdan iborat bo'lib, bu bajarilgandan so'ng, kirish (3, 3) kirish bilan bir xil faollashtirish va birlashtirish bilan boshqa konvulsiyadan o'tadi. Bu oxirgi marta tekislashdan oldin sodir bo'ladi, keyin esa bu erda sinflar soniga zichlik qo'llaniladi, bu holda 43.
Keyingi qadam modelni kompilyatsiya qilish edi. Bu optimallashni o'rnatuvchi qism, sgd eng mos edi, chunki bu 1 -topshiriqda ishlatilgan optimizatorga o'xshar edi. Bundan tashqari, kompilyatorda zararni belgilash kerak, sparse_categorical_crossentropy yo'qotilishini tanlash eng mos keladi, chunki toifalar butun sonlar bo'lib, model har bir sinf uchun bashoratni 0 va 1. 1 oralig'ida o'zgaradi, bu 100% aniqlik.
Tuzuvchi tugallangach, tasvirni kirishini qayta ishlashni boshlash uchun modelni generatordan foydalanish kerak. Jenerator bir nechta qismlardan iborat: training_set - bu ta'lim uchun ishlatiladigan ma'lumotlar to'plamiga havola, steps_per_epoch - bu har bir davr uchun zarur bo'lgan bosqichlar, davrlar - bu dastur to'liq ma'lumotlar to'plami orqali necha marta takrorlanadi., validation_data - bu tekshirish uchun ishlatiladigan ma'lumotlar to'plamiga havola, validation_steps - har bir davr oxirida tekshirish uchun ishlatiladigan qadamlar soni.
Umuman olganda, ma'lumotlar bazasini to'liq tozalash har bir davr uchun to'liq bo'lishi kerak. Masalan, 1024 ta rasmlar to'plami quyidagilarni talab qiladi: partiyalar hajmi = 32, davrlar uchun bosqichlar = 32, davrlar = 1. Har bir qadam butun partiya hajmini o'z ichiga oladi, shuning uchun 32 ta partiya o'lchami bilan qadamlar 32 bo'ladi. Boshqa tomondan qo'lda, sinflar sonidan kattaroq hajmga ega bo'lish yaxshiroqdir, chunki agar partiya hajmi kichikroq bo'lsa, har bir qadam har bir sinfdan rasmni o'z ichiga olmaydi.
Model mashg'ulotni tugatgandan so'ng, matplotlib yordamida dastur natijalar grafigini tuzadi, bu mashg'ulotning boshidan oxirigacha bo'lgan tarixini ko'rsatadi. Grafika aniqlik, tekshirish aniqligi, yo'qotish va tekshirish yo'qolishidan iborat bo'lib, bu mashg'ulotlar qanday o'tganini ko'rsatish uchun har bir davrga bo'linadi. Oxirgi bosqich - modelni.h5 fayli sifatida saqlash, keyinchalik bashorat qilish jarayoniga kirish mumkin. Modelni saqlash shuni anglatadiki, bashorat qilish dasturi har safar bajarilganda, o'quv dasturini qayta ishga tushirish shart emas. O'qitish dasturi malina pi bo'yicha har bir davrda 10 minutgacha davom etishi mumkin.
Trening ssenariysi biriktirilgan:
3 -qadam: Pi kamera bashoratlarini amalga oshirish
Keyingi dastur bashorat va nashriyot skriptidir.
Birinchi bosqich - model.load () yordamida modelni yuklash. Ikkinchi bosqich - opencv yordamida pi kameradan kadrlarni takrorlash, so'ngra o'qish bosqichida ishlatiladigan kirish o'lchamlari bilan bir xil o'lchamdagi o'lchamlarni 32 x 32 piksel. Bu bajarilgandan so'ng, matrisani chiqaradigan model.predict () yordamida yangi o'lchovli ramka qo'yiladi, matritsaning har bir elementi 0 dan 1 gacha o'zgaruvchan bo'lib, elementlar indeksi u ko'rsatayotgan sinf bilan bir xil bo'ladi, shuning uchun birinchi element - bu birinchi sinf va raqam - bu tasvirning aniqligini bashorat qilish. Masalan,
QAYD: Agar siz robot tarafidan foydalanmasangiz. Faqat chiziqlarni olib tashlang:
"bema'ni import"
def -talker (yo'nalish):
xabar = String ()
pub = rospy. Publisher ('robot', String, queue_size = 10)
rospy.init_node ('gapiruvchi', anonim = To'g'ri)
xabar = yo'nalish
rospy.loginfo (xabar)
pub.publish (xabar)"
"gapiruvchi (yo'nalish)"
Pi kamera ssenariysi biriktirilgan.
4 -qadam: Arduino robot
Oxirgi qadam robot dasturining skriptidir.
Bu C ++ da yozilgan va arduino uno uchun.ino fayli. Dastur ros kutubxonasini talab qiladi, uni kutubxonalar menejerida topish mumkin. Bu import qilinganidan so'ng, misolli fayllar bor, men "miltillovchi" faylini kengaytirmoqchi bo'ldim, chunki bu menga kerakli narsaga o'xshash vazifani bajaradi. Quvvat uzilmaguncha, dastur uzluksiz ishlashni davom ettiradi, birinchi navbatda u mavzu robotini tinglaydi, agar u shu buyruqni qabul qilsa, buyruq nima deyilganini ko'rish uchun if iborasi bo'ladi. Agar buyruq chapda bo'lsa, skript chapga burilish usuli bilan ishlaydi, agar buyruq to'g'ri bo'lsa, u o'ngga burilish usulini ishga tushiradi, aks holda u oldinga siljish usulini ishlatadi. Bu uchta usul bir -biriga juda o'xshash, ular raqamli pimlarga LOW (er) yoki 100 (PWM) bo'lishini aytadilar, shuning uchun robot haydovchiga bir oz ruxsat berishini aytib, tez emas. kuchlanish o'chadi. Chiqish tartibi - bu robotni chapga yoki o'ngga burilishiga yoki oldinga siljishiga olib keladi, bu motorga keladigan kuchlanish yo'nalishiga bog'liq.
Arduino uchun.ino skript biriktirilgan.
5 -qadam: Sinov
Loyihaning boshidan oxirigacha rasmlar biriktirilgan. Birinchi rasmda mashg'ulotlar jarayoni ko'rsatilgan. Bu tugallangach, ishlab chiqarilgan modelning nusxasi ko'rsatiladi. Uchinchi rasmda o'quv skriptidan bashorat ko'rsatilgan. bu trening skriptining oxirgi bosqichi. Agar siz o'qish skriptlari joylashgan papkaga qarasangiz, grafik va model tuzilgan. Grafik bu erda 4 -rasmga o'xshash bo'lishi kerak, bu mashg'ulotning boshidan oxirigacha bo'lgan tarixini ko'rsatadi.
Yakuniy tasvir - pi kamera skriptini ishga tushirishda, bu - kameradan jonli efir. har bir kadrda bashorat qilinadi va terminalda bashorat qilinadi. Ramka kamera nimani ko'rayotganini ko'rsatadi.
Ushbu loyiha bo'yicha universitet hisobotim ilova qilingan. Loyihaning batafsil tafsilotlarini o'qing.
6 -qadam: Barcha qo'shimcha fayllar
Ulardan ba'zilari men yaratgan fayllarni sinab ko'rishdi.
Tavsiya:
Arduino - Maze echuvchi robot (MicroMouse) Devordan keyingi robot: 6 qadam (rasmlar bilan)
Arduino | Labirent hal qiluvchi robot (MicroMouse) Devordan keyingi robot: Xush kelibsiz, men Isaakman va bu mening birinchi robotim "Striker v1.0" Labirintdagi boshqa har qanday o'zgarishlar ham o'zgarishni talab qilishi mumkin
Robot robot: 5 qadam
Robot Robot: Ushbu loyihada biz Hummingbird Bit Premium to'plamidan foydalanamiz. Bu Bluetooth orqali yoki USB orqali ulangan simsiz robot bo'lishi mumkin
QACHON ROBOT - Pringles qayta ishlash Arduino robot: 19 qadam (rasmlar bilan)
QACHON ROBOT - Pringles Recycle Arduino Robot: Bu men ochgan robotning yana bir versiyasi, men 2018 yilda qurganman. Siz bu robotni 3d printersiz yasashingiz mumkin. Buning uchun faqat bitta banka Pringles, servo dvigatel, yaqinlik sensori, arduino va boshqa asboblarni sotib olish kifoya. Siz hamma narsani yuklab olishingiz mumkin
[DIY] O'rgimchak robot (Quad Robot, Quadruped): 14 qadam (rasmlar bilan)
[DIY] O'rgimchak robot (Quad Robot, Quadruped): Agar menga qo'shimcha yordam kerak bo'lsa, menga munosib xayriya qilganingiz ma'qul: http: //paypal.me/RegisHsu2019-10-10 yangilanishi: Yangi kompilyator o'zgaruvchan sonlarni hisoblash muammosiga olib keladi. Men kodni allaqachon o'zgartirdim. 2017-03-26
Roland CAMM belgilarini kesuvchi bilan sxemalarni qanday qilish kerak: 6 qadam
Qanday qilib Roland CAMM belgilarini kesuvchi bilan sxemalar yasash mumkin: PCB -larni uyda qirib tashlash juda ko'p zaharli kimyoviy chiqindilarni keltirib chiqaradi, lekin shunga qaramay, tenglikni yuborish shart emas. Vinil kesish sxemasini yaratish uchun Roland vinil to'saridan qanday foydalanish haqida ko'rsatma berilgan. Kerakli materiallar: CAMM-1 Servo GX