Isi kandungan:

NAIN 1.0 - Robot Humanoid Asas Menggunakan Arduino: 6 Langkah
NAIN 1.0 - Robot Humanoid Asas Menggunakan Arduino: 6 Langkah

Video: NAIN 1.0 - Robot Humanoid Asas Menggunakan Arduino: 6 Langkah

Video: NAIN 1.0 - Robot Humanoid Asas Menggunakan Arduino: 6 Langkah
Video: Mu 1.0.2 Python IDE установить Raspberry Pi 2024, Disember
Anonim
NAIN 1.0 - Robot Humanoid Asas Menggunakan Arduino
NAIN 1.0 - Robot Humanoid Asas Menggunakan Arduino

Nain 1.0 pada dasarnya akan mempunyai 5 modul yang boleh dilepas-

1) Lengan - yang boleh dikawal melalui servo.

2) Roda - yang boleh dikawal dengan motor dc.

3) Kaki - Nain akan dapat menukar antara roda atau kaki untuk pergerakan.

4) Kepala - Kepalanya dapat dikawal untuk pelbagai anggukan.

5) Modul kamera - yang boleh dihubungkan untuk Akses Pengecaman Wajah.

Bersama dengan NAIN ini akan dapat bercakap dan berinteraksi dengan pengguna dan dapat menunjukkan waktu dengan jam terbina dalam. Ia akan mempunyai kawalan tanpa wayar menggunakan Wi-fi / Bluetooth.

Langkah 1: Komponen yang Diperlukan

Komponen Diperlukan
Komponen Diperlukan
Komponen Diperlukan
Komponen Diperlukan
Komponen Diperlukan
Komponen Diperlukan
  1. Servo Motors -4
  2. Arduino Mega - 1
  3. Raspberry Pi - 1
  4. Kamera Usb -1
  5. Penceramah -1
  6. Motor DC -2
  7. L293D -1
  8. Pek Bateri - 1
  9. Roda -2
  10. Roda Kastor - 2

Bersama-sama dengan ini, anda akan memerlukan jalur aluminium persegi untuk membuat badan dan srew dan kacang agar sesuai dengan betul.

Langkah 2: Struktur Badan

Struktur Badan
Struktur Badan

Struktur badan akan dibuat dari batang persegi aluminium ringan yang akan membantu memasangnya dengan mudah.

Sampai sekarang memasangkannya seperti yang ditunjukkan pada gambar dan juga memotong ruang yang tepat agar motor servo dipasang di lengan.

Pasang pangkalan kayu heksagon di bahagian bawah.

Di bawah dasar kayu, pasangkan motor DC dan roda seperti yang kita lakukan di mana-mana robot pengikut garis.

Menariknya, Tambah dua roda jarak - satu di bahagian depan dan yang lain di bahagian belakang robot.

Langkah 3: Pendawaian dan Pengekodan

Pendawaian dan Pengekodan
Pendawaian dan Pengekodan
Pendawaian dan Pengekodan
Pendawaian dan Pengekodan

Untuk memasang modul yang berlainan, rujuk kod yang terdapat di bahagian ini.

Mula-mula kami menguji setiap modul menggunakan kod yang berdiri sendiri dan kemudian kami menggabungkan semuanya dalam satu dan mengawal pergerakan roda dan Senjata menggunakan modul bluetooth.

Langkah 4: Raspberry Pi dan Pengecaman Imej

Raspberry Pi dan Pengecaman Imej
Raspberry Pi dan Pengecaman Imej
Raspberry Pi dan Pengecaman Imej
Raspberry Pi dan Pengecaman Imej

Pengecaman Imej dilakukan menggunakan Kamera USB dan Raspberry Pi.

Untuk itu, anda perlu memasang perpustakaan OPEN CV pada Pi anda.

Anda boleh melakukannya dari sini -

Maka anda perlu melakukan pengecaman gambar menggunakan haar cascade.

Anda boleh melakukannya dari sini -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Setelah mempelajari pautan di atas dan mengikutinya, saya telah membuat beberapa perubahan pada kod akhir yang telah saya gunakan yang saya tampalkan di bawah -

GENERATOR DATA:

importcv2

cam = cv2. VideoCapture (0)

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

i = 0

mengimbangi = 50

name = raw_input ('masukkan id anda')

Walaupun Betul:

ret, im = cam.read ()

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

wajah = detector.detectMultiScale (kelabu, skalaFactor = 1.2, minNeighbour = 5, minSize = (100, 100), flags = cv2. CASCADE_SCALE_IMAGE)

untuk (x, y, w, h) di muka:

i = i + 1

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

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

rehat

# pecahkan jika nombor sampel lebih kurang 20

elif (i> 20):

rehat

pelepasan cam ()

cv2.destroyAllWindows ()

Ini akan membuat satu set data anda yang akan digunakan untuk pengesahan.

PELATIH:

importcv2, os

import numpy sebagai np

dari PIL import Imej

pengecam = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Pengelasan / face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

jalan = 'dataSet'

def get_images_and_labels (jalan):

image_paths = [os.path.join (jalan, f) untuk f di os.listdir (jalan)]

# gambar akan mengandungi gambar wajah

gambar =

# label akan mengandungi label yang diberikan pada gambar

label =

untuk image_path di image_paths:

# Baca gambar dan ubah ke skala kelabu

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

# Tukarkan format gambar menjadi susunan numpy

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

# Dapatkan label gambar

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

# nbr = int ( . gabung (str (ord (c)) untuk c dalam nbr))

cetak nbr

# Mengesan wajah dalam gambar

wajah = faceCascade.detectMultiScale (gambar)

# Jika wajah dikesan, tambahkan wajah ke gambar dan label ke label

untuk (x, y, w, h) di muka:

gambar.lampirkan (gambar [y: y + h, x: x + w])

labels.append (nbr)

cv2.imshow ("Menambah wajah ke set latihan …", gambar [y: y + h, x: x + w])

cv2.waitKey (10)

# kembalikan senarai gambar dan senarai label

mengembalikan gambar, label

gambar, label = get_images_and_labels (jalan)

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

cv2.waitKey (1)

mengenali.train (gambar, np.array (label))

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

cv2.destroyAllWindows ()

PENGETUA

importcv2

import numpy sebagai np

import os

c = 0

pengecam = cv2.face.createLBPHFaceRecognizer ()

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

cascadePath = "Pengelasan / face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

skala fon = 1

font warna = (255, 255, 255)

Walaupun Betul:

ret, im = cam.read ()

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

wajah = faceCascade.detectMultiScale (kelabu, 1.2, 5)

untuk (x, y, w, h) di muka:

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

Id = mengenali.prediksi (kelabu [y: y + h, x: x + w])

jika (Id <70):

jika (Id == 1):

Id = "Shashank"

elif (Id == 2):

jika (c == 0):

Id = "Shivam"

c = c + 1

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

lain:

Id = "Shivam"

lain:

Id = "Tidak diketahui"

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

cv2.imshow ('im', im)

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

rehat

pelepasan cam ()

cv2.destroyAllWindows ()

Langkah 5: LCD dan Pembesar suara

Saya juga telah menggunakan Paparan LED I2C dan pembesar suara.

LED dikendalikan melalui Arduino Mega dan kodnya diberikan dalam kod akhir.

Untuk Speaker, ia dihubungkan dengan Raspberry Pi dan menggunakan eSpeak Utility.

Anda boleh mendapatkan rujukannya di sini -

Langkah 6: Langkah Akhir

Himpunkan segalanya dan bersiap sedia untuk meletup.

Disyorkan: