תוכן עניינים:
- שלב 1: מדוע להשתמש ביחידת מדידה אינרטיבית?
- שלב 2: כיצד להשתמש ב- BNO055 ללוקליזציה דו -ממדית?
- שלב 3: נקודת חומרה של Vue
- שלב 4: איך זה עובד?
- שלב 5: האדריכלות והתוכנה
- שלב 6: מה למדתי?
וִידֵאוֹ: דרך להשתמש ביחידת מדידה אינרציאלית?: 6 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:12
ההקשר:
אני בונה בשביל הכיף רובוט שאני רוצה להעביר באופן אוטונומי בתוך בית.
זו עבודה ארוכה ואני עושה צעד אחר צעד.
פרסמתי כבר 2 הוראות בנושא זה:
- אחד על ייצור מקודד גלגלים
- אחד על חיבור wifi
הרובוט שלי מונע על ידי 2 מנועי DC בעזרת מקודד הגלגלים הביתי שלי.
כרגע אני משפר את הבקרה הנעה וביליתי זמן עם ג'ירוסקופ, מד תאוצה ו- IMU. אשמח לשתף בחוויה זו.
אתה רוצה לדעת יותר על לוקליזציה? להלן מאמר כיצד לשלב בינה מלאכותית ואולטרסאונד למיקום הרובוט
שלב 1: מדוע להשתמש ביחידת מדידה אינרטיבית?
אז למה השתמשתי ב- IMU?
הסיבה הראשונה הייתה שאם מקודד הגלגלים יהיה מספיק מדויק בכדי לשלוט על מהלך ישר, גם לאחר הזזה לא הצלחתי להשיג דיוק לסיבוב של פחות מ- +5 דרוג 'וזה לא מספיק.
אז ניסיתי 2 חיישנים שונים. ראשית אני משתמש במגנומטר (LSM303D). העיקרון היה פשוט: לפני הסיבוב קבלו את הכיוון הצפוני, חשבו את המטרה והתאימו את המהלך עד להשגת היעד. זה היה קצת יותר טוב מאשר עם המקודד אבל עם פיזור מדי. לאחר מכן ניסיתי להשתמש בג'ירוסקופ (L3GD20). העיקרון היה רק לשלב את מהירות הסיבוב שמספק החיישן לחישוב הסיבוב. וזה עבד מצוין. הצלחתי לשלוט בסיבוב ב -1 מעלות.
ובכל זאת הייתי סקרן לנסות קצת IMU. אני בוחר ברכיב BNO055. הקדשתי זמן להבין ולבדוק את ה- IMU הזה. בסוף החלטתי לבחור בחיישן זה מהסיבות הבאות
- אני יכול לשלוט בסיבוב כמו גם ב- L3GD20
- אני יכול לזהות סיבוב קל כאשר אני זז ישר
- אני צריך לקבל כיוון צפוני ללוקליזציה של הרובוטים וכיול המצפן של BNO055 הוא פשוט מאוד
שלב 2: כיצד להשתמש ב- BNO055 ללוקליזציה דו -ממדית?
BNO055 IMU הוא חיישן אינטליגנטי של 9 צירים של בוש שיכול לספק אוריינטציה מוחלטת.
גליון הנתונים מספק תיעוד מלא. זהו מרכיב היי -טק האם מדובר במוצר מורכב למדי וביליתי כמה שעות ללמוד כיצד הוא פועל ולנסות דרכים שונות להשתמש בו.
אני חושב שזה יכול להיות שימושי לחלוק את החוויה הזו.
ראשית השתמשתי בספריית Adafruit המספקת כלי טוב לכיול וגילוי החיישן.
בסוף ואחרי הרבה בדיקות החלטתי
- השתמש בספריית Adafruit לשמירת כיול בלבד
- השתמש בשלושה מכל המצבים האפשריים של BNO055 (NDOF, IMU, Compss)
- להקדיש Arduino Nano לחישוב לוקליזציה המבוססת על מדדי BNO055
שלב 3: נקודת חומרה של Vue
BNO055 הוא רכיב I2C. אז הוא זקוק לאספקת חשמל, SDA ו- SCL כדי לתקשר.
רק דאג למתח Vdd בהתאם למוצר שקנית. שבב בוש עובד בטווח: 2.4V עד 3.6V ותוכל למצוא רכיב 3.3v ו- 5v.
אין קשיים לחיבור ה- Nano ו- BNO055.
- ה- BNO055 מופעל על ידי ה- Nano
- SDA ו- SCL מחוברים עם נגדי משיכה 2 x 2k.
- 3 LED מחובר לננו לאבחון (עם נגדים)
- 2 מחברים המשמשים להגדרת המצב לאחר האתחול
- מחבר אחד לכיוון BNO (Gnd, Vdd, Sda, Scl, Int)
- מחבר אחד לכיוון הרובוט/מגה (+9V, Gnd, sda, Scl, Pin11, Pin12)
קצת הלחמה וזהו!
שלב 4: איך זה עובד?
מנקודת המבט של התקשורת:
- ה- Nano הוא מנהל האוטובוסים I2C
- הרובוט/מגה ו- BNO055 הם עבדים מסוג I2C
- הננו קרא באופן קבוע את רשימות BNO055
- הרובוט/מגה מעלה אות מספרי כדי לבקש את המילה מהנאנו
מנקודת החישוב של vue: ה- Nano בשילוב עם ה- BNO055 מספק
- כותרת המצפן (משמשת ללוקליזציה)
- כותרת יחסית (משמשת לשליטה בסיבובים)
- הכותרת והמיקום המוחלטים (משמשים לשליטה במהלכים)
מנקודת מבט פונקציונלית: הננו:
- מנהל את הכיול BNO055
- מנהל את הפרמטרים והפקודות של BNO055
תת המערכת Nano & BNO055:
- לחשב עבור כל גלגלי רובוט את הכותרת ואת הלוקליזציה המוחלטת (עם גורם קנה מידה)
- לחשב את הכותרת היחסית במהלך סיבוב הרובוט
שלב 5: האדריכלות והתוכנה
התוכנה העיקרית פועלת על Arduino Nano
- האדריכלות מבוססת על תקשורת I2C.
- בחרתי להקדיש ננו בשל העובדה שה- Atmega שמריץ את הרובוט היה די כבר טעון והארכיטקטורה הזו מקלה על שימוש חוזר במקומות אחרים.
- הננו קורא את רישומי BNO055, מחשב ומאחסן כותרות ולוקליזציה ברשמים משלו.
- ה- Arduino Atmega שמפעיל את קוד הרובוט, שולח מידע מקודד גלגלים לננו וקורא את הכותרות והלוקליזציה בתוך רושמי הננו.
קוד subsytem (Nano) זמין כאן ב- GitHub
כלי הכיול Adafruit אם כאן ב- GitHub (הכיול יישמר ב- eeproom)
שלב 6: מה למדתי?
לגבי I2C
ראשית ניסיתי להכיל 2 מאסטרים (ארדואינו) ואחד עבד (חיישן) באותו אוטובוס אבל בסופו אפשר והכי קל להגדיר רק את הננו כמאסטר ולהשתמש בחיבור GPIO בין 2 הארדואינים כדי "לבקש את האסימון".
לגבי BNO055 לכיוון דו -ממדי
אני יכול להתרכז ב -3 מצבי ריצה שונים: NDOF (שילוב ג'ירוסקופ, מד תאוצה וקומפאס) כאשר הרובוט אינו פעיל, IMU (שילוב גירוסקופ, מד תאוצה) כאשר הרובוט זז ומצפן במהלך שלב הלוקליזציה. המעבר בין מצבים אלה הוא קל ומהיר.
כדי להקטין את גודל הקוד ולשמור על האפשרות להשתמש ב- BNO055 interrupt כדי לזהות התנגשות, אני מעדיף לא להשתמש בספריית Adafruit ולעשות זאת בכוחות עצמי.
מוּמלָץ:
כלי מדידה רב תכליתי דיגיטלי: 21 שלבים (עם תמונות)
כלי מדידה רב תכליתי דיגיטלי: שלום לכולם. תמיד רציתי מכשיר שיעזור לי ביישור מיטת המדפסת התלת -ממדית שלי ומכשיר אחר שיעזור לי להגיע לאורך משוער של משטח מעוקל, כך שאוכל לחתוך בקלות את אורך המדבקה הנכון עד
מכשיר מדידה טמפרטורה פשוט וזול באמצעות תרמיסטור: 5 שלבים
מכשיר מדידה טמפרטורה פשוט וזול באמצעות תרמיסטור: חיישן טמפרטורה פשוט וזול באמצעות תרמיסטור תרמיסטור NTC משנה את עמידותו עם שינוי בזמן באמצעות נכס זה אנו בונים חיישן טמפרטורה כדי לדעת יותר על תרמיסטור https://en.wikipedia.org/wiki/ תרמיסטור
Arduino Milligaussmeter - מדידה מגנטית: 4 שלבים
Arduino Milligaussmeter - מדידה מגנטית: האם ניתן לשלוח מגנטים חזקים על מטוס? אנו שולחים הרבה מגנטים וישנן תקנות מסוימות למשלוח חומר מגנטי, במיוחד במטוס. במאמר זה אנו בוחנים כיצד תוכל להכין מיליגאוס מד משלך עבור משלוחי אוויר
Measurino: גלגל מדידה הוכחת מושג: 9 שלבים
Measurino: גלגל מדידה הוכחת מושג: Measurino פשוט סופר את מספר הסיבובים של גלגל והמרחק שעבר הוא ביחס ישר לרדיוס הגלגל עצמו. זהו העיקרון הבסיסי של מד מרחק והתחלתי את הפרויקט הזה בעיקר כדי ללמוד כיצד לשמור על
מכשיר מדידה מדד UV, באמצעות חיישן VEML6075 והדובר הקטן: 5 שלבים
מכשיר מדידה מדד UV, באמצעות חיישן VEML6075 והדובר הקטן באדי: הקיץ מגיע! השמש זורחת! וזה נהדר. אך ככל שהקרינה האולטרה סגולה (UV) הולכת ומתעצמת, אנשים כמוני מקבלים נמשים, איים קטנים וחומים השוחים בים של עור אדום וצרוב. היכולת לקבל מידע בזמן אמת