Talaan ng mga Nilalaman:

NAIN 1.0 - ang Pangunahing Humanoid Robot Paggamit ng Arduino: 6 Mga Hakbang
NAIN 1.0 - ang Pangunahing Humanoid Robot Paggamit ng Arduino: 6 Mga Hakbang

Video: NAIN 1.0 - ang Pangunahing Humanoid Robot Paggamit ng Arduino: 6 Mga Hakbang

Video: NAIN 1.0 - ang Pangunahing Humanoid Robot Paggamit ng Arduino: 6 Mga Hakbang
Video: CS50 2015 - Week 10 2024, Hulyo
Anonim
NAIN 1.0 - ang Pangunahing Humanoid Robot Gamit ang Arduino
NAIN 1.0 - ang Pangunahing Humanoid Robot Gamit ang Arduino

Ang Nain 1.0 ay magkakaroon ng karaniwang 5 nababakas na mga module-

1) Arm - na maaaring makontrol sa pamamagitan ng servos.

2) Mga Gulong - na maaaring makontrol ng mga dc motor.

3) Leg - Si Nain ay maaaring lumipat sa pagitan ng mga gulong o binti para sa paggalaw.

4) Ulo - Ang ulo nito ay maaaring makontrol para sa iba't ibang mga tango.

5) module ng Camera- na maaaring i-interface para sa Pag-access sa Pagkilala sa Mukha.

Kasabay ng NAIN na ito ay magagawang makipag-usap at makipag-ugnay sa mga gumagamit at maaaring ipakita sa iyo ang oras sa pamamagitan ng nakapaloob na orasan. Magkakaroon ito ng isang wireless control gamit ang Wi-fi / Bluetooth.

Hakbang 1: Kailangan ng Mga Bahagi

Kailangan ng Mga Sangkap
Kailangan ng Mga Sangkap
Kailangan ng Mga Sangkap
Kailangan ng Mga Sangkap
Kailangan ng Mga Sangkap
Kailangan ng Mga Sangkap
  1. Servo Motors -4
  2. Arduino Mega - 1
  3. Raspberry Pi - 1
  4. Usb Camera -1
  5. Tagapagsalita -1
  6. DC Motors -2
  7. L293D -1
  8. Battery Pack - 1
  9. Gulong -2
  10. Castor Wheels - 2

Kasama ng mga ito kakailanganin mo ang mga square square strip upang gawin ang katawan at mga srew at mga mani upang magkasya nang maayos.

Hakbang 2: Istraktura ng Katawan

Istraktura ng Katawan
Istraktura ng Katawan

Ang istraktura ng katawan ay gagawin ng magaan na aluminyo parisukat na tungkod na makakatulong sa pag-assemble nito nang madali.

Tulad ng ngayon tipunin ang mga ito tulad ng ipinakita sa pigura at gupitin din ang tamang mga puwang para sa mga motor na servo na ikakabit sa mga bisig.

Maglakip ng isang hexagonal na kahoy na base sa ilalim.

Sa ibaba ng baseng kahoy, ilakip ang mga DC motor at gulong tulad ng ginagawa namin sa anumang robot na tagasunod sa linya.

Kapansin-pansin, Magdagdag ng dalawang castor wheel- isa sa harap at isa pa sa likuran ng robot.

Hakbang 3: Mga kable at Coding

Mga kable at Coding
Mga kable at Coding
Mga kable at Coding
Mga kable at Coding

Upang mai-wire ang iba't ibang mga module ay sumangguni sa mga code na naka-attach sa bahaging ito.

Una sinubukan namin ang bawat module na gumagamit ng mga standalone code at pagkatapos ay pinagsama namin ang lahat sa isa at kinokontrol ang paggalaw ng mga gulong at Arms gamit ang isang module na Bluetooth.

Hakbang 4: Raspberry Pi at Pagkilala sa Imahe

Raspberry Pi at Pagkilala sa Imahe
Raspberry Pi at Pagkilala sa Imahe
Raspberry Pi at Pagkilala sa Imahe
Raspberry Pi at Pagkilala sa Imahe

Ginagawa ang Pagkilala sa Imahe gamit ang isang USB Camera at Raspberry Pi.

Para doon, kakailanganin mong i-install ang OPEN CV library sa iyong Pi.

Maaari mong gawin iyon mula dito -

Pagkatapos ay kakailanganin mong magsagawa ng pagkilala sa imahe gamit ang haar cascade.

Maaari mong gawin iyon mula dito -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Matapos pag-aralan ang nasa itaas na link at sundin iyon, gumawa ako ng ilang mga pagbabago sa pangwakas na code na ginamit ko na inilalagay ko sa ibaba -

DATASET GENERATOR:

importcv2

cam = cv2. VideoCapture (0)

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

ako = 0

offset = 50

pangalan = raw_input ('ipasok ang iyong id')

habang Totoo:

ret, im = cam.read ()

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

mukha = detector.detectMultiScale (grey, scaleFactor = 1.2, minNeighbours = 5, minSize = (100, 100), flag = cv2. CASCADE_SCALE_IMAGE)

para sa (x, y, w, h) sa mga mukha:

i = i + 1

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

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

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

pahinga

# masira kung ang sample na numero ay morethan 20

elif (i> 20):

pahinga

cam.release ()

cv2.destroyAllWindows ()

Lilikha ito ng isang datset ng iyong mga larawan na magagamit para sa pagpapatotoo.

TRAINER:

importcv2, os

i-import ang numpy bilang np

mula sa PIL import Image

kinikilala = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Classifiers / face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (path):

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

Naglalaman ang # na mga imahe ng mukha

mga imahe =

Naglalaman ang # na mga label ng label na nakatalaga sa imahe

mga label =

para sa image_path sa image_paths:

# Basahin ang imahe at i-convert sa grayscale

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

# I-convert ang format ng imahe sa numpy array

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

# Kunin ang label ng imahe

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

# nbr = int ( . sumali (str (ord (c)) para sa c in nbr))

print nbr

# Tuklasin ang mukha sa imahe

mukha = faceCascade.detectMultiScale (imahe)

# Kung nakita ang mukha, idagdag ang mukha sa mga imahe at ang label sa mga label

para sa (x, y, w, h) sa mga mukha:

mga imahe.append (imahe [y: y + h, x: x + w])

mga label.append (nbr)

cv2.imshow ("Pagdaragdag ng mga mukha sa itinakdang set …", imahe [y: y + h, x: x + w])

cv2.waitKey (10)

# ibalik ang listahan ng mga imahe at listahan ng mga label

ibalik ang mga imahe, label

mga imahe, label = get_images_and_labels (path)

cv2.imshow ('pagsubok', mga imahe [0])

cv2.waitKey (1)

kinikilala.train (mga imahe, np.array (mga label))

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

cv2.destroyAllWindows ()

DETECTOR

importcv2

i-import ang numpy bilang np

import os

c = 0

kinikilala = cv2.face.createLBPHFaceRecognizer ()

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

cascadePath = "Classifiers / face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fonttscale = 1

fontcolor = (255, 255, 255)

habang Totoo:

ret, im = cam.read ()

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

mukha = faceCascade.detectMultiScale (grey, 1.2, 5)

para sa (x, y, w, h) sa mga mukha:

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

Id = kinikilala.predict (grey [y: y + h, x: x + w])

kung (Id <70):

kung (Id == 1):

Id = "Shashank"

elif (Id == 2):

kung (c == 0):

Id = "Shivam"

c = c + 1

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

iba pa:

Id = "Shivam"

iba pa:

Id = "Hindi kilalang"

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

cv2.imshow ('im', im)

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

pahinga

cam.release ()

cv2.destroyAllWindows ()

Hakbang 5: LCD at Speaker

Gumamit din ako ng I2C LED Display at isang speaker.

Ang LED ay kinokontrol sa pamamagitan ng Arduino Mega at ang code nito ay ibinibigay sa huling code.

Para sa Speaker, ito ay konektado sa Raspberry Pi at gumagamit ng eSpeak Utility.

Mahahanap mo ang sanggunian dito -

Hakbang 6: Pangwakas na Mga Hakbang

Ipunin ang lahat at maghanda para sa putok.

Inirerekumendang: