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

בנה מכונית לנהיגה עצמית משלך - (הוראה זו עובדת בתהליך): 7 שלבים
בנה מכונית לנהיגה עצמית משלך - (הוראה זו עובדת בתהליך): 7 שלבים

וִידֵאוֹ: בנה מכונית לנהיגה עצמית משלך - (הוראה זו עובדת בתהליך): 7 שלבים

וִידֵאוֹ: בנה מכונית לנהיגה עצמית משלך - (הוראה זו עובדת בתהליך): 7 שלבים
וִידֵאוֹ: Часть 3. Аудиокнига Э. М. Форстера «Комната с видом» (гл. 15–20) 2024, דֵצֶמבֶּר
Anonim
Image
Image

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

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

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

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

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

המטרה העיקרית של קורס Udemy:

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

הוא צריך לזהות את פסי הנתיב, וכשהוא הגיע לסוף הדרך.

עליו לזהות שלט עצירה (ולעצור).

כמו כן, אות תנועה אדום וירוק.

הוא חייב גם לזהות ולתמרן סביב מכשול (מכונית אחרת).

מה שהוראה זו מוסיפה לקורס:

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

תן כמה חלופות למה שהקורס מספק.

אולי אפילו לא תצטרך לקנות את הקורס:

מדריך זה עשוי להיות כל מה שאתה צריך כדי להתחיל.

אספקה

החלקים החיוניים (המוצעים):

שלדת רובוט

ארבעה מנועים

ארדואינו

פטל פטל (3, 3B+, 4)

מצלמה (מצלמת אינטרנט או מודול Picamera)

כוח סוללה

מתגי הפעלה/כיבוי

חוטי מגשר

סטנדים (פלסטיק ואולי גם מתכת)

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

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

שלב 1: פרטים נוספים אודות החלקים …

Image
Image
פרטים נוספים אודות החלקים…
פרטים נוספים אודות החלקים…
פרטים נוספים אודות החלקים…
פרטים נוספים אודות החלקים…

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

  • חפש מסביב למארזים / מנועים שונים
  • המנועים כבר צריכים להיות חוטים מולחמים אליהם
  • ייתכן שתרצה לקבל מקדחה וקידוחים, או מארז עם חורים נוספים
  • זכור כי משקל הוא נושא. הכל צריך להיות קל ככל האפשר.
  • נהג המנוע L298 H-Bridge עובד מצוין. הערה: קנה אחד עם בלוקים של מסוף הבורג (ראה תמונה)
  • סביר להניח שתרצה עמידות מפלסטיק ומתכת כאחד, גודל M3 הוא כנראה הבחירה הטובה ביותר.

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

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

מקדחה + מקדחות

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

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

שלב 2: הפעלת המכונית במהלך הפיתוח

הפעלת המכונית במהלך הפיתוח
הפעלת המכונית במהלך הפיתוח
הפעלת המכונית במהלך הפיתוח
הפעלת המכונית במהלך הפיתוח

לדעתי, הדרך המהירה והקלה ביותר להתחיל בפרויקט זה היא:

  • לפיתוח תוכנת סקיצות Arduino, פשוט חבר את ה- Arduino למחשב שלך באמצעות USB
  • עבור תוכנת Raspberry Pi, אתה צריך להיות בעל כוח של 5V USB שיכול לספק לפחות 3 אמפר. וזה צריך להיות מתג הפעלה/כיבוי. אלא אם כן יש לך רכזת USB טובה ומופעלת למחשב שלך, סביר להניח שלא תוכל להפעיל את הפטל ישירות מהמחשב שלך.
  • שכן כאשר אתה מוכן לבדוק את המנועים/הגלגלים, הקלה ביותר היא (ראה תמונה) ספק כוח טוב. עם זאת, אלה אינם זולים.

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

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

שלב 3: הפעלת המכונית בזמן השימוש בפועל

הפעלת המכונית בזמן השימוש בפועל
הפעלת המכונית בזמן השימוש בפועל
הפעלת המכונית בזמן השימוש בפועל
הפעלת המכונית בזמן השימוש בפועל

אם תחליט לעקוב אחר הקורס (או מה שעשיתי) בהספק 5V להיגיון, שים לב שלא כל ספקי הכוח USB 5V טובים לפרויקט זה.

הנקודה העיקרית כאן היא שאתה צריך 5V אבל אתה צריך לפחות 3 אמפר! תחשוב על זה ככה - אתה רוצה בנק חשמל שיניע מחשב נייד (אולי).

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

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

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

כיצד להפעיל את הארדואינו

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

עם זאת, בחרתי פשוט להפעיל את הארדואינו ישירות מה- Raspberry Pi דרך כבל ה- USB.

יהיה עליך להחליט מה עדיף.

כיצד להניע את המנועים/נהג המנוע

בקורס Udemy, המחבר בחר להניע את המנועים/הנהג ישירות מבנק הכוח של 5V. ישנם שני שיקולים אם אתה משתמש בגישה זו.

  1. כאשר המנועים מתחילים להסתובב, הם שואבים את הזרם הכי גבוה. זה יכול (ירצה) לגרום למתח ההספק לרדת (לטבול) מתחת ל- 5V, ולגרום לאיפוס הפטל.
  2. השימוש רק במתח 5V להנעת המנועים פירושו שאתה לא מספק כוח רב ככל שתוכל למנועים, והמכונית תנוע לאט יותר (איטי יותר). בדקתי את המנועים (עם ספק הכוח הזה) (ראו תמונה) עד 9V לפחות. הם עובדים מצוין ב 9V.

תצפיות על 9V (או יותר)

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

כרגע אני משתמש בכמה (3) תאי סוללה במקביל להנעת המנועים. השתמשתי הן בסוללות נטענות אלקליין והן ב- NiMH.

חווית למידה מספר 1: לוקח זמן רב (שעות רבות) להטעין כראוי סוללות NiMH 9V.

פתרון אפשרי: השקיעו במטען NiMH רב סוללות. זה צריך להיות מטען "חכם".

חסרון: הם לא זולים.

חווית למידה מס '2: סוללות 9V בנויות למעשה מכמה תאים פנימיים קטנים. אם אחד מהתאים מתים, הסוללה כולה חסרת תועלת. לא הייתה לי בעיה זו, אבל קראתי עליה.

חווית למידה מס '3: לא כל סוללות ה- 9V הן בעלות אותו מתח. זה חשוב. מכיוון שככל שהמתח גבוה יותר, כך יתאפשר יותר מהירות. חלק מתאי הסוללה (ומטענים) הם רק 8.4V. חלקם אפילו פחות. חלקם 9.6V.

חוויית הלמידה מס '4: 9V, במיוחד ה- NiMH, קלות משקל. דבר טוב. עם זאת, רובם מספקים רק mA של זרם הפלט. לכן הייתי צריך למקם אותם במקביל. אתה צריך קיבולת הנוכחית הכוללת של כמעט 2 אמפר, אפילו לפרקי זמן קצרים.

חווית למידה מספר 5: קיימות חבילות סוללה של 9.6V המשמשות לדברים כמו מכוניות נשלטות ברדיו. עדיין לא השתמשתי באחד, אבל אני מאמין שהם מספקים יותר זרם מאשר ביצוע סוללות 9V במקביל כמו שעשיתי. כמו כן, ניתן לטעון את היחידה היחידה. האריזות מגיעות בגדלים שונים. ויש שיקול משקל. ואז, האם אתה משתמש בחבילה כדי להניע את המכונית כולה, או רק את המנועים? אם עבור המכונית כולה, אז תזדקק לווסת הורדה למטה של 5V עבור ה- Raspberry Pi.

ל- L298 H-Bridge אכן יש את היכולת להפיק 5V למטרה זו, אך אני מודאג מכמה זרם הוא יכול לייצר עבור ה- Raspberry Pi, ואם זה יהיה עומס רב מדי על הלוח L298.

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

שלב 4: תכנות תוכנה לנהיגת Gamepad

אני חושב שסיקרתי הרבה מקטע זה כבר ב- Robot Driven Via USB Gamepad Gamepad Instructable, אז אני לא אחזור על זה כאן.

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

שלב 5: הוספת מצלמה

הוספת מצלמה
הוספת מצלמה
הוספת מצלמה
הוספת מצלמה
הוספת מצלמה
הוספת מצלמה

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

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

היכן שאני גר בארה ב, דיבלי העץ היו זולים מאוד. אתה יכול לקנות אותם ב- Lowe's או ב- Home Depot. בחרתי דיבלים מרובעים במקום דיבלים עגולים.

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

כמו כן, יצרתי את המגדל מתוך מחשבה שאני אתחיל במצלמת רשת USB, אבל אולי בהמשך אעבור לשימוש במודול Picamera.

מומלץ להשקיע במצלמה מסוג עין דג.

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

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

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

הבאתי את הקוד "עקוב אחרי" Python ו- Node.js מהרובוט הגדול (וואלאס רובוט 4) כדרך לבדוק הכל. אנא עיין בתמונות בחלק זה לרשימת היוטיובים שמעניקים הרבה יותר פרטים אודות "עקוב אחריי".

כפי שציינתי, היה קל יותר להרכיב תחילה מצלמת רשת USB. מאוחר יותר אני יכול להרכיב את מודול Picamera.

שלב 6: זיהוי פנים - קבע מיקום

Image
Image

חלק זה אינו מוקד הקורס של Udemy, אבל זה היה תרגיל מהנה.

אם תחפש באינטרנט "זיהוי פנים של python opencv", תמצא דוגמאות רבות וטובות כיצד לעשות זאת, וכולם די בצע את אותם השלבים.

  1. טען את קובץ הפנים "haar"
  2. לאתחל את המצלמה
  3. התחל לולאה שבה אתה תופס מסגרת
  4. להמיר את תמונת הצבע לסולם אפור
  5. הזן אותו ל- opencv כדי שימצא את פניו
  6. התחל לולאה פנימית (לכל פנים שנמצאו) (במקרה שלי, אני מוסיף קוד לביטול אם יותר מפניה אחת)

למטרה זו כאן, לאחר שגילינו פנים, אנו מכירים את X, Y, W ו- H של הריבוע הדמיוני המתווה את הפנים.

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

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

הערה:

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

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

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

בואו ניקח שמאל מול ימין:

לאחר חישוב שמאל וימין, קבל את ההפרש (דלתא):

דלתא = שרירי הבטן (שמאל - ימין)

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

לאחר מכן אתה מוסיף קוד מותנה כדי לנסות לזוז רק אם הדלתא גדולה מכמה מינימום.

היית עושה את אותו הדבר עבור קדימה מול אחורה.

שלב 7: מיקום פנים - רובוט נע

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

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

בקצרה, יש לי את הקוד בשכבות.

סקריפט זיהוי פנים של פייתון מבקש בקשות http לשרת Node.js

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

פרוטוקול טורי מותאם אישית בין שרת Node.js ו- Arduino

סקיצה של ארדואינו שעושה את הפקודות בפועל כדי להזיז את הרובוט

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

מוּמלָץ: