Inhoudsopgave:

NAIN 1.0 - de Basic Humanoid Robot met Arduino - Ajarnpa
NAIN 1.0 - de Basic Humanoid Robot met Arduino - Ajarnpa

Video: NAIN 1.0 - de Basic Humanoid Robot met Arduino - Ajarnpa

Video: NAIN 1.0 - de Basic Humanoid Robot met Arduino - Ajarnpa
Video: Ai robots taking over ping pong 👀 #shorts 2024, November
Anonim
NAIN 1.0 - de Basic Humanoid Robot met Arduino
NAIN 1.0 - de Basic Humanoid Robot met Arduino

Nain 1.0 heeft in principe 5 afneembare modules-

1) Arm - die kan worden bestuurd via servo's.

2) Wielen – die kunnen worden bestuurd met gelijkstroommotoren.

3) Been – Nain kan schakelen tussen wielen of benen voor beweging.

4) Hoofd - Zijn hoofd kan worden bediend voor verschillende knikken.

5) Cameramodule - die kan worden gekoppeld voor toegang tot gezichtsherkenning.

Daarnaast kan NAIN met gebruikers spreken en communiceren en u de tijd laten zien door de ingebouwde klok. Het heeft een draadloze bediening via Wi-fi / Bluetooth.

Stap 1: Benodigde onderdelen

Benodigde componenten
Benodigde componenten
Benodigde componenten
Benodigde componenten
Benodigde componenten
Benodigde componenten
  1. Servomotoren -4
  2. Arduino Mega - 1
  3. Raspberry Pi - 1
  4. USB-camera -1
  5. Luidspreker -1
  6. DC-motoren -2
  7. L293D -1
  8. Batterijpakket - 1
  9. Wielen -2
  10. Zwenkwielen - 2

Samen met deze heb je aluminium vierkante strips nodig om het lichaam te maken en schroeven en moeren om ze goed te passen.

Stap 2: Lichaamsstructuur

Lichaamsstructuur
Lichaamsstructuur

De carrosseriestructuur zal worden gemaakt van lichtgewicht aluminium vierkante staven die zullen helpen bij het gemakkelijk monteren.

Monteer ze vanaf nu zoals weergegeven in de afbeelding en knip ook de juiste ruimtes uit voor de servomotoren die in de armen moeten worden bevestigd.

Bevestig aan de onderkant een zeshoekige houten voet.

Bevestig onder de houten basis gelijkstroommotoren en wielen zoals we dat bij elke lijnvolgerrobot doen.

Interessant is dat twee zwenkwielen worden toegevoegd: een aan de voorkant en een aan de achterkant van de robot.

Stap 3: Bedrading en codering

Bedrading en codering
Bedrading en codering
Bedrading en codering
Bedrading en codering

Raadpleeg de codes die in dit deel zijn bijgevoegd om de verschillende modules aan te sluiten.

Eerst hebben we elke module getest met behulp van zelfstandige codes en vervolgens hebben we ze allemaal in één gecombineerd en de beweging van wielen en armen gecontroleerd met behulp van een bluetooth-module.

Stap 4: Raspberry Pi en beeldherkenning

Raspberry Pi en beeldherkenning
Raspberry Pi en beeldherkenning
Raspberry Pi en beeldherkenning
Raspberry Pi en beeldherkenning

Beeldherkenning wordt uitgevoerd met behulp van een USB-camera en Raspberry Pi.

Daarvoor moet je de OPEN CV-bibliotheek op je Pi installeren.

U kunt dat vanaf hier doen -

Dan moet je beeldherkenning uitvoeren met haar cascade.

U kunt dat hier doen -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Na het bestuderen van de bovenstaande link en het volgen daarvan, heb ik enkele wijzigingen aangebracht in de definitieve code die ik heb gebruikt en die ik hieronder plak -

DATASET-GENERATOR:

importcv2

cam = cv2. VideoCapture(0)

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

ik=0

offset=50

name=raw_input('voer je id in')

terwijl waar:

ret, im =cam.read()

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

gezichten=detector.detectMultiScale(grijs, scaleFactor=1.2, minNeighbours=5, minSize=(100, 100), vlaggen=cv2. CASCADE_SCALE_IMAGE)

for(x, y, w, h) in vlakken:

ik=i+1

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

cv2.rechthoek(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'):

pauze

# breken als het monsternummer meer dan 20. is

elif (i>20):

pauze

cam.release()

cv2.destroyAllWindows()

Het zal een dataset van uw foto's maken die zal worden gebruikt voor authenticatie.

TRAINER:

importcv2, os

importeer numpy als np

van PIL import Afbeelding

herkenner = cv2.face.createLBPHFaceRecognizer()

cascadePath = "Classifiers/face.xml"

faceCascade = cv2. CascadeClassifier(cascadePath);

path = 'gegevensset'

def get_images_and_labels(pad):

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

# afbeeldingen zullen gezichtsafbeeldingen bevatten

afbeeldingen =

# labels bevat het label dat aan de afbeelding is toegewezen

etiketten =

voor image_path in image_paths:

# Lees de afbeelding en converteer naar grijswaarden

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

# Converteer het afbeeldingsformaat naar een numpy array

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

# Haal het label van de afbeelding op

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

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

afdruknummer

# Detecteer het gezicht in de afbeelding

gezichten = faceCascade.detectMultiScale(afbeelding)

# Als een gezicht wordt gedetecteerd, voegt u het gezicht toe aan afbeeldingen en het label aan labels

voor (x, y, w, h) in vlakken:

afbeeldingen.append(afbeelding [y: y + h, x: x + w])

labels.append(nbr)

cv2.imshow("Gezichten toevoegen aan trainingsset…", afbeelding[y: y + h, x: x + w])

cv2.waitKey(10)

# retourneer de lijst met afbeeldingen en de lijst met labels

afbeeldingen, labels retourneren

afbeeldingen, labels = get_images_and_labels(pad)

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

cv2.waitKey(1)

herkenner.trein(afbeeldingen, np.array(labels))

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

cv2.destroyAllWindows()

DETECTOR

importcv2

importeer numpy als np

importeer os

c=0

herkenner = cv2.face.createLBPHFaceRecognizer()

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

cascadePath = "Classifiers/face.xml"

faceCascade = cv2. CascadeClassifier(cascadePath);

cam = cv2. VideoCapture(0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

lettertypeschaal = 1

lettertypekleur = (255, 255, 255)

terwijl waar:

ret, im =cam.read()

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

gezichten=faceCascade.detectMultiScale(grijs, 1.2, 5)

for(x, y, w, h) in vlakken:

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

Id = herkenner.predict(grijs[y:y+h, x:x+w])

if(Id<70):

if(Id==1):

Id = "Sjaal"

elif(Id==2):

als(c==0):

Id = "Shivam"

c=c+1

os.system ("espeak 'Welkom Shivam-toegang verleend'")

anders:

Id = "Shivam"

anders:

Id = "Onbekend"

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

cv2.imshow('im', im)

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

pauze

cam.release()

cv2.destroyAllWindows()

Stap 5: LCD en luidspreker

Ik heb ook een I2C LED-display en een luidspreker gebruikt.

De LED wordt bestuurd via Arduino Mega en de code wordt gegeven in de definitieve code.

Voor Speaker is het verbonden met de Raspberry Pi en gebruikt het eSpeak Utility.

U kunt de referentie hier vinden -

Stap 6: laatste stappen

Zet alles in elkaar en maak je klaar voor de knal.

Aanbevolen: