Inhaltsverzeichnis:

NAIN 1.0 - der grundlegende humanoide Roboter mit Arduino - Gunook
NAIN 1.0 - der grundlegende humanoide Roboter mit Arduino - Gunook
Anonim
NAIN 1.0 - der grundlegende humanoide Roboter mit Arduino
NAIN 1.0 - der grundlegende humanoide Roboter mit Arduino

Nain 1.0 wird grundsätzlich 5 abnehmbare Module haben-

1) Arm – der über Servos gesteuert werden kann.

2) Räder – die mit Gleichstrommotoren gesteuert werden können.

3) Bein – Nain kann zwischen Rädern oder Beinen wechseln, um sich zu bewegen.

4) Kopf – Der Kopf kann für verschiedene Nicken gesteuert werden.

5) Kameramodul - das für den Zugriff auf die Gesichtserkennung angeschlossen werden kann.

Zusammen mit diesem wird NAIN in der Lage sein, mit Benutzern zu sprechen und zu interagieren und kann Ihnen die Zeit durch seine eingebaute Uhr anzeigen. Es wird eine drahtlose Steuerung über Wi-Fi / Bluetooth haben.

Schritt 1: Benötigte Komponenten

Benötigte Komponenten
Benötigte Komponenten
Benötigte Komponenten
Benötigte Komponenten
Benötigte Komponenten
Benötigte Komponenten
  1. Servomotoren -4
  2. Arduino Mega - 1
  3. Himbeer-Pi - 1
  4. USB-Kamera -1
  5. Lautsprecher -1
  6. Gleichstrommotoren -2
  7. L293D -1
  8. Akkupack - 1
  9. Räder -2
  10. Lenkrollen - 2

Zusammen mit diesen benötigen Sie quadratische Aluminiumstreifen, um den Körper und Schrauben und Muttern richtig zu machen.

Schritt 2: Körperstruktur

Körper Struktur
Körper Struktur

Die Karosseriestruktur besteht aus leichten Vierkantstangen aus Aluminium, die den Zusammenbau erleichtern.

Montieren Sie sie jetzt wie in der Abbildung gezeigt und schneiden Sie auch die entsprechenden Freiräume für die Servomotoren aus, die in den Armen befestigt werden sollen.

Unten einen sechseckigen Holzsockel anbringen.

Unter der Holzbasis befestigen Sie Gleichstrommotoren und Räder wie bei jedem Linienfolger-Roboter.

Interessanterweise fügen Sie zwei Lenkrollen hinzu – eines vorne und das andere hinten am Roboter.

Schritt 3: Verdrahtung und Codierung

Verdrahtung und Codierung
Verdrahtung und Codierung
Verdrahtung und Codierung
Verdrahtung und Codierung

Um die verschiedenen Module zu verdrahten, beziehen Sie sich auf die Codes in diesem Teil.

Zuerst haben wir jedes Modul mit eigenständigen Codes getestet und dann alle in einem kombiniert und die Bewegung von Rädern und Armen mit einem Bluetooth-Modul gesteuert.

Schritt 4: Raspberry Pi und Bilderkennung

Raspberry Pi und Bilderkennung
Raspberry Pi und Bilderkennung
Raspberry Pi und Bilderkennung
Raspberry Pi und Bilderkennung

Die Bilderkennung erfolgt mit einer USB-Kamera und Raspberry Pi.

Dazu müssen Sie die OPEN CV-Bibliothek auf Ihrem Pi installieren.

Sie können das von hier aus tun -

Dann müssen Sie eine Bilderkennung mit Haarkaskade durchführen.

Sie können das von hier aus tun -

Nachdem ich den obigen Link gelesen und befolgt habe, habe ich einige Änderungen am endgültigen Code vorgenommen, den ich verwendet habe und den ich unten einfüge -

DATENSATZ-GENERATOR:

importcv2

cam = cv2. VideoCapture(0)

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

i=0

Offset=50

name=raw_input('Geben Sie Ihre ID ein')

während Wahr:

ret, im =cam.read()

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

face=detector.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5, minSize=(100, 100), flags=cv2. CASCADE_SCALE_IMAGE)

for(x, y, w, h) in Flächen:

i=i+1

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

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

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

brechen

# Pause, wenn die Probennummer mehr als 20. beträgt

elif (i>20):

brechen

cam.release()

cv2.destroyAllWindows()

Es wird ein Datensatz Ihrer Fotos erstellt, der zur Authentifizierung verwendet wird.

TRAINER:

importcv2, os

numpy als np importieren

aus PIL-Import Bild

Recognizer = cv2.face.createLBPHFaceRecognizer()

cascadePath = "Classifiers/face.xml"

faceCascade = cv2. CascadeClassifier(cascadePath);

Pfad = 'Datensatz'

def get_images_and_labels(Pfad):

image_paths = [os.path.join(path, f) für f in os.listdir(path)]

# Bilder enthalten Gesichtsbilder

Bilder =

# Labels enthält das Label, das dem Bild zugewiesen ist

Etiketten =

für image_path in image_paths:

# Lesen Sie das Bild und konvertieren Sie es in Graustufen

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

# Konvertieren Sie das Bildformat in ein numpy-Array

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

# Holen Sie sich das Label des Bildes

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

#nbr=int(''.join(str(ord(c)) für c in nbr))

Drucknr

# Gesicht im Bild erkennen

Gesichter = faceCascade.detectMultiScale(Bild)

# Wenn ein Gesicht erkannt wird, hängen Sie das Gesicht an Bilder und das Label an Labels an

für (x, y, w, h) in Flächen:

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

label.append(nbr)

cv2.imshow("Flächen zum Trainingssatz hinzufügen…", image[y: y + h, x: x + w])

cv2.waitKey(10)

# die Bilderliste und die Etikettenliste zurückgeben

Bilder, Etiketten zurückgeben

Bilder, Etiketten = get_images_and_labels(Pfad)

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

cv2.waitKey(1)

cognizer.train(images, np.array(labels))

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

cv2.destroyAllWindows()

DETEKTOR

importcv2

numpy als np importieren

Importieren von OS

c=0

Recognizer = cv2.face.createLBPHFaceRecognizer()

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

cascadePath = "Classifiers/face.xml"

faceCascade = cv2. CascadeClassifier(cascadePath);

cam = cv2. VideoCapture(0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

Schriftskala = 1

Schriftfarbe = (255, 255, 255)

während Wahr:

ret, im =cam.read()

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

faces=faceCascade.detectMultiScale(grau, 1.2, 5)

for(x, y, w, h) in Flächen:

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

ID = erkennung.vorhersagen(grau[y:y+h, x:x+w])

if(Id<70):

if(Id==1):

Id="Shashank"

elif(Id==2):

wenn(c==0):

Id="Shivam"

c=c+1

os.system("espeak 'Willkommen Shivam-Zugriff gewährt'")

anders:

Id="Shivam"

anders:

Id="Unbekannt"

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

cv2.imshow('im', im)

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

brechen

cam.release()

cv2.destroyAllWindows()

Schritt 5: LCD und Lautsprecher

Ich habe auch ein I2C-LED-Display und einen Lautsprecher verwendet.

Die LED wird über Arduino Mega gesteuert und ihr Code ist im endgültigen Code angegeben.

Für Speaker ist es mit dem Raspberry Pi verbunden und verwendet das eSpeak Utility.

Sie finden die Referenz hier -

Schritt 6: Letzte Schritte

Montieren Sie alles und machen Sie sich bereit für den Knall.

Empfohlen: