תוכן עניינים:
וִידֵאוֹ: עוזר הגן Roomba Bot: 8 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:17
קיארה מאיירס, אחמד אלחאדר ומדיסון טיפט
מַטָרָה:
מדריך זה ילמד אותך כיצד לתכנת בוט Roomba, באמצעות MATLAB, כדי לנווט בגינה, ולזהות פירות/ירקות בצורת מעגל שהם בשלים מספיק בכדי לאסוף אותם בהתאם לגודלם. הרובוט הזה גם שולח לך הודעת דואר אלקטרוני, המתריע בפניך כמה פירות מוכנים לאסוף והנתיב בו הוא נסע.
מאפיינים:
- משתמש בחיישני אור כדי לזהות קירות ולהסתובב מעט על מנת להימנע מפגיעה בהם
- משתמש בחיישני בליטה על מנת לשבור את התוכנית כשהיא פוגעת בסלע בקצה הגן
- משתמש בעיבוד תמונה כדי לזהות מעגל בגינה ולאחר מכן לקבוע את הרדיוס שלו
- משתמש בחיישני צוק לאיתור קלטת צבעונית המצביעה על הימצאות פרי
שלב 1: חומרים ואספקה:
- מחשב נייד אחד
- MATLAB 2017
- מנקה חיסונים Roomba
- פאי פטל
- גושי עץ
- נייר לבן
- נייר שחור
- סרט צבעוני/רצועה דקה של נייר צבעוני
- אבן גדולה
שלב 2:
שלב 3: הרכבת ה"גן "שלך
- קח את הנייר השחור שלך וחתוך עיגולים בגדלים שונים
-
הדביקו עיגולים שחורים אלה על נייר לבן גדול
ניגוד זה יהיה נחוץ בעת גילוי פרי
-
השתמש במחסני העץ שלך כדי לבנות שביל גן דמוי מבוך עבור הרובוט שלך לנווט
בחרנו במסלול בצורת U כמו בתמונה למעלה
- בסוף הגן שלך הוסף סלע או דלת או חפץ אחר כדי שהרובוט שלך יידע שזה נעשה
-
הדביקו את הנייר הלבן שלכם עם העיגול על קירות הגן
השתמשנו בדליים כדי להדביק אותו מכיוון שהקירות שלנו היו קצרים מדי בשביל המצלמה
- הניחו קלטת צבעונית/רצועה דקה של נייר צבעוני על האדמה מול הפרי
שלב 4: כתיבת הקוד
ניווט בגן
שימוש בחיישני בליטה: כדי להריץ את התוכנית, אנו ממקמים את הקידוד בהצהרה של זמן שדורשת הצהרות שונות אם עד שהקוד נשבר. אם אחד מהפגושים ייפגע, זה יגרום לערכם שווה לאמת (שבבולאני הוא ערך 1). משפט if משמש לשבירת הקוד כאשר אחד מהערכים שלו שווה ל -1.
שימוש בחיישני צוק: בתוך הצהרת ה- while, אנו משתמשים בהצהרת if כדי לספר לרומבה מתי היא הגיעה למיקום של מפעל. הרומבה מזהה את הקלטת הצבעונית על הרצפה על ידי בחינת סף האדום שחיישני המצוק קולטים. אם חיישן המצוק השמאלי או הימני מזהה צבע בעל סף גדול מזה של הקרקע, הוא יעצור את הרובוט למשך 2 שניות (באמצעות פקודת השהיה). במהלך 2 שניות אלה, הרומבה תיקח ויציג תמונה של הפרי. באמצעות הפקודה imfindcircles המובנית, הגדר טווח לרדיוס העיגולים שלך, והרומבה שלך ימצא את הפירות שנקראים לך.
שימוש בעיבוד תמונה: בתוך הצהרת if, הטמענו משפט אם אחר שאומר: אם הרדיוס שזוהה, radii3, גדול או שווה לדרישה המינימלית שלנו לפרי בשל, r1 (תחליטו זאת), ואז ספרו והצג הרומבה כמה פירות מוכנים ופונים להמשך הגן. אם לא, הפנייה להמשך דרך הגן. הערה: ייתכן שיהיה עליך להתאים את הזווית שאתה מסובב מכיוון שכל רומבה שונה
שימוש בפגשי אור: באמירה אחרת של if, הפגושים הקלים מנותחים על מנת להיות בטוחים שאף אחד מהם אינו גדול מהסף הנקבע שלנו. אם פגוש התאורה השמאלי, הימני, השמאלי, המרכז הימני, החזית השמאלית או הימנית יעלה מעל הסף, אז הרומבה יפנה מעט בזווית המתאימה כדי להימנע מפגיעה בקיר. מכאן, ניווט במבוך.
שאר הקוד משמש לשרטוט הנתיב שעשה הרומבה ולאחר מכן שולח את התוצאות לדוא ל שלך
שלב 5: העתק את הקוד
מטרה: בהתבסס על הגדלים שלהם הרומבה תעבור בגינה ותבדיל ירקות/פירות שמוכנים להרים. % כניסות: חיישני Lightbump, חיישני צוק, חיישני בליטה, תמונה מהמצלמה % תפוקות: בכל פעם שחיישני אור גדולים מהסף החדר יפנה ותצלם תמונה, צפצופים אם הרדיוס של % ירקות/פירות נמצא בין טווח ספציפי. הקוד נשבר כאשר רומבה נתקלת באובייקט %, שולחת לאסטרונאוט מייל לגבי כמה פירות מוכנים לאסוף % ומיפוי של תנועת החדר. % שימוש: אם ובזמן הצהרות, פקודות תכנון, קוד דוא ל מ- MATLAB
k = 0
עֲוִית
timerVal = tic
בעוד שזה נכון
v =.2; % מהירות r.setDriveVelocity (v, v);% roomba קדימה L = r.getLightBumpers; LC = L. leftCenter; Rr = L. נכון; Lf = L. שמאל; RC = L.rightCenter; LF = L. leftFront; RF = L.rightFront; ש = 75; % מפתן. RTH = 30; %סף אדום גבוה RTL = 10; %סף אדום נמוך B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; אם S.leftFront> PL1 || S.rightFront> PL1 % מזהה אם הצבע על הקרקע נמצא מעל הסף r.stop stop (2) elapsedTime = toc (timerVal-2) tic timerVal = tic % pause במשך 2 שניות img = r.getImage; %לקחת תמונה imshow (img)%להציג תמונה [centers3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = עיגולים (מרכזי 3, רדיוס 3); %חפש עיגולים של רדיוסים בטווח שצוין בתמונה אם radii3> = r1 T = 1 k = k+1 dist1 = 0.2.*חלף זמן %אם הרדיוס שזוהה גדול או שווה לדרישת %המינימלית של פרי בשל., אז Roomba סופר את הפרי הזה if radii3 <= r3 T = 0 else T = 0 dist2 = 0.2.*elappedTime %אם לא, אז זה לא סופר את סוף הפרי
אם T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78) %אם זוהה פרי, הצג את המספר ב- Roomba, %השמיע רעש וסובב elseif T == 2 r.turnAngle (78) %אם מזוהים 2 פירות, פנה כדי להמשיך דרך %garden אחר r.turnAngle (78) %אם לא מזוהים פירות, פנה להמשך דרך סוף סוף הגן אם LC> Q r.stop r.turnAngle (-7) elseif RC> Q r.stop r.turnAngle (7) elseif LF> Q r.stop r.turnAngle (-7) elseif RF> Q r.stop r. turnAngle (7) elseif Lf> Q r.stop r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) end %אם אחד מערכי הפגושים הקלים עולה על הסף, אז %הרומבה יסתובב מעט בכיוון המתאים כדי למנוע פגיעה באחוזים בקיר
אם B.right == 1 || B. שמאל == 1 || B.front == 1 dist3 = 0.2.*Elapped Time r.stop r.beep ('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle (360) %אם כל אחד מ מכשולים נפגעים, ואז הרומבה מנגנת צליל, מסתובב, %ושובר את הקוד
סוף הפסקה
סוף פיזור (0.533, 0, '^') החזק בפיזור (0.533, dist1, '<') החזק בפיזור (-dist2, dist1, 'v') החזק בפיזור (-dist2, 0, 'd') saveas (gcf, 'Movement.png')
kmsg = num2str (k) mail = '[email protected]' password = 'Srsora123#' host = 'smtp.gmail.com' port = '465'
setpref ('אינטרנט', 'דואר אלקטרוני', דואר); setpref ('אינטרנט', 'SMTP_Server', מארח) props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', דואר); props.setProperty ('mail.smtp.host', מארח); props.setProperty ('mail.smtp.port', יציאה); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', יציאה); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (מייל, 'שלום אסטרונאוט! יש הרבה פירות בגן', kmsg, {'movement.png'})
מוּמלָץ:
הגן על הרשת שלך באמצעות חומת אש UTM חינם: 4 שלבים
הגן על הרשת שלך באמצעות חומת אש UTM חינם: מדריך זה יעסוק ביסודות להתקנת וריצת Sophos UTM ברשת הביתית שלך. זוהי חבילת תוכנה חינמית ורבת עוצמה. אני מנסה להגיע למכנה המשותף הנמוך ביותר, כך שלא אכנס לשילוב ספריות פעיל, מרחוק
הגן המקורה ארדואינו: 7 שלבים
הגן המקורה של ארדואינו: גינון בעידן המודרני פירושו להפוך את הדברים למסובכים ומפרכים יותר, עם אלקטרונים, סיביות ובייטים. שילוב של מיקרו -בקרים וגינון הוא רעיון פופולרי באמת. אני חושב שזה בגלל שלגינות יש כניסות ויציאות פשוטות מאוד ש
הגן על הרעיונות שלך, הגן על העבודה שלך: 8 שלבים
הגן על הרעיונות שלך, הגן על העבודה שלך: איבדתי נתונים לפני כמה ימים כתוצאה מהתרסקות מחשב. עבודה של יום אחד אבדה.:/ אני שומר את הנתונים שלי בענן כדי למנוע פגם בדיסק הקשיח. אני משתמש בתוכנת גרסאות כדי שאוכל לשחזר גרסאות ישנות יותר של עבודתי. אני עושה גיבוי כל יום. אבל הפעם אני
Garduino - הגן החכם עם Arduino: 4 שלבים (עם תמונות)
Garduino - הגן החכם עם Arduino: בימים אלה, אף אחד אינו חף מפשע. האם יש מישהו שלא הרג צמח בטעות ??? קשה לשמור על הצמחים שלך בחיים. אתה קונה צמח חדש, ובמקרה הגרוע ביותר אתה פשוט שוכח להשקות אותו. במקרה הטוב יותר, אתה זוכר שזה קיים, אבל אתה כן
חוסם כוח פנטום (הגן על המיקרופונים הדינמיים שלך): 5 שלבים
חוסם כוח פנטום (הגן על המיקרופונים הדינמיים שלך): מיקרופוני הקבל מכילים מעגלים פנימיים וקפסולה הדורשת אספקת חשמל. כוח הפנטום משתמש באותם חוטים של אות הפלט המאוזן של המיקרופון כדי להעביר את האנרגיה הזו מקונסולת המיקסר למיקרופון. נדרש כוח פנטום