Mundarija:
- 1 -qadam: talab qilinadigan narsalar:
- 2 -qadam: Ish printsipi:
- 3 -qadam: Kirish va ishlov berish:
- 4 -qadam:
- 5 -qadam:
- 6 -qadam: ishlov berish qismi:
- 7 -qadam:
- 8 -qadam:
- 9 -qadam:
- 10 -qadam:
- 11 -qadam:
- 12 -qadam: HARAKATNI NAZORAT:
- 13 -qadam:
Video: Gesture Hawk: Tasvirni qayta ishlashga asoslangan interfeys yordamida qo'lda boshqariladigan robot: 13 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Gesture Hawk TechEvince 4.0 da tasvirni qayta ishlashga asoslangan oddiy inson-mashina interfeysi sifatida namoyish etildi. Uning foydasi shundaki, differentsial haydash printsipida ishlaydigan robotli mashinani boshqarish uchun qo'lqopdan boshqa qo'shimcha datchiklar yoki taqiladigan kiyimlar kerak emas. Bu yo'riqnomada biz sizni tizimda ishlatiladigan ob'ektlarni kuzatish va imo -ishoralarni aniqlash printsipi bilan tanishtiramiz. Ushbu loyihaning manba kodini Github-dan havola orqali yuklab olish mumkin:
1 -qadam: talab qilinadigan narsalar:
- L298N dvigatel uchun haydovchi
- DC motorlar
- Robotli avtomobil shassisi
- Arduino Uno
- LiPo batareyalari
- Arduino USB kabeli (uzun)
- Python bilan OpenCV kutubxonasi
2 -qadam: Ish printsipi:
Gesture Hawk - bu uch bosqichli ishlov berish tizimi, yuqoridagi diagrammada ko'rib turganingizdek.
3 -qadam: Kirish va ishlov berish:
Kirish yozuvini yuqoridagi diagrammada berilgan kengroq toifalarda tushunish mumkin.
Qo'l shaklini atrof -muhitdan ajratib olish uchun biz ma'lum bir rangni niqoblash yoki filtrlashimiz kerak (bu holda - binafsha rang ko'k). Buning uchun siz tasvirni BGR -dan HSV formatiga o'zgartirishingiz kerak, uni quyidagi kod parchasi yordamida bajarish mumkin.
hsv = cv2.cvtColor (ramka, cv2. COLOR_BGR2HSV)
Endi, keyingi qadam - qo'lni niqob yoki filtr orqali chiqarib olish uchun kerakli HSV parametrlari diapazonini topish. Buning uchun eng yaxshi usul - mos diapazonni topish uchun treklardan foydalanish. Mana bu loyiha uchun ishlatiladigan trekka barining skrinshoti.
4 -qadam:
5 -qadam:
Bu erda niqob qurilishi uchun shunday yo'l paneli yaratish uchun quyida berilgan kod parchasi mavjud:
cv2 import qilish
npdef hech narsa (x) sifatida import qilish: cv2.namedWindow ('rasm') img = cv2. VideoCapture (0) cv2.createTrackbar ('l_H', 'tasvir', 110, 255, hech narsa) cv2.createTrackbar ('l_S ',' tasvir ', 50, 255, hech narsa) cv2.createTrackbar (' l_V ',' tasvir ', 50, 255, hech narsa) cv2.createTrackbar (' h_H ',' tasvir ', 130, 255, hech narsa) cv2. createTrackbar ('h_S', 'tasvir', 255, 255, hech narsa) cv2.createTrackbar ('h_V', 'tasvir', 255, 255, hech narsa) while (1): _, frame = img.read ()
hsv = cv2.cvtColor (ramka, cv2. COLOR_BGR2HSV) lH = cv2.getTrackbarPos ('l_H', 'tasvir') lS = cv2.getTrackbarPos ('l_S', 'rasm') lV = cv2.getTrack_Pos (' 'tasvir') hH = cv2.getTrackbarPos ('h_H', 'tasvir') hS = cv2.getTrackbarPos ('h_S', 'tasvir') hV = cv2.getTrackbarPos ('h_V', 'rasm') pastki_R = np. qator ([lH, lS, lV]) yuqori_R = np.array ([hH, hS, hV]) niqob = cv2.inRange (hsv, pastki_R, yuqori_R) res = cv2.bitwise_and (ramka, ramka, niqob = niqob) cv2.imshow ('image', res) k = cv2.waitKey (1) & 0xFF if k == 27: break cv2.destroyAllWindows ()
6 -qadam: ishlov berish qismi:
Xo'sh, biz qo'lning geometrik shaklini oldik, endi uni ishlatish va qo'l harakatini aniqlash uchun foydalanish vaqti keldi.
Qavariq korpus:
Qavariq korpus orqali biz shaklning o'ta nuqtalari orqali taxminiy ko'pburchakni o'rnatishga harakat qilamiz. Chapdagi rasmda qavariq nuqtalari qizil bilan belgilangan shaklga berilgan taxminiy ko'pburchak ko'rsatilgan.
Qavariq nuqtalar - bu taxmin qilingan ko'pburchakning eng chetida joylashgan shakldagi nuqtalar. Ammo, qavariq korpus bilan bog'liq muammo shundaki, uni hisoblash paytida biz barcha qavariq nuqtalarni olamiz, lekin bizga kerak bo'lgan - ko'k uchli qavariq nuqta. Sizga nima uchun kerakligini aytamiz.
Bu qavariq nuqtani topish uchun biz eng yaqin tomoni bo'lgan qavariq nuqtaning masofasini topish uchun perpendikulyar masofa formulasini qo'llashimiz kerak. Biz ko'rdikki, ko'k nuqta yon tomondan maksimal masofaga ega va shuning uchun biz bu nuqtani olamiz.
7 -qadam:
8 -qadam:
Keyinchalik, bosh barmog'ining uchini (yoki o'ta nuqtasini) gorizontal bilan bu qavariq nuqtaga bog'laydigan chiziqning moyilligini topishimiz kerak.
9 -qadam:
Yuqoridagi holatda, a burchagi 0 dan 90 darajagacha bo'lishi kerak, agar imo -ishora chapga burilgan bo'lsa. Ya'ni tan (a) ijobiy bo'lishi kerak.
10 -qadam:
Yuqoridagi holatda, a ishorasi o'ngga burilish uchun bo'lsa, a burchagi 180 dan 90 darajagacha bo'lishi kerak. Ya'ni tan (a) manfiy bo'lishi kerak.
Agar Tan a ijobiy bo'lsa, chapga burilish. Agar Tan a salbiy bo'lsa, u holda o'ngga burilish. Endi, eng muhim to'xtatish buyrug'ini qanday aniqlashni ko'rish vaqti keldi.
Bu erda ma'lum bir nisbat (urish va sinov orqali topilgan) tekshiriladi va maksimal hollarda bu masofalar nisbati aynan shu diapazonda qoladi.
11 -qadam:
Nihoyat, old harakat harakati OpenCV -da matchShape () funktsiyasi yordamida tahlil qilinadi. Bu funksiya ikkita hisoblagichning shaklini solishtiradi, bunda yuqoridagi rasmdagi uchburchakni o'rgatish misoli bilan yuqoridagi rasmning chap tomonidagi kontur. Ikki kontur shaklidagi o'zgarishlarga ko'ra, u 0 dan 2 yoki 3 gacha bo'lgan qiymatni qaytaradi. Xuddi shu kontur uchun u 0 qaytaradi.
ret = cv2.matchShapes (cnt1, cnt2, 1, 0.0)
Bu erda cn1 va cnt2 - solishtiriladigan ikkita kontur.
12 -qadam: HARAKATNI NAZORAT:
PySerial:
Biz Python PySerial kutubxonasidan foydalanib, qayta ishlangan ma'lumotlarni Arduino Uno -ga Arduino USB kabeli orqali uzatiladigan ketma -ket ma'lumotlarga aylantirdik. Opencv orqali ma'lum bir imo-ishorani aniqlagandan so'ng, biz "x" deb aytadigan vaqtinchalik o'zgaruvchini yaratdik va unga noyob qiymat berdik va uni quyidagi buyruq satri yordamida ketma-ket kirishga aylantirdik:-
Pyserial kutubxonasini import qilish uchun serial #ni import qiling
serial. Serial ('', baudrate = '9600', timeout = '0') # ketma -ket chiqishni sozlash.. PORT NAME - bu ma'lumot uzatiladigan port nomi.
serial.write (b'x ') # x - portga yuborilgan alifboโฆ b - bu satrni baytga aylantirish.
Arduino -ni qayta ishlash:
Endi arduino shunday kodlanganki, har bir ketma -ket ketma -ket robotning silliq harakati uchun javobgar bo'lgan har qanday ketma -ket chiziqli xaritada ko'rsatiladi (masalan, chap ishorani aniqlash dvigatellarni o'ngga burilishga olib keladi). Kodni to'g'ri o'zgartirish orqali biz har bir g'ildirakning harakatini tarjimali va aylanma tarzda nazorat qila olamiz.
L298N dvigatel haydovchisi:-
Dvigatel haydovchisi vosita va quvvat manbai o'rtasida vositachi sifatida ishlatiladi, chunki past kuchlanish ko'rsatkichlari tufayli dvigatellarni to'g'ridan -to'g'ri quvvatlantirish mumkin emas. Li-Po batareyasi 12V kirish terminaliga ulangan va biz arduino 5V soketini dvigatel haydovchisining 5V kirish rozetkasiga ulaymiz, nihoyat Li-Po erini, shuningdek, dvigatel drayverining umumiy rozetkasida arduino.
Endi dvigatellarning terminallari berilgan rozetkalarga ulangan. Nihoyat, biz dvigatel uchun kirish terminallarini arduino -ning PWM chiqish rozetkalariga ulaymiz, bu esa harakatning aylanish va tarjima jihatlarini aniq tanlash imkonini beradi.
Tavsiya:
Rasmni qayta ishlashga asoslangan yong'inni aniqlash va o'chirish tizimi: 3 qadam
Rasmni qayta ishlashga asoslangan yong'inni aniqlash va o'chirish tizimi: Salom do'stlar, bu Arduino yordamida tasvirni qayta ishlashga asoslangan yong'inni aniqlash va o'chirish tizimi
2.2 TFT yordamida qo'lda qayta quti o'yin konsoli: 6 qadam
2.2 TFT yordamida qo'lda qayta qutiga solingan o'yin konsoli: 2.2 "TFT LCD va Raspberry Pi 0 W va GPIO tugmachalari yordamida qo'lda qayta qutiga o'rnatilgan o'yin konsoli uchun ko'rsatmalar. Siz bu youtube videosini ko'rishingiz mumkin. Barcha qismlarni oling B. Qismlarni bir -biriga lehimlang
Tasvirni qayta ishlashga kirish: Pixy va uning muqobillari: 6 qadam
Tasvirni qayta ishlashga kirish: Pixy va uning muqobillari: Ushbu maqolada biz Raqamli tasvirni qayta ishlash (DIP) ma'nosini va rasm yoki videolarni qayta ishlash uchun Pixy kabi apparat va boshqa vositalardan foydalanish sabablarini tushuntiramiz. Maqolaning oxirida siz bilib olasiz: raqamli tasvir qanday shakllanadi.
Batareya bilan ishlaydigan elektronikani ACda ishlashga aylantirish: 4 qadam (rasmlar bilan)
Batareya bilan ishlaydigan elektronikani ACda ishlashga aylantiring: Biz ko'p elektronikani quvvatlantirish uchun batareyalardan foydalanamiz. Ammo batareyali qurilmalar ham bor, ular doimo ko'chma bo'lishi shart emas. Bir misol, o'g'limning akkumulyator bilan ishlaydigan burilishidir. U ko'chirilishi mumkin, lekin odatda u erda qoladi
Yo'lda temir yo'lda yuqori temir yo'lni qanday o'rnatish kerak: 10 qadam (rasmlar bilan)
Yo'lda temir yo'lda yuqori tezlikda harakatlanadigan transport vositasini qanday o'rnatish kerak: xavfsizlik choralari: temir yo'lda yuqori temir yo'l yuk mashinasini o'rnatgan va yordam berayotgan odam ko'rinadigan bo'lishi uchun yuqori ko'rinadigan kiyimlarni (masalan, yelek, kozok, palto) kiyishi kerak. yaqinlashib kelayotgan tirbandlik tufayli. Qo'lqop va qo'lqop ham kiyish kerak