Sisällysluettelo:

NAIN 1.0 - Basic Humanoid -robotti Arduinon avulla: 6 vaihetta
NAIN 1.0 - Basic Humanoid -robotti Arduinon avulla: 6 vaihetta

Video: NAIN 1.0 - Basic Humanoid -robotti Arduinon avulla: 6 vaihetta

Video: NAIN 1.0 - Basic Humanoid -robotti Arduinon avulla: 6 vaihetta
Video: Робот за 20$ (видео №14) 2024, Marraskuu
Anonim
NAIN 1.0 - Basic Humanoid -robotti, joka käyttää Arduinoa
NAIN 1.0 - Basic Humanoid -robotti, joka käyttää Arduinoa

Nain 1.0 sisältää periaatteessa viisi irrotettavaa moduulia-

1) Varsi - jota voidaan ohjata servojen kautta.

2) Pyörät - joita voidaan ohjata tasavirtamoottoreilla.

3) Jalka - Nain voi vaihtaa pyörien tai jalkojen välillä liikkuakseen.

4) Pää - Sen päätä voidaan ohjata eri nyökkäyksille.

5) Kameramoduuli, joka voidaan liittää kasvojentunnistuskäyttöön.

Yhdessä tämän kanssa NAIN pystyy puhumaan ja olemaan vuorovaikutuksessa käyttäjien kanssa ja voi näyttää sinulle ajan sisäänrakennetulla kellollaan. Siinä on langaton ohjaus Wi-Fi /Bluetooth-yhteydellä.

Vaihe 1: Tarvittavat komponentit

Tarvittavat komponentit
Tarvittavat komponentit
Tarvittavat komponentit
Tarvittavat komponentit
Tarvittavat komponentit
Tarvittavat komponentit
  1. Servomoottorit -4
  2. Arduino Mega - 1
  3. Vadelma Pi - 1
  4. USB -kamera -1
  5. Kaiutin -1
  6. DC -moottorit -2
  7. L293D -1
  8. Akku - 1
  9. Pyörät -2
  10. Pyörät - 2

Näiden lisäksi tarvitset nelikulmaisia alumiininauhoja, jotta runko ja ruuvit ja mutterit sopivat niihin oikein.

Vaihe 2: Runkorakenne

Runkorakenne
Runkorakenne

Runkorakenne on valmistettu kevyistä alumiinisista neliömäisistä tangoista, jotka helpottavat sen kokoamista.

Kokoa ne nyt kuvan osoittamalla tavalla ja leikkaa myös sopivat tilat servomoottoreille, jotka kiinnitetään käsivarsiin.

Kiinnitä kuusikulmainen puinen pohja pohjaan.

Kiinnitä puisen alustan alle tasavirtamoottorit ja pyörät kuten mihin tahansa linjaseurantarobottiin.

Mielenkiintoista on lisätä kaksi pyörää- toinen robotin etu- ja toinen taakse.

Vaihe 3: Johdotus ja koodaus

Johdotus ja koodaus
Johdotus ja koodaus
Johdotus ja koodaus
Johdotus ja koodaus

Kytke eri moduulit yhteen tässä osassa olevista koodeista.

Ensinnäkin testasimme jokaista moduulia erillisillä koodeilla ja sitten yhdistimme ne kaikki yhteen ja hallitsimme pyörien ja aseiden liikettä bluetooth -moduulin avulla.

Vaihe 4: Raspberry Pi ja kuvan tunnistus

Raspberry Pi ja kuvan tunnistus
Raspberry Pi ja kuvan tunnistus
Raspberry Pi ja kuvan tunnistus
Raspberry Pi ja kuvan tunnistus

Kuvan tunnistus suoritetaan USB -kameralla ja Raspberry Pi: llä.

Tätä varten sinun on asennettava OP -CV -kirjasto Pi -laitteeseesi.

Voit tehdä sen täältä-https://github.com/jabelone/OpenCV-for-Pi

Sitten sinun on suoritettava kuvan tunnistus haar -kaskadilla.

Voit tehdä sen täältä -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Kun olen tutkinut yllä olevan linkin ja seurannut sitä, olen tehnyt joitain muutoksia käyttämääni lopulliseen koodiin, jonka liitän alla -

DATASET GENERATOR:

importcv2

nokka = cv2. VideoCapture (0)

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

i = 0

offset = 50

name = raw_input ('anna tunnus')

vaikka totta:

ret, im = cam.read ()

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

kasvot = ilmaisin.detectMultiScale (harmaa, scaleFactor = 1,2, min Naapurit = 5, minSize = (100, 100), liput = cv2.

(x, y, w, h) kasvoille:

i = i+1

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

cv2.suorakulmio (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])

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

tauko

# tauko, jos näytteen numero on suurempi kuin 20

elif (i> 20):

tauko

cam.release ()

cv2.destroyAllWindows ()

Se luo valokuvistasi tietojoukon, jota käytetään todentamiseen.

KOULUTTAJA:

importcv2, os

tuo numpy np: nä

PIL -tuontikuvasta

tunnistin = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Luokittelijat/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (polku):

image_paths = [os.path.join (polku, f) f: lle os.listdir (polku)]

# kuvaa sisältää kasvokuvia

kuvat =

# tarrat sisältää kuvalle määritetyn tarran

tarrat =

image_path in image_paths:

# Lue kuva ja muunna se harmaasävyiseksi

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

# Muunna kuvamuoto numpy -matriisiksi

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

# Hanki kuvan etiketti

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

#nbr = int (''. join (str (ord (c)) for c in nbr))

print nbr

# Tunnista kuvan kasvot

kasvot = faceCascade.detectMultiScale (kuva)

# Jos kasvot tunnistetaan, liitä kasvot kuviin ja tarra tarroihin

(x, y, w, h) kasvoille:

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

labels.append (nbr)

cv2.imshow ("Kasvojen lisääminen siirtosarjaan…", kuva [y: y + h, x: x + w])

cv2.waitKey (10)

# palauttaa kuvaluettelon ja tarraluettelon

palauta kuvia, tarroja

kuvat, tunnisteet = get_images_and_labels (polku)

cv2.imshow ('testi', kuvat [0])

cv2.waitKey (1)

tunnistaja.juna (kuvat, np.sarja (tarrat))

tunnistaja.save ('trainer/trainer.yml')

cv2.destroyAllWindows ()

TUNNISTIN

importcv2

tuo numpy np: nä

tuonti

c = 0

tunnistin = cv2.face.createLBPHFaceRecognizer ()

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

cascadePath = "Luokittelijat/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

nokka = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontscale = 1

fontcolor = (255, 255, 255)

vaikka totta:

ret, im = cam.read ()

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

kasvot = faceCascade.detectMultiScale (harmaa, 1,2, 5)

(x, y, w, h) kasvoille:

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

Id = tunnistin.ennuste (harmaa [y: y+h, x: x+w])

jos (Id <70):

jos (Id == 1):

Id = "Shashank"

elif (Id == 2):

jos (c == 0):

Id = "Shivam"

c = c+1

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

muu:

Id = "Shivam"

muu:

Id = "Tuntematon"

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

cv2.imshow ('im', im)

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

tauko

cam.release ()

cv2.destroyAllWindows ()

Vaihe 5: Nestekidenäyttö ja kaiutin

Olen käyttänyt myös I2C LED -näyttöä ja kaiutinta.

LEDiä ohjataan Arduino Megan kautta ja sen koodi annetaan lopullisessa koodissa.

Kaiuttimelle se on yhdistetty Raspberry Pi -laitteeseen ja käyttää eSpeak -apuohjelmaa.

Löydät sen viitteen täältä-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

Vaihe 6: Viimeiset vaiheet

Kokoa kaikki ja valmistaudu räjähdykseen.

Suositeltava: