Съдържание:

NAIN 1.0 - основният хуманоиден робот, използващ Arduino: 6 стъпки
NAIN 1.0 - основният хуманоиден робот, използващ Arduino: 6 стъпки

Видео: NAIN 1.0 - основният хуманоиден робот, използващ Arduino: 6 стъпки

Видео: NAIN 1.0 - основният хуманоиден робот, използващ Arduino: 6 стъпки
Видео: Section 1: More Comfortable 2024, Ноември
Anonim
NAIN 1.0 - основният хуманоиден робот, използващ Arduino
NAIN 1.0 - основният хуманоиден робот, използващ Arduino

Nain 1.0 ще има основно 5 отделящи се модула-

1) Ръка - която може да се управлява чрез серво.

2) Колела - които могат да се управляват с DC двигатели.

3) Крак - Nain ще може да превключва между колела или крака за движение.

4) Глава - Нейната глава може да се контролира за различни кимания.

5) Камерен модул- който може да бъде свързан за достъп за разпознаване на лица.

Заедно с този NAIN ще може да говори и взаимодейства с потребителите и може да ви показва часа чрез вградения си часовник. Той ще има безжично управление чрез Wi-Fi /Bluetooth.

Стъпка 1: Необходими компоненти

Необходими компоненти
Необходими компоненти
Необходими компоненти
Необходими компоненти
Необходими компоненти
Необходими компоненти
  1. Серво мотори -4
  2. Arduino Mega - 1
  3. Малина Пи - 1
  4. USB камера -1
  5. Говорител -1
  6. DC двигатели -2
  7. L293D -1
  8. Батерия - 1
  9. Колела -2
  10. Ролетни колела - 2

Заедно с тях ще ви трябват алуминиеви квадратни ленти, за да направите тялото, и винтовете и гайките, за да ги поставите правилно.

Стъпка 2: Структура на тялото

Структура на тялото
Структура на тялото

Структурата на каросерията ще бъде направена от леки алуминиеви квадратни пръти, които ще помогнат за лесното й сглобяване.

Към момента ги сглобете, както е показано на фигурата, а също така изрежете подходящи пространства за закрепване на серво моторите в раменете.

Прикрепете шестоъгълна дървена основа в долната част.

Под дървената основа, прикрепете DC двигатели и колела, както правим във всеки робот за следване на линия.

Интересното е, че добавете две колела- едно отпред и друго отзад на робота.

Стъпка 3: Окабеляване и кодиране

Окабеляване и кодиране
Окабеляване и кодиране
Окабеляване и кодиране
Окабеляване и кодиране

За да свържете различни модули, вижте кодовете, приложени в тази част.

Първо тествахме всеки модул, използвайки самостоятелни кодове, след което ги комбинирахме в едно и контролирахме движението на колелата и оръжията с помощта на Bluetooth модул.

Стъпка 4: Raspberry Pi и разпознаване на изображения

Raspberry Pi и разпознаване на изображения
Raspberry Pi и разпознаване на изображения
Raspberry Pi и разпознаване на изображения
Raspberry Pi и разпознаване на изображения

Разпознаването на изображения се извършва с помощта на USB камера и Raspberry Pi.

За целта ще трябва да инсталирате библиотеката OPEN CV на вашия Pi.

Можете да направите това от тук-https://github.com/jabelone/OpenCV-for-Pi

След това ще трябва да извършите разпознаване на изображения с помощта на каскадна хаар.

Можете да направите това от тук -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

След като изучих горната връзка и след това направих някои промени в крайния код, който използвах, който поставям по -долу -

ГЕНЕРАТОР НА ДАННИ:

importcv2

cam = cv2. VideoCapture (0)

детектор = cv2. CascadeClassifier ('Класификатори/face.xml')

i = 0

отместване = 50

name = raw_input ('въведете вашия идентификатор')

докато е вярно:

ret, im = cam.read ()

сиво = cv2.cvtColor (im, cv2. COLOR_BGR2GREY)

лица = detector.detectMultiScale (сиво, scaleFactor = 1.2, minNeighbors = 5, minSize = (100, 100), флагове = cv2. CASCADE_SCALE_IMAGE)

за (x, y, w, h) в лица:

i = i+1

cv2.imwrite ("dataSet/face."+name+'.'+str (i)+".jpg", сиво [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])

ако cv2.waitKey (100) & 0xFF == ord ('q'):

прекъсване

# break, ако номерът на извадката е повече от 20

elif (i> 20):

прекъсване

cam.release ()

cv2.destroyAllWindows ()

Той ще създаде набор от вашите снимки, които ще се използват за удостоверяване.

ТРЕНЕР:

importcv2, os

внос numpy като np

от PIL импортиране на изображение

разпознавач = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Класификатори/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

пътека = 'набор от данни'

def get_images_and_labels (път):

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

# изображения ще съдържат изображения на лица

изображения =

# етикета ще съдържа етикета, който е присвоен на изображението

етикети =

за image_path в image_paths:

# Прочетете изображението и го преобразувайте в скали на сивото

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

# Конвертирайте формата на изображението в numpy масив

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

# Вземете етикета на изображението

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

#nbr = int (''. join (str (ord (c)) за c в nbr))

отпечатайте nbr

# Открийте лицето в изображението

фасони = faceCascade.detectMultiScale (изображение)

# Ако се открие лице, добавете лицето към изображенията, а етикета към етикетите

за (x, y, w, h) в лица:

images.append (изображение [y: y + h, x: x + w])

labels.append (nbr)

cv2.imshow ("Добавяне на лица към набор за обучение …", изображение [y: y + h, x: x + w])

cv2.waitKey (10)

# връща списъка с изображения и списъка с етикети

връщане на изображения, етикети

изображения, етикети = get_images_and_labels (път)

cv2.imshow ('тест', изображения [0])

cv2.waitKey (1)

разпознаващ.влак (изображения, np.array (етикети))

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

cv2.destroyAllWindows ()

ДЕТЕКТОР

importcv2

внос numpy като np

внос os

c = 0

разпознавач = cv2.face.createLBPHFaceRecognizer ()

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

cascadePath = "Класификатори/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

шрифт = 1

fontcolor = (255, 255, 255)

докато е вярно:

ret, im = cam.read ()

сиво = cv2.cvtColor (im, cv2. COLOR_BGR2GREY)

фасони = faceCascade.detectMultiScale (сиво, 1.2, 5)

за (x, y, w, h) в лица:

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

Id = разпознаващ.предсказване (сив [y: y+h, x: x+w])

ако (Id <70):

ако (Id == 1):

Id = "Shashank"

elif (Id == 2):

ако (c == 0):

Id = "Shivam"

c = c+1

os.system ("espeak" Добре дошли Shivam достъп е предоставен "")

иначе:

Id = "Shivam"

иначе:

Id = "Неизвестно"

cv2.putText (im, str (Id), (x, y+h), шрифт, шрифт, цвят на шрифта)

cv2.imshow ('im', im)

ако cv2.waitKey (10) & 0xFF == ord ('q'):

прекъсване

cam.release ()

cv2.destroyAllWindows ()

Стъпка 5: LCD и високоговорител

Използвал съм и I2C LED дисплей и високоговорител.

Светодиодът се управлява чрез Arduino Mega и неговият код е даден в крайния код.

За Speaker той е свързан с Raspberry Pi и използва помощната програма eSpeak.

Можете да намерите неговата справка тук-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

Стъпка 6: Последни стъпки

Съберете всичко и се пригответе за взрива.

Препоръчано: