תוכן עניינים:
- שלב 1: חלקים וחומרים
- שלב 2: קובץ מסד הנתונים של Roomba
- שלב 3: התחברות לרומבה
- שלב 4: הקוד
- שלב 5: מסקנה
וִידֵאוֹ: Roomba מבוקרת MATLAB: 5 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
מטרתו של פרויקט זה היא להשתמש ב- MATLAB וכן ברובוט שניתן לתכנת iRobot. הקבוצה שלנו שילבה את כישורי הקידוד שלנו על מנת ליצור סקריפט MATLAB שמשתמש בפונקציות רבות של iRobot, כולל חיישני המצוק, חיישני הפגוש, חיישני האור והמצלמה. השתמשנו בקריאות חיישן ומצלמה אלה ככניסות, ומאפשרים לנו ליצור יציאות מסוימות שאנו רוצים באמצעות פונקציות קוד ולולאות של MATLAB. אנו משתמשים גם במכשיר הנייד ובג'ירוסקופ MATLAB כדרך להתחבר ל- iRobot ולשלוט בו.
שלב 1: חלקים וחומרים
MATLAB 2018a
-גרסת MATLAB לשנת 2018 היא הגרסה המועדפת ביותר, בעיקר כי היא פועלת בצורה הטובה ביותר עם הקוד שמתחבר למכשיר הנייד. עם זאת, ניתן לפרש את רוב הקוד שלנו ברוב גרסאות ה- MATLAB.
iRobot צור מכשיר
-המכשיר הזה הוא מכשיר מיוצר במיוחד שמיועד אך ורק לתכנות וקידוד. (זה לא ואקום של ממש)
פטל פטל (עם מצלמה)
- זהו לוח מחשבים לא יקר שעובד כמוח של ה- iRobot. הוא אמנם קטן, אך מסוגל להרבה דברים. המצלמה היא תוספת נוספת. הוא משתמש גם בפאי הפטל כדי להשיג את כל הפונקציות והפקודות שלו. המצלמה בתמונה למעלה מותקנת על מעמד מודפס בתלת מימד, שנוצר על ידי מחלקות יסודות ההנדסה באוניברסיטת טנסי.
שלב 2: קובץ מסד הנתונים של 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.
מוּמלָץ:
דלת מוסך מבוקרת Alexa עם Arduino Esp8266: 6 שלבים
דלת מוסך מבוקרת Alexa עם Arduino Esp8266: הרעיון לפרויקט הזה הגיע אלי מפרויקט ישן שעבדתי עליו לפני זמן מה. חיברתי מעגל לחיצת כפתור פשוט שידליק נורית כאשר לוחץ על כפתור על ידי דלת המוסך. שיטה זו התבררה כבלתי אמינה ולא שימושית כל כך
טפטפת קו עפיפונים מבוקרת בטלפון: 11 שלבים
טלפון מבוקר עפיפוני קו עפיפונים: הקדמה הוראה זו מתארת כיצד לבנות מכשיר שיוריד עד שלושה פראבים מקו עפיפונים. המכשיר משמש כנקודת גישה אלחוטית, המספק דף אינטרנט לטלפון או לטאבלט. זה מאפשר לך לשלוט בירידה של parabear
אוטומציה מדוברת -- אודיו מאת Arduino -- אוטומציה מבוקרת קול -- מודול בלוטות 'HC - 05: 9 שלבים (עם תמונות)
אוטומציה מדוברת || אודיו מאת Arduino || אוטומציה מבוקרת קול || מודול בלוטות 'HC - 05: …………………………. אנא הירשם לערוץ היוטיוב שלי לסרטונים נוספים …. …. בסרטון זה בנינו אוטומציה מדוברת .. כאשר תשלח פקודה קולית באמצעות הנייד, היא תפעיל מכשירים ביתיים ותשלח משוב
פרויקט Roomba MATLAB: 5 שלבים
פרויקט Roomba MATLAB: התוכנית הנוכחית שיש לנאס"א עבור רובר המאדים היא שהיא תהיה אספן נתונים ותסתובב סביב מאדים, ותאסוף דגימות של האדמה שתחזיר לכדור הארץ, כך שמדענים יוכלו לראות אם היו צורות חיים קודמות כוכב הלכת. נוֹסָף
Roomba With MATLAB: 4 שלבים (עם תמונות)
Roomba With MATLAB: פרויקט זה עושה שימוש ב- MATLAB ורובוט הניתן לתכנות iRobot Create2. על ידי הצגת הידע שלנו ב- MATLAB, אנו יכולים לתכנת את ה- Create2 לפרש תמונות ולזהות אותות. הפונקציונליות של הרובוט תלויה בעיקר ב