Turinys:

NAIN 1.0 - pagrindinis humanoidinis robotas naudojant „Arduino“: 6 žingsniai
NAIN 1.0 - pagrindinis humanoidinis robotas naudojant „Arduino“: 6 žingsniai

Video: NAIN 1.0 - pagrindinis humanoidinis robotas naudojant „Arduino“: 6 žingsniai

Video: NAIN 1.0 - pagrindinis humanoidinis robotas naudojant „Arduino“: 6 žingsniai
Video: Fooocus Stable Diffusion Web UI - Use SDXL Like You Are Using Midjourney - Easy To Use High Quality 2024, Lapkritis
Anonim
NAIN 1.0 - pagrindinis „Humanoid“robotas naudojant „Arduino“
NAIN 1.0 - pagrindinis „Humanoid“robotas naudojant „Arduino“

„Nain 1.0“iš esmės turės 5 nuimamus modulius-

1) Rankena - kurią galima valdyti naudojant servoservus.

2) Ratai - kuriuos galima valdyti nuolatinės srovės varikliais.

3) Kojos - Nain galės judėti tarp ratų ar kojų.

4) Galva - jos galvą galima valdyti įvairiems linktelėjimams.

5) Kameros modulis, kurį galima prijungti prie veido atpažinimo prieigos.

Kartu su tuo NAIN galės kalbėti ir bendrauti su vartotojais ir parodyti laiką pagal savo įmontuotą laikrodį. Jame bus belaidis valdymas naudojant „Wi-Fi“/„Bluetooth“.

1 žingsnis: reikalingi komponentai

Reikalingi komponentai
Reikalingi komponentai
Reikalingi komponentai
Reikalingi komponentai
Reikalingi komponentai
Reikalingi komponentai
  1. Servo varikliai -4
  2. „Arduino Mega“- 1
  3. Raspberry Pi - 1
  4. USB kamera -1
  5. Pranešėjas -1
  6. DC varikliai -2
  7. L293D -1
  8. Akumuliatorius - 1
  9. Ratai -2
  10. Ratukai - 2

Kartu su šiomis medžiagomis jums reikės kvadratinių aliuminio juostelių, kad korpusas, sriegiai ir veržlės būtų tinkamai pritvirtinti.

2 žingsnis: Kūno struktūra

Kūno struktūra
Kūno struktūra

Kėbulo konstrukcija bus pagaminta iš lengvų aliuminio kvadratinių strypų, kurie padės jį lengvai surinkti.

Nuo šiol surinkite juos taip, kaip parodyta paveikslėlyje, taip pat iškirpkite tinkamas vietas servo varikliams, kurie bus pritvirtinti prie rankų.

Apačioje pritvirtinkite šešiakampį medinį pagrindą.

Po mediniu pagrindu pritvirtinkite nuolatinės srovės variklius ir ratus, kaip tai darome bet kuriame linijos sekimo robote.

Įdomu tai, kad pridėkite du ratukus- vieną priekyje, kitą- roboto gale.

3 žingsnis: laidų prijungimas ir kodavimas

Laidai ir kodavimas
Laidai ir kodavimas
Laidai ir kodavimas
Laidai ir kodavimas

Norėdami prijungti įvairius modulius, vadovaukitės šioje dalyje pateiktais kodais.

Pirmiausia mes išbandėme kiekvieną modulį naudodami atskirus kodus, o tada sujungėme juos visus į vieną ir valdėme ratų ir ginklų judėjimą naudodami „Bluetooth“modulį.

4 žingsnis: „Raspberry Pi“ir vaizdo atpažinimas

„Raspberry Pi“ir vaizdo atpažinimas
„Raspberry Pi“ir vaizdo atpažinimas
„Raspberry Pi“ir vaizdo atpažinimas
„Raspberry Pi“ir vaizdo atpažinimas

Vaizdo atpažinimas atliekamas naudojant USB kamerą ir „Raspberry Pi“.

Norėdami tai padaryti, „Pi“turėsite įdiegti OPEN CV biblioteką.

Tai padaryti galite čia-https://github.com/jabelone/OpenCV-for-Pi

Tada turėsite atlikti vaizdo atpažinimą naudodami haar kaskadą.

Tai galite padaryti čia -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Išstudijavęs aukščiau esančią nuorodą ir atlikęs keletą pakeitimų galutiniame naudojamame kode, kurį įklijuoju žemiau -

DUOMENŲ KOMPLEKTAS:

importcv2

cam = cv2. VideoCapture (0)

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

i = 0

poslinkis = 50

name = raw_input ('įveskite savo ID')

nors tiesa:

ret, im = cam.read ()

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

veidai = detektorius.detectMultiScale (pilka, scaleFactor = 1,2, min. Kaimynai = 5, minSize = (100, 100), vėliavos = cv2. CASCADE_SCALE_IMAGE)

(x, y, w, h) veiduose:

i = i+1

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

cv2. stačiakampis (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

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

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

pertrauka

# pertrauka, jei mėginio skaičius yra didesnis nei 20

elifas (i> 20):

pertrauka

cam.release ()

cv2.destroyAllWindows ()

Tai sukurs jūsų nuotraukų duomenų rinkinį, kuris bus naudojamas autentifikavimui.

TREENERIS:

importcv2, os

importuoti numpy kaip np

iš PIL importo vaizdo

atpažinimo priemonė = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Klasifikatoriai/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (kelias):

image_paths = [os.path.join (kelias, f) f fone os.listdir (kelias)]

# paveikslėlyje bus veido atvaizdai

vaizdai =

# etikečių bus etiketė, priskirta vaizdui

etiketės =

„image_path“, esantį „image_paths“:

# Perskaitykite vaizdą ir konvertuokite į pilkos spalvos skalę

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

# Konvertuokite vaizdo formatą į numpy masyvą

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

# Gaukite vaizdo etiketę

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

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

spausdinti Nr

# Aptikite veidą paveikslėlyje

veidai = faceCascade.detectMultiScale (vaizdas)

# Jei aptinkamas veidas, pridėkite veidą prie vaizdų, o etiketę - prie etikečių

(x, y, w, h) veiduose:

images.append (vaizdas [y: y + h, x: x + w])

labels.append (nbr)

cv2.imshow ("Veidų pridėjimas prie transingo rinkinio …", vaizdas [y: y + h, x: x + w])

cv2.waitKey (10)

# grąžinkite vaizdų sąrašą ir etikečių sąrašą

grąžinti paveikslėlius, etiketes

vaizdai, etiketės = get_images_and_labels (kelias)

cv2.imshow ('testas', vaizdai [0])

cv2.waitKey (1)

atpažinimo įrenginys (vaizdai, np.masyvas (etiketės))

atpažintuvas.save ('trainer/trainer.yml')

cv2.destroyAllWindows ()

DETEKTORIUS

importcv2

importuoti numpy kaip np

importuoti

c = 0

atpažinimo priemonė = cv2.face.createLBPHFaceRecognizer ()

atpažinimo priemonė.load ('trainer/trainer.yml')

cascadePath = "Klasifikatoriai/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

šriftų skalė = 1

fontcolor = (255, 255, 255)

nors tiesa:

ret, im = cam.read ()

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

veidai = faceCascade.detectMultiScale (pilka, 1,2, 5)

(x, y, w, h) veiduose:

cv2. stačiakampis (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

Id = atpažinimo priemonė. Numatyti (pilka [y: y+h, x: x+w])

jei (Id <70):

jei (Id == 1):

Id = "Shashank"

elifas (Id == 2):

jei (c == 0):

Id = "Shivam"

c = c+1

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

Kitas:

Id = "Shivam"

Kitas:

Id = "Nežinoma"

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

cv2.imshow ('im', im)

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

pertrauka

cam.release ()

cv2.destroyAllWindows ()

5 žingsnis: LCD ir garsiakalbis

Aš taip pat naudojau I2C LED ekraną ir garsiakalbį.

Šviesos diodas valdomas naudojant „Arduino Mega“ir jo kodas pateikiamas galutiniame kode.

Garsiakalbiui jis prijungtas prie „Raspberry Pi“ir naudoja „eSpeak Utility“.

Jo nuorodą rasite čia-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

6 žingsnis: paskutiniai žingsniai

Surinkite viską ir pasiruoškite sprogimui.

Rekomenduojamas: