Tartalomjegyzék:

NAIN 1.0 - az alapvető humanoid robot az Arduino használatával: 6 lépés
NAIN 1.0 - az alapvető humanoid robot az Arduino használatával: 6 lépés

Videó: NAIN 1.0 - az alapvető humanoid robot az Arduino használatával: 6 lépés

Videó: NAIN 1.0 - az alapvető humanoid robot az Arduino használatával: 6 lépés
Videó: Высокая плотность 2022 2024, December
Anonim
NAIN 1.0 - az alapvető humanoid robot az Arduino használatával
NAIN 1.0 - az alapvető humanoid robot az Arduino használatával

A Nain 1.0 alapvetően 5 levehető modult tartalmaz-

1) Kar - amely szervók segítségével vezérelhető.

2) Kerekek - egyenáramú motorokkal vezérelhetők.

3) Láb - Nain képes lesz váltani a kerekek vagy lábak között a mozgáshoz.

4) Fej - Feje különböző bólogatásokhoz vezérelhető.

5) Kamera modul- amely illeszthető az arcfelismerő hozzáféréshez.

Ezzel együtt a NAIN képes lesz beszélni és interakcióba lépni a felhasználókkal, és a beépített óra alapján megmutatja az időt. Vezeték nélküli vezérléssel rendelkezik Wi-Fi /Bluetooth használatával.

1. lépés: Szükséges összetevők

Szükséges alkatrészek
Szükséges alkatrészek
Szükséges alkatrészek
Szükséges alkatrészek
Szükséges alkatrészek
Szükséges alkatrészek
  1. Szervomotorok -4
  2. Arduino Mega - 1
  3. Raspberry Pi - 1
  4. USB kamera -1
  5. Hangszóró -1
  6. DC motorok -2
  7. L293D -1
  8. Akkumulátor - 1
  9. Kerekek -2
  10. Castor kerekek - 2

Ezek mellett alumínium négyszögletes csíkokra lesz szüksége a test, valamint a csavarok és anyák megfelelő illesztéséhez.

2. lépés: A test felépítése

Testfelépítés
Testfelépítés

A karosszéria könnyű alumínium négyszögletes rudakból készül, amelyek megkönnyítik az összeszerelést.

Mostantól szerelje össze őket az ábrán látható módon, és vágja ki a megfelelő tereket a karokhoz rögzítendő szervomotorokhoz.

Alul rögzítsen egy hatszögletű fa alapot.

A faalap alatt rögzítse az egyenáramú motorokat és a kerekeket, mint minden vonalkövető robotnál.

Érdekes módon adjunk hozzá két görgős kereket- az egyik a robot elülső, a másik a hátlapján.

3. lépés: Kábelezés és kódolás

Kábelezés és kódolás
Kábelezés és kódolás
Kábelezés és kódolás
Kábelezés és kódolás

A különböző modulok bekötéséhez olvassa el az ebben a részben található kódokat.

Először teszteltük az egyes modulokat önálló kódok használatával, majd egyesítettük őket egyben, és egy bluetooth modul segítségével irányítottuk a kerekek és karok mozgását.

4. lépés: Raspberry Pi és képfelismerés

Raspberry Pi és képfelismerés
Raspberry Pi és képfelismerés
Raspberry Pi és képfelismerés
Raspberry Pi és képfelismerés

A képfelismerés USB -kamera és Raspberry Pi segítségével történik.

Ehhez telepítenie kell az OPEN CV könyvtárat a Pi -re.

Ezt megteheti innen-https://github.com/jabelone/OpenCV-for-Pi

Ezután el kell végeznie a képfelismerést haar kaszkád használatával.

Ezt innen teheti meg --https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Miután tanulmányoztam a fenti linket, és ezt követően, néhány változtatást eszközöltem az általam használt végső kódban, amelyet alább beillesztek -

DATASET GENERATOR:

importcv2

cam = cv2. VideoCapture (0)

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

i = 0

eltolás = 50

name = raw_input ('adja meg az azonosítóját')

míg igaz:

ret, im = cam.read ()

szürke = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

arcok = detektor.detectMultiScale (szürke, scaleFactor = 1,2, minSzomszédok = 5, minSize = (100, 100), zászlók = cv2. CASCADE_SCALE_IMAGE)

(x, y, w, h) esetén:

i = i+1

cv2.imwrite ("dataSet/face."+név+'.'+str (i)+".jpg", szürke [y-eltolás: y+h+eltolás, x-eltolás: x+w+eltolás])

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

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

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

szünet

# szünet, ha a minta száma több mint 20

elif (i> 20):

szünet

cam.release ()

cv2.destroyAllWindows ()

Létrehozza a fényképek adathalmazát, amelyet hitelesítésre használnak.

EDZŐ:

importcv2, os

importálja a numpy -t np -ként

a PIL import képből

felismerő = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Classifiers/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (elérési út):

image_paths = [os.path.join (elérési út, f) for f in os.listdir (elérési út)]

# kép arcképeket tartalmaz

képek =

# labels will tartalmazza a képhez rendelt címkét

címkék =

image_path esetén: image_paths:

# Olvassa el a képet, és konvertálja szürkeárnyalatosra

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

# Konvertálja a képformátumot numpy tömbré

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

# Szerezd meg a kép címkéjét

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

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

nyomtatás nbr

# Érzékelje az arcot a képen

arcok = faceCascade.detectMultiScale (kép)

# Ha arcot észlel, csatolja az arcot a képekhez, és a címkét a címkékhez

(x, y, w, h) esetén:

images.append (kép [y: y + h, x: x + w])

labels.append (nbr)

cv2.imshow ("Arcok hozzáadása az átviteli készlethez …", kép [y: y + h, x: x + w])

cv2.waitKey (10)

# visszaadja a képek és a címkék listáját

képek, címkék visszaküldése

képek, címkék = get_images_and_labels (elérési út)

cv2.imshow ('teszt', képek [0])

cv2.waitKey (1)

elismerő.vonat (képek, np.tömb (címkék))

elismerő.save ('trainer/trainer.yml')

cv2.destroyAllWindows ()

DETEKTOR

importcv2

importálja a numpy -t np -ként

importál

c = 0

felismerő = cv2.face.createLBPHFaceRecognizer ()

elismerő.load ('trainer/trainer.yml')

cascadePath = "Classifiers/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

betűtípus = 1

fontcolor = (255, 255, 255)

míg igaz:

ret, im = cam.read ()

szürke = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

arcok = faceCascade.detectMultiScale (szürke, 1,2, 5)

(x, y, w, h) esetén:

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

Id = felismerő.jóslat (szürke [y: y+h, x: x+w])

ha (Id <70):

ha (Id == 1):

Id = "Shashank"

elif (Id == 2):

ha (c == 0):

Id = "Shivam"

c = c+1

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

más:

Id = "Shivam"

más:

Id = "Ismeretlen"

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

cv2.imshow ('im', im)

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

szünet

cam.release ()

cv2.destroyAllWindows ()

5. lépés: LCD és hangszóró

I2C LED kijelzőt és hangszórót is használtam.

A LED -et az Arduino Mega vezérli, és kódját a végső kód tartalmazza.

A hangszóróhoz a Raspberry Pi csatlakozik, és az eSpeak segédprogramot használja.

Hivatkozását itt találja-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

6. lépés: Utolsó lépések

Gyűjts össze mindent, és készülj fel a bummra.

Ajánlott: