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

פרויקט Roomba MATLAB: 5 שלבים
פרויקט Roomba MATLAB: 5 שלבים

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

וִידֵאוֹ: פרויקט Roomba MATLAB: 5 שלבים
וִידֵאוֹ: PROYECTO CONTROL DE VOZ POR ARDUINO 2024, יולי
Anonim
פרויקט Roomba MATLAB
פרויקט Roomba MATLAB

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

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

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

שלב 1: שלב 1: חומרים הדרושים

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

אתה תצטרך:

  1. רומבה
  2. MATLAB
  3. קובץ זה להפעלת החדר
  4. משטח שטוח
  5. משטח שולחן שישמש "צוק"

שלב 2: שלב 2: הגדרת/קבלת קוד עבור Roomba

שלב 2: הגדרת/קבלת קוד עבור Roomba
שלב 2: הגדרת/קבלת קוד עבור Roomba

המסך שלך ייראה כך לאחר שתזין את הקבצים.

שלב 3: שלב 3: הגדרת חיישני צוק/נורות LED

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

% נסה rob.setLEDDigits ('') x = 0; y = 0; תטא = 0; מכשול = ; מחזור = 1; AngCorr = @(x) x + 3.059.*X.^0.4205; %פונקציה לתיקון זוויות סיבוב בעוד rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1) %עבור %בדוק אם אדם אם AA_checkperson (rob) rob.beep סוף %בדוק חיישן צוק אם AA_cliffcheck (שדד)) rob.stop rob.setLEDDigits ('צוק') השהה (0.5) מכשול (מחזור) = 2; AA_cliffbeep (rob) %גיבוי והפכה rob.moveDistance (-. 15) rob.turnAngle (30) סוף

שלב 4: שלב 4: בדיקת מכשולים

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

בדוק את חיישן האור אם AA_lightcheck (rob) rob.stop rob.setLEDDigits ('קיר') השהה (0.5) מכשול (מחזור) = 1; %קיר AA_wallbeep (שד) %גבה והפוך rob.moveDistance (-. 15) rob.turnAngle (30) סוף %בדוק חיישן בליטה אם AA_bumpcheck (שד) rob.stop rob.setLEDDigits ('קיר') השהה (0.5) מכשול (מחזור) = 1; %קיר AA_wallbeep (שד) %גבה והפוך rob.moveDistance (-. 15) rob.turnAngle (30) סוף %אם אין מכשול אם הוא מכשול (מכשול) (מחזור) = 0; elseif אורך (מכשול) <מחסום מחזור (מחזור) = 0; סוֹף

שלב 5: שלב 5: תכנון

שלב 5: תכנון
שלב 5: תכנון

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

%קבל עמדה d = rob.getDistance; אם מחזור == 1 תטא (מחזור) = 0; x (מחזור) = d.*cosd (תטא (מחזור)); % המרחק הכולל שנסע ב- x y (מחזור) = d.*sind (תטא (מחזור)); % המרחק הכולל שנסע ב- y אחר תטא (מחזור) = תטא (מחזור -1) + rob.getAngle; x (מחזור) = d.*cosd (תטא (מחזור)) + x (מחזור -1); % המרחק הכולל שנסע ב- x y (מחזור) = d.*sind (theta (מחזור)).*d + y (מחזור -1); %המרחק הכולל שנסע ב- y סוף %מצב הפסקה אם rob.getButtons.clean סוף סוף %מחזור תוספת = מחזור + 1; סוף rob.stop עבור i = 1: מחזור אם מכשול (i) == 1 %חלקת קיר (x (i), y (i), 'סמן', 'מרובע', 'MarkerEdgeColor', 'r') מכשול אחר (i) == 2 %עלילת צוק (x (i), y (i), 'סמן', 'o', 'MarkerEdgeColor', 'k') טקסט סיום (.9, 0.9, sprintf ('ריבוע = קיר / nCircle = Cliff '),' Units ',' normalized ') החזיקו באות % מצוקות אות בעוד השהיית rob.beep אמיתית (3) אם rob.getButtons.clean break end end % catch % rob.stop % end

מוּמלָץ: