-
פרוייקט QUAD CONTROLLER יוצא לדרך
שלומות,
כמה שבועות אחורה ישבתי אצל איציק וראיתי את תכנון גוף ה-QUAD נרקם לו.
החלטתי למצוא את זמן ולתכנן מעגל בקרה עבור ה-QUAD, וזאת שלפני כמה שנים התנדבתי לסייע לבית ספר בדרום ת"א לבנות רובוט דמוי SEGWAY לתחרות רובוטיקה ופרוייקט ה-QUAD נראה כהמשך מאתגר בתחום הבקרה.
הדרך היחידה שיכולה להושיב אותי מספר שעות בודדות בשבוע סביב זה היא פתיחת שרשור בניה בפורום.
אז הנה התחלנו...
במהלך השבועות האחרונים התחלתי לקרוא מאמרים ולאסוף חומרה לפרוייקט.
להלן רשימת התודות נכון לזמן זה:
איציק - תרומה של בניית הגוף ושאר ירקות מכאניים.
מיכאל אלון (גורו ה-PIC בארץ) -תרומה של Breakout board של dsPIC33FJ256GP710.
חבר פורום בעילום שם - תרומה של IMU 9 DEGREES OF FREEDOM.
אבני הדרך לתקופה הקרובה יהיו:
כתיבת הדרייברים - PWM OUTPUT, PWM CAPTURE, ADC, UART
כתיבת המיקסר הבסיסי.
כתיבת אלגוריתם COMPLEMENTRY FILTER עבור זוית של ציר בודד.
כתיבת חוג בקרה מבוסס PI עבור ציר בודד.
בדיקת נדנדה עבור ציר בודד.
אשמח לקבל עצות/הערות והארות.
שבוע טוב לכולם,
שחר
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
בהצלחה!
אני כרגע משקיע מעט מאד מאמץ ב-QUAD שלי, היות וכל פיתוח רציני מחייב השקעה גדולה מאד. ה-features הבסיסיים של טיסה יציבה עובדים יפה.
במקום זה החלטתי ללכת על ArduCopter. מדובר בפרוייקט Open Source שתופס פופולריות. נראה לי שלהתחיל מבסיס מוצק של תוכנה וחומרה שכבר תומכת ב-Altitude Hold, GPS ושאר דברים מעניינים יהיה יותר חכם. אני בשלב איסוף החומרה כרגע והעבודה תיקח את הזמן שלה...
דרור
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
נשמע מאוד מעניין, רק שלא תתעייף במהלך הפיתוח ... :)
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
תציץ כאן :
http://code.google.com/p/gentlenav/
לא מעט מהדרייברים כבר מוכנים
והחלק הכי מעניין הוא קונספציית HILSIM
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
שחר,
באמת היגיע הזמן שתתניע.
אני חושב שכדאי להגדיר את המטרות, היעדים, הביצועים (MRD) ואז להתמקד בבניית תוכנית הפיתוח ובחירת רכיבים קריטיים. יכול להיות שחלק מהקודים הפתוחים יכולים באמת לקצר את הדרך ואנו נתמקד רק בפערים שהקוד הפתוח לא נותן.
הולך להיות מעניין,
איציק
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
עדכון ראשון.
כתיבת דריבר PWM הושלמה. הרכיב תומך ב-8 יצאות PWM, אני כרגע משתמש ב-4.
משימה הבאה - כתיבת דריבר CAPTURE עבור דגימת 6 ערוצי מקלט. 4 עבור הסטיקים + 2 ערוצים עבור PAN/TILT.
דרור - תודה. אני בטוח שעל הרבה שאלות שכבר יש לי תוכל לעזור בהמשך הדרך.
צביקה - התחלתי את הפיתוח עייף.
יגאל - תודה על הלינק. המווווון אינפורמציה!
איציק - לא ברור לי איך אתה מקליד כשהידיים שלך צריכות להיות דביקות מתיבנות הגוף????
שבוע טוב,
שחר
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
עוד הצעות ליציאות/כניסות PWM
למצלמה תזדקק גם לROLL אם תרצה להוסיף אופציית יצוב או TARGETING
כמובן לא לשכוח כניסת MODE לפחות אחת בטח תזדקק לה בשלב זה או אחר.
יציאת TRIGGER שימושי להפעלת מצלמה שחרור מטענים.
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
עדכון.
אתמול בלילה התחלתי את כתיבת דריבר ה-CAPTURE של אותות המקלט. כרגע הבורד מקבל 6 ערוצים דרך שישה פינים שונים. בהמשך אני מעוניין לתמוך בכניסה אחת מרובבת. יש עוד עבודה ואופטימיזציות אבל לפחות הבנתי איך לעבוד מול החומרה.
OK, אז השאלות מתחילות...
כתיבת המיקסר - למרות שהכוונה הראשונית היתה לכתוב את יחס המיקס ע"י מקדמים שנקבעים באמצעות פוטנציומטרים. האם מנסיונכם יש יחס שטוב להתחיל איתו? למשל בהטיית PITCH, האם להוסיף/להחסיר ביחס של 1:1 את דלתא הפולס מ1.5 מילישניה של הסטיק ל-PWM שמזין את בקרי המהירות של ציר ה-PITCH? לחילופין, האם זה נכון לקבע את יחס המיקס על 1:1 ולסתמך על פונקצית ה-EXPO בשלט ולוותר על הפוטנציומטרים?
שאלת C כללית - עד עכשיו כתבתי הכל ב-FIXED POINT כיוון שהחומרה, בעיקר TIMERים, הם התקני FIXED POINT.
האם יש דרך יעילה להמיר בין FLOAT ל INT ? אני אצטרך זאת בהמרת מוצא ה-PID ל-PWM.
תודה,
שחר
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
ציטוט:
נכתב במקור על ידי
ShaharBD
שאלת C כללית - עד עכשיו כתבתי הכל ב-FIXED POINT כיוון שהחומרה, בעיקר TIMERים, הם התקני FIXED POINT.
האם יש דרך יעילה להמיר בין FLOAT ל INT ? אני אצטרך זאת בהמרת מוצא ה-PID ל-PWM.
תודה,
שחר
בעיקרון הצבה פשוטה בין float ל-int אמורה לעשות את זה, אם הקומפיילר יודע מה הוא עושה. חשוב מאד לבדוק overflow כלומר עוד כשהמשתנה הוא float לכתוב קוד קצר שבודק אם הוא בתחום הדרוש לפני ההמרה!
חוץ מזה, אפשר גם לעשות את ה-PID ב-int, בזהירות. אני ממליץ להתחיל מ-float ולעשות אופטמיזציה אח"כ.
בנוסף - אם אתה מתבסס על PIC קח את הקוד של UAVX כדוגמא. לא מתועד כל כך אבל עובד ומוכח ויכול להיות שתמצא בו הרבה דברים שימושיים.
דרור
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
עוד דבר אחד מאד חשוב.
מי שבא מעולם ה-32 ביט ומעלה נוטה לפספס את זה ובגדול. ל-C יש כל מיני כללים באיזו רזולוציה הוא עושה את החישובים, חלקם לא ממש פשוטים וקל לטעות. למשל אם הקומפיילר יחליט שהוא עושה חישוב ביניים ב-8 ביט ויקרה overflow שלא ציפית לו. אם תסתכל בקוד שלי תראה שכמעט בכל מקום הגדרתי באופן מפורש את הרזולוציה (ע"י type casting). אני מקווה שמה שאני כותב הוא ברור, אם לא שאל.
דרור
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
דרור תודה.
נראה לי שאנסה לכתוב את רוב הקוד כולל ה-PID ב-FIXED POINT. כיוון שמדובר ברכיב DSP אני מניח שיש לו סוכמים שנכנסים לרוויה (המילה הטובה ביותר שאיש חומרה יכול למצוא ל-NO OVERFLOW) אבל טרם חיפשתי בדף הנתונים. אשמח גם לשלוח לך קטעי קוד לבדיקה והצעות שיפור ובכך לשפר את סגנון הקידוד שלי.
בקוד שלך, אתה זוכר את יחס המיקס?
תודה,
שחר
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
שחר, PIC? אתה יודע שאפשר יותר טוב מזה. היית מדבר איתי...
אני ממליץ לך לכתוב הכל בfixed point, זו הדרך היחידה שלא תקבל כלמיני rounding errors ובלאגן אחר (מה גם שעבודה בfloat זה דבר די איטי על מעבדים שעושים את זה בתוכנה, מה שאני כמעט בטוח שהPIC עושה).
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
שחר נשמע שאתה מתחיל מהבסיס, לא כדאי לקחת קודים מפרוייקטים קיימים.
ארז יכול לתרום ? יש לו זמן פנוי עם היד המגובסת :)
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
צבי, שאלתי אותו גם והוא מעדיף להתחיל מהתחלה :rolleyes:
אני עוד תקוע למעלה בשישה ערוצים:eek: למה המספר הז?
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
ציטוט:
נכתב במקור על ידי
ShaharBD
בקוד שלך, אתה זוכר את יחס המיקס?
תודה,
שחר
לא ממש ברור לי למה אתה מתכוון?
יש כמה פרמטרים:
1. כשאתה מקבל החלטה על תיקון באחד מ-3 הצירים, אתה צריך לתרגם לפקודות ל-4 מנועים. ב-QUAD זה נוסחה פשוטה של + או -
2. האם אתה מתכוון למקדם הגברה של ערך התיקון? זה נשלט בקלות על ידי מקדמי PID של חוג הבקרה. במקרים הפשוטים שולטים על P בלבד.
3. בדרך כלל יש עוד פרמטר שקובע את רגישות הסטיקים
הסבר ונמק ...
דרור
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
טוב,
קיבלתי טלפון מאיים מהלטאה המעופפת...
הוא דחק אותי לפינה ושכנע אותי להפסיק לעבוד על ה-PIC ולעבור ל-CORTEX.
לא רק זה, הוא גם איים שהוא תורם EVAL BOARD + IDE + JTAG + RTOS :)
הוא גם יעזור ע"פ יכולות הזמן שלו בכתיבה.
השבוע נתחיל להעביר את מעט העבודה שנעשתה ל-MCU החדש.
צביקה - את כתיבת ה-LOW LEVEL אני יעשה לבד כיוון שהפלטפורמה שונה. אני כמובן אקח חלקי קוד מוכנים ועובדים כאשר אתרחק קצת מרובד החומרה.
איני מכיר את ארז, אבל כל מי שמעוניין לקחת חלק מוזמן וכל הערה או נסיון תתקבלנה בברכה.
שחר
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
ציטוט:
נכתב במקור על ידי
dror
לא ממש ברור לי למה אתה מתכוון?
יש כמה פרמטרים:
1. כשאתה מקבל החלטה על תיקון באחד מ-3 הצירים, אתה צריך לתרגם לפקודות ל-4 מנועים. ב-QUAD זה נוסחה פשוטה של + או -
2. האם אתה מתכוון למקדם הגברה של ערך התיקון? זה נשלט בקלות על ידי מקדמי PID של חוג הבקרה. במקרים הפשוטים שולטים על P בלבד.
3. בדרך כלל יש עוד פרמטר שקובע את רגישות הסטיקים
הסבר ונמק ...
דרור
השאלה שלי היתה, האם מדובר בחיבור/חיסור פשוט או שצריך לעשות SCALING לפני החיבור/חיסור בשביל לשנות רגישות סטיקים.
השכבה שאני מדבר עליה היא לפני תיקון ה-PID ורק מתרגמת תנועת סטיק ל-PWM.
האם הזזת סטיק מהמרכז מנטרלת את תיקון ה-PID רגעית בכדי שה-PID לא יתנגד לתנועת הסטיק?
שחר
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
ציטוט:
נכתב במקור על ידי
ShaharBD
טוב,
קיבלתי טלפון מאיים מהלטאה המעופפת...
הוא דחק אותי לפינה ושכנע אותי להפסיק לעבוד על ה-PIC ולעבור ל-CORTEX.
לא רק זה, הוא גם איים שהוא תורם EVAL BOARD + IDE + JTAG + RTOS :)
הוא גם יעזור ע"פ יכולות הזמן שלו בכתיבה.
השבוע נתחיל להעביר את מעט העבודה שנעשתה ל-MCU החדש.
צביקה - את כתיבת ה-LOW LEVEL אני יעשה לבד כיוון שהפלטפורמה שונה. אני כמובן אקח חלקי קוד מוכנים ועובדים כאשר אתרחק קצת מרובד החומרה.
איני מכיר את ארז, אבל כל מי שמעוניין לקחת חלק מוזמן וכל הערה או נסיון תתקבלנה בברכה.
שחר
עכשיו אנחנו מדברים. PIC, גם כן...
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
ציטוט:
נכתב במקור על ידי
ShaharBD
השאלה שלי היתה, האם מדובר בחיבור/חיסור פשוט או שצריך לעשות SCALING לפני החיבור/חיסור בשביל לשנות רגישות סטיקים.
השכבה שאני מדבר עליה היא לפני תיקון ה-PID ורק מתרגמת תנועת סטיק ל-PWM.
האם הזזת סטיק מהמרכז מנטרלת את תיקון ה-PID רגעית בכדי שה-PID לא יתנגד לתנועת הסטיק?
שחר
PID עובד על שגיאה מדודה, כלומר מצב רצוי (סטיק) מול מצוי (מדידות). למשל אם אתה רוצה שהסטיק ישלוט על קצב גלגול, אתה מחסר את זה ממדידת הג'יירו של קצב הגילגול בפועל ומקבל שגיאת קצב גילגול. מכאן שהסטיק תמיד נלקח בחשבון.
מכיוון שמצב הסטיק נמדד ברוחב פולס PWM המגיע מהמקלט, צריך לתרגם את רוחב הפולס ליחידות שבהן נעשה החישוב. זהו ההגבר, ורצוי לעשות אותו פרמטר הניתן לשינוי. אפשר גם לעשות אותו לא-לינארי או להשאיר את החוכמה הזו לשלט. אצלי עשיתי את זה בתוכנה, סתם כי היה לי יותר קל מאשר להבין איך לתכנת את השלט.
דרור
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
ציטוט:
נכתב במקור על ידי
ShaharBD
השאלה שלי היתה, האם מדובר בחיבור/חיסור פשוט או שצריך לעשות SCALING לפני החיבור/חיסור בשביל לשנות רגישות סטיקים.
השכבה שאני מדבר עליה היא לפני תיקון ה-PID ורק מתרגמת תנועת סטיק ל-PWM.
האם הזזת סטיק מהמרכז מנטרלת את תיקון ה-PID רגעית בכדי שה-PID לא יתנגד לתנועת הסטיק?
שחר
ישנם למעשה שני מישורים:
במישור הראשון ייצוב הכלי במצב מתמיד. ז"א להחזיק נקודה - ברור שהפונקציה בין הג'יירויים למנועים עוברת דרך חוג PID.
במישור השני תרגום תנועת הסטיקים - הייתי רוצה שגם הההענות לבקשת הסטיק תעבור דרך פונקציית PID. אני מניח שבערכים שונים מהפונקציה הראשונה אבל חייב להיות PID. הרעיון הוא שאתה "מבקש" באמצעות הסטיק להגיע למקום מסויים ואתה גם קובע את הקצב שאתה רוצה שזה יקרה.
איציק
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
ציטוט:
נכתב במקור על ידי
flyinglizard
עכשיו אנחנו מדברים. PIC, גם כן...
הצעה (מעשית או לא - אתם תחליטו):ל- TMS320F28335 של TI יש את כל הפריפריה הדרושה על הרכיב, הוא pseudo floating point וניתן לצריבה ישירות מ-Simulink ... לא כדאי לשקול אותו?
כמו כן, אין מצב שרכיב PIC או כל מעבד אחר מגיע ללא דרייברים כתובים אופטימאלית ... הם חייבים להגיע עם ספריות מוכנות.
אני יכול להפנות לחומר על PID ב-fixed אם צריך ...
אם תצטרכו מכשירי מדידה מתקדמים - יש לנו.
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
ציטוט:
נכתב במקור על ידי
ShaharBD
השאלה שלי היתה, האם מדובר בחיבור/חיסור פשוט או שצריך לעשות SCALING לפני החיבור/חיסור בשביל לשנות רגישות סטיקים.
השכבה שאני מדבר עליה היא לפני תיקון ה-PID ורק מתרגמת תנועת סטיק ל-PWM.
האם הזזת סטיק מהמרכז מנטרלת את תיקון ה-PID רגעית בכדי שה-PID לא יתנגד לתנועת הסטיק?
שחר
האם יש מצב לראות את האלגוריתם הכללי? האם תוכלו להפנות אותי לחומר?
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
יש לנו קוד פלטפורמה מאוד חזק לCortex (דרייברים, סטאקים וכו') וגם את כלי הפיתוח. אני מעריך שמה שיש לTI נופל משמעותית מבחינת ההיקף. זה לא כלכך משנה לאלגוריתמיקה הבסיסית, אבל כן אם שחר יחליט להרחיב את היכולות של הבקר לכיוונים אחרים.
תקנו אותי אם אני טועה, אבל חוג בקרה בתדרים האלה לא אמור לאכול יותר מכמה MIPS בודדים, עם מעבד 100 מגה הרץ הפרוייקט מכוסה היטב.
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
ציטוט:
נכתב במקור על ידי
flyinglizard
יש לנו קוד פלטפורמה מאוד חזק לCortex (דרייברים, סטאקים וכו') וגם את כלי הפיתוח. אני מעריך שמה שיש לTI נופל משמעותית מבחינת ההיקף. זה לא כלכך משנה לאלגוריתמיקה הבסיסית, אבל כן אם שחר יחליט להרחיב את היכולות של הבקר לכיוונים אחרים.
תקנו אותי אם אני טועה, אבל חוג בקרה בתדרים האלה לא אמור לאכול יותר מכמה MIPS בודדים, עם מעבד 100 מגה הרץ הפרוייקט מכוסה היטב.
TI שהזכרתי יעודי לבקרה רב צירית ... ביצועים סוף ... מהו רוחב פס הרצוי של הבקרים?
-
תגובה להודעה: פרוייקט QUAD CONTROLLER יוצא לדרך
מבחינת דרייברים, סביבת פיתוח וכו', כולם היום מגיעים עם החבילה המלאה ... האם ל-ARM יש את כל הפריפריה on-board?
PID הןא אלגוריתם בקרה בסיסי ביותר ... אם תשלחו לי את האלגוריתם, אולי בקר מתקדם יותר ישפר ביצועים משמעותית...