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

רובוט מעבד מדויק של SnappyXO: 6 שלבים
רובוט מעבד מדויק של SnappyXO: 6 שלבים

וִידֵאוֹ: רובוט מעבד מדויק של SnappyXO: 6 שלבים

וִידֵאוֹ: רובוט מעבד מדויק של SnappyXO: 6 שלבים
וִידֵאוֹ: Бен Герцель: Неудержимый рост искусственного интеллекта 2024, נוֹבֶמבֶּר
Anonim
רובוט מעבד מדויק של SnappyXO
רובוט מעבד מדויק של SnappyXO

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

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

www.pololu.com/product/954

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

זה נבדק לעבודה עם רובוט SnappyXO.

שלב 1: מיקום ההדרכה השתנה

ההדרכה הועברה לדף שלהלן. הדרכה זו אינה נשמרת עוד.

sites.google.com/stonybrook.edu/premo

שלב 2: בנה את רובוט הכונן הדיפרנציאלי SnappyXO

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

שלב 3: חבר את האלקטרוניקה

חבר את האלקטרוניקה
חבר את האלקטרוניקה

עבור המקודד האופטי הסטנדרטי SnappyXO:

D0 (פלט מקודד) -> פין Arduino דיגיטלי

VCC -> Arduino 5V

GND -> GND

כוח מנוע וארדואינו:

מקור הכוח המנוע צריך להיות מתאים למנועים שבהם אתה משתמש. עבור ערכת SnappyXO, סוללות 4AA משמשות עבור הספק המנוע וסוללה של 9V עבור כוח Arduino. וודא שלכולם יש GND משותף.

שלב 4: התקן את ספריית Arduino PreciseMovement

הורד:

github.com/jaean123/PreciseMovement-library/releases

כיצד להתקין את ספריית ארדואינו:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

שלב 5: קוד

קוד ארדואינו:

create.arduino.cc/editor/whileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/preview

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

  • בדוק והגדר את סיכות המנוע תחת סיכות ARDUINO.
  • הגדר LENGTH ו- RADIUS.

    • LENGTH הוא המרחק מהגלגל השמאלי לגלגל הימני.
    • RADIUS הוא רדיוס הגלגל.
  • הגדר PULSES_PER_REV, שהוא מספר הפולסים שיוצאים המקודד למהפכה של גלגל אחד.

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

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

  • פרמטרים של PID

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

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

מקם את זה בלולאה כדי לכוון את KP_FW:

mover.forward (99999);

מקם את זה בלולאה כדי לסירוגין בין 0 ל- 90 כדי לכוון את KP_TW:

mover.twist (90); // טוויסט 90 CW

עיכוב (2000);

mover.twist (-90) // טוויסט 90 CCW

עיכוב (2000);

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

שלב 6: איך זה עובד

אם אתה סקרן לגבי אופן הפעולה, המשך לקרוא.

התנועה קדימה נשמרת ישרה באמצעות אלגוריתם המרדף הטהור בנתיב קו ישר. עוד על Pure Pursuit:

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

מוּמלָץ: