Satura rādītājs:

NAIN 1.0 - pamata humanoīdu robots, izmantojot Arduino: 6 soļi
NAIN 1.0 - pamata humanoīdu robots, izmantojot Arduino: 6 soļi

Video: NAIN 1.0 - pamata humanoīdu robots, izmantojot Arduino: 6 soļi

Video: NAIN 1.0 - pamata humanoīdu robots, izmantojot Arduino: 6 soļi
Video: Godzilla (2014) - All Godzilla Scenes HD 1080p 2024, Jūlijs
Anonim
NAIN 1.0 - pamata humanoīdu robots, izmantojot Arduino
NAIN 1.0 - pamata humanoīdu robots, izmantojot Arduino

Nain 1.0 pamatā būs 5 noņemami moduļi-

1) Roka - kuru var vadīt, izmantojot servoservisus.

2) Riteņi - kurus var vadīt ar līdzstrāvas motoriem.

3) Kāja - Nain varēs pārvietoties starp riteņiem vai kājām.

4) Galva - tās galvu var kontrolēt dažādiem nod.

5) Kameras modulis- kuru var saslēgt, lai piekļūtu sejas atpazīšanai.

Kopā ar šo NAIN varēs runāt un mijiedarboties ar lietotājiem, kā arī parādīt laiku pēc iebūvētā pulksteņa. Tam būs bezvadu vadība, izmantojot Wi-Fi /Bluetooth.

1. darbība. Nepieciešamās sastāvdaļas

Nepieciešamās sastāvdaļas
Nepieciešamās sastāvdaļas
Nepieciešamās sastāvdaļas
Nepieciešamās sastāvdaļas
Nepieciešamās sastāvdaļas
Nepieciešamās sastāvdaļas
  1. Servomotori -4
  2. Arduino Mega - 1
  3. Raspberry Pi - 1
  4. USB kamera -1
  5. Skaļrunis -1
  6. Līdzstrāvas motori -2
  7. L293D -1
  8. Akumulators - 1
  9. Riteņi -2
  10. Ritentiņi - 2

Kopā ar tiem jums būs nepieciešamas kvadrātveida alumīnija sloksnes, lai korpuss un skrūves un uzgriežņi būtu pareizi piemēroti.

2. solis: ķermeņa struktūra

Ķermeņa uzbūve
Ķermeņa uzbūve

Virsbūves konstrukcija būs izgatavota no viegliem alumīnija kvadrātveida stieņiem, kas palīdzēs to viegli salikt.

Pašlaik salieciet tos, kā parādīts attēlā, kā arī izgrieziet piemērotas vietas, lai servomotori tiktu pievienoti rokām.

Apakšā piestipriniet sešstūra koka pamatni.

Zem koka pamatnes piestipriniet līdzstrāvas motorus un riteņus, kā mēs to darām jebkurā līnijas sekotājrobotā.

Interesanti, ka pievienojiet divus ritentiņus- vienu robota priekšpusē un otru aizmugurē.

3. darbība: elektroinstalācija un kodēšana

Elektroinstalācija un kodēšana
Elektroinstalācija un kodēšana
Elektroinstalācija un kodēšana
Elektroinstalācija un kodēšana

Lai savienotu dažādus moduļus, skatiet šajā daļā pievienotos kodus.

Pirmkārt, mēs pārbaudījām katru moduli, izmantojot atsevišķus kodus, un pēc tam mēs tos visus apvienojām vienā un kontrolējām riteņu un ieroču kustību, izmantojot Bluetooth moduli.

4. darbība: Raspberry Pi un attēla atpazīšana

Raspberry Pi un attēlu atpazīšana
Raspberry Pi un attēlu atpazīšana
Raspberry Pi un attēlu atpazīšana
Raspberry Pi un attēlu atpazīšana

Attēlu atpazīšana tiek veikta, izmantojot USB kameru un Raspberry Pi.

Lai to izdarītu, savā Pi būs jāinstalē OPEN CV bibliotēka.

To var izdarīt šeit-https://github.com/jabelone/OpenCV-for-Pi

Tad jums būs jāveic attēla atpazīšana, izmantojot haar kaskādi.

To var izdarīt šeit -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Pēc iepriekš minētās saites izpētīšanas un pēc tam esmu veicis dažas izmaiņas manā izmantotajā galīgajā kodā, ko ievietoju tālāk -

DATU KOPAS ĢENERATORS:

importcv2

cam = cv2. VideoCapture (0)

detektors = cv2. CascadeClassifier ('Classifiers/face.xml')

i = 0

nobīde = 50

name = raw_input ('ievadiet savu ID')

kamēr taisnība:

ret, im = cam.read ()

pelēks = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

sejas = detektors.detectMultiScale (pelēks, scaleFactor = 1,2, minKaimiņi = 5, minSize = (100, 100), karogi = cv2. CASCADE_SCALE_IMAGE)

(x, y, w, h) sejās:

i = i+1

cv2.imwrite ("dataSet/face."+nosaukums+'.'+str (i)+".jpg", pelēks [y-nobīde: y+h+nobīde, x-nobīde: x+w+nobīde])

cv2. taisnstūris (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

cv2.imshow ('im', im [y-nobīde: y+h+nobīde, x-nobīde: x+w+nobīde])

ja cv2.waitKey (100) & 0xFF == ord ('q'):

pārtraukums

# pārtraukums, ja izlases numurs ir lielāks par 20

elifs (i> 20):

pārtraukums

cam.release ()

cv2.destroyAllWindows ()

Tas izveidos jūsu fotoattēlu datu kopu, kas tiks izmantota autentifikācijai.

TRENERIS:

importcv2, os

importēt numpy kā np

no PIL importa attēla

atpazītājs = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Klasifikatori/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (ceļš):

image_paths = [os.path.join (ceļš, f) f failam os.listdir (ceļš)]

# attēlos būs sejas attēli

attēli =

# uzlīmes saturēs attēlam piešķirto etiķeti

iezīmes =

image_path in image_paths:

# Izlasiet attēlu un pārveidojiet to pelēktoņos

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

# Konvertējiet attēla formātu par masīvu masīvu

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

# Iegūstiet attēla etiķeti

nbr = int (os.path.split (image_path) [-1].split (".") [1].replace ("face-", ""))

#nbr = int ("". pievienoties (str (ord (c)) c c nbr))

drukāt nr

# Atklājiet seju attēlā

sejas = faceCascade.detectMultiScale (attēls)

# Ja tiek konstatēta seja, pievienojiet seju attēliem un etiķeti etiķetēm

(x, y, w, h) sejās:

images.append (attēls [y: y + h, x: x + w])

labels.append (nbr)

cv2.imshow ("Seju pievienošana transinga kopai …", attēls [y: y + h, x: x + w])

cv2.waitKey (10)

# atgrieziet attēlu sarakstu un etiķešu sarakstu

atgriezt attēlus, etiķetes

attēli, iezīmes = get_images_and_labels (ceļš)

cv2.imshow ('tests', attēli [0])

cv2.waitKey (1)

atpazīšanas trauks (attēli, np.masīvs (etiķetes))

atpazinējs.save ('trainer/trainer.yml')

cv2.destroyAllWindows ()

Detektors

importcv2

importēt numpy kā np

importēt OS

c = 0

atpazīšanas ierīce = cv2.face.createLBPHFaceRecognizer ()

tunnistajs.load ('trainer/trainer.yml')

cascadePath = "Klasifikatori/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontu skala = 1

fontcolor = (255, 255, 255)

kamēr taisnība:

ret, im = cam.read ()

pelēks = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

sejas = faceCascade.detectMultiScale (pelēks, 1.2, 5)

(x, y, w, h) sejās:

cv2. taisnstūris (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

Id = atpazītājs.prognozēt (pelēks [y: y+h, x: x+w])

ja (Id <70):

ja (Id == 1):

Id = "Shashank"

elif (Id == 2):

ja (c == 0):

Id = "Šivams"

c = c+1

os.system ("espeak 'Welcome Shivam Access Granted'")

cits:

Id = "Šivams"

cits:

Id = "Nezināms"

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

cv2.imshow ('esmu', im)

ja cv2.waitKey (10) & 0xFF == ord ('q'):

pārtraukums

cam.release ()

cv2.destroyAllWindows ()

5. solis: LCD un skaļrunis

Esmu izmantojis arī I2C LED displeju un skaļruni.

LED tiek kontrolēts, izmantojot Arduino Mega, un tā kods ir norādīts galīgajā kodā.

Skaļrunim tas ir savienots ar Raspberry Pi un izmanto eSpeak Utility.

Tās atsauci varat atrast šeit-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

6. darbība: pēdējie soļi

Salieciet visu un sagatavojieties sprādzienam.

Ieteicams: