Obsah:

NAIN 1.0 - základní humanoidní robot využívající Arduino: 6 kroků
NAIN 1.0 - základní humanoidní robot využívající Arduino: 6 kroků

Video: NAIN 1.0 - základní humanoidní robot využívající Arduino: 6 kroků

Video: NAIN 1.0 - základní humanoidní robot využívající Arduino: 6 kroků
Video: MSI® HOW-TO install front panel connectors (JFP1) 2024, Listopad
Anonim
NAIN 1.0 - základní humanoidní robot využívající Arduino
NAIN 1.0 - základní humanoidní robot využívající Arduino

Nain 1.0 bude mít v zásadě 5 odnímatelných modulů-

1) Rameno - které lze ovládat pomocí serva.

2) Kola - která lze ovládat stejnosměrnými motory.

3) Noha - Nain bude moci přepínat mezi kolečky nebo nohama pro pohyb.

4) Hlava - Jeho hlavu lze ovládat různými kývnutími.

5) Modul kamery- který může být propojen pro přístup k rozpoznávání tváře.

Spolu s tím bude NAIN schopen mluvit a komunikovat s uživateli a může vám ukázat čas pomocí vestavěných hodin. Bude mít bezdrátové ovládání pomocí Wi-fi /Bluetooth.

Krok 1: Potřebné součásti

Potřebné součásti
Potřebné součásti
Potřebné součásti
Potřebné součásti
Potřebné součásti
Potřebné součásti
  1. Servomotory -4
  2. Arduino Mega - 1
  3. Raspberry Pi - 1
  4. USB kamera -1
  5. Mluvčí -1
  6. Stejnosměrné motory -2
  7. L293D -1
  8. Sada baterií - 1
  9. Kola -2
  10. Kolečka - 2

Spolu s nimi budete potřebovat hliníkové čtvercové pásy k výrobě těla a šrouby a matice, aby je správně zapadly.

Krok 2: Stavba těla

Stavba těla
Stavba těla

Struktura těla bude vyrobena z lehkých hliníkových čtvercových tyčí, které pomohou při snadné montáži.

Nyní je sestavte, jak je znázorněno na obrázku, a také vyřízněte vhodné prostory pro připevnění servomotorů v ramenech.

Ve spodní části připevněte šestihrannou dřevěnou základnu.

Pod dřevěnou základnu připojte stejnosměrné motory a kola jako u jakéhokoli robota pro sledování linek.

Je zajímavé, že přidáte dvě pojezdová kola- jedno na přední a druhé na zadní část robota.

Krok 3: Zapojení a kódování

Zapojení a kódování
Zapojení a kódování
Zapojení a kódování
Zapojení a kódování

Chcete -li zapojit různé moduly, podívejte se na kódy připojené v této části.

Nejprve jsme testovali každý modul pomocí samostatných kódů a poté jsme je všechny spojili do jednoho a pomocí bluetooth modulu jsme ovládali pohyb kol a zbraní.

Krok 4: Raspberry Pi a rozpoznávání obrazu

Raspberry Pi a rozpoznávání obrazu
Raspberry Pi a rozpoznávání obrazu
Raspberry Pi a rozpoznávání obrazu
Raspberry Pi a rozpoznávání obrazu

Rozpoznávání obrazu se provádí pomocí USB kamery a Raspberry Pi.

K tomu budete muset na svůj Pi nainstalovat knihovnu OPEN CV.

Můžete to udělat odtud-https://github.com/jabelone/OpenCV-for-Pi

Poté budete muset provést rozpoznávání obrazu pomocí Haar Cascade.

Můžete to udělat zde -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Po prostudování výše uvedeného odkazu a po něm jsem provedl některé změny v konečném kódu, který jsem použil a který vkládám níže -

GENERÁTOR DATASETU:

importcv2

cam = cv2. VideoCapture (0)

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

i = 0

offset = 50

name = raw_input ('zadejte své ID')

zatímco pravda:

ret, im = cam.read ()

šedá = cv2.cvtColor (im, cv2. COLOR_BGR2GREY)

tváře = detector.detectMultiScale (šedá, scaleFactor = 1,2, minNeighbors = 5, minSize = (100, 100), vlajky = cv2. CASCADE_SCALE_IMAGE)

pro (x, y, w, h) v plochách:

i = i+1

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

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

přestávka

# break, pokud je číslo vzorku více než 20

elif (i> 20):

přestávka

cam.release ()

cv2.destroyAllWindows ()

Vytvoří datovou sadu vašich fotografií, která bude použita k autentizaci.

TRAINER:

importcv2, os

import numpy jako np

z obrázku importu PIL

rozpoznávání = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Klasifikátory/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (cesta):

image_paths = [os.path.join (cesta, f) pro f v os.listdir (cesta)]

# obrázků bude obsahovat obrázky obličeje

obrázky =

# popisků bude obsahovat štítek, který je přiřazen k obrázku

štítky =

pro image_path v image_paths:

# Přečtěte si obrázek a převeďte jej ve stupních šedi

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

# Převeďte formát obrázku na početné pole

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

# Získejte štítek obrázku

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

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

tisk č

# Rozpoznejte tvář na obrázku

Faces = faceCascade.detectMultiScale (obrázek)

# Pokud je detekován obličej, připojte obličej k obrázkům a štítek ke štítkům

pro (x, y, w, h) v plochách:

images.append (obrázek [y: y + h, x: x + w])

labels.append (nbr)

cv2.imshow („Přidávání obličejů do sady přechodů…“, obrázek [y: y + h, x: x + w])

cv2.waitKey (10)

# vrátit seznam obrázků a seznam štítků

vrátit obrázky, štítky

images, labels = get_images_and_labels (cesta)

cv2.imshow ('test', obrázky [0])

cv2.waitKey (1)

rozpoznávání.train (obrázky, np.array (štítky))

rozpoznávač.save ('trenér/trenér.yml')

cv2.destroyAllWindows ()

DETEKTOR

importcv2

import numpy jako np

import os

c = 0

rozpoznávání = cv2.face.createLBPHFaceRecognizer ()

rozpoznávač.load ('trenér/trenér.yml')

cascadePath = "Klasifikátory/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontscale = 1

fontcolor = (255, 255, 255)

zatímco pravda:

ret, im = cam.read ()

šedá = cv2.cvtColor (im, cv2. COLOR_BGR2GREY)

Faces = faceCascade.detectMultiScale (šedá, 1,2, 5)

pro (x, y, w, h) v plochách:

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

Id = rozpoznávač.předvídat (šedá [y: y+h, x: x+w])

if (Id <70):

pokud (Id == 1):

Id = "Shashank"

elif (Id == 2):

pokud (c == 0):

Id = "Shivam"

c = c+1

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

jiný:

Id = "Shivam"

jiný:

Id = "Neznámý"

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

cv2.imshow ('im', im)

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

přestávka

cam.release ()

cv2.destroyAllWindows ()

Krok 5: LCD a reproduktor

Také jsem použil I2C LED displej a reproduktor.

LED se ovládá přes Arduino Mega a její kód je uveden v konečném kódu.

Pro reproduktor je připojen k Raspberry Pi a používá eSpeak Utility.

Jeho referenci najdete zde-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

Krok 6: Poslední kroky

Shromážděte vše a připravte se na ránu.

Doporučuje: