תוכן עניינים:

NAIN 1.0 - הרובוט הבסיסי של הומנואידים באמצעות Arduino: 6 שלבים
NAIN 1.0 - הרובוט הבסיסי של הומנואידים באמצעות Arduino: 6 שלבים

וִידֵאוֹ: NAIN 1.0 - הרובוט הבסיסי של הומנואידים באמצעות Arduino: 6 שלבים

וִידֵאוֹ: NAIN 1.0 - הרובוט הבסיסי של הומנואידים באמצעות Arduino: 6 שלבים
וִידֵאוֹ: How To Use SDXL in Automatic1111 Web UI - SD Web UI vs ComfyUI - Easy Local Install Tutorial / Guide 2024, יולי
Anonim
NAIN 1.0 - רובוט הומנואיד הבסיסי באמצעות Arduino
NAIN 1.0 - רובוט הומנואיד הבסיסי באמצעות Arduino

ל- Nain 1.0 יהיו בעצם 5 מודולים ניתנים להסרה-

1) זרוע - הניתנת לשליטה באמצעות סרוו.

2) גלגלים - הניתנים לשליטה באמצעות מנועי DC.

3) רגל - ניין יוכל לעבור בין גלגלים או רגליים לתנועה.

4) ראש - ניתן לשלוט בראשו להנהנות שונות.

5) מודול מצלמה- הניתן לממשק לגישה לזיהוי פנים.

יחד עם זה NAIN יוכל לדבר ולתקשר עם משתמשים ויוכל להראות לך את השעה לפי השעון המובנה שלו. תהיה לו שליטה אלחוטית באמצעות Wi-Fi /Bluetooth.

שלב 1: דרושים רכיבים

דרושים רכיבים
דרושים רכיבים
דרושים רכיבים
דרושים רכיבים
דרושים רכיבים
דרושים רכיבים
  1. סרוו מוטורס -4
  2. ארדואינו מגה - 1
  3. פטל פטל - 1
  4. מצלמת USB -1
  5. רמקול -1
  6. מנועי DC -2
  7. L293D -1
  8. מארז סוללות - 1
  9. גלגלים -2
  10. גלגלי קיקור - 2

יחד עם אלה תצטרך רצועות מרובעות מאלומיניום כדי ליצור את הגוף ואת הברגים והאומים כדי שיתאימו להם כראוי.

שלב 2: מבנה הגוף

מבנה גוף
מבנה גוף

מבנה הגוף יהיה עשוי מוטות מרובעים מאלומיניום קלים שיסייעו בהרכבתו בקלות.

נכון לעכשיו הרכיב אותם כפי שמוצג באיור וכן גזור רווחים מתאימים למנועי הסרוו שיוצמדו לזרועות.

צרף תחתית בסיס עץ משושה.

מתחת לבסיס העץ, חבר את מנועי וגלגלי DC כפי שאנו עושים בכל רובוט עוקב קו.

מעניין להוסיף שני גלגלי קיק- אחד מלפנים ושני בחלק האחורי של הרובוט.

שלב 3: חיווט וקידוד

חיווט וקידוד
חיווט וקידוד
חיווט וקידוד
חיווט וקידוד

כדי לחבר את המודולים השונים עיין בקודים המצורפים בחלק זה.

ראשית בדקנו כל מודול באמצעות קודים עצמאיים ולאחר מכן שילבנו את כולם באחד ושלטנו בתנועת הגלגלים והזרועות באמצעות מודול בלוטות '.

שלב 4: פטל פטל וזיהוי תמונות

פטל פאי וזיהוי תמונות
פטל פאי וזיהוי תמונות
פטל פאי וזיהוי תמונות
פטל פאי וזיהוי תמונות

זיהוי תמונות מתבצע באמצעות מצלמת USB ו- Raspberry Pi.

לשם כך יהיה עליך להתקין את ספריית קורות החיים OPEN ב- Pi שלך.

תוכל לעשות זאת מכאן-https://github.com/jabelone/OpenCV-for-Pi

לאחר מכן תצטרך לבצע זיהוי תמונה באמצעות שלה cascade.

תוכל לעשות זאת מכאן -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

לאחר עיון בקישור לעיל ובעקבותיו, ביצעתי כמה שינויים בקוד הסופי בו השתמשתי שהדבקתי למטה -

מחולל הנתונים:

importcv2

cam = cv2. VideoCapture (0)

גלאי = cv2. CascadeClassifier ('Classifiers/face.xml')

i = 0

קיזוז = 50

name = raw_input ('הזן את המזהה שלך')

בעוד שזה נכון:

ret, im = cam.read ()

אפור = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

פנים = גלאי.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. מלבן (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

elif (i> 20):

לשבור

cam.release ()

cv2.destroyAllWindows ()

הוא ייצור מערך נתונים של התמונות שלך שישמשו לאימות.

מאמן:

importcv2, os

ייבא numpy כמו np

מתמונת ייבוא PIL

מזהה = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "מסווגים/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (נתיב):

image_paths = [os.path.join (נתיב, f) עבור f ב- os.listdir (נתיב)]

# תמונות יכילו תמונות פנים

תמונות =

תוויות # יכילו את התווית שהוקצתה לתמונה

תוויות =

עבור 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 ("פנים-", ""))

#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 (תוויות))

מזהה.סבר ('trainer/trainer.yml')

cv2.destroyAllWindows ()

גַלַאִי

importcv2

ייבא numpy כמו np

ייבוא מערכת הפעלה

c = 0

מזהה = cv2.face.createLBPHFaceRecognizer ()

מזהה.load ('trainer/trainer.yml')

cascadePath = "מסווגים/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontscale = 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)

Id = identifier.predict (אפור [y: y+h, x: x+w])

אם (מזהה <70):

אם (Id == 1):

Id = "Shashank"

elif (Id == 2):

אם (c == 0):

Id = "Shivam"

c = c+1

os.system ("דוגמת 'ברוכים הבאים ל- Shivam Access Granted'")

אַחֵר:

Id = "Shivam"

אַחֵר:

מזהה = "לא ידוע"

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

cv2.imshow ('im', im)

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

לשבור

cam.release ()

cv2.destroyAllWindows ()

שלב 5: LCD ורמקול

השתמשתי גם בתצוגת LED I2C ורמקול.

הנורית נשלטת באמצעות Arduino Mega והקוד שלה מופיע בקוד הסופי.

עבור רמקול, הוא מחובר ל- Raspberry Pi ומשתמש ב- eSpeak Utility.

אתה יכול למצוא את ההפניה שלו כאן-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

שלב 6: השלבים האחרונים

הרכיבו הכל והתכוננו למפץ.

מוּמלָץ: