Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Nain 1.0 bo imel v osnovi 5 snemljivih modulov-
1) Roka - ki jo je mogoče upravljati prek servomotorjev.
2) Kolesa - ki jih je mogoče upravljati z enosmernimi motorji.
3) Noga - Nain bo lahko premikal med kolesi ali nogami za gibanje.
4) Glava - Glavo je mogoče nadzorovati za različne prikimavanja.
5) Modul kamere- ki ga je mogoče povezati za dostop do prepoznavanja obrazov.
Poleg tega bo NAIN lahko govoril in komuniciral z uporabniki ter vam lahko pokazal čas z vgrajeno uro. Imel bo brezžični nadzor prek Wi-Fi /Bluetooth.
Korak: Potrebne komponente
- Servo motorji -4
- Arduino Mega - 1
- Malina Pi - 1
- Usb kamera -1
- Zvočnik -1
- Enosmerni motorji -2
- L293D -1
- Baterija - 1
- Kolesa -2
- Kolesca - 2
Skupaj s temi boste potrebovali aluminijaste kvadratne trakove, da bo ohišje ter vijaki in matice ustrezno nameščeni.
2. korak: Struktura telesa
Karoserijska konstrukcija bo izdelana iz lahkih aluminijastih kvadratnih palic, ki bodo pomagale pri enostavni montaži.
Zdaj jih sestavite, kot je prikazano na sliki, in izrežite tudi ustrezne prostore za pritrditev servo motorjev v roke.
Spodaj pritrdite šesterokotno leseno podlago.
Pod leseno podlago pritrdite enosmerne motorje in kolesa, kot to počnemo pri katerem koli robotu za sledenje linijam.
Zanimivo je, da dodate dva kolesca- eno spredaj in drugo na zadnji strani robota.
3. korak: Ožičenje in kodiranje
Za povezovanje različnih modulov si oglejte kode, priložene v tem delu.
Najprej smo vsak modul preizkusili s samostojnimi kodami, nato pa smo jih združili v enem in s pomočjo modula Bluetooth nadzirali gibanje koles in orožja.
4. korak: Raspberry Pi in prepoznavanje slik
Prepoznavanje slik se izvede s kamero USB in Raspberry Pi.
V ta namen boste morali v svoj Pi namestiti knjižnico OPEN CV.
To lahko storite tukaj-https://github.com/jabelone/OpenCV-for-Pi
Potem boste morali izvesti prepoznavanje slik z uporabo haar kaskade.
To lahko storite tukaj -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc
Ko sem preučil zgornjo povezavo in sledil temu, sem v končni kodi, ki sem jo uporabil, naredil nekaj sprememb, ki jih prilepim spodaj -
GENERATOR PODATKOV:
importcv2
cam = cv2. VideoCapture (0)
detektor = cv2. CascadeClassifier ('Klasifikatorji/face.xml')
i = 0
odmik = 50
name = raw_input ('vnesite svoj ID')
medtem ko je res:
ret, im = cam.read ()
siva = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
obrazi = detektor.detectMultiScale (siva, scaleFactor = 1.2, minNeighbors = 5, minSize = (100, 100), zastavice = cv2. CASCADE_SCALE_IMAGE)
za (x, y, w, h) v obrazih:
i = i+1
cv2.imwrite ("dataSet/face."+name+'.'+str (i)+".jpg", sivo [y-offset: y+h+offset, x-offset: x+w+offset])
cv2.pravokotnik (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])
če cv2.waitKey (100) & 0xFF == ord ('q'):
prekiniti
# prelom, če je številka vzorca večja od 20
elif (i> 20):
prekiniti
cam.release ()
cv2.destroyAllWindows ()
Ustvaril bo skupino vaših fotografij, ki bodo uporabljene za preverjanje pristnosti.
TRENER:
importcv2, os
uvoz numpy kot np
iz uvozne slike PIL
prepoznavalnik = cv2.face.createLBPHFaceRecognizer ()
cascadePath = "Klasifikatorji/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
path = 'set podatkov'
def get_images_and_labels (pot):
image_paths = [os.path.join (pot, f) za f v os.listdir (pot)]
# slike bodo vsebovale slike obrazov
slike =
# oznaka bo vsebovala oznako, ki je dodeljena sliki
oznake =
za image_path v image_paths:
# Preberite sliko in jo pretvorite v sivine
image_pil = Image.open (image_path).convert ('L')
# Pretvorite obliko slike v matriko numpy
image = np.array (image_pil, 'uint8')
# Pridobite oznako slike
nbr = int (os.path.split (image_path) [-1].split (".") [1].replace ("face-", "")))
#nbr = int (''. join (str (ord (c)) za c v nbr))
natisni št
# Zaznajte obraz na sliki
obrazov = faceCascade.detectMultiScale (slika)
# Če zazna obraz, dodajte obraz slikam, oznako pa nalepkam
za (x, y, w, h) v obrazih:
images.append (slika [y: y + h, x: x + w])
labels.append (nbr)
cv2.imshow ("Dodajanje obrazov v sklop za treniranje …", slika [y: y + h, x: x + w])
cv2.waitKey (10)
# vrne seznam slik in seznam oznak
povratne slike, nalepke
slike, oznake = get_images_and_labels (pot)
cv2.imshow ('test', slike [0])
cv2.waitKey (1)
prepoznaval.train (slike, np.array (oznake))
prepoznavnik.save ('trener/trener.yml')
cv2.destroyAllWindows ()
DETEKTOR
importcv2
uvoz numpy kot np
uvoz os
c = 0
prepoznavalnik = cv2.face.createLBPHFaceRecognizer ()
prepoznavnik.load ('trener/trener.yml')
cascadePath = "Klasifikatorji/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
cam = cv2. VideoCapture (0)
fontface = cv2. FONT_HERSHEY_SIMPLEX
pisava = 1
fontcolor = (255, 255, 255)
medtem ko je res:
ret, im = cam.read ()
siva = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
obrazov = faceCascade.detectMultiScale (siva, 1.2, 5)
za (x, y, w, h) v obrazih:
cv2.pravokotnik (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)
Id = prepoznavalec.predict (sivo [y: y+h, x: x+w])
če (Id <70):
če (Id == 1):
Id = "Shashank"
elif (Id == 2):
če (c == 0):
Id = "Shivam"
c = c+1
os.system ("espeak" Welcome Shivam Access Granted "")
drugače:
Id = "Shivam"
drugače:
Id = "Neznano"
cv2.putText (im, str (Id), (x, y+h), pisava, pisava, barva pisave)
cv2.imshow ('im', im)
če cv2.waitKey (10) & 0xFF == ord ('q'):
prekiniti
cam.release ()
cv2.destroyAllWindows ()
5. korak: LCD in zvočnik
Uporabil sem tudi LED zaslon I2C in zvočnik.
LED se upravlja prek Arduino Mega, njegova koda pa je navedena v končni kodi.
Za Speaker je povezan z Raspberry Pi in uporablja pripomoček eSpeak.
Njegovo referenco najdete tukaj-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/
Korak 6: Zadnji koraki
Vse sestavite in se pripravite na udar.