PDA

צפייה בגרסה מלאה : שרשור בניה פרוייקט QUAD CONTROLLER יוצא לדרך



ShaharBD
13-11-2010, 17:06:27
שלומות,

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

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

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

איציק - תרומה של בניית הגוף ושאר ירקות מכאניים.
מיכאל אלון (גורו ה-PIC בארץ) -תרומה של Breakout board של dsPIC33FJ256GP710.
חבר פורום בעילום שם - תרומה של IMU 9 DEGREES OF FREEDOM.


אבני הדרך לתקופה הקרובה יהיו:
כתיבת הדרייברים - PWM OUTPUT, PWM CAPTURE, ADC, UART
כתיבת המיקסר הבסיסי.
כתיבת אלגוריתם COMPLEMENTRY FILTER עבור זוית של ציר בודד.
כתיבת חוג בקרה מבוסס PI עבור ציר בודד.
בדיקת נדנדה עבור ציר בודד.

אשמח לקבל עצות/הערות והארות.

שבוע טוב לכולם,
שחר

dror
13-11-2010, 17:19:06
בהצלחה!

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

במקום זה החלטתי ללכת על ArduCopter. מדובר בפרוייקט Open Source שתופס פופולריות. נראה לי שלהתחיל מבסיס מוצק של תוכנה וחומרה שכבר תומכת ב-Altitude Hold, GPS ושאר דברים מעניינים יהיה יותר חכם. אני בשלב איסוף החומרה כרגע והעבודה תיקח את הזמן שלה...

דרור

ZvikaF
13-11-2010, 19:03:19
נשמע מאוד מעניין, רק שלא תתעייף במהלך הפיתוח ... :)

igalr
13-11-2010, 20:52:46
תציץ כאן :
http://code.google.com/p/gentlenav/
לא מעט מהדרייברים כבר מוכנים
והחלק הכי מעניין הוא קונספציית HILSIM

איציק רונן
13-11-2010, 21:45:02
שחר,
באמת היגיע הזמן שתתניע.
אני חושב שכדאי להגדיר את המטרות, היעדים, הביצועים (MRD) ואז להתמקד בבניית תוכנית הפיתוח ובחירת רכיבים קריטיים. יכול להיות שחלק מהקודים הפתוחים יכולים באמת לקצר את הדרך ואנו נתמקד רק בפערים שהקוד הפתוח לא נותן.
הולך להיות מעניין,
איציק

ShaharBD
13-11-2010, 22:54:27
עדכון ראשון.

כתיבת דריבר PWM הושלמה. הרכיב תומך ב-8 יצאות PWM, אני כרגע משתמש ב-4.
משימה הבאה - כתיבת דריבר CAPTURE עבור דגימת 6 ערוצי מקלט. 4 עבור הסטיקים + 2 ערוצים עבור PAN/TILT.

דרור - תודה. אני בטוח שעל הרבה שאלות שכבר יש לי תוכל לעזור בהמשך הדרך.

צביקה - התחלתי את הפיתוח עייף.

יגאל - תודה על הלינק. המווווון אינפורמציה!

איציק - לא ברור לי איך אתה מקליד כשהידיים שלך צריכות להיות דביקות מתיבנות הגוף????

שבוע טוב,
שחר

igalr
14-11-2010, 00:09:25
עוד הצעות ליציאות/כניסות PWM
למצלמה תזדקק גם לROLL אם תרצה להוסיף אופציית יצוב או TARGETING
כמובן לא לשכוח כניסת MODE לפחות אחת בטח תזדקק לה בשלב זה או אחר.
יציאת TRIGGER שימושי להפעלת מצלמה שחרור מטענים.

ShaharBD
15-11-2010, 09:56:21
עדכון.

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

OK, אז השאלות מתחילות...

כתיבת המיקסר - למרות שהכוונה הראשונית היתה לכתוב את יחס המיקס ע"י מקדמים שנקבעים באמצעות פוטנציומטרים. האם מנסיונכם יש יחס שטוב להתחיל איתו? למשל בהטיית PITCH, האם להוסיף/להחסיר ביחס של 1:1 את דלתא הפולס מ1.5 מילישניה של הסטיק ל-PWM שמזין את בקרי המהירות של ציר ה-PITCH? לחילופין, האם זה נכון לקבע את יחס המיקס על 1:1 ולסתמך על פונקצית ה-EXPO בשלט ולוותר על הפוטנציומטרים?

שאלת C כללית - עד עכשיו כתבתי הכל ב-FIXED POINT כיוון שהחומרה, בעיקר TIMERים, הם התקני FIXED POINT.
האם יש דרך יעילה להמיר בין FLOAT ל INT ? אני אצטרך זאת בהמרת מוצא ה-PID ל-PWM.

תודה,
שחר

dror
15-11-2010, 10:17:12
שאלת C כללית - עד עכשיו כתבתי הכל ב-FIXED POINT כיוון שהחומרה, בעיקר TIMERים, הם התקני FIXED POINT.
האם יש דרך יעילה להמיר בין FLOAT ל INT ? אני אצטרך זאת בהמרת מוצא ה-PID ל-PWM.

תודה,
שחר
בעיקרון הצבה פשוטה בין float ל-int אמורה לעשות את זה, אם הקומפיילר יודע מה הוא עושה. חשוב מאד לבדוק overflow כלומר עוד כשהמשתנה הוא float לכתוב קוד קצר שבודק אם הוא בתחום הדרוש לפני ההמרה!
חוץ מזה, אפשר גם לעשות את ה-PID ב-int, בזהירות. אני ממליץ להתחיל מ-float ולעשות אופטמיזציה אח"כ.

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

דרור

dror
15-11-2010, 10:21:54
עוד דבר אחד מאד חשוב.

מי שבא מעולם ה-32 ביט ומעלה נוטה לפספס את זה ובגדול. ל-C יש כל מיני כללים באיזו רזולוציה הוא עושה את החישובים, חלקם לא ממש פשוטים וקל לטעות. למשל אם הקומפיילר יחליט שהוא עושה חישוב ביניים ב-8 ביט ויקרה overflow שלא ציפית לו. אם תסתכל בקוד שלי תראה שכמעט בכל מקום הגדרתי באופן מפורש את הרזולוציה (ע"י type casting). אני מקווה שמה שאני כותב הוא ברור, אם לא שאל.

דרור

ShaharBD
15-11-2010, 11:12:39
דרור תודה.

נראה לי שאנסה לכתוב את רוב הקוד כולל ה-PID ב-FIXED POINT. כיוון שמדובר ברכיב DSP אני מניח שיש לו סוכמים שנכנסים לרוויה (המילה הטובה ביותר שאיש חומרה יכול למצוא ל-NO OVERFLOW) אבל טרם חיפשתי בדף הנתונים. אשמח גם לשלוח לך קטעי קוד לבדיקה והצעות שיפור ובכך לשפר את סגנון הקידוד שלי.

בקוד שלך, אתה זוכר את יחס המיקס?

תודה,
שחר

flyinglizard
15-11-2010, 12:01:28
שחר, PIC? אתה יודע שאפשר יותר טוב מזה. היית מדבר איתי...

אני ממליץ לך לכתוב הכל בfixed point, זו הדרך היחידה שלא תקבל כלמיני rounding errors ובלאגן אחר (מה גם שעבודה בfloat זה דבר די איטי על מעבדים שעושים את זה בתוכנה, מה שאני כמעט בטוח שהPIC עושה).

ZvikaF
15-11-2010, 12:23:08
שחר נשמע שאתה מתחיל מהבסיס, לא כדאי לקחת קודים מפרוייקטים קיימים.
ארז יכול לתרום ? יש לו זמן פנוי עם היד המגובסת :)

איציק רונן
15-11-2010, 13:00:55
צבי, שאלתי אותו גם והוא מעדיף להתחיל מהתחלה :rolleyes:
אני עוד תקוע למעלה בשישה ערוצים:eek: למה המספר הז?

dror
15-11-2010, 13:18:35
בקוד שלך, אתה זוכר את יחס המיקס?

תודה,
שחר

לא ממש ברור לי למה אתה מתכוון?
יש כמה פרמטרים:
1. כשאתה מקבל החלטה על תיקון באחד מ-3 הצירים, אתה צריך לתרגם לפקודות ל-4 מנועים. ב-QUAD זה נוסחה פשוטה של + או -
2. האם אתה מתכוון למקדם הגברה של ערך התיקון? זה נשלט בקלות על ידי מקדמי PID של חוג הבקרה. במקרים הפשוטים שולטים על P בלבד.
3. בדרך כלל יש עוד פרמטר שקובע את רגישות הסטיקים

הסבר ונמק ...

דרור

ShaharBD
15-11-2010, 13:20:58
טוב,
קיבלתי טלפון מאיים מהלטאה המעופפת...
הוא דחק אותי לפינה ושכנע אותי להפסיק לעבוד על ה-PIC ולעבור ל-CORTEX.
לא רק זה, הוא גם איים שהוא תורם EVAL BOARD + IDE + JTAG + RTOS :)
הוא גם יעזור ע"פ יכולות הזמן שלו בכתיבה.
השבוע נתחיל להעביר את מעט העבודה שנעשתה ל-MCU החדש.

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

שחר

ShaharBD
15-11-2010, 13:25:34
לא ממש ברור לי למה אתה מתכוון?
יש כמה פרמטרים:
1. כשאתה מקבל החלטה על תיקון באחד מ-3 הצירים, אתה צריך לתרגם לפקודות ל-4 מנועים. ב-QUAD זה נוסחה פשוטה של + או -
2. האם אתה מתכוון למקדם הגברה של ערך התיקון? זה נשלט בקלות על ידי מקדמי PID של חוג הבקרה. במקרים הפשוטים שולטים על P בלבד.
3. בדרך כלל יש עוד פרמטר שקובע את רגישות הסטיקים

הסבר ונמק ...

דרור

השאלה שלי היתה, האם מדובר בחיבור/חיסור פשוט או שצריך לעשות SCALING לפני החיבור/חיסור בשביל לשנות רגישות סטיקים.
השכבה שאני מדבר עליה היא לפני תיקון ה-PID ורק מתרגמת תנועת סטיק ל-PWM.

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

שחר

flyinglizard
15-11-2010, 13:34:42
טוב,
קיבלתי טלפון מאיים מהלטאה המעופפת...
הוא דחק אותי לפינה ושכנע אותי להפסיק לעבוד על ה-PIC ולעבור ל-CORTEX.
לא רק זה, הוא גם איים שהוא תורם EVAL BOARD + IDE + JTAG + RTOS :)
הוא גם יעזור ע"פ יכולות הזמן שלו בכתיבה.
השבוע נתחיל להעביר את מעט העבודה שנעשתה ל-MCU החדש.

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

שחר

עכשיו אנחנו מדברים. PIC, גם כן...

dror
15-11-2010, 14:20:32
השאלה שלי היתה, האם מדובר בחיבור/חיסור פשוט או שצריך לעשות SCALING לפני החיבור/חיסור בשביל לשנות רגישות סטיקים.
השכבה שאני מדבר עליה היא לפני תיקון ה-PID ורק מתרגמת תנועת סטיק ל-PWM.

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

שחר

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

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

דרור

איציק רונן
15-11-2010, 14:28:16
השאלה שלי היתה, האם מדובר בחיבור/חיסור פשוט או שצריך לעשות SCALING לפני החיבור/חיסור בשביל לשנות רגישות סטיקים.
השכבה שאני מדבר עליה היא לפני תיקון ה-PID ורק מתרגמת תנועת סטיק ל-PWM.

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

שחר

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

alonk
15-11-2010, 17:20:42
עכשיו אנחנו מדברים. PIC, גם כן...

הצעה (מעשית או לא - אתם תחליטו):ל- TMS320F28335 של TI יש את כל הפריפריה הדרושה על הרכיב, הוא pseudo floating point וניתן לצריבה ישירות מ-Simulink ... לא כדאי לשקול אותו?

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

אני יכול להפנות לחומר על PID ב-fixed אם צריך ...

אם תצטרכו מכשירי מדידה מתקדמים - יש לנו.

alonk
15-11-2010, 17:21:37
השאלה שלי היתה, האם מדובר בחיבור/חיסור פשוט או שצריך לעשות SCALING לפני החיבור/חיסור בשביל לשנות רגישות סטיקים.
השכבה שאני מדבר עליה היא לפני תיקון ה-PID ורק מתרגמת תנועת סטיק ל-PWM.

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

שחר

האם יש מצב לראות את האלגוריתם הכללי? האם תוכלו להפנות אותי לחומר?

flyinglizard
15-11-2010, 17:25:17
יש לנו קוד פלטפורמה מאוד חזק לCortex (דרייברים, סטאקים וכו') וגם את כלי הפיתוח. אני מעריך שמה שיש לTI נופל משמעותית מבחינת ההיקף. זה לא כלכך משנה לאלגוריתמיקה הבסיסית, אבל כן אם שחר יחליט להרחיב את היכולות של הבקר לכיוונים אחרים.

תקנו אותי אם אני טועה, אבל חוג בקרה בתדרים האלה לא אמור לאכול יותר מכמה MIPS בודדים, עם מעבד 100 מגה הרץ הפרוייקט מכוסה היטב.

alonk
15-11-2010, 17:28:56
יש לנו קוד פלטפורמה מאוד חזק לCortex (דרייברים, סטאקים וכו') וגם את כלי הפיתוח. אני מעריך שמה שיש לTI נופל משמעותית מבחינת ההיקף. זה לא כלכך משנה לאלגוריתמיקה הבסיסית, אבל כן אם שחר יחליט להרחיב את היכולות של הבקר לכיוונים אחרים.

תקנו אותי אם אני טועה, אבל חוג בקרה בתדרים האלה לא אמור לאכול יותר מכמה MIPS בודדים, עם מעבד 100 מגה הרץ הפרוייקט מכוסה היטב.

TI שהזכרתי יעודי לבקרה רב צירית ... ביצועים סוף ... מהו רוחב פס הרצוי של הבקרים?

alonk
15-11-2010, 17:31:33
מבחינת דרייברים, סביבת פיתוח וכו', כולם היום מגיעים עם החבילה המלאה ... האם ל-ARM יש את כל הפריפריה on-board?
PID הןא אלגוריתם בקרה בסיסי ביותר ... אם תשלחו לי את האלגוריתם, אולי בקר מתקדם יותר ישפר ביצועים משמעותית...

ShaharBD
15-11-2010, 18:04:27
אלון,

לא כל כך הבנתי איזה אלגוריתם אתה רוצה לראות.
רוחב הפס עם בקרים סטנדרטיים הוא 50HZ, עם בקרי מהירות I2C רוחב הפס גבוה משמעותית.
אני צריך לחפש את הגרמני שכתב I2C לבקרים של HOBBY WING ולראות אם פרסם SOURCE CODE.
מי עוזר למצוא את הלינק?

שחר

flyinglizard
15-11-2010, 18:13:34
הנה ההמרה של הבקר:
http://www.rcgroups.com/forums/showthread.php?t=766589

MDreamer
15-11-2010, 18:17:42
לטאה, עשית לי את היום!

flyinglizard
15-11-2010, 18:20:29
אם רק היה לי שקל על כל פעם שהייתי שומע את זה

dror
15-11-2010, 19:36:51
אלון,

לא כל כך הבנתי איזה אלגוריתם אתה רוצה לראות.
רוחב הפס עם בקרים סטנדרטיים הוא 50HZ, עם בקרי מהירות I2C רוחב הפס גבוה משמעותית.
אני צריך לחפש את הגרמני שכתב I2C לבקרים של HOBBY WING ולראות אם פרסם SOURCE CODE.
מי עוזר למצוא את הלינק?

שחר

כמעט כל בקר מצוי יודע לעבוד בקצב עידכון PWM של כמעט 500Hz, ואתה צריך את זה. לא צריך I2C, סתם יקר.

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

דרור

motti
15-11-2010, 19:36:55
הנה ההמרה של הבקר:
http://www.rcgroups.com/forums/showthread.php?t=766589

קבלו עוד מנה
http://www.rcgroups.com/forums/showthread.php?t=1177149&highlight=nunchuk

http://www.rcgroups.com/forums/showthread.php?t=1039852

http://www.rcgroups.com/forums/showthread.php?t=1143569&page=173&highlight=fast+pwm#post15540574

http://shrediquette.blogspot.com/2010/01/finished-ic-to-pwm-converter-and.html

מוטי

alonk
15-11-2010, 19:38:07
אלון,

לא כל כך הבנתי איזה אלגוריתם אתה רוצה לראות.
רוחב הפס עם בקרים סטנדרטיים הוא 50HZ, עם בקרי מהירות I2C רוחב הפס גבוה משמעותית.
אני צריך לחפש את הגרמני שכתב I2C לבקרים של HOBBY WING ולראות אם פרסם SOURCE CODE.
מי עוזר למצוא את הלינק?

שחר

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

flyinglizard
15-11-2010, 20:14:42
בעיקרון אפשר להסתדר גם בלי החיישנים, אם תעשה מיקס בשלט שמתרגם פקודות aileron\elevator\pitch לשליטה נפרדת למנועים (כמו ששולטים בסרבואים), פשוט זה יהיה כלי הרבה יותר קשה לשליטה. תחשוב שזה בסך הכל fly by wire ששומר על הכלי מיוצב.

alonk
15-11-2010, 20:20:15
טוב...אז מה עושה המיקרו? תרגום בלבד? למה צריך PID? נראה לי חוג פתוח, לא?

flyinglizard
15-11-2010, 20:31:52
אין חוגים פתוחים בfly by wire לדעתי, אחרת אתה מבטל את כל היתרון שלו. תחשוב שכך הקלט מהמשתמש הופך לאבסולוטי, ללא תלות ברוח או חוסר היציבות של הכלי. נתת פקודה לX מעלות סיבוב? זה בדיוק מה שיקרה. הPID משווה את הקלט מהמשתמש לעומת הביצוע בפועל. בתנאים סטריליים לגמרי (אוויר עומד, מנועים מסונכרנים בצורה מושלמת, CG מדוייק וכו') לא היית צריך PID, במציאות בשביל שהכלי ירחף במקום בלי עזרת המשתמש ויטוס בצורה מדוייקת אתה חייב.

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

alonk
15-11-2010, 21:36:34
אין חוגים פתוחים בfly by wire לדעתי, אחרת אתה מבטל את כל היתרון שלו. תחשוב שכך הקלט מהמשתמש הופך לאבסולוטי, ללא תלות ברוח או חוסר היציבות של הכלי. נתת פקודה לX מעלות סיבוב? זה בדיוק מה שיקרה. הPID משווה את הקלט מהמשתמש לעומת הביצוע בפועל. בתנאים סטריליים לגמרי (אוויר עומד, מנועים מסונכרנים בצורה מושלמת, CG מדוייק וכו') לא היית צריך PID, במציאות בשביל שהכלי ירחף במקום בלי עזרת המשתמש ויטוס בצורה מדוייקת אתה חייב.

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

ok, אז זה כן fly-by-wire (מוגדר כחוג סגור) ... אז ללא ג'רו ומדי תאוצה עדיין סוגרים את החוג ע"פי הפקודה מהסטיק, אך עם אינפורמציה מוגבלת של משוב מהירות בלבד?

flyinglizard
15-11-2010, 22:12:53
בלי חיישנים, אין לך אפשרות לסגור חוג (בהגדרה, בקרת הפעולה שלך לפי התגובה), פשוט כי אתה לא יודע מה התגובה. אתה חייב איזשהו משוב על מה קרה לעומת מה שרצית שיקרה, ואת זה אתה מודד עם החיישנים.

alonk
15-11-2010, 22:16:13
נכון, אז אני חוזר לאחת ההודעות הקודמות - ניתן להטיס ללא חיישנים, אבל אז זה יהיה חוג פתוח....

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

flyinglizard
15-11-2010, 22:23:40
נכון, אז אני חוזר לאחת ההודעות הקודמות - ניתן להטיס ללא חיישנים, אבל אז זה יהיה חוג פתוח....

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

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

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

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

alonk
15-11-2010, 22:27:36
הבנתי אתך.
האם קיים מודל דינאמי של הכלי, על מנת למצוא את פונקציות התמסורת שלו ולתכנן בקר מתאים?

ZvikaF
15-11-2010, 22:29:23
אני חושב ששחרBD שואל מה קורה עם PID שסוגר חוג במצב דינמי, להבדיל מ PID שסוגר מצב סטאטי יש לנו מטיס שמתערב בSETPOINT ומשגע את המערכת....

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

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

alonk
15-11-2010, 22:31:32
אני חושב ששחרBD שואל מה קורה עם PID שסוגר חוג במצב דינמי, להבדיל מ PID שסוגר מצב סטאטי יש לנו מטיס שמתערב בSETPOINT ומשגע את המערכת....

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

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

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

alonk
15-11-2010, 22:32:08
אני חושב ששחרBD שואל מה קורה עם PID שסוגר חוג במצב דינמי, להבדיל מ PID שסוגר מצב סטאטי יש לנו מטיס שמתערב בSETPOINT ומשגע את המערכת....

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

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

9X?

ZvikaF
15-11-2010, 22:38:04
9X זה משדר הרדיו של טורניגי.... אתה באמת לא בא מהטיסנים :)

כאן יש מאמר מעניין רק צריך להגיע אליו:
http://dblp.uni-trier.de/rec/bibtex/conf/msv/OliveiraB09

alonk
15-11-2010, 22:49:11
9X זה משדר הרדיו של טורניגי.... אתה באמת לא בא מהטיסנים :)

כאן יש מאמר מעניין רק צריך להגיע אליו:
http://dblp.uni-trier.de/rec/bibtex/conf/msv/OliveiraB09

אמרתי את זה, אני איש אלגוריתמים ואלקטרוניקה, לא טיסנים...אבל חייב ללמוד דחוווווף:)

המאמר לא נמצא online, יש לי גישה כמעט לכל database...אבל מצאתי הרבה אחרים.

alonk
15-11-2010, 22:53:04
אלה נראים טוב:
http://hoffmann.stanford.edu/papers/Quadrotor_Dynamics_GNC07.pdf
http://hoffmann.stanford.edu/papers/GNC08_QuadTraj.pdf

ZvikaF
16-11-2010, 00:00:33
אכן מאמרים יפים, אבל עדיין צריך לפתח את מטריצת התנועה.

alonk
16-11-2010, 00:08:52
עוד שניים
http://cs.uni-salzburg.at/~hroeck/papers/AIAAGNC08-JAviator.pdf

מטריצת תנועה? אתה מתכוון לחישוב מסלול?

ShaharBD
16-11-2010, 01:40:59
כמעט כל בקר מצוי יודע לעבוד בקצב עידכון PWM של כמעט 500Hz, ואתה צריך את זה.
דרור

לא ידעתי...500HZ...האם זה כמו קצב עדכון של סרבו זנב דיגיטאלי?
מה קצב העדכון בQUAD שלך? באילו בקרים השתמשת?

אם כך הדבר חסכת לי לא מעט כאב ראש.

שחר

ShaharBD
16-11-2010, 01:42:14
לטאה, עשית לי את היום!

אתה מתכנן איזה שדרוג I2C?

שחר

MDreamer
16-11-2010, 01:57:16
אתה מתכנן איזה שדרוג I2C?

שחר
tire2:D

flyinglizard
16-11-2010, 02:13:53
לא ידעתי...500HZ...האם זה כמו קצב עדכון של סרבו זנב דיגיטאלי?
מה קצב העדכון בQUAD שלך? באילו בקרים השתמשת?

אם כך הדבר חסכת לי לא מעט כאב ראש.

שחר

סרבו זנב דיגיטלי מגיע ל333 הרץ. בכל מקרה, אם מימשו בצד הESC את הPWM עם Capture, אין לך באמת איך לדעת - חוץ מלבדוק את המוצא של המנוע, מה שאני די בטוח שאף אחד לא עשה - את קצב הרענון האפקטיבי. יכול להיות שהתוכנה מפספסת כמה מחזורי פיקוד בכל פעם, ואתה סתם שולח "על ריק". זה לא יגרום לאף שגיאה (רוב הסיכויים שישאר ערך הcapture הבא אחרי זה שנקרא על ידי התוכנה, עד לפעם הבאה שהתוכנה תקרא את הרגיסטר), אבל גם לא תדע מה קורה.

ShaharBD
16-11-2010, 07:12:49
סרבו זנב דיגיטלי מגיע ל333 הרץ. בכל מקרה, אם מימשו בצד הESC את הPWM עם Capture, אין לך באמת איך לדעת - חוץ מלבדוק את המוצא של המנוע, מה שאני די בטוח שאף אחד לא עשה - את קצב הרענון האפקטיבי. יכול להיות שהתוכנה מפספסת כמה מחזורי פיקוד בכל פעם, ואתה סתם שולח "על ריק". זה לא יגרום לאף שגיאה (רוב הסיכויים שישאר ערך הcapture הבא אחרי זה שנקרא על ידי התוכנה, עד לפעם הבאה שהתוכנה תקרא את הרגיסטר), אבל גם לא תדע מה קורה.


לפי השאלה אתה מבין שלי היו רק סרבואים אנאלוגיים..
סרבו אנאלוגי אינו יכול לעבוד בקצב כזה כיוון שהוא מבוסס על LOW PASS בכניסה שממיר את הפולסים למתח אנאלוגי.
לעומת זאת סרבו/בקר מהירות מבוססי מיקרו אכן יכולים לבצע את העבודה בתדר גבוה מ-50HZ.

שחר

ZvikaF
16-11-2010, 07:18:08
משוואות התנועה אלו פונקציות התמסורת של המערכת.
אני לא רואה את הצורך בקצבים של 500 הרץ בחוגים החיצוניים, קצב גבוה צריך אולי לדגימות ופילטריזציה של החיישנים.
קצב השינוי והאינרציה של המנועים לא יאפשרו תגובה מהירה ויש שרשורים שלמים בRCGROUP על פיתוחים של בקרי מנועים שיאפשרו קצב גבוה יותר, אבל זה יגרור אותך לפיתוחים נוספים.

ZvikaF
16-11-2010, 07:42:12
עוד שניים
http://cs.uni-salzburg.at/~hroeck/papers/AIAAGNC08-JAviator.pdf (http://cs.uni-salzburg.at/%7Ehroeck/papers/AIAAGNC08-JAviator.pdf)

מטריצת תנועה? אתה מתכוון לחישוב מסלול?

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

צירפת חומר מעניין :)
המאמר שצירפת נותן את המטריצה והניסויים שהם עשו נתנו את המקדמים

alonk
16-11-2010, 08:44:53
חישוב מסלול זה כבר אינטגרציה של התנועה ....

צירפת חומר מעניין :)
המאמר שצירפת נותן את המטריצה והניסויים שהם עשו נתנו את המקדמים

איזה מהם? המצורף כ-pdf או זה עם הלינק אליו?

חומר זה לא בעיה, אמרתי...אם נבנה גם מודל simulink ...

dror
16-11-2010, 08:51:17
לא ידעתי...500HZ...האם זה כמו קצב עדכון של סרבו זנב דיגיטאלי?
מה קצב העדכון בQUAD שלך? באילו בקרים השתמשת?

אם כך הדבר חסכת לי לא מעט כאב ראש.

שחר

אצלי זה בערך 500Hz (קצב PWM לבקר), חוג הבקרה עובד ב-100Hz
בקרים Turnigy Plush 18A
תסתבל באתר, יש שם סכמאות מלאות של החומרה

דרור

alonk
16-11-2010, 09:48:43
אצלי זה בערך 500Hz (קצב PWM לבקר), חוג הבקרה עובד ב-100Hz
בקרים Turnigy Plush 18A
תסתבל באתר, יש שם סכמאות מלאות של החומרה

דרור

אני לא מוצא את הסכימות...תוכל לתת לינק?
את ה-500Hz מדדת או שזה נתון במסמכים? ואת ה-100 של הבקרה?

dror
16-11-2010, 10:08:39
caspiquad.googlecode.com

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

דרור

alonk
16-11-2010, 10:12:09
caspiquad.googlecode.com

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

דרור

דרור, כתבת את הקוד של המיקרו או של הדרייביר?

dror
16-11-2010, 13:30:01
דרור, כתבת את הקוד של המיקרו או של הדרייביר?

כתבתי את הקוד שרץ על המיקרוקונטרולר

ShaharBD
16-11-2010, 16:22:46
שלומות,

אני מעוניין להתחיל לכתוב את חוג הבקרה מבוסס PI.
אני נתקל בכמה שאלות ואשמח לקבל את עזרתכם...

ל-IMU שברשותי יש אופציה להוציא RAW DATA או מידע מעובד לאחר DCM ו COMPLEMENTRY FILTER - כלומר מוציא את שלושת הזווית (מיוחסות לכדור הארץ) כבר מוכנות לכניסת ה-PI. כמובן שאני אתחיל בצורת העבודה הלעוסה...

השאלה היא האם אפשרי להתחיל אם מה שנקרה absolute angle PID כלומר ששינוי במצב סטיק משנה את ה-SETPOINT של ה-PID לזווית אבסולוטית חדשה - עזיבת הסטיק מחזירה את ה-QUAD לזוית 0.

או

angle rate PID שלפי הבנתי נותן SETPOINT של RAD/SEC שה-PID צריך להתאימה.

אשמח להבהרות בנושא.

תודה,
שחר

alonk
16-11-2010, 16:52:19
כתבתי את הקוד שרץ על המיקרוקונטרולר

ok, אז יש מצב שלמרות שאתה מעדכן את הבקר בקצב מסוים, הוא לא מצליח לעקוב במקרה והוא עובד בשיטת 1 bit D/A, כלומר מפלטר את ה-PWM שהוא מקבל לרמה אנלוגית?

dror
16-11-2010, 17:06:44
אני לא מאמין שזה מה שהבקר עושה. בקר מנוע brushless משחק עם רוחבי פולסים שהוא נותן למנוע. PWM זו סתם שיטת המימשק ההיסטורית בינו למקלט. בקרים מודרניים מסתכלים רק על רוחב הפולס במצב '1' שיכול להיות בין 1 ל-2 מילישניות. במצב '0' אפשר לתת רוחב פולס מינימלי. מכאן תדר ה-PWM שהוא כמעט 500 הרץ.

dror
16-11-2010, 17:08:43
שלומות,

אני מעוניין להתחיל לכתוב את חוג הבקרה מבוסס PI.
אני נתקל בכמה שאלות ואשמח לקבל את עזרתכם...

ל-IMU שברשותי יש אופציה להוציא RAW DATA או מידע מעובד לאחר DCM ו COMPLEMENTRY FILTER - כלומר מוציא את שלושת הזווית (מיוחסות לכדור הארץ) כבר מוכנות לכניסת ה-PI. כמובן שאני אתחיל בצורת העבודה הלעוסה...

השאלה היא האם אפשרי להתחיל אם מה שנקרה absolute angle PID כלומר ששינוי במצב סטיק משנה את ה-SETPOINT של ה-PID לזווית אבסולוטית חדשה - עזיבת הסטיק מחזירה את ה-QUAD לזוית 0.

או

angle rate PID שלפי הבנתי נותן SETPOINT של RAD/SEC שה-PID צריך להתאימה.

אשמח להבהרות בנושא.

תודה,
שחר

אם יש לך IMU טוב הייתי הולך על ABSOLUTE. למעשה אפשר לתמוך בשני המצבים בקלות על ידי ערוץ בשלט שיבחר ביניהם. זה ההבדל בין מצבי ACROBATIC ו-STABLE כפי שהם בדרך כלל נקראיםץ

ZvikaF
16-11-2010, 19:56:01
שחר אם אני מבין אותך, אתה מדבר על שני מצבי הטסה - קצב או מצב (RATE VS POSITION ) כדי להוריד עומס בהטסה רצוי לפקוד על חוג מצב.

ShaharBD
17-11-2010, 00:23:04
צביקה, אני לא בטוח שאני מבין מה שאני לא מבין, אתה מבין???? :D

שחר

flyinglizard
17-11-2010, 00:36:10
angle rate נשמע לי כמו הנכון. אחרת מה שאתה עושה זה לא כלי טיס, זה רובוט מלחמה.

ZvikaF
17-11-2010, 08:19:17
צביקה, אני לא בטוח שאני מבין מה שאני לא מבין, אתה מבין???? :D

שחר

זה שעולה או זה שיורד ?

מי דיבר על מכונת מלחמה ?

בקישור שיש ל RCGROUP יש פיתוח של בקר למנועים וגם מערכת בקרה שכוללת יחידה אינרציאלית, GPS ומד מרחק אולטראסוני שמשמש כמג"א ותקשורת דו כיוונית - זו מערכת רצינית :)

ShaharBD
17-11-2010, 13:42:53
עוד שאלות...

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

לי אישית נראה שהוספה והחסרה תשמור על ציר הסבסוב בצורה נכונה יותר... אשמח לתגובותיכם.


שחר

flyinglizard
17-11-2010, 14:41:35
נכון, זו הצורה היחידה שאתה יכול לעשות את זה axial, אחרת נקודת הסבסוב שלך הופכת להיות המנוע הנגדי.

igalr
17-11-2010, 15:40:30
עוד שאלות...

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

לי אישית נראה שהוספה והחסרה תשמור על ציר הסבסוב בצורה נכונה יותר... אשמח לתגובותיכם.


שחר

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

dror
17-11-2010, 15:51:27
בהנחה ששינוי הדחף פרופורציונלי להוספה או החסרה, אז צריך לוסיף ולהחסיר. ההנחה הזו לא ממש נכונה אבל כנראה שזה קירוב טוב מאד כי כך כולם עושים.

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