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

רובוט ציור Haptic: 5 שלבים (עם תמונות)
רובוט ציור Haptic: 5 שלבים (עם תמונות)

וִידֵאוֹ: רובוט ציור Haptic: 5 שלבים (עם תמונות)

וִידֵאוֹ: רובוט ציור Haptic: 5 שלבים (עם תמונות)
וִידֵאוֹ: Vex Robot Painting 2024, נוֹבֶמבֶּר
Anonim

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

Scribble משתמשת בתצורת הצמדה של 5 בר המאפשרת לה להעביר שתי דרגות חופש לרוחב (DoF). התקנה זו פופולרית למדי בקרב אב טיפוס ליצירת רובוטי ציור, להלן מספר דוגמאות:

www.projehocam.com/arduino-saati-yazan-kol-…

blogs.sap.com/2015/09/17/plot-clock-weathe…

www.heise.de/make/meldung/Sanduhr-2-0-als-Bausatz-im-heise-shop-erhaeltlich-3744205.html

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

אנא הורד את הקוד למטה!

* עריכה: לפרויקט דומה, עיין ב https://haply.co *

שלב 1: בניית המבנה

בניית המבנה
בניית המבנה

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

עבור אב הטיפוס שלי, אני מריץ את הקוד שלי ב- Arduino DUE שנשלט על ידי סדרה על ידי תוכנית ב- Mac שלי שנעשתה ב- Open Frameworks. התוכנית משתמשת בחיבור UDP כדי לתקשר עם סימולטור נהיגה מבוסס 3D.

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

שלב 2: דע את ערכי החומרה שלך

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

הקינמטיקה קדימה מבוססת על תחנת מזג האוויר שעון Plot על ידי SAP:

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

בהתאם לחומרה שלך האלגוריתם צריך לדעת את מאפייני החומרה שלך:

int leftActuator, rightActuator; // זווית לכתוב למפעיל ב- deg, שנה לצופים אם אתה רוצה יותר דיוק

int posX, posY; // הקואורדינטות של מיקום המצביע

הגדר את הרזולוציה של ערכי הקלט שלך

int posStepsX = 2000;

int posStepsY = 1000;

מידות ההתקנה שלך, הערכים הם במ מ (ראה תמונת SAP)

#define L1 73 // זרוע מנוע באורך, ראה תמונת SAP (שמאל וימין זהים)

#define L2 95 // זרוע הארכת אורך, ראה תמונת SAP (שמאל וימין זהים)

#define rangeX 250 // טווח מרבי בכיוון X לנקודה לזוז (משמאל לימין, 0 - maxVal)

#define range Y 165 // טווח מקסימלי בכיוון Y לנקודה לזוז (מ 0 עד טווח הגעה מרבי תוך שמירה על מרכז)

#define originL 90 // מרחק קיזוז מרוב ערך X המינימלי למיקום מרכז המפעיל

#define originR 145 // המרחק מקזז מרוב ערך X המינימלי למיקום מרכז המפעיל, המרחק בין שני המנועים הוא במקרה זה

שלב 3: קדימה קינמטית קדימה

קינמטיקה קדימה
קינמטיקה קדימה

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

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

void set_XY (Tx כפול, Ty כפול) // הזן את ערך ה- X וה- Y {// כמה ערכים שאנו צריכים אך איננו רוצים לשמור עבור dx כפול ארוך, dy, c, a1, a2, Hx, Hy; // רזולוציית מפת האינפיט לטווח התצורה שלך בעולם האמיתי int realX = map (Tx, 0, posStepsX, 0, rangeX); // החלף אם מיפוי אם הפוך int realY = map (Ty, posStepsX, 0, 0, rangeY); // החלף אם מיפוי אם הפוך // זווית calc עבור מפעיל שמאלי // dx קרטזי/dx = realX - originL; // כלול קיזוז dy = realY; // אורך קוטב (c) וזווית (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = return_angle (L1, L2, c); leftActuator = רצפה (((M_PI - (a2 + a1)) * 4068) / 71); // זווית אחרונה והמיר מרד ל- deg // זווית calc עבור מפעיל ימני dx = realX - originR; // כלול קיזוז dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = return_angle (L1, L2, c); rightActuator = רצפה (((a1 - a2) * 4068) / 71); // זווית אחרונה והמיר מרד לדג}

חלל נוסף לחישוב זווית:

החזרה כפולה_זווית (כפולה a, כפולה b, כפולה c) {// כלל קוסינוס לזווית בין c לבין acos החזרה ((a * a + c * c - b * b) / (2 * a * c)); }

שלב 4: קינמטיקה הפוכה

קינמטיקה הפוכה
קינמטיקה הפוכה

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

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

מוּמלָץ: