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

Localino עוקב אחר Roomba IRobot, מפה את הסביבה ומאפשר שליטה: 4 שלבים
Localino עוקב אחר Roomba IRobot, מפה את הסביבה ומאפשר שליטה: 4 שלבים

וִידֵאוֹ: Localino עוקב אחר Roomba IRobot, מפה את הסביבה ומאפשר שליטה: 4 שלבים

וִידֵאוֹ: Localino עוקב אחר Roomba IRobot, מפה את הסביבה ומאפשר שליטה: 4 שלבים
וִידֵאוֹ: בנט מדבר 2024, נוֹבֶמבֶּר
Anonim
Image
Image

על מנת לבנות את גשר WiFi-UART, תוכל לבדוק את ריפו github זה:

יש לזה בסיס נחמד להתחיל איתו. הקפד לקרוא היטב את ההנחיה מכיוון ש- Roomba VCC במהלך הטעינה עולה עד 20 וולט! אם תוסיף ESP8266 ללא ממיר באק תקין שעובד אפילו עד 20V והורד למטה ל -3.3V, אתה תפגע ב- ESP שלך.

הקפד גם להשתמש במחלף רמות (למשל באמצעות מחלק מתח) כדי להעביר את רמות הלוגיקה של 5V UART מהרומבה ל- 3.3V, המשמשות את ה- ESP.

פרט חשוב נוסף הוא שממיר הכסף צריך להיות 300mA, אך עדיין הרבה פחות או הרבה יותר (תלוי בממיר הכסף עצמו). יש שם כמה דברים שיכולים לגרום לזרם הרבה יותר, אך לגרום לרומבה להתרסק מכיוון שהם שואבים יותר מדי זרם במהלך ההפעלה. גילינו ש- Pololu 3.3V, 300mA הורדת מתח (D24V3F3) עובד פשוט מושלם. הגרסאות האלטרנטיביות בעלות 500mA / 600mA גרמו לממשק Roomba UART לקרוס. בעצם הרומבה הגיבה בלחיצת כפתורים, אך לא על פקודות באמצעות ממשק UART. ברגע שזה קרה נאלצנו להסיר את סוללת Roomba ולהפעיל מחדש את Roomba כשהגשר WiFi-UART מחובר. עם זאת, רק D24V3F3 עבד היטב.

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

דוגמאות בתוך arduino IDE:

void goForward () {char c = {137, 0x00, 0xc8, 0x80, 0x00}; // 0x00c8 == 200 Serial.print (ג); }

void goBackward () {char c = {137, 0xff, 0x38, 0x80, 0x00}; // 0xff38 == -200 Serial.print (ג); }

void spinLeft () {char c = {137, 0x00, 0xc8, 0x00, 0x01}; Serial.print (ג); }

void spinRight () {char c = {137, 0x00, 0xc8, 0xff, 0xff}; Serial.print (ג); }

אם אתה כותב ב- lua זה נראה קצת שונה, דוגמה לפנייה שמאלה תיראה כך:

if (_GET.pin == "LEFT") ואז הדפס ('\ 137'); -VOR

tmr.delay (100);

הדפס ('\ 00'); -מהירות = 200 = 0x00C8 -> 0 ו -200

tmr.delay (100);

הדפס ('\ 200'); - מהירות

tmr.delay (100);

הדפס ('\ 254'); - רדיוס = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.delay (100);

הדפס ('\ 12'); -- תור

סוֹף

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

לסדרת Roomba 5xx:

לסדרת Roomba 6xx:

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

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

שלב 3: הגדר את מערכת הלוקליזציה הפנימית שלך

כדי לסגור את לולאת המשוב אנו משתמשים במערכת לוקליזציה פנימית. אנו משתמשים ב- Localino לשם כך. מערכת Localino מורכבת מ"עוגנים "ו"תגים". העוגנים ממוקמים במיקומים קבועים בתוך החדר ומאתרים את מיקום התג הנע (שמונח על הרומבה). עיבוד המיקום מתבצע ביישום מחשב אישי. זה יתרון גדול מכיוון שאתה יכול לשלוט גם ברומבה מאותו מחשב! יש קוד מקור בחינם הזמין מאתר Localino, הוא כתוב בפייתון ויש גם זרם בזמן אמת המציע את קואורדינטות ה- XYZ של התג. זרם הנתונים זמין דרך רשת UDP, אך תוכל גם להוסיף MQTT או כל דבר אחר מהודר שאתה אוהב. אם אתה מכיר את פייתון, יש ערימות של ספריות שעוזרות לך.

בסרטון זה מודגמת הלוקליזציה של הרומבה. לכן יש לנו ארבעה עוגנים בחדר במיקומים קבועים, המאפשרים מיקום תלת מימדי של הרומבה. באופן כללי, היינו דורשים רק 3 עוגנים, מכיוון שהרומבה כנראה לא יזוז בציר ה- Z, ולכן 2D יספיק. אך מכיוון שהעוגנים ממוקמים בגובה הפקקים הראשי של AC (שהוא כ -30 ס מ מעל הקרקע) התקנה דו -ממדית תגרום לשגיאות בהערכת מיקום מועטות. אז החלטנו שיהיו לנו 4 עוגנים ולמקם בתלת מימד.

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

הערות התקנה

מקם את עוגני לוקלינו בתוך החדר במיקומי x, y שונים ושלושה מהם באותו מיקום z. מקם אחד מכל ארבעה עוגנים בגובה שונה z לחדר. ודא שיש כיסוי טוב מהתג Localino, שינוע עם Roomba.

לכל העוגנים יש מזהה עוגן ייחודי שמוצג על הברקוד של ה- Localino וניתן לקרוא אותו בעזרת הכלי "תצורה של localino".

שים לב למיקומים ב- X, Y, Z ומזהי העוגן. זה נדרש עבור תוכנת מעבד Localino ויש להתאים אותו בקובץ "localino.ini" בתיקייה "LocalinoProcessor"

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

…עוד לבוא.

שלב 4: התאם את תוכנת פייתון

המשך לעקוב. עוד לבוא.

מוּמלָץ: