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

Roomba מבוקרת MATLAB: 5 שלבים
Roomba מבוקרת MATLAB: 5 שלבים

וִידֵאוֹ: Roomba מבוקרת MATLAB: 5 שלבים

וִידֵאוֹ: Roomba מבוקרת MATLAB: 5 שלבים
וִידֵאוֹ: VATERTAGSTORTE!🍰😋MEINE FÜRST-PÜCKLER-TORTE! SUPER LECKER UND EINFACH! REZEPT VON SUGARPRINCESS 💝 2024, נוֹבֶמבֶּר
Anonim
Roomba נשלט על ידי MATLAB
Roomba נשלט על ידי MATLAB
Roomba נשלט על ידי MATLAB
Roomba נשלט על ידי MATLAB

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

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

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

MATLAB 2018a

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

iRobot צור מכשיר

-המכשיר הזה הוא מכשיר מיוצר במיוחד שמיועד אך ורק לתכנות וקידוד. (זה לא ואקום של ממש)

פטל פטל (עם מצלמה)

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

שלב 2: קובץ מסד הנתונים של Roomba

קובץ מסד הנתונים של Roomba
קובץ מסד הנתונים של Roomba

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

תוכל להוריד את הקובץ בקישור זה או בקובץ להורדה למטה

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

שלב 3: התחברות לרומבה

ראשית עליך לוודא כי הרובוט שלך מחובר ללוח הפטל שלך באמצעות פקק מיקרו USB. לאחר מכן עליך לחבר כראוי את המחשב והרובוט לאותו WiFi. לאחר שתעשה זאת, תוכל להפעיל את הרובוט שלך ולהתחבר אליו באמצעות הפקודה הנתונה בקובץ מסד הנתונים של הרובוט. (תמיד איפס את הרובוט שלך לפני ואחרי השימוש בו). לדוגמה, אנו משתמשים בפקודה "r.roomba (19)" כדי להתחבר לרובוט שלנו, ולהקצות את המשתנה r למכשיר שלנו. זה מתייחס בחזרה לקובץ מסד הנתונים, המגדיר את המשתנה שלנו כמבנה שאנו יכולים להתייחס אליו בכל רגע נתון.

שלב 4: הקוד

הקוד
הקוד
הקוד
הקוד

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

התחלנו בפקודה הפשוטה "r.setDriveVelocity (.06)" שמגדירה את מהירות הקדימה של הרובוט ל -06 m/s. זה רק כדי להניע את הרובוט מראש

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

בעוד ש- % true בעוד הלולאה עוברת עד שמשהו "שקרי" מתרחש (במקרה זה הוא ממשיך אינסוף) data = r.getCliffSensors; data2 = r.getBumpers; % מאחזר נתונים ברציפות אודות ערכי חיישן המצוק ומקצה אותם למשתנה % img = r.getImage; % מצלם תמונה מהמצלמה המותקנת % תמונה (img); % מציג את התמונה שצולמה % red_mean = mean (ממוצע (img (:,:, 1))); % לוקח את הערך הממוצע של הצבע הירוק אם data.rightFront <2000 r.turnAngle (-2); % הופך את Roomba בערך ל- 2 מעלות CW ברגע שהערך עבור חיישני המצוק הקדמי הימני יורד מתחת ל 2000 r.setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % אומר לרומבה להמשיך קדימה במהירות של.2 m/s אם שני הערכים מהחיישנים הקדמיים הימניים והחזית השמאלית יורדים מתחת ל- 2000 % r.turnAngle (0); % אומר לרומבה לא לפנות אם התנאים שהוזכרו לעיל נכונים

elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);

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

anet = alexnet; % מקצה למידה עמוקה של alexnet למשתנה ואילו % Infinite while loop img = r.getImage; img = imresize (img, [227, 227]); label = classify (anet, img); אם תווית == "מגבת נייר" || label == "מקרר" label = "מים"; תמונת סיום (img); כותרת (char (תווית)); ציור;

לולאת ה- while המאפשרת לנו לשלוט במכשיר באמצעות הטלפון שלנו מאחזרת את הנתונים מהג'ירוסקופ של הטלפון ואנחנו מחברים אותם למטריצה שמזרימה נתונים ברציפות בחזרה ל- MATLAB במחשב. אנו משתמשים במשפט if הקורא את נתוני המטריצה ונותן פלט המניע את המכשיר על בסיס ערכים מסוימים של הג'ירוסקופ של הטלפון. חשוב לדעת שהשתמשנו בחיישני Orientation של המכשיר הנייד. המטריצה אחת לשלושה שהוזכרה לעיל מסווגת לפי כל אלמנט של חיישני הכיוון של הטלפון, שהוא אזימוט, גובה וצלע. הצהרות אם יצרו תנאים שהצהירו כאשר הצד חורג מהערכים 50 או יורד מתחת ל -50, אז הרובוט נע מרחק מסוים קדימה (חיובי 50) או אחורה (שלילי 50). ואותו דבר לגבי ערך המגרש. אם ערך המגרש חורג מהערך של 25 ירידות מתחת ל -25, הרובוט מסתובב בזווית של 1 מעלות (חיובי 25) או שלילי 1 מעלות (שלילי 25)

בעוד שהשהיה אמיתית (.1) % הפסקה של.5 שניות לפני כל ערך נלקח Controller = iphone. Orientation; % מקצה את המטריצה לערכי הכיוון של האייפון למשתנה Azimuthal = Controller (1); % מקצה את הערך הראשון של המטריצה למשתנה Pitch = Controller (2); % מקצה את הערך השני של המטריצה למשתנה (הטיה קדימה ואחורה כאשר האייפון מוחזק הצידה) צד = בקר (3); % מקצה את הערך השלישי של המטריצה למשתנה (הטיה שמאלה וימינה כאשר האייפון מוחזק הצידה) % גורם לפלט המבוסס על כיוון הטלפון אם צד> 130 || מרחק צד 25 r.moveDistance (-. מוטה שמאלה לפחות 25 מעלות אחרת אם המגרש <-25 r.turnAngle (1) % הופך את הרומבה לכ -1 מעלות CW אם ה- iPhone מוטה בקצה של 25 מעלות לפחות

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

שלב 5: מסקנה

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

מוּמלָץ: