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

סייר רומבה סקאוט: 8 שלבים
סייר רומבה סקאוט: 8 שלבים

וִידֵאוֹ: סייר רומבה סקאוט: 8 שלבים

וִידֵאוֹ: סייר רומבה סקאוט: 8 שלבים
וִידֵאוֹ: הכשרת יסוד סייר במשטרת ישראל 2024, נוֹבֶמבֶּר
Anonim
סייר רומבה סקאוט
סייר רומבה סקאוט

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

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

שלב 1: ציוד

-Roomba w/ מצלמה ניתנת לחיבור (עם שם ספציפי ידוע)

-שרת מחובר

-Windows 10 / Mac עם קישוריות לאינטרנט

-פלטפורמה בהירה

-רצפה כהה

-כל אובייקט תועה בעיצוב מונוכרומטי

שלב 2: הגדרת MATLAB

הגדרת MATLAB
הגדרת MATLAB

על מנת ליצור משימות ופונקציות עבור roomba שלך, עליך לקבל את הקודים והערכות הכלים הספציפיים המכילים את פקודות roomba.

עם הורדת MATLAB 2016a ואילך, צור תיקייה שתכיל את קבצי הרובוט האלה והכנס את קובץ ה- MATLAB שלהלן לתיקייה והפעל אותו להתקנת שאר קבצי הרומבה הדרושים.

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

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

r = roomba (#).

הסמל # הוא 'מספר' החדר שצוין; עם זאת, אם אתה רק רוצה סימולטור של הרומבה, פשוט הקלד את הפקודה הבאה:

r = roomba (0).

ההדמיה מומלצת לבדיקת דפוסי תנועה.

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

דוקטור רומבה.

לפרטים נוספים היכנסו לאתר הבא:

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

שלב 3: פונקציה: תנועה

פונקציה: תנועה
פונקציה: תנועה
פונקציה: תנועה
פונקציה: תנועה

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

-כדי להפחית נזקים, הרובוט חייב להפחית את המהירות למהירות נמוכה יותר.

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

-לאחר זמן נסיעה, החדר בסופו של דבר יעצור ויצלם תמונות מהסביבה

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

שלב 4: פונקציה: עיבוד תמונה

פונקציה: עיבוד תמונה
פונקציה: עיבוד תמונה

לפי בקשה, הוטל עלינו לשנות את נתוני התמונה (או מספר תמונות) שהתקבלו במצלמת הרובוט, אליהם החלטנו לגרום לחדר "לספור" את מספר האובייקטים שהוא רואה בתמונה.

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

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

שלב 5: פונקציה: מיפוי

פונקציה: מיפוי
פונקציה: מיפוי
פונקציה: מיפוי
פונקציה: מיפוי
פונקציה: מיפוי
פונקציה: מיפוי
פונקציה: מיפוי
פונקציה: מיפוי

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

לצורך הוספת מגבלה למשך זמן ההפעלה של הפונקציה, המגבלה n <20 על לולאת ה- while שימשה למטרות בדיקה.

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

שלב 6: צירוף

סְמִיכוּת
סְמִיכוּת
סְמִיכוּת
סְמִיכוּת
סְמִיכוּת
סְמִיכוּת
סְמִיכוּת
סְמִיכוּת

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

היה צורך לבצע מספר שינויים בגרסה הסופית בניגוד לתסריטים הקודמים:

-המוצא תמיד יסומן בעיגול אדום

-בכל פעם שהרומבה עוצרת מהמפגשים שלה, המיקום מסומן בעיגול שחור

-בכל פעם שהרומבה עוצרת מחיישני המצוק שלה, המיקום מסומן בעיגול כחול

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

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

-גבולות לא ייחשבו כאובייקט בשל מספרים גבוהים למדי שנרכשו

-משתנים מספר משתנים, כדי להימנע מבלבול השתמש בגירסאות שלמעלה לעיון.

שלב 7: בדיקה

בדיקה
בדיקה

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

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

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

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

שלב 8: סיכום

סיכום
סיכום

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

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

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

מוּמלָץ: