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

רומבה המסייעת לאסטרונאוטים: 4 שלבים
רומבה המסייעת לאסטרונאוטים: 4 שלבים

וִידֵאוֹ: רומבה המסייעת לאסטרונאוטים: 4 שלבים

וִידֵאוֹ: רומבה המסייעת לאסטרונאוטים: 4 שלבים
וִידֵאוֹ: Self-Assembling Robots and the Potential of Artificial Evolution | Emma Hart | TED 2024, יולי
Anonim
רומבה מסייעת לאסטרונאוטים
רומבה מסייעת לאסטרונאוטים

פרויקט זה נעשה על ידי שימוש ב- Raspberry Pi 3 על סיפון iRobot Create Version 2. MATLAB משמש לתכנת הרובוט על פי הוראות ספציפיות באמצעות החיישנים והמצלמה שלו. החיישנים והמצלמות משמשים לביצוע משימות ספציפיות שיעקבו אחר אסטרונאוט ויספקו לו את היכולת לתקשר עם בסיס הבית שלו אם משהו משתבש.

שלב 1: חלקים נחוצים

חלקים נחוצים
חלקים נחוצים
חלקים נחוצים
חלקים נחוצים
חלקים נחוצים
חלקים נחוצים
חלקים נחוצים
חלקים נחוצים

1. iRobot צור גרסה 2

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

2. פטל פטל 3

ה- Raspberry Pi היה ניתן לתכנות המשמש לפרויקט זה. הקוד מיועד ל- Pi והגרסה של ה- Pi המצורפת היא ה -3 (דגם B). לוחות אחרים הניתנים לתכנות כגון ארדואינו ניתנים לשימוש, אולם ארדואינו ורוב הלוחות האחרים ידרשו קידוד שונה מהמתואר בשלב אחר

3. מודול מצלמת Raspberry Pi

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

4. MATLAB 2018a

הגרסה השנייה האחרונה של MATLAB, 2018a, שימשה לקידוד הכרוך בהתקנה זו. סביר להניח שגירסאות רבות אחרות של MATLAB יעבדו עם זה מכיוון שתכנות Roomba קיימות כבר זמן מה

שלב 2: קבצים ותצורת מצלמה

קבצים ותצורת מצלמה
קבצים ותצורת מצלמה

1. חיבורי פטל ומצלמה ל- roomba

  • ה- Pi יכול להתחבר ל- iRobot ישירות באמצעות מיקרו USB. זה כל מה שהוא צריך כדי להיות מוכן לשימוש. עם זאת, מומלץ למקם אותו בצורה מאובטחת על החדר, כפי שמוצג בתמונות לאורך המצגת עד כה.
  • למצלמה יש חיבור ישיר ל- Raspberry Pi ומומלץ מאוד לרכוש או לייצר משהו על מנת להחזיק את המצלמה ישירות למעלה. אין טעם של ממש למצלמה אם לא ניתן להחזיק אותה במקום להראות מה החדר רואה.

2. קבצים

  • לאחר שהכל מוגדר ומחובר, ודא שהרובוט מאופס ומוכן לפעולה על ידי החזקת כפתורי "נקודה" ו"עגינה "למשך 10 שניות יחד.
  • כאן יש צורך לראשונה ב- MATLAB. קודם כל צריך להתקין את הקבצים עבור roomba וכל מה שצריך כדי להריץ קבצים אלה הוא הקוד המופיע בקישור הזה:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

שלב 3: בדיקת ראמבה ראשונית

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

1. ודא שאתה מחובר לאותה רשת WiFi כמו הרומבה. בלי זה לעולם לא תתחבר באמצעות MATLAB.

2. ברור לאיזה מספר החדר שלך מוקצה, כך שתוכל להתחבר באופן ספציפי לרומבה שבחרת. לדוגמה, אם המספר של roomba שלך הוא 30, היית מתחבר אליו על ידי הקלדת roomba (30) בחלון הפקודה ב- MATLAB.

3. ניתן לשלוט ברומבה באמצעות מבנים ב- MATLAB. לדוגמה, אם אתה מגדיר את הקוד שלך עבור roomba (30) למשתנה 'r', ניתן להזיז את הרובוט קדימה באמצעות הפקודה r.moveDistance (0.2, 0.1).

4. יש הרבה פקודות שונות שניתן להעביר לרומבה וניתן לראות אותן על ידי הקלדת 'דוק רומבה' בחלון הפקודה.

5. את כל החיישנים לקריאת אור, בליטה וצוק ניתן לקרוא באמצעות הפקודות הנראות ב- 'doc roomba', אך ניתן לראות תפריט קבוע ומסודר לצפייה בנתוני החיישן באמצעות 'r.testSensors '.

6. לאחר בדיקת כל זאת, ניתן להשתמש בתוכנת איסוף התמונות של הרובוט כדי לקרוא ולראות תמונות שצולמו. הקוד הבסיסי לכך יהיה img = r.getImage ו- imshow (img);.

7. ניתן למצוא ערכי RGB של התמונה עם הקודים red_mean = mean (ממוצע (img (:,:, 1)));

green_mean = ממוצע (ממוצע (img (:,:, 2))); ו- blue_mean = mean (ממוצע (img (:,:, 3)));.

שלב 4: דוגמת קוד MATLAB

קוד MATLAB לדוגמה
קוד MATLAB לדוגמה

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

עבור i = 1:.1: 3 img = r.getImage; image (img) red_mean = ממוצע (ממוצע (img (:,:, 1))); green_mean = ממוצע (ממוצע (img (:,:, 2))); blue_mean = ממוצע (ממוצע (img (:,:, 3))); אם red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.leftFront <10 || cliff.rightFront <10 || cliff.right700 || light.leftFront> 700 || מרכז מרכז אור> 700 || light.rightCenter> 700 || light.rightFront> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.stop else for i = 1: 2 r.moveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stop סוף קצה סוף אם green_mean <35 && blue_mean <35 %מראה צבע עור (צריך להתאים על בסיס צבע העור של האסטרונאוט) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; %שולח דוא"ל כשהחליפה כבויה psswd = 'כן'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subject'; m_text = 'מבחן'; setpref ('אינטרנט', 'דואר אלקטרוני', דואר); setpref ('אינטרנט', 'SMTP_Server', מארח); setpref ('אינטרנט', 'SMTP_Username', דואר); setpref ('אינטרנט', 'SMTP_Password', psswd); 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 (emailto, 'עזרה!', 'מדי האסטרונאוטים כבויים!', img); סוף אם red_mean 135 || green_mean 135 || blue_mean 135 עבור j = 1: 2 %אם לא ניתן למצוא לבן על ידי הרובוט r.turnAngle (360) mail = '[email protected]'; psswd = 'כן'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subject'; m_text = 'מבחן'; setpref ('אינטרנט', 'דואר אלקטרוני', דואר); setpref ('אינטרנט', 'SMTP_Server', מארח); setpref ('אינטרנט', 'SMTP_Username', דואר); setpref ('אינטרנט', 'SMTP_Password', psswd); 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 (emailto, 'עזרה!', 'לא ניתן למצוא את האסטרונאוט!', img); r.stop סוף סוף סוף

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

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

מוּמלָץ: