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

Roomba Parking Pal: 6 שלבים
Roomba Parking Pal: 6 שלבים

וִידֵאוֹ: Roomba Parking Pal: 6 שלבים

וִידֵאוֹ: Roomba Parking Pal: 6 שלבים
וִידֵאוֹ: Quick start guide to Roomba® 2024, נוֹבֶמבֶּר
Anonim
Roomba Parking Pal
Roomba Parking Pal

פרויקט זה משתמש ב- Roomba לתכנות iRobot Create, ב- MATLAB r2018a ובנייד MATLAB. בשימוש בשלושת המדיומים הללו ובידע שלנו על קידוד, תיכנתנו את iRobot Create לפרש צבעים ולהשתמש בחיישנים המשולבים להשלמת משימות. פרויקטים אלה תלויים בתקשורת Raspberry Pi ו- MATLAB לביצוע משימות אלה.

שלב 1: חומרים

חומרים
חומרים
חומרים
חומרים

1. iRobot צור רובוט

2. MATLAB r2018a

3. פטל פטל

4. מודול מצלמה

5. מעמד מייצב מצלמה מודפס תלת-ממדי

6. סמארטפון עם מותקן MATLAB

7. מחשב נייד/מחשב עם מותקן MATLAB

שלב 2: חיבור

שלב זה עוסק בחיבור ה- Raspberry Pi לרובוט, שנית חיבור הרובוט למחשב שלכם וחיבור הסמארטפון למחשב.

החלק הקל ביותר בתהליך זה הוא חיבור ה- Raspberry Pi לרובוט שלך, מכיוון שה- Raspberry Pi מותקן בחלקו העליון של הרובוט. יש כבל מהרובוט שכל מה שאתה צריך לעשות הוא לחבר את הצד של ה- Raspberry Pi.

השלב הבא הוא חיבור הרובוט למחשב שלך כך שתוכל להריץ פקודות לביצוע הרובוט. הדבר הראשון שעליך לעשות הוא לחבר את המחשב שלך לרשת האלחוטית שהרומבה שלך יוצר. כעת, מומלץ להשתמש בסמל הגדר נתיב ב- MATLAB כדי להגדיר את הנתיב כך שתוכל להשתמש בפונקציות בארגז הכלים של Roomba מ- MATLAB. בכל פעם שאתה מתחיל ומסיים את השימוש ברובוט, עליך לבצע איפוס קשה של "שני אצבעות", מה שאומר שאתה מחזיק את כפתורי העגינה ומזהה במשך עשר שניות עד שהאור מתעמעם ומצביע על שחרור. הצלחת עם האיפוס הקשה הזה אם אתה שומע את הרובוט משחק בקנה מידה קצר. בשלב הבא עליך להתחבר לרומבה באמצעות שורת קוד כמו "r = roomba (x)", כאשר 'x' הוא המספר המיועד לרובוט שיש לך.

לבסוף, עליך להוריד את MATLAB לנייד בכל מכשיר נייד שבו תשתמש בפרויקט זה, ויישום זה זמין הן במכשירי Android והן ב- Apple. לאחר התקנת היישום, יהיה עליך להיכנס באמצעות אישוריך. לאחר מכן עליך לחבר התקן זה למחשב שלך, באמצעות הכרטיסייה שכותרתה "עוד" -> לאחר מכן לחץ על "הגדרות" -> ולאחר מכן לחץ על "הוסף מחשב" זה אמור להציג את המסך המוצג בתמונות למעלה. לאחר שתראה זאת השלב הבא שעליך לעבור הוא פשוט לחבר ולחטוף את המידע שהוא מבקש. לאחר שתתחבר בהצלחה, תוכל להתקשר לפונקציות שאתה מגדיר במחשב שלך בטלפון כדי לשלוט ברובוט שלך.

שלב 3: יצירת הגיון של קוד MATLAB לשימוש חיישנים

באופן הגיוני יצירת קוד MATLAB לשימוש בחיישנים
באופן הגיוני יצירת קוד MATLAB לשימוש בחיישנים

יהיה קל יותר ליצור את הקוד כאשר רובו נמצא בתוך לולאת while, כך שהרומבה תוכל לעדכן כל הזמן ערכים תקפים שהוא מסתכל עליהם. אם יש שגיאה, MATLAB תציג שגיאה והיכן שהיא מופיעה בקוד, מה שהופך את פתרון הבעיות לפשוט יחסית.

קוד זה תוכנן ב- M2020a MATLAB ומשתמש בארגזי הכלים הסטנדרטיים, ארגז הכלים iRobot Create, וכן ארגז הכלים הנייד של MATLAB. הרומבה המשמשת בדוגמה זו מסומנת כ- 26, וצריך להפעיל את r = roomba (26) רק פעם אחת כדי לתקשר באופן מלא עם הרומבה.

קוד:

פונקציה חנאית (x) אם x == 1

r = roomba (26) % מתחבר ל- roomba

בעוד שזה נכון

r.setDriveVelocity (.05,.05) % מגדיר את roomba למהירות נסיעה איטית יותר

bump = r.getBumpers % מקבל את הנתונים מחיישני הבליטות

cliff = r.getCliffSensors % מקבל את הנתונים מחיישני המצוק

light = r.getLightBumpers % מקבל את הנתונים מחיישני בליטות האור

img = r.getImage;% קורא את המצלמה מהרובוט

red_mean = ממוצע (ממוצע (img (:,:, 1))) % קורא את הכמות הממוצעת של הפיקסלים האדומים

green_mean = ממוצע (ממוצע (img (:,:, 2))) % קורא את הכמות הממוצעת של פיקסלים ירוקים

blue_mean = ממוצע (ממוצע (img (:,:, 3))) % קורא את הכמות הממוצעת של הפיקסלים הכחולים

אם bump.front == 1 %קורא חיישני בליטה קדמית

r.stop %מפסיק את roomba

msgbox ('נתיב סתום!', 'הודעת עוזר חניה') % מציג הודעה שאומרת שהנתיב סתום שבירה % מסיימת את הלולאה

elseif green_mean> 150

r.stop %מפסיק את roomba

cont = questdlg ('המשך?', 'נתיב הושלם') %מציג תיבת שאלות המבקשת להמשיך

אם המשך == 'כן'

parkassist (1) %מפעיל מחדש את הקוד

אַחֵר

סוֹף

break % מסיים את הלולאה

elseif red_mean> 140

r.turnAngle (45) %הופך את החדר 45 מעלות

r.timeStart %מתחיל מונה זמן

בעוד שזה נכון

r.setDriveVelocity (.05,.05) %מגדיר את מהירות החדר

time = r.timeGet %מקצה את הזמן למשתנה

bump = r.getBumpers % מקבל את הנתונים מחיישני הבליטות

cliff = r.getCliffSensors % מקבל את הנתונים מחיישני המצוק

light = r.getLightBumpers % מקבל את הנתונים מחיישני בליטות האור

img = r.getImage;% קורא את המצלמה מהרובוט

red_mean = ממוצע (ממוצע (img (:,:, 1))) % קורא את הכמות הממוצעת של הפיקסלים האדומים

green_mean = ממוצע (ממוצע (img (:,:, 2))) % קורא את הכמות הממוצעת של פיקסלים ירוקים

blue_mean = ממוצע (ממוצע (img (:,:, 3))) % קורא את הכמות הממוצעת של הפיקסלים הכחולים

אם blue_mean> 120

r.moveDistance (-0.01) % מזיז את החדר לאחור שיר מרחק מוגדר Play (r, 'T400, C, D, E, F, G, A, B, C^', 'true') % מנגן סולם מוזיקלי עולה

msgbox ('נמצאו מים!', 'הודעת עוזר חניה') % מציג הודעה המציינת כי נמצאו מים r.turnAngle (-80) % מסתובב roomba 80 מעלות

break % מסתיים הלולאה הנוכחית

elseif light.rightFront> 25 || light.leftFront> 25 %קורא חיישני בליטות אור

r.moveDistance (-0.01) % מזיז את החדר לאחור מרחק מוגדר

r.turnAngle (-35) % מסובב את החדר 35 מעלות

break %מסתיים הלולאה הנוכחית

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %קורא את שני חיישני המצוק

r.moveDistance (-0.1) % מזיז את roomba לאחור מרחק מוגדר

r.turnAngle (-80) %מסתובב roomba 80 מעלות

break % מסתיים הלולאה הנוכחית

אחר זמן> = 3

r.stop %מפסיק את roomba

contin = questdlg ('התחנה חינם, המשך?', 'הודעת עוזר החניה') %שואלת אם החדר צריך להמשיך אם contin == 'כן'

r.turnAngle (-90) % מסובב את החדר 90 מעלות

parkassist (1) %מפעיל מחדש את הפונקציה

אַחֵר

r.stop % עוצר את החדר

סוֹף

אַחֵר

סוֹף

סוֹף

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %קורא את שני חיישני המצוק

r.moveDistance (-0.1) %מזיז את roomba לאחור מרחק מוגדר

r.turnAngle (-90) %מסתובב roomba 90 מעלות

elseif cliff.rightFront <2500 %קורא את חיישן המצוק הנכון

r.turnAngle (-5) %מסובב מעט את הרומבה בכיוון ההפוך של חיישן המצוק

elseif cliff.leftFront <2500 %קורא את חיישן המצוק השמאלי

r.turnAngle (5) %מסובב מעט את הרומבה בכיוון ההפוך של חיישן המצוק

אַחֵר

סוֹף

סוֹף

סוֹף

שלב 4: בדיקת הקוד והרובוט

בדיקת הקוד והרובוט
בדיקת הקוד והרובוט
בדיקת הקוד והרובוט
בדיקת הקוד והרובוט
בדיקת הקוד והרובוט
בדיקת הקוד והרובוט

לאחר פיתוח הקוד, השלב הבא היה בדיקת הקוד והרובוט. מכיוון שיש הרבה התאמות שונות שניתן לבצע בקוד, כגון הזווית שהרובוט מסובב, המהירות שהוא נע והספים לכל צבע, הדרך הטובה ביותר להבין את הערכים האלה עבור הרובוט שלך היא לבדוק אותם ותשתנה תוך כדי. עבור כל יום עבודה שהיה לנו, כל הזמן שינינו את הערכים האלה מכיוון שחלקם מסתמכים על הסביבה שבה הרובוט שלך פועל. הדרך הטובה ביותר שמצאנו הייתה למקם את החדר על הנתיב שאתה רוצה שהוא ימשיך, ותהיה לו מחסום גבוה מספיק כדי שהמצלמה לא תוכל לזהות צבעים שאתה לא רוצה שהיא תעשה. השלב הבא הוא תן לו לרוץ והראה לו את הצבעים שאתה רוצה, כאשר אתה רוצה שהוא ישלים את המשימה הזו. תוך כדי תנועה, אם אתה רואה בעיה הדבר הטוב ביותר לעשות הוא לדחוף את הפגוש הקדמי פנימה, לגרום לו לעצור, ולאחר מכן שנה את הפרמטר שהתקשת איתו.

שלב 5: זיהוי שגיאה

עם סיום כל פרויקט, תמיד יש מקורות טעויות. מבחינתנו, חווינו טעות בעובדה הפשוטה שהרובוט אינו מדויק בזווית שבה הוא מסתובב, כך שאם אתה אומר לו להסתובב 45 מעלות זה לא יהיה מדויק. מקור שגיאה נוסף עבורנו היה שלפעמים הרובוט מתקלקל, וקשה לך לאפס אותו לפני שהוא עובד שוב. מקור השגיאה האחרון העיקרי עבורנו היה שלאותו קוד לא תהיה אותה השפעה על רובוטים שונים, ולכן ייתכן שיהיה עליך להתאזר בסבלנות ולהתאים אותו בהתאם.

שלב 6: מסקנה

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

מוּמלָץ: