Агуулгын хүснэгт:

NAIN 1.0 - Arduino -ийг ашиглах үндсэн гуманоид робот: 6 алхам
NAIN 1.0 - Arduino -ийг ашиглах үндсэн гуманоид робот: 6 алхам

Видео: NAIN 1.0 - Arduino -ийг ашиглах үндсэн гуманоид робот: 6 алхам

Видео: NAIN 1.0 - Arduino -ийг ашиглах үндсэн гуманоид робот: 6 алхам
Видео: MKS Gen L - Endstop 2024, Арванхоёрдугаар сар
Anonim
NAIN 1.0 - Arduino -ийг ашигладаг үндсэн хүмүүнлэг робот
NAIN 1.0 - Arduino -ийг ашигладаг үндсэн хүмүүнлэг робот

Nain 1.0 нь үндсэндээ 5 салдаг модультай байх болно.

1) Гар - үүнийг servo -ээр удирдах боломжтой.

2) Дугуй - үүнийг тогтмол гүйдлийн хөдөлгүүрээр удирдах боломжтой.

3) Хөл - Найн дугуй эсвэл хөлний хооронд шилжих боломжтой болно.

4) Толгой - Түүний толгойг янз бүрийн толгой дохиод хянах боломжтой.

5) Камерын модуль- Нүүр таних хандалтын интерфэйстэй.

Үүнтэй зэрэгцэн NAIN нь хэрэглэгчидтэй ярилцах, харилцах боломжтой бөгөөд суулгасан цагны тусламжтайгаар танд цагийг харуулах болно. Энэ нь Wi-Fi /Bluetooth ашиглан утасгүй удирдлагатай болно.

Алхам 1: Шаардлагатай бүрэлдэхүүн хэсгүүд

Шаардлагатай бүрэлдэхүүн хэсгүүд
Шаардлагатай бүрэлдэхүүн хэсгүүд
Шаардлагатай бүрэлдэхүүн хэсгүүд
Шаардлагатай бүрэлдэхүүн хэсгүүд
Шаардлагатай бүрэлдэхүүн хэсгүүд
Шаардлагатай бүрэлдэхүүн хэсгүүд
  1. Servo Motors -4
  2. Ардуино мега - 1
  3. Raspberry Pi - 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 ашиглан гүйцэтгэдэг.

Үүний тулд та Pi дээрээ OPEN CV номын санг суулгах шаардлагатай болно.

Та үүнийг эндээс хийж болно-https://github.com/jabelone/OpenCV-for-Pi

Дараа нь та haar cascade ашиглан дүрс таних ажлыг гүйцэтгэх шаардлагатай болно.

Та үүнийг эндээс хийж болно -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Дээрх линкийг судалж үзээд үүнийг дагаж дууссаныхаа дараа би ашиглаж буй эцсийн кодоо өөрчилж, доор байрлуулж байна.

Өгөгдлийн сангийн генератор:

импорт cv2

cam = cv2. VideoCapture (0)

детектор = cv2. CascadeClassifier ('Classifiers/face.xml')

би = 0

офсет = 50

нэр = raw_input ('id -ээ оруулна уу')

үнэн байхад:

ret, im = cam.read ()

саарал = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

нүүр = илрүүлэгч.detectMultiScale (саарал, масштабтай хүчин зүйл = 1.2, мин хөрш = 5, мин хэмжээ = (100, 100), туг = cv2. CASCADE_SCALE_IMAGE)

(x, y, w, h) нүүрний хувьд:

i = i+1

cv2.imwrite ("dataSet/face."+нэр+'.'+str (i)+".jpg", саарал [y-offset: y+h+offset, x-offset: x+w+offset])

cv2. тэгш өнцөгт (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'):

завсарлага

Хэрэв дээжийн дугаар 20 -оос дээш байвал # завсарлага

элиф (би> 20):

завсарлага

cam.release ()

cv2.destroyAllWindows ()

Энэ нь таны зургийг баталгаажуулах зорилгоор ашиглах өгөгдлийн багц үүсгэх болно.

ДАСГАЛЖУУЛАГЧ:

importcv2, os

np гэж numpy импортлох

PIL импортын зурагнаас

танигч = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Ангилагч/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (зам):

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

# зураг нүүрний зургийг агуулсан болно

зураг =

# шошго нь зурагт оноосон шошгыг агуулна

шошго =

image_paths дахь image_path -ийн хувьд:

# Зургийг уншаад саарал өнгөнд шилжүүлээрэй

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].rease ("face-", ""))

#nbr = int (''. join (str (ord (c)) in c in 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 (шошго))

танигч.хадгалах ('сургагч/сургагч.yml')

cv2.destroyAllWindows ()

ДЕТЕКТОР

импорт cv2

np гэж numpy импортлох

импортлох os

c = 0

танигч = cv2.face.createLBPHFaceRecognizer ()

хүлээн авагч. ачаалал ('trainer/trainer.yml')

cascadePath = "Ангилагч/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontscale = 1

фонт өнгө = (255, 255, 255)

үнэн байхад:

ret, im = cam.read ()

саарал = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

нүүр = faceCascade.detectMultiScale (саарал, 1.2, 5)

(x, y, w, h) нүүрний хувьд:

cv2. тэгш өнцөгт (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"

элиф (Id == 2):

хэрэв (c == 0):

Id = "Шивам"

c = c+1

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

өөр:

Id = "Шивам"

өөр:

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 дэлгэц, чанга яригч ашигласан.

LED нь Arduino Mega -ээр хянагддаг бөгөөд түүний кодыг эцсийн код дээр өгдөг.

Илтгэгчийн хувьд энэ нь Raspberry Pi -тай холбогдсон бөгөөд eSpeak Utility -ийг ашигладаг.

Та түүний лавлагааг эндээс олж болно-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

Алхам 6: Эцсийн алхамууд

Бүгдийг цуглуулж, тэсрэлт хийхэд бэлэн байгаарай.

Зөвлөмж болгож буй: