ዝርዝር ሁኔታ:

NAIN 1.0 - አርዱዲኖን በመጠቀም መሰረታዊ የሰው ልጅ ሮቦት 6 ደረጃዎች
NAIN 1.0 - አርዱዲኖን በመጠቀም መሰረታዊ የሰው ልጅ ሮቦት 6 ደረጃዎች

ቪዲዮ: NAIN 1.0 - አርዱዲኖን በመጠቀም መሰረታዊ የሰው ልጅ ሮቦት 6 ደረጃዎች

ቪዲዮ: NAIN 1.0 - አርዱዲኖን በመጠቀም መሰረታዊ የሰው ልጅ ሮቦት 6 ደረጃዎች
ቪዲዮ: Nine Circles but 1.0 2024, ህዳር
Anonim
NAIN 1.0 - አርዱዲኖን በመጠቀም መሰረታዊ የሰው ልጅ ሮቦት
NAIN 1.0 - አርዱዲኖን በመጠቀም መሰረታዊ የሰው ልጅ ሮቦት

ናይን 1.0 በመሠረቱ 5 ሊነጣጠሉ የሚችሉ ሞጁሎች ይኖራቸዋል-

1) ክንድ - በ servos በኩል ቁጥጥር ሊደረግበት ይችላል።

2) ጎማዎች - በዲሲ ሞተሮች ቁጥጥር ሊደረግበት ይችላል።

3) እግር - ናይን ለመንቀሳቀስ በተሽከርካሪዎች ወይም በእግሮች መካከል መቀያየር ይችላል።

4) ጭንቅላት - ጭንቅላቱ ለተለያዩ መስቀሎች መቆጣጠር ይችላል።

5) የካሜራ ሞዱል- ለፊት ለይቶ ማወቅ መዳረሻ ሊገናኝ የሚችል።

ከዚህ NAIN ጋር ከተጠቃሚዎች ጋር ማውራት እና መስተጋብር መፍጠር ይችላል እና አብሮ በተሰራው ሰዓቱ ጊዜውን ሊያሳይዎት ይችላል። Wi-fi /ብሉቱዝን በመጠቀም የገመድ አልባ ቁጥጥር ይኖረዋል።

ደረጃ 1: ክፍሎች ያስፈልጋሉ

አካላት ያስፈልጋሉ
አካላት ያስፈልጋሉ
አካላት ያስፈልጋሉ
አካላት ያስፈልጋሉ
አካላት ያስፈልጋሉ
አካላት ያስፈልጋሉ
  1. ሰርቮ ሞተርስ -4
  2. አርዱዲኖ ሜጋ - 1
  3. Raspberry Pi - 1
  4. የዩኤስቢ ካሜራ -1
  5. ድምጽ ማጉያ -1
  6. የዲሲ ሞተሮች -2
  7. L293D -1
  8. የባትሪ ጥቅል - 1
  9. ጎማዎች -2
  10. የ Castor መንኮራኩሮች - 2

ከነዚህም ጋር አካልን እና እንጨቶችን እና ለውዝ በትክክል እንዲገጣጠሙ ለማድረግ የአሉሚኒየም ካሬ ቁርጥራጮች ያስፈልግዎታል።

ደረጃ 2 - የሰውነት መዋቅር

የሰውነት አወቃቀር
የሰውነት አወቃቀር

የሰውነት አወቃቀሩ ቀላል በሆነ የአሉሚኒየም ካሬ ዘንጎች የተሠራ ሲሆን ይህም በቀላሉ ለመገጣጠም ይረዳል።

አሁን በስዕሉ ላይ እንደሚታየው ሰብስቧቸው እንዲሁም በእጆችዎ ውስጥ ለመገጣጠም ለ servo ሞተሮች ተገቢ ቦታዎችን ይቁረጡ።

ከታች በኩል ባለ ስድስት ጎን የእንጨት መሠረት ያያይዙ።

በማንኛውም የመስመር ተከታይ ሮቦት ውስጥ እንደምናደርገው ከእንጨት መሰረቱ በታች የዲሲ ሞተሮችን እና ጎማዎችን ያያይዙ።

የሚገርመው ፣ ሁለት የ cast ጎማዎችን ያክሉ- አንደኛው ከፊት ለፊት እና ሌላ በሮቦት ጀርባ።

ደረጃ 3 - ሽቦ እና ኮድ መስጠት

ሽቦ እና ኮድ መስጠት
ሽቦ እና ኮድ መስጠት
ሽቦ እና ኮድ መስጠት
ሽቦ እና ኮድ መስጠት

የተለያዩ ሞጁሎችን ለማገናኘት በዚህ ክፍል ውስጥ የተያያዙትን ኮዶች ያመልክቱ።

በመጀመሪያ ገለልተኛ ሞገዶችን በመጠቀም እያንዳንዱን ሞጁሎች ሞከርን እና ከዚያ ሁሉንም በአንድ ላይ አጣምረን የብሉቱዝ ሞጁልን በመጠቀም የመንኮራኩሮችን እና የጦር መሣሪያዎችን እንቅስቃሴ ተቆጣጠርን።

ደረጃ 4: Raspberry Pi እና Image Recognition

Raspberry Pi እና የምስል ዕውቅና
Raspberry Pi እና የምስል ዕውቅና
Raspberry Pi እና የምስል ዕውቅና
Raspberry Pi እና የምስል ዕውቅና

የምስል ማወቂያ የሚከናወነው በዩኤስቢ ካሜራ እና Raspberry Pi በመጠቀም ነው።

ለዚያ ፣ በእርስዎ ፒ ላይ የ OPEN CV ቤተ -መጽሐፍትን መጫን ያስፈልግዎታል።

ያንን ከዚህ ማድረግ ይችላሉ-https://github.com/jabelone/OpenCV-for-Pi

ከዚያ haar cascade በመጠቀም የምስል ማወቂያን ማከናወን ያስፈልግዎታል።

ያንን ከዚህ ማድረግ ይችላሉ -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

ከላይ ያለውን አገናኝ ካጠናሁ እና ያንን ከተከተልኩ በኋላ እኔ በምጠቀምበት በመጨረሻው ኮድ ላይ አንዳንድ ለውጦችን አድርጌያለሁ -

የመረጃ ቋት ጄኔሬተር ፦

importcv2

cam = cv2. VideoCapture (0)

መፈለጊያ = cv2. CascadeClassifier ('Classifiers/face.xml')

እኔ = 0

ማካካሻ = 50

ስም = raw_input ('መታወቂያዎን ያስገቡ')

እውነት እያለ ፦

ret, im = cam.read ()

ግራጫ = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

ፊቶች = detector.detectMultiScale (ግራጫ ፣ ልኬት አምራች = 1.2 ፣ ደቂቃ ጎረቤቶች = 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.አራት ማዕዘን (im ፣ (x-50 ፣ y-50) ፣ (x+w+50 ፣ y+h+50) ፣ (225 ፣ 0 ፣ 0) ፣ 2)

cv2. ማሳያ ('im', im [y-offset: y+h+offset, x-offset: x+w+offset])

cv2.waitKey (100) እና 0xFF == ord ('q'):

ሰበር

የናሙና ቁጥሩ ከ 20 በላይ ከሆነ # ይሰብሩ

ኤሊፍ (i> 20) ፦

ሰበር

ካሜራ። መልቀቅ ()

cv2. DestroyAllWindow ()

ለማረጋገጫ ስራ ላይ የሚውል የፎቶዎችዎ ዳታሴት ይፈጥራል።

አሰልጣኝ ፦

importcv2 ፣ os

ቁጥርን እንደ np ያስመጡ

ከ PIL ማስመጣት ምስል

ማወቂያ = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "ምድቦች/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

ዱካ = 'dataSet'

def get_images_and_labels (ዱካ) ፦

image_paths = [os.path.join (ዱካ ፣ ረ) ለ f በ os.listdir (ዱካ)]

# ምስሎች የፊት ምስሎችን ይይዛሉ

ምስሎች =

# መለያዎች ለምስሉ የተመደበውን መለያ ይይዛሉ

መለያዎች =

በምስል_መንገዶች ውስጥ ለምስል_መንገድ

# ምስሉን አንብበው ወደ ግራጫ ቀለም ይለውጡ

image_pil = Image.open (image_path)። ይለውጡ ('L')

# የምስል ቅርጸቱን ወደ ደነዘዘ ድርድር ይለውጡ

ምስል = np.array (image_pil ፣ 'uint8')

# የምስሉን መለያ ያግኙ

nbr = int (os.path.split (image_path) [-1]. ክፍፍል (".") [1]

#nbr = int ( . መቀላቀል (str (ord (c)) ለ c በ nbr))

nbr ን ያትሙ

# በምስሉ ውስጥ ፊቱን ይፈልጉ

ፊቶች = faceCascade.detectMultiScale (ምስል)

# ፊት ከተገኘ ፣ ፊቱን በምስሎች ላይ እና መለያውን በመለያዎች ላይ ያያይዙ

ለ (x ፣ y ፣ w ፣ h) በፊቶች

images.append (ምስል [y: y + h ፣ x: x + w])

መለያዎች። ተግብር (nbr)

cv2.imshow ("ለመሸጋገሪያ ስብስብ ፊቶችን ማከል…" ፣ ምስል [y: y + h ፣ x: x + w])

cv2. ይጠብቁ ቁልፍ (10)

# የምስሎችን ዝርዝር እና የመለያዎች ዝርዝር ይመልሱ

ምስሎችን ፣ መለያዎችን ይመልሱ

ምስሎች ፣ መለያዎች = get_images_and_labels (ዱካ)

cv2.imshow ('ሙከራ' ፣ ምስሎች [0])

cv2. ይጠብቁ ቁልፍ (1)

recognizer.train (ምስሎች ፣ np.array (መለያዎች))

recognizer.save ('አሰልጣኝ/trainer.yml')

cv2. DestroyAllWindow ()

ዳይሬክተር

importcv2

ቁጥርን እንደ np ያስመጡ

አስመጣ os

ሐ = 0

ማወቂያ = cv2.face.createLBPHFaceRecognizer ()

recognizer.load ('አሰልጣኝ/trainer.yml')

cascadePath = "ምድቦች/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

ቅርጸ -ቁምፊ = cv2. FONT_HERSHEY_SIMPLEX

የቅርጸ -ቁምፊ መጠን = 1

fontcolor = (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)

መታወቂያ = recognizer. ትንበያ (ግራጫ [y: y+h ፣ x: x+w])

ከሆነ (መታወቂያ <70):

ከሆነ (መታወቂያ == 1):

መታወቂያ = "ሻሻንክ"

elif (መታወቂያ == 2) ፦

ከሆነ (c == 0):

መታወቂያ = "ሺቫም"

ሐ = c+1

os.system ("espeak 'እንኳን ደህና መጡ የሺቫም መዳረሻ ተሰጥቷል'")

ሌላ

መታወቂያ = "ሺቫም"

ሌላ

መታወቂያ = "ያልታወቀ"

cv2.putText (im ፣ str (Id) ፣ (x ፣ y+h) ፣ ቅርጸ -ቁምፊ ፣ የቅርጸ -ቁምፊ መጠን ፣ ቅርጸ -ቁምፊ ቀለም)

cv2. ማሳያ ትዕይንት ('im', im)

cv2.waitKey (10) እና 0xFF == ord ('q'):

ሰበር

ካሜራ። መልቀቅ ()

cv2. DestroyAllWindow ()

ደረጃ 5 ኤልሲዲ እና ድምጽ ማጉያ

እኔ ደግሞ I2C LED ማሳያ እና ድምጽ ማጉያ ተጠቅሜያለሁ።

ኤልዲው በአርዱዲኖ ሜጋ በኩል ቁጥጥር ይደረግበታል እና ኮዱ በመጨረሻው ኮድ ውስጥ ተሰጥቷል።

ለድምጽ ማጉያ ፣ ከ Raspberry Pi ጋር የተገናኘ እና eSpeak Utility ን ይጠቀማል።

ማጣቀሻውን እዚህ ማግኘት ይችላሉ-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

ደረጃ 6: የመጨረሻ ደረጃዎች።

ሁሉንም ነገር ያሰባስቡ እና ለድብድቡ ይዘጋጁ።

የሚመከር: