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

Roomba With MATLAB: 4 שלבים (עם תמונות)
Roomba With MATLAB: 4 שלבים (עם תמונות)

וִידֵאוֹ: Roomba With MATLAB: 4 שלבים (עם תמונות)

וִידֵאוֹ: Roomba With MATLAB: 4 שלבים (עם תמונות)
וִידֵאוֹ: 01. Вступ до Python 3 2024, נוֹבֶמבֶּר
Anonim
Roomba עם MATLAB
Roomba עם MATLAB

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

שלב 1: חלקים וחומרים

חלקים וחומרים
חלקים וחומרים
חלקים וחומרים
חלקים וחומרים
חלקים וחומרים
חלקים וחומרים
חלקים וחומרים
חלקים וחומרים

1. iRobot Create, גירסה 2

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

2. MATLAB 2017a

- רוב הגרסאות הישנות יותר יהיו תואמות את הקוד שהשתמשנו להלן. MATLAB יזהה פקודה שאינה תואמת את הגרסה שיש לך ותציע פקודה המתאימה ביותר.

3. פטל פי 3 דגם B, גרסה 1.2

- בדוק איזה Raspberry Pi תואם ל- iRobot שלך. עיין בקישור זה לעזרה נוספת: https://www.irobotweb.com/~/media/MainSite/PDFs/A… ההנחיה הזו מניחה שאתה עובד עם פטל פטל מתוכנת מראש. שים לב שעליך לעבוד עם פי מתוכנת מראש על מנת שהשלבים הבאים יעבדו. שימוש ב- Pi מתוכנת מראש יאפשר לך לבצע את כל הקידוד שלך ב- MATLAB בלבד.

4. מודול מצלמה V2 (ל- Raspberry Pi)

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

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

שלב 2: תצורה

תְצוּרָה
תְצוּרָה
תְצוּרָה
תְצוּרָה

1. חיבור Raspberry Pi ומודול מצלמה (חומרה)

- כדי להפעיל את ה- Raspberry Pi, יהיה עליך להפעיל מיקרו USB של קצה זכר ליציאת החשמל הנשית שבבקר המיקרו. אופציונלי: ניתן להשתמש בווסת מתח כדי להבטיח שהמתח לא יעלה על 5V. לאחר הפעלת ה- Raspberry Pi, אתה יכול לחבר אותו לרובוט שלך על ידי הפעלת USB a זכר USB מלוח האם ליציאת USB A שבמיקרו -בקר.

- לאחר חיבור ה- Pi לרומבה, המצלמה מוכנה להתקנה. מודול המצלמה יהיה קטן בהרבה ממה שאתה מצפה. שים לב שהעדשה מותקנת על חיישן, וסרט לבן נמשך מהמצלמה. אין להסיר או לקרוע את הסרט! זהו הכבל שאתה צריך כדי לחבר אותו ל- Raspberry Pi. ראשית, החזק את קצה הסרט ומצא את מחברי הכסף והכבל הכחול. אלה נמצאים בצדדים מנוגדים. לאחר מכן, מצא את החריץ בין יציאות Ethernet ו- HDMI ב- Raspberry Pi שלך. שימו לב שיש מנעול קטן ולבן המכסה אותו. הרם לאט את המנעול, אך אל תוציא אותו מהחריץ, כיוון שהוא ינעל וייפגע לצמיתות. לאחר הרמת המנעול, תפס את הסרט ופנה את מחברי הכסף ליציאת HDMI. הצד הכחול יפנה ליציאת ה- Ethernet. החלק לאט את הסרט לתוך החריץ כשהוא עדיין לא נעול. אתה לא צריך לכפות אותו לתוך החריץ. לאחר ההכנסה, דחוף את המנעול חזרה כלפי מטה. אם המצלמה שלך מאובטחת כראוי, אתה אמור להיות מסוגל (בעדינות) למשוך את הסרט ולהרגיש מתח. הסרט לא צריך להיות רופף. לאחר חיבור המצלמה שלך ל- Pi, ייתכן שתבחין עד כמה היא רופפת. זו הסיבה שהשתמשנו בהר מודפס בתלת-ממד כדי לייצב אותו. זוהי בחירה שלך לקבוע באילו חומרים תרצה להשתמש כדי לשמור על המצלמה שלך דוממת להדמיה באיכות גבוהה.

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

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

3. לאחר התקנת הקבצים, כעת תוכל להתחיל להתחבר לרובוט שלך. התחל על ידי הפעלת הרובוט ולאחר מכן הקשה על איפוסו ישירות לאחר ההפעלה (אל תשכח לאפס את הרובוט שלך בכל פעם לפני ואחרי השימוש). שנית, חבר את הרובוט והמחשב הנייד שלך לאותה רשת wifi. לאחר מכן, נדבר עם פטל הפטל המתוכנת מראש באמצעות MATLAB על ידי התקשרות לרומבה באמצעות השם הנתון שלה והפונקציה roomba. לדוגמה, הייתי מתחבר לרובוט 28 באמצעות השורה הבאה: R = roomba (28).

- שימו לב כיצד הקצתי את האובייקט למשתנה R. כעת אני יכול לגשת לפונקציות Roomba המשויכות מקובץ ההתקנה על ידי התייחסות למשתנה R כמו מבנה.

- R.turnAngle (90) אם הכל הלך כשורה, צליל מוזיקלי אמור לנגן, המאשר את הקשר.

שלב 3: לוגיקת MATLAB

מסמך ה- PDF בתחתית שלב זה הוא תרשים זרימה לוגי מפורט לתהליך הקידוד שלנו ב- MATLAB. הפעלנו את חיישני המצוק, האור והחבטות האור על מנת לאפשר לרובוט לתקשר איתנו כאשר הוא מזהה אובייקט בסביבתו הקרובה. לדוגמה, כאשר הרובוט נע קדימה, חיישני האור שלו סורקים אובייקטים בנתיבו בהתאם לווקטור שבו הוא נוסע. בחרנו סף מרחק עבור הרובוט כך שכאשר הוא מתקרב לאובייקט, הוא יתהפך במקום להתנגש בו. הרובוט שלנו מוגדר גם עם טוויטר, שציינו בתהליך הקידוד שלנו (זה יוצג בהמשך).

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

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

להלן הקוד שלנו (הושלם ב- MATLAB 2017a)

%כניסות: נתוני כיוון ממכשיר מחובר wifi, מצלמה

מידע, נתוני חיישן

יציאות %: התנועה נשלטת על ידי המכשיר המחובר ל- wifi והתנועה

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

% דגל חייזרים ואז הרומבה מגיב בציוץ דגל האויב

אחוזים זוהו.

מטרה %: המכשיר שלנו חי ללא מטרה מלבד להגן על מי שכן

% יצר אותו, הוא משרת את יוצרו ועושה זאת

% בדיוק מה שאומרים לו.

%שימוש: בעצם התוכנית תפעל לבד.

נקה הכל, סגור הכל, clc

%אתחול אובייקטים ומשתנים

r = roomba (28);

m = mobiledev;

%use response = כותב אינטרנט (שם מארח, נתונים)

hostname = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop הוא מבצעי … ממתין לפקודה';

data = strcat ('api_key =', API, '& status =', ציוץ);

reponse = webwrite (שם מארח, נתונים);

%לולאה פועלת ללא הרף

בעוד 1 == 1

%מבנים המכילים נתוני Relavent

o = m.orientation; אחוז כיוון המכשיר הנייד

light = r.getLightBumpers (); ערכי פגוש קלים

a = r.getCliffSensors (); %ערכי חיישן CLiff

bump = r.getBumpers (); %חיישני פגוש

בודקים פגושים

אם bump.right == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-.2,.2);

%חיישני אור

elseif light.left> 60 || light.leftFront> 60 || light.leftCenter> 60 || light.right> 60 || light.rightFront> 60 || light.rightCenter> 60

r.moveDistance (-.2,.2);

בדוק %חיישני צוק

%אות גניבה והתראה

elseif a. left <300 && a.right <300 && a. leftFront <300 && a.rightFront <300

r.stop ();

r.beep ();

tweet = 'RoboCop הוסר!'

data = strcat ('api_key =', API, '& status =', ציוץ);

reponse = webwrite (שם מארח, נתונים);

%מבצע הימנעות מצוק רגיל

elseif a. left <300 || a.right <300 || a.leftFront <300 || a.rightFront <300

r.moveDistance (-.2,.2);

%רומבה עברה את הבדיקות ועכשיו היא תפעל עם פעולה רגילה.

%בתחילה גליל המכשיר נמדד והופך לבסיס

מהירות %המשמשת לאחר מכן לחישוב מהירות הגלגל

%תנועת קדימה

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60)*(o (3) -60);

אם o (2)> =-70 && o (2) <0

r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)), baseVel-(. 3/50)*abs (o (2)));

אחר o (2) = 0

r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)), baseVel+(. 3/50)*abs (o (2)));

אחר להפסיק

סוֹף

תנועה אחורה

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-.2, -.2)

r.beep ();

r.beep ();

%מנוחה roomba תחפש את דגל החייזרים המסומן כפרח

%נייר ירוק

אַחֵר

r.stop

img = r.getImage (); %לקחת תמונה

סף = אפור (img (200: 383,:, 2))+.1; רמת ירוק %calc

אם סף>.42

tweet = 'אויב נצפה !!'

data = strcat ('api_key =', API, '& status =', ציוץ);

reponse = webwrite (שם מארח, נתונים);

אַחֵר

r.stop

סוֹף

סוֹף

סוֹף

שלב 4: מסקנה

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

מוּמלָץ: