Innehållsförteckning:

NAIN 1.0 - Basic Humanoid Robot med Arduino: 6 steg
NAIN 1.0 - Basic Humanoid Robot med Arduino: 6 steg

Video: NAIN 1.0 - Basic Humanoid Robot med Arduino: 6 steg

Video: NAIN 1.0 - Basic Humanoid Robot med Arduino: 6 steg
Video: Высокая плотность 2022 2024, November
Anonim
NAIN 1.0 - Basic Humanoid Robot som använder Arduino
NAIN 1.0 - Basic Humanoid Robot som använder Arduino

Nain 1.0 kommer att ha i princip 5 löstagbara moduler-

1) Arm - som kan styras via servon.

2) Hjul - som kan styras med likströmsmotorer.

3) Ben - Nain kommer att kunna växla mellan hjul eller ben för rörelse.

4) Huvud - Huvudet kan styras för olika nick.

5) Kameramodul- som kan anslutas för ansiktsigenkänning.

Tillsammans med detta kommer NAIN att kunna tala och interagera med användare och kan visa dig tiden med sin inbyggda klocka. Den kommer att ha en trådlös kontroll med Wi-fi /Bluetooth.

Steg 1: Komponenter som behövs

Komponenter som behövs
Komponenter som behövs
Komponenter som behövs
Komponenter som behövs
Komponenter som behövs
Komponenter som behövs
  1. Servomotorer -4
  2. Arduino Mega - 1
  3. Hallon Pi - 1
  4. USB -kamera -1
  5. Högtalare -1
  6. DC -motorer -2
  7. L293D -1
  8. Batteri - 1
  9. Hjul -2
  10. Hjul - 2

Tillsammans med dessa behöver du fyrkantiga aluminiumremsor för att göra kroppen och skruvar och muttrar för att passa dem ordentligt.

Steg 2: Kroppsstruktur

Kroppstruktur
Kroppstruktur

Kroppsstrukturen kommer att vara tillverkad av lätta fyrkantiga stänger av aluminium som hjälper till att enkelt montera den.

Montera dem från och med nu som visas i figuren och klipp ut rätt utrymmen för att servomotorerna ska fästas i armarna.

Fäst en sexkantig träbotten längst ner.

Under träbasen, fäst likströmsmotorer och hjul som vi gör i alla linjeföljare -robotar.

Intressant nog, lägg till två hjul- ett på framsidan och ett på baksidan av roboten.

Steg 3: Kabeldragning och kodning

Kabeldragning och kodning
Kabeldragning och kodning
Kabeldragning och kodning
Kabeldragning och kodning

För att ansluta de olika modulerna, se koder som bifogas i denna del.

Först testade vi varje modul med hjälp av fristående koder och sedan kombinerade vi dem alla i ett och kontrollerade rörelsen av hjul och armar med en bluetooth -modul.

Steg 4: Raspberry Pi och bildigenkänning

Hallon Pi och bildigenkänning
Hallon Pi och bildigenkänning
Hallon Pi och bildigenkänning
Hallon Pi och bildigenkänning

Bildigenkänning utförs med en USB -kamera och Raspberry Pi.

För det måste du installera OPEN CV -biblioteket på din Pi.

Du kan göra det härifrån-https://github.com/jabelone/OpenCV-for-Pi

Då måste du utföra bildigenkänning med hjälp av haar cascade.

Du kan göra det härifrån -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Efter att ha studerat ovanstående länk och följt det har jag gjort några ändringar i den slutliga koden jag har använt som jag klistrar in nedan -

DATASETGENERATOR:

importcv2

cam = cv2. VideoCapture (0)

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

jag = 0

förskjutning = 50

name = raw_input ('ange ditt id')

medan det är sant:

ret, im = cam.read ()

grå = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

ansikten = detektor.detectMultiScale (grå, scaleFactor = 1,2, minNeighbors = 5, minSize = (100, 100), flaggor = cv2. CASCADE_SCALE_IMAGE)

för (x, y, w, h) i ansikten:

i = i+1

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

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

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

ha sönder

# paus om provnumret är mer än 20

elif (i> 20):

ha sönder

cam.release ()

cv2.destroyAllWindows ()

Det kommer att skapa en datauppsättning av dina foton som ska användas för autentisering.

TRÄNARE:

importcv2, os

importera numpy som np

från PIL importbild

identifierare = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Klassificerare/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (sökväg):

image_paths = [os.path.join (sökväg, f) för f i os.listdir (sökväg)]

# bilder innehåller ansiktsbilder

bilder =

# etiketter innehåller etiketten som tilldelats bilden

etiketter =

för image_path i image_paths:

# Läs bilden och konvertera till gråskala

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

# Konvertera bildformatet till numpy array

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

# Få etiketten på bilden

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

#nbr = int (''. join (str (ord (c)) för c i nbr))

skriva ut nbr

# Upptäck ansiktet i bilden

ansikten = faceCascade.detectMultiScale (bild)

# Om ansikte upptäcks, lägg ansiktet till bilder och etiketten på etiketter

för (x, y, w, h) i ansikten:

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

etiketter. lägg till (nbr)

cv2.imshow ("Lägga till ansikten i traningset …", bild [y: y + h, x: x + w])

cv2.waitKey (10)

# returnera bildlistan och etikettlistan

returnera bilder, etiketter

bilder, etiketter = get_images_and_labels (sökväg)

cv2.imshow ('test', bilder [0])

cv2.waitKey (1)

identifierare.train (bilder, np.array (etiketter))

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

cv2.destroyAllWindows ()

DETEKTOR

importcv2

importera numpy som np

importera os

c = 0

identifierare = cv2.face.createLBPHFaceRecognizer ()

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

cascadePath = "Klassificerare/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontscale = 1

fontcolor = (255, 255, 255)

medan det är sant:

ret, im = cam.read ()

grå = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

ansikten = faceCascade.detectMultiScale (grå, 1,2, 5)

för (x, y, w, h) i ansikten:

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

Id = identifierare.predikt (grå [y: y+h, x: x+w])

om (Id <70):

om (Id == 1):

Id = "Shashank"

elif (Id == 2):

om (c == 0):

Id = "Shivam"

c = c+1

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

annan:

Id = "Shivam"

annan:

Id = "Okänd"

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

cv2.imshow ('im', im)

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

ha sönder

cam.release ()

cv2.destroyAllWindows ()

Steg 5: LCD och högtalare

Jag har också använt en I2C LED Display och en högtalare.

Lysdioden styrs via Arduino Mega och dess kod anges i den slutliga koden.

För högtalare är den ansluten till Raspberry Pi och använder eSpeak Utility.

Du hittar dess referens här-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

Steg 6: Slutsteg

Sätt ihop allt och gör dig redo för smällen.

Rekommenderad: