Mündəricat:

NAIN 1.0 - Arduino istifadə edən əsas humanoid robot: 6 addım
NAIN 1.0 - Arduino istifadə edən əsas humanoid robot: 6 addım

Video: NAIN 1.0 - Arduino istifadə edən əsas humanoid robot: 6 addım

Video: NAIN 1.0 - Arduino istifadə edən əsas humanoid robot: 6 addım
Video: Arduino Millis funksiyası 3 nümunə ilə izah edildi 2024, Iyul
Anonim
NAIN 1.0 - Arduino istifadə edən əsas humanoid robot
NAIN 1.0 - Arduino istifadə edən əsas humanoid robot

Nain 1.0-də əsasən 5 ayrılan modul olacaq-

1) Qol - servo vasitəsi ilə idarə oluna bilər.

2) Təkərlər - DC mühərrikləri ilə idarə oluna bilər.

3) Ayaq - Nain hərəkət üçün təkərlər və ya ayaqları arasında keçid edə biləcək.

4) Baş - Başı müxtəlif düyünlər üçün idarə oluna bilər.

5) Kamera modulu- Üz Tanıma Girişi üçün birləşdirilə bilər.

Bununla yanaşı, NAIN istifadəçilərlə danışa və onlarla ünsiyyət qura biləcək və vaxtını daxili saatı ilə göstərə bilər. Wi-Fi /Bluetooth istifadə edərək simsiz idarəetməyə sahib olacaq.

Addım 1: Lazım olan komponentlər

Lazım olan komponentlər
Lazım olan komponentlər
Lazım olan komponentlər
Lazım olan komponentlər
Lazım olan komponentlər
Lazım olan komponentlər
  1. Servo Motorlar -4
  2. Arduino Mega - 1
  3. Moruq Pi - 1
  4. Usb Kamera -1
  5. Dinamik -1
  6. DC mühərrikləri -2
  7. L293D -1
  8. Batareya dəsti - 1 ədəd
  9. Təkərlər -2
  10. Kastor Təkərləri - 2

Bunlarla yanaşı, bədəni düzəltmək üçün alüminium kvadrat zolaqlara və vintlərə və qoz -fındıqlara düzgün oturması üçün ehtiyacınız olacaq.

Addım 2: Bədən quruluşu

Bədən quruluşu
Bədən quruluşu

Gövdə quruluşu, asan yığılmasına kömək edəcək yüngül alüminium kvadrat çubuqlardan hazırlanacaq.

Hal -hazırda onları şəkildə göstərildiyi kimi yığın və servo motorların qollara bağlanması üçün uyğun yerləri kəsin.

Dibinə altıbucaqlı bir taxta baza yapışdırın.

Taxta bazanın altına, hər hansı bir xətt izləyicisi robotunda etdiyimiz kimi DC mühərrikləri və təkərləri bağlayın.

Maraqlısı budur ki, iki təkər əlavə edin- biri robotun ön tərəfində, digəri isə arxada.

Addım 3: Kablolama və Kodlaşdırma

Kablolama və Kodlaşdırma
Kablolama və Kodlaşdırma
Kablolama və Kodlaşdırma
Kablolama və Kodlaşdırma

Fərqli modulları bağlamaq üçün bu hissədə əlavə edilmiş kodlara baxın.

Əvvəlcə hər bir modulu müstəqil kodlarla sınadıq, sonra hamısını bir yerə yığdıq və bluetooth modulu istifadə edərək təkərlərin və qolların hərəkətini idarə etdik.

Addım 4: Raspberry Pi və Görüntü Tanıma

Raspberry Pi və Şəkil Tanıma
Raspberry Pi və Şəkil Tanıma
Raspberry Pi və Şəkil Tanıma
Raspberry Pi və Şəkil Tanıma

Şəkil Tanıma USB Kamera və Raspberry Pi istifadə edərək həyata keçirilir.

Bunun üçün Pi -yə OPEN CV kitabxanasını quraşdırmalısınız.

Bunu buradan edə bilərsiniz-https://github.com/jabelone/OpenCV-for-Pi

Sonra haar kaskadından istifadə edərək görüntü tanıma etməlisiniz.

Bunu buradan edə bilərsiniz -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Yuxarıdakı linki öyrəndikdən və izlədikdən sonra, aşağıda yapışdırdığım istifadə etdiyim son kodda bəzi dəyişikliklər etdim -

DATASET JENERATORU:

importcv2

cam = cv2. VideoCapture (0)

detektor = cv2. CascadeClassifier ('Təsnifatçılar/face.xml')

i = 0

ofset = 50

ad = raw_input ('id nömrənizi daxil edin')

Doğru halda:

ret, im = cam.read ()

boz = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

sifətlər = detector.detectMultiScale (boz, miqyaslıFaktor = 1.2, minQonşular = 5, minSize = (100, 100), bayraqlar = cv2. CASCADE_SCALE_IMAGE)

üzlərdə (x, y, w, h) üçün:

i = i+1

cv2.imwrite ("dataSet/face."+ad+'.'+str (i)+".jpg", boz [y-ofset: y+h+ofset, x-offset: x+w+offset])

cv2.dörtgen (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

cv2.imshow ('im', im [y-ofset: y+h+ofset, x-offset: x+w+offset])

əgər cv2.waitKey (100) & 0xFF == ord ('q'):

fasilə

Nümunə sayı 20 -dən çox olarsa # fasilə

elif (i> 20):

fasilə

cam.release ()

cv2.destroyAllWindows ()

Doğrulama üçün istifadə ediləcək fotoşəkillərinizdən ibarət bir məlumat toplusu yaradacaq.

MƏŞĞƏR:

importcv2, os

np kimi numpy idxal edin

PIL idxal Şəkilindən

tanıyıcı = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Təsnifatçılar/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

yol = 'dataSet'

def get_images_and_labels (yol):

image_paths = [os.path.join (yol, f) üçün os.listdir (yol)]

# şəkillərdə üz şəkilləri olacaq

şəkillər =

# etiketdə görüntüyə təyin edilmiş etiket olacaq

etiketlər =

image_paths -da image_path üçün:

# Şəkli oxuyun və boz rəngə çevirin

image_pil = Image.open (image_path).convert ('L')

# Şəkil formatını numpy massivinə çevirin

image = np.array (image_pil, 'uint8')

# Şəklin etiketini alın

nbr = int (os.path.split (image_path) [-1].split (".") [1].dəyişdir ("face-", ""))

#nbr = int (''. qoşul (str (ord (c)) in c in nbr))

çap nbr

# Şəkildəki üzü aşkar edin

üzlər = faceCascade.detectMultiScale (şəkil)

# Üz aşkarlanarsa, üzü şəkillərə və etiketi etiketlərə əlavə edin

üzlərdə (x, y, w, h) üçün:

images.append (şəkil [y: y + h, x: x + w])

labels.append (nbr)

cv2.imshow ("Tərcümə dəstinə üzlər əlavə olunur …", şəkil [y: y + h, x: x + w])

cv2.waitKey (10)

# şəkillər siyahısını və etiket siyahısını qaytarın

şəkilləri, yazıları qaytarın

şəkillər, etiketlər = get_images_and_labels (yol)

cv2.imshow ('test', şəkillər [0])

cv2.waitKey (1)

tanıyıcı.train (şəkillər, np.array (etiketlər))

tanıyıcı.save ('məşqçi/məşqçi.yml')

cv2.destroyAllWindows ()

DEDEKTOR

importcv2

np kimi numpy idxal edin

id id

c = 0

tanıyıcı = cv2.face.createLBPHFaceRecognizer ()

tanıyıcı yük ('trainer/trainer.yml')

cascadePath = "Təsnifatçılar/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

font ölçüsü = 1

fontcolor = (255, 255, 255)

Doğru halda:

ret, im = cam.read ()

boz = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

üzlər = faceCascade.detectMultiScale (boz, 1.2, 5)

üzlərdə (x, y, w, h) üçün:

cv2.dörtgen (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

Id = tanıyıcı.predikt (boz [y: y+h, x: x+w])

əgər (Id <70):

əgər (Id == 1):

Id = "Shashank"

elif (Id == 2):

əgər (c == 0):

Id = "Şivam"

c = c+1

os.system ("Xüsusi" Xoş gəldiniz Shivam Girişinə icazə verildi "")

başqa:

Id = "Şivam"

başqa:

Id = "Naməlum"

cv2.putText (im, str (Id), (x, y+h), fontface, fontscale, fontcolor)

cv2.imshow ('im', im)

əgər cv2.waitKey (10) & 0xFF == ord ('q'):

fasilə

cam.release ()

cv2.destroyAllWindows ()

Addım 5: LCD və Dinamik

Həm də I2C LED Ekran və dinamikdən istifadə etdim.

LED Arduino Mega vasitəsilə idarə olunur və kodu son kodda verilir.

Dinamik üçün, Raspberry Pi ilə bağlıdır və eSpeak Utility -dən istifadə edir.

İstinadını burada tapa bilərsiniz-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

Addım 6: Son addımlar

Hər şeyi yığın və partlamağa hazır olun.

Tövsiyə: