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

רובוט 4WD מונע באמצעות Gamepad USB מרחוק: 6 שלבים
רובוט 4WD מונע באמצעות Gamepad USB מרחוק: 6 שלבים

וִידֵאוֹ: רובוט 4WD מונע באמצעות Gamepad USB מרחוק: 6 שלבים

וִידֵאוֹ: רובוט 4WD מונע באמצעות Gamepad USB מרחוק: 6 שלבים
וִידֵאוֹ: 8 САМЫХ БЕЗУМНЫХ АВТОМОБИЛЕЙ-АМФИБИЙ В МИРЕ 2024, יוני
Anonim
Image
Image

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

המטרה היא שיהיה לו אוטונומי, אבל ראשית, הייתי צריך לבדוק את יכולת הנהיגה הבסיסית שלו, אז חשבתי שזה יהיה פרויקט צדדי מהנה להתנהג ולשלוט בו כאילו היה רכב RC (נשלט ברדיו)., אך במקום זאת השתמש ב- Gamepad USB.

התוצאות היו טובות או טובות ממה שציפיתי.

היתרון בלהלך על מסלול ה- USB Gamepad, עם הרבה תכנות, הוא שאני יכול להתאים אותו ולהוסיף על מה שכבר עשיתי. אין לי ניסיון ממשי בבניית רכב RC, אבל אני מתאר לעצמי שאחד תקוע עם כל מה שמשדר RC (ג'ויסטיקים/כפתורים וכו ') ומקלט RC מגיעים עם.

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

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

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

אספקה

חלקים מוצעים: את רוב זה השגתי מסרווו סיטי (Actobotics).

2 - 13.5 ערוצי U, לצידי מסגרת הבסיס. המנועים מותקנים על זה. הלכתי עם משהו קצר יותר והמנועים שלי מותקנים בפינות ממש, וזה הקשה על הרכבה.

2 - 12 ערוצי U לחלק הקדמי והאחורי של מסגרת הבסיס.

2 - 15 אינץ 'ערוצי U לפגושים, מלפנים ומאחור

2 - 7 (או היה 7.5 אינץ '?) ערוצי U עבור העמודים הקדמיים. זה לא קריטי מדי, האורך יכול להשתנות. תלוי כמה גבוהות העמודות האחוריות ובאיזה גובה אתה בוחר לשים את הזווית ערוץ U שמחבר ביניהם.

2-(אורך?) ערוצי U לחבר הזוויתי, מלפנים לאחור, המחברים את העמודים הזקופים. זה קריטי, מכיוון ש- Servo City / Actobotics מוכרת לוחות או סוגריים בזווית של 45 מעלות למטרה זו, אך תצטרך לעשות קצת מתמטיקה / טריג כדי לוודא שאתה מקבל את האורך הנכון.

2-(אורך?) ערוצי U לשמש פגושים צד ברמה גבוהה יותר, שוב אלה תלויים במה שאתה עושה עם הבסיס

2-(אורך?) ערוצי U לשמש כפגושים קדמיים ואחוריים ברמה גבוהה יותר, כך גם הבעיה למעלה.

1 - (אורך?) ערוץ U לשמש כחבר העליון, משתרע על פני העמודות האחוריות. יתכן שהדבר הזה אינו קריטי מדי, מכיוון שניתן להרכיב אותו למעלה או מול / מאחורי העמודים הזקופים.

12 (בערך) ערוצי L או סוגריים. אלה משרתים מספר מטרות אך מספקים בעצם שלמות/חוזק מבני לפינות מסגרת הבסיס ולעמודים הזקופים.

4 (+?) ערוצים שטוחים של 3 חורים עד 5 חורים. אלה גם מספקים חוזק מבני לרובוט.

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

יש לוח 4 "(4.5?)" X 12 ", ואני חושב שהשני הוא לוח 9" (9.5?) "X 12.

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

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

אני יכול לרשום מה השתמשתי:

www.servocity.com/90-quad-hub-mount-c

www.servocity.com/side-tapped-pattern-moun…

www.servocity.com/90-quad-hub-mount-d

השניים הבאים נוחים מאוד, ואני פשוט אצטייד באלה:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

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

לבסוף, אתה צריך לקבל שקית אחת של אלה:

www.servocity.com/6-32-nylock-nuts-pack

לא השתמשתי בכל כך הרבה, אבל הם (לדעתי) הם קריטיים כדי לוודא שהמנועים שלך לא רוטטים מהמסגרת לאורך זמן. רק שניים יעבדו על כל מנוע, בגלל ערוץ ה- U

תזדקק לפחות ל -4 כאלה, ייתכן שתקבל אחד או יותר במקרה שאתה גורם נזק לאחד (תאמין לי, ייתכן שתדליק / תוריד את המנועים כמה פעמים):

www.servocity.com/heavy-duty-clamping-shaf…

בדרך כלל צירים של מנועים הם 6 מ מ, והצירים בגודל 1/4 אינץ '(0.25 אינץ').

הייתי מקבל כמה ברגים שחורים, כביכול חזקים יותר, ומשתמש בהם עבור מהדקים לעיל, ולא משתמש בברגים שמגיעים עם המהדקים:

(אני חושב שאלו אלה):

מסבים בקוטר 4 - 1/4 אינץ '(0.25 אינץ')

1 - שקית מרווחי 1/4 אינץ 'שחורים

4 - הידוק D -Hubs

www.servocity.com/0-770-clamping-d-hubs

4-פירים D (#6340621.375 "(1-3/8")

4 - 6 גלגלים כבדים

www.servocity.com/6-heavy-duty-wheel

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

גם הם נוטים להכתים את השטיח שלכם !!!

4 - מנועים:

www.servocity.com/motors-actuators/gear-mo…

הלכתי עם 223 סל ד, מהירות מקורה עליונה טובה, יכולתי להניע את הרובוט שלי (כבד עם 2 סוללות SLA 12V) די בקלות בהילוך איטי.

2 - מקודדים מנועים למנועים. (הרובוקלאו של סרוו סיטי מטפל ב -2 מקודדים בלבד)

1 - בקר מנוע Roboclaw 2X45A, וודא שאתה מקבל את אחד עם בלוקי הטרמינל הירוקים עליו, לא את הפינים…. ובכן … לכל אחד יש את היתרונות שלו. בדיעבד.. יכול להיות שקיבלתי את הסיכות.

אני חושב שזה זה מסרווו סיטי.

SparkFun מוכר את Arduino Uno (בזה השתמשתי), וגם את Redboard Artemis כמנהל הכונן שלך.

תרצה Raspberry Pi 3 (או 4?) כ"מוח "ברמה הגבוהה שלך וממשק עבורך.

תזדקק לחיווט, מתגים, נתיכים ודיודת "flyback" חזקה מאוד.

השתמשתי בסוללת SLA במחזור עמוק של Duracell 12V 14AH, אבל אתה יכול להשתמש בכל דבר.

אַזהָרָה! העיצוב של הרובוט הזה (TALL, ו- WIDE, אבל SHORT), מניח סוג של מרכז כובד כבד, כמו סוללת SLA שתספק. יתכן שזה לא יטיב עם שאר סוגי הסוללות הטכנולוגיים החדשים יותר. LiPo, Lion, וכו 'זה יכול בקלות להתהפך.

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

תזדקק לווסת מתח מתח של 12 עד 5V, מינימום 5A (?) עבור הפטל. האחרים יכולים להתמודד עם כל דבר בין 7 ל -15 וולט ישירות לסוללת SLA.

זה בערך לגבי חלקים.

מה שאני לא הייתי עושה - הילוך משופע 90 מעלות.

שוב, ישנם הרבה סרטונים ברשימת ההשמעה שלי ב- YouTube של Robotics המפרטים את רוב האמור לעיל.

שלב 1: בנייה

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

www.youtube.com/playlist?list=PLNKa8O7lX-w…

שלב 2: בדוק את רובוקלאו, המנועים והמקודדים

ליצרני רובוקלאו (BasicMicro) יש יישום Windows שבו אתה יכול להשתמש כדי לוודא שאתה מחבר את המנועים והמקודדים כראוי לרובוקלאו. אתה תחבר מנועים מאותו צד במקביל לרובוקלאו. אתה יכול לבחור להשתמש בחוטי המקודד, רק על המנועים האחוריים, או המנועים הקדמיים, או אולי אפילו טוב יותר - באופן דיאגונלי.

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

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

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

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

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

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

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

שלב 3: הוספה ותכנות של הארדואינו

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

יהיה עליך להוריד את Arduino IDE.

כאן ב- Github נמצאת המערכון האחרון המטפל בהנהגת הרובוט:

github.com/elicorrales/wallace.robot.ardui…

אתה תחבר את הארדואינו למחשב שלך המפעיל את ה- IDE, ועל סמך אופן כתיבת הסקיצה, היית משתמש בסיכות 10 ו -11 בארדואינו לתקשורת סדרתית (תוכנה סדרתית) עם הרובוקלאו.

פיתחתי פרוטוקול תקשורת פשוט בין ה- Raspberry Pi לבין ה- Arduino.

הוא מבוסס על תווים ASCII, מה שמקל על איתור באגים ובדיקה רק באמצעות חלון ה"צג הטורי "של Arduino IDE.

הפקודות מתחילות במספר "0" (אפס) ופשוט עולות לפי הצורך

הפקודות המתחילות בשנות ה -20 הן פקודות ישירות של רובוקלאו, ואלה מתחת למספר זה הן פקודות הקשורות בארדואינו למהדרין.

בשל רעש ה- EMI, שיפרתי את מחרוזת הפקודה כך שתכלול סכום ביקורת.

אז כל מחרוזת תכלול:

# מספר אסימונים במחרוזת כולל זה

סכום הביקורת

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

4 0 12 16

"4" הוא ארבעה אסימונים במחרוזת.

"0" היא הפקודה MENU.

"12" הוא המספר האקראי שבחרתי.

"16" הוא הסכום של 4 + 0 + 12.

אותה פקודת MENU יכולה להיות שונה:

4 0 20 24

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

לדוגמה, נניח שאתה רוצה להתקדם במהירות של 100 %:

5 29 0 134 100

"5" חמישה אסימונים

"29" הפקודה FORWARD

"0" המספר האקראי

"134" סכום הביקורת

"100" הפרמטר 1 (המהירות במקרה זה)

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

אם הארדואינו אינו מקבל פקודת תנועה הבאה עם X אלפיות השנייה, הוא שולח מנועי STOP לרובוקלאו.

ה- Arduino מופעל ומתחיל לשלוח סטטוס אוטומטי ליציאת ה- USB … אלא אם נאמר לו להפסיק לעשות זאת.

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

שלב 4: הוספה ותכנות של ה- Raspberry Pi (node.js)

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

הדבר היחיד שיכול להיות שהצלחתי הוא שתזדקק לווסת 5V, או איכשהו לבנות, לחתוך/לשנות כבל USB עבורו, או להפעיל את הפטל בדרך אחרת.

כאן ב- Github יש כל מה שאתה צריך ב- Raspberry כדי לתקשר עם ה- Arduino באמצעות USB.

github.com/elicorrales/wallace.robot.raspb…

יש אפילו סקריפטים לבדיקה.

אתה יכול להסתכל על קוד השרת node.js ותראה כיצד הפטל ממיר את ההוראות המספריות החטופות למחרוזות כתובת URL מסוג REST. אתה יכול להשתמש ב"סלסל "כדי לשלוח פקודות בדיקה.

דוגמא:

כתובת ה- IP של RP3 שלך: 8084/arduino/api/forward/50

יגרום למנועים לסובב לרגע את הגלגלים קדימה.

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

קוד node.js (server.js) כולל תכונת חיבור מחדש למקרה שתקומיות טוריות יאבדו ל- Arduino. אתה יכול לבדוק זאת על ידי ניתוק הארדואינו מהפטל, וחבר אותו מחדש.

וודא שאתה תואם את קצב השידור הטורי בין השניים.

בגלל שהארדואינו מוריד חבילות נתונים גרועות, ומכיוון שברמת node.js, וברמת javascript בדפדפן, הכל מקודד לשליחת פקודות "כונן" רבות, הצלחתי להריץ עד 2 000 000 baud (2Mbps).

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

שלב 5: שלב אחרון - תכנות / שימוש בלקוח דף האינטרנט

קובצי הלקוח כלולים בקישור Github לחלק הפטל מכל זה.

index.html. index.js. p5.min.js.

הם מטפלים ב- USB Gamepad באמצעות ה- Gamepad API (מבוסס דפדפן) וכדאי שתראה את הכפתורים והמחוונים השונים הזמינים גם בדף האינטרנט.

שאילתות קוד ה- javascript (סקרים) ערכי ציר ה- X ו- Y עבור אחד הג'ויסטיקים.. (תלוי איזה ג'ויסטיקים/לוח משחקים יש לך, ייתכן שתצטרך לשנות את הקוד). הוא בוחן מהר מאוד, והוא יורה את כל הערכים האלה לשרת node.js המאזין ב 8084.

הערכים הגולמיים של ציר ה- X ו- Y של הג'ויסטיקים הם בין 0 ל -1.

אבל פונקציית ספריית בקר המנוע של רובוקלאו המשמשת בארדואינו להנעת המנועים, מצפה לערך שבין -100 ל -0 (אחורה) או (0 עד 100) קדימה.

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

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

משהו שתוסיף יהיה דומה למחוון המהירות המקסימלית הנוכחית בדף האינטרנט. המחוון קובע מהו הערך הגבוה או המקסימלי שאליו תמפו את הג'ויסטיקים X ו- Ys.

דוגמא:

נניח שאתה ממפה 0 -> 1 עד 0 -> 100. כשאתה לוחץ על הג'ויסטיק עד הסוף, אתה עומד על 100. רגיש. אולי מהר מדי.

אבל אם אתה מחליק מעט את המחוון המהיר המרבי לאחור, עכשיו אתה ממפה 0 -> 1 עד 0 -> 80 או 70.

המשמעות היא שיש לך יותר מרחב מרווח להזיז את הג'ויסטיק מבלי ששינוי כל כך גדול במהירות יישלח אל node.js (ולארדואינו).

ותוספת שתוכל לעשות היא להפריד את ה- Xs (לסובב שמאלה או ימינה) מה- Y (קדימה או אחורה) למהירויות המקסימליות הזמינות שלהם.

לפיכך, תוכל להשאיר את ה- Ys ב -0 עד 100, 0 עד -100 לתנועה לינארית מהירה, אך להוריד את מהירות ה- Xs המרבית לתנועה סיבובית מבוקרת יותר. הטוב שבשני העולמות.

שלב 6: אופציונלי: הרצת רובוט באמצעות גרירת עכברים ו / או אירועי מגע

אם הגעת עד כאן, אתה יודע ששכבות התוכנה שמתחילות מהדפדפן ומתקדמות דרך Javascript ועד לשרת Raspberry node.js, סוף סוף ל- arduino, ממירה את ג'ויסטיק X- ו- Y של ג'ויסטיק ל- " פקודות קדימה "(או" אחורה "וכו ') (וערך המהירות שלהן).

יתר על כן, אתה יודע שאמנם Xs ו- Y של הג'ויסטיקים הם שליליים 1, עד אפס, לפלוס 1, אך יש להמיר אותם בין אפס ל -100. ובכן, המקסימום תלוי בהגדרת המהירות המרבית בדף האינטרנט.

סו … הדבר היחיד שצריך לעשות אם להשתמש בעכבר או במגע אירועים (כמו בסמארטפון) הוא ללכוד את האירועים האלה, לתפוס את ה- Xs ו- Ys.

אבל ---- אלה Xs ו- Ys אינם בין שלילי 1 ל- 1. הם מתחילים 0 ועולים בצורה חיובית, מכיוון שהם בעצם הפיקסלים או קואורדינטות המסך היחסי של אלמנט HTML כלשהו (כגון לוח אתחול) או קנבס.

אז שוב, פונקציית "המפה ()" של ספריית ה- Js של P5 נוחה מאוד למפות מחדש את מה שאנחנו צריכים.

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

כמו כן, ברגע שה- Xs ו- Ys ממופים מחדש, הם מוזנים לאותה שרשרת קוד וכו ', כמו ה- Xs ו- Ys מה- Gamepad.

מוּמלָץ: