מאמר זה הוא המשך למאמר "מ־IMU ל־INS: איך באמת בונים מערכת ניווט טקטית". במאמר הקודם הסברנו כיצד מדידות גולמיות של ג'יירוסקופים ומדי תאוצה הופכות למערכת ניווט אינרציאלית (INS), ומה תפקידם של חיישני ה־IMU, מסנן קלמן (Kalman Filter) ושילוב נתוני GNSS. במאמר זה ניכנס צעד נוסף לעומק ונבחן מה באמת מתרחש בתוך אלגוריתם הניווט – מהרגע שבו מתקבלת דגימה חדשה מה־IMU ועד להפקת פתרון הניווט.
מה קורה בתוך התוכנה אלפי פעמים בשנייה?
במאמר הקודם הסברנו כיצד מערכת ניווט אינרציאלית (INS) הופכת את מדידות ה־IMU למהירות, כיוון ומיקום.
אבל נשארה שאלה אחת פתוחה.
כנראה החשובה ביותר.
איך התוכנה באמת עושה את זה?
אחרי הכול, ה־IMU אינו שולח "Latitude", "Longitude" או "Speed".
בכל מחזור דגימה הוא שולח בסך הכול כמה מספרים.
לדוגמה:
- מהירות זוויתית סביב ציר X
- מהירות זוויתית סביב ציר Y
- מהירות זוויתית סביב ציר Z
- תאוצה לאורך ציר X
- תאוצה לאורך ציר Y
- תאוצה לאורך ציר Z
- ולעיתים גם טמפרטורה, סטטוס ונתוני אבחון נוספים.
אלו הם כל הנתונים שיש למחשב.
אין בהם מפה.
אין בהם GPS.
אין בהם כיוון.
אין בהם אפילו מושג האם הפלטפורמה נמצאת על הקרקע, באוויר או בים.
ובכל זאת, שניות לאחר ההפעלה, מערכת הניווט כבר יודעת לחשב את זווית הפלטפורמה, את מהירותה ולעיתים גם את מיקומה בדיוק מרשים.
השאלה היא:
מה בדיוק קורה בתוך האלגוריתם בין הרגע שבו מתקבלת דגימה מה־IMU לבין הרגע שבו מתקבל פתרון ניווט מלא?
במאמר הזה ניכנס ללב מערכת ה־INS ונעקוב אחר המסלול שעוברת כל דגימה – מרגע כניסתה למעבד ועד להפיכתה לפתרון ניווט בזמן אמת.
IMU
↓
Gyroscope
Accelerometer
↓
Navigation Software
↓
Attitude
↓
Velocity
↓
Position
↓
Navigation Solution
איור 1 – מבט־על על אלגוריתם הניווט.
בכל מחזור דגימה מתקבלות מדידות גולמיות מה־IMU, אשר עוברות שרשרת של עיבוד מתמטי עד להפקת פתרון הניווט. למרות שהתרשים נראה פשוט, כל אחד מהשלבים כולל חישובים מורכבים המתבצעים מאות ואף אלפי פעמים בשנייה, בהתאם לקצב הדגימה של המערכת.
האלגוריתם אינו מחכה עד שתצטבר כמות גדולה של נתונים
אחת הטעויות הנפוצות ביותר היא לחשוב שמערכת הניווט "אוספת נתונים" במשך מספר שניות, ורק לאחר מכן מתחילה לחשב את מיקום הפלטפורמה.
בפועל קורה בדיוק ההפך.
ברגע שמגיעה דגימה חדשה מה־IMU, האלגוריתם מתחיל לעבד אותה באופן מיידי.
אם ה־IMU פועל בקצב של 1,000Hz, המשמעות היא שהתהליך כולו חייב להסתיים בתוך מילישנייה אחת בלבד – לפני שמגיעה הדגימה הבאה.
במערכות מתקדמות יותר, הפועלות בקצבי דגימה של 2,000Hz ואף 10,000Hz, חלון הזמן קצר עוד יותר.
לכן מערכת ניווט אינרציאלית אינה "מריצה חישוב גדול" אחת לכמה שניות.
היא מריצה אלפי חישובים קטנים ורציפים בכל שנייה.
בכל מחזור כזה היא קוראת את נתוני ה־IMU, מעדכנת את מצב המערכת, מעריכה את השגיאות, משלבת מידע מחיישנים נוספים ולבסוף מפיקה פתרון ניווט חדש.
למעשה, ניתן לחשוב על מערכת INS כעל לולאה אינסופית, החוזרת על עצמה שוב ושוב במשך כל זמן פעולת הפלטפורמה.
בכל פעם שמגיעה דגימה חדשה, אותה לולאה מתחילה מחדש.
Start
↓
Read IMU
↓
Correct Sensor Errors
↓
Update Attitude
↓
Remove Gravity
↓
Calculate Linear Acceleration
↓
Update Velocity
↓
Update Position
↓
Receive GNSS?
↓
Yes → Sensor Fusion
↓
Update Navigation State
↓
Output Navigation Solution
↓
Wait for Next IMU Sample
↓
Repeat
איור 2 – מחזור העיבוד הטיפוסי של מערכת ניווט אינרציאלית.
עם כל דגימה חדשה מה־IMU, האלגוריתם מבצע סדרת חישובים הכוללת תיקון שגיאות, עדכון מצב המערכת ושילוב מידע ממקורות עזר. התהליך חוזר על עצמו באופן רציף, מאות או אלפי פעמים בשנייה, בהתאם לקצב הדגימה של מערכת הניווט.
השלב הראשון – קריאת הנתונים מה־IMU
בכל מחזור עבודה, הפעולה הראשונה של האלגוריתם פשוטה מאוד:
הוא קורא את המדידות האחרונות שהתקבלו מה־IMU.
לכאורה, זה נשמע טריוויאלי.
בפועל, גם שלב זה דורש תשומת לב רבה.
האלגוריתם אינו קורא רק את ערכי ה־Gyroscope וה־Accelerometer. ברוב המערכות הוא מקבל גם מידע נוסף, כגון חותמת זמן (Timestamp), טמפרטורת החיישן, דגלי תקינות (Status Flags) ולעיתים גם נתוני אבחון פנימיים.
כל הנתונים הללו מתארים את מצב החיישן ברגע מדויק אחד.
לכן, אחד הפרמטרים החשובים ביותר אינו דווקא ערך התאוצה או המהירות הזוויתית, אלא מועד ביצוע המדידה.
אם האלגוריתם אינו יודע בדיוק מתי בוצעה כל מדידה, כל החישובים שיבוצעו בהמשך עלולים להיות שגויים.
זו הסיבה שמערכות ניווט מתקדמות מקדישות מאמץ רב לסנכרון זמן מדויק בין כל רכיבי המערכת.
כאשר גם מצלמה, גם מקלט GNSS וגם ה־IMU "מסכימים" על אותו ציר זמן, ניתן לשלב ביניהם מידע בצורה אמינה.
לעומת זאת, סטייה של מילישניות בודדות עלולה לגרום לכך שהמערכת תשווה בין נתונים המתארים רגעים שונים לחלוטין במהלך התנועה.
לפני שמתחילים לחשב זוויות, מהירויות או מיקום, האלגוריתם חייב להיות בטוח בדבר אחד:
שהמדידה שקיבל מייצגת את הרגע הנכון.
Camera Frame
────────────●────────────●────────────
GNSS
────────────●─────────────────────────
IMU
────────────●────────────●────────────●────────────●────────────
Time →
איור 3 – חשיבות סנכרון הזמן במערכת ניווט אינרציאלית.
במערכת ניווט מודרנית, כל מדידה חייבת להיות משויכת לרגע המדויק שבו בוצעה. ה־IMU, מקלט ה־GNSS, המצלמות וחיישנים נוספים פועלים לעיתים בקצבי דגימה שונים, אך האלגוריתם חייב לסנכרן את כולם לאותו ציר זמן. ללא Time Synchronization מדויק, גם חיישנים איכותיים עלולים להוביל לשגיאות ב־Sensor Fusion, בהערכת מצב המערכת ובפתרון הניווט כולו.
השלב השני – למה האלגוריתם לא מאמין ל־IMU?
אחרי שהמדידות התקבלו, האלגוריתם עדיין לא משתמש בהן לצורך הניווט.
הסיבה פשוטה.
כל חיישן, איכותי ככל שיהיה, מכיל שגיאות.
גם אם הפלטפורמה עומדת לחלוטין ללא כל תנועה, הג'יירוסקופים אינם מחזירים תמיד ערך של אפס בדיוק. גם מדי התאוצה אינם מודדים תמיד בדיוק את התאוצה הצפויה. בנוסף, שינויי טמפרטורה, רעידות, הזדקנות הרכיבים והשפעות סביבתיות נוספות עלולים לגרום לכך שהמדידות ישתנו מעט לאורך הזמן.
עבור רוב היישומים, מדובר בשגיאות זעירות וחסרות משמעות.
אבל במערכת ניווט אינרציאלית, אותן שגיאות אינן נשארות קטנות.
מכיוון שהאלגוריתם מבצע אינטגרציה רציפה של המדידות, גם סטייה זעירה עלולה להצטבר בהדרגה ולהפוך לשגיאת ניווט משמעותית.
לכן, עוד לפני חישוב הכיוון, המהירות או המיקום, התוכנה מנסה להעריך אילו חלקים במדידה מייצגים את תנועת הפלטפורמה, ואילו חלקים נובעים מהתנהגות החיישן עצמו.
בחלק מהמקרים היא משתמשת במקדמי כיול שנקבעו במפעל. במקרים אחרים היא מעדכנת את אומדן השגיאות בזמן אמת, תוך כדי המשימה.
במילים אחרות, האלגוריתם אינו שואל רק:
"מה ה־IMU מדד?"
אלא גם:
"עד כמה אני יכול לסמוך על המדידה הזו?"
זו אחת הסיבות המרכזיות לכך ששתי מערכות המשתמשות בדיוק באותו IMU עשויות להציג ביצועי ניווט שונים לחלוטין. לא רק איכות החיישן קובעת, אלא גם איכות האלגוריתם שמפרש את המדידות ומנהל את השגיאות לאורך זמן.
Raw Gyroscope Data
│
▼
Bias Compensation
│
Temperature Compensation
│
Scale Factor Correction
│
Validity Checks
│
▼
Corrected IMU Data
איור 4 – שלב תיקון המדידות (Measurement Preprocessing).
לפני שמבוצעים חישובי הניווט, האלגוריתם מעבד את המדידות הגולמיות המתקבלות מה־IMU. בשלב זה ניתן לבצע פיצוי להטיית החיישנים (Bias), תיקון השפעות טמפרטורה, התאמת Scale Factor, בדיקות תקינות ומנגנוני סינון נוספים. מטרת התהליך היא לצמצם את השפעת שגיאות המדידה, כך שהחישובים הבאים יתבססו על נתונים מדויקים ואמינים ככל האפשר.
השלב השלישי – איך האלגוריתם יודע לאיזה כיוון הפלטפורמה פונה?
אם נשאל אדם לעמוד במרכז החדר ולעצום עיניים, בדרך כלל הוא עדיין ידע האם הוא עומד ישר, האם הוא מוטה קדימה או האם הסתובב שמאלה.
למחשב אין את היכולת הזאת.
עבורו, העולם מתחיל מאפס מוחלט.
כאשר מערכת הניווט מופעלת, האלגוריתם אינו יודע אם הפלטפורמה פונה צפונה או דרומה, אם היא מאוזנת או מוטה, ואפילו לא האם היא עומדת על הקרקע או כבר נמצאת בתנועה.
המידע היחיד העומד לרשותו הוא זרם המדידות שמגיע מה־Gyroscope ומה־Accelerometer.
בכל מחזור דגימה, הג'יירוסקופים מודדים את קצב הסיבוב סביב שלושת הצירים. האלגוריתם אינו מקבל את הזווית עצמה, אלא רק את קצב השינוי שלה.
לכן, כדי לדעת כיצד הפלטפורמה מכוונת ברגע הנוכחי, עליו לעדכן באופן רציף את תנוחתה על סמך כל המדידות שהתקבלו עד אותו רגע.
אפשר לחשוב על כך כעל ניווט בעיניים עצומות.
אם בכל רגע יודעים רק כמה הסתובבנו מאז הרגע הקודם, ניתן לעקוב אחר הכיוון הנוכחי גם בלי לראות את העולם סביבנו.
כך בדיוק פועל האלגוריתם.
בכל דגימה חדשה הוא מקבל את קצב הסיבוב, משלב אותו עם מצב המערכת שחושב במחזור הקודם, ומחשב את הכיוון החדש של הפלטפורמה.
המשמעות היא שהאלגוריתם אינו מחשב את ה־Attitude מחדש בכל פעם.
הוא מעדכן אותו ללא הפסקה.
למעשה, זהו אחד המשתנים החשובים ביותר במערכת כולה. כל חישוב שיבוצע בהמשך – החל מהסרת כוח הכבידה ועד לחישוב המיקום – נשען על הדיוק של שלב זה.
במערכות מודרניות, ייצוג הכיוון אינו מתבצע בדרך כלל באמצעות זוויות Roll, Pitch ו־Yaw בלבד. שימוש בזוויות אלו עלול ליצור בעיות מתמטיות במצבי תנועה מסוימים, ולכן רוב מערכות הניווט המקצועיות משתמשות בייצוגים יציבים יותר, כגון Quaternion או Rotation Matrix, המאפשרים לעדכן את תנוחת הפלטפורמה בצורה רציפה ומדויקת.
המשתמש כמעט אף פעם אינו רואה את ה־Quaternion עצמו.
מבחינתו, מערכת הניווט פשוט מציגה Roll, Pitch ו־Yaw.
מאחורי הקלעים, האלגוריתם עובד בשפה מתמטית שונה לחלוטין.
Gyroscope
(Angular Rate)
│
▼
Quaternion Update
│
▼
Rotation Matrix
│
▼
Roll
Pitch
Yaw
השלב הרביעי – הסרת כוח הכבידה
לאחר שהאלגוריתם יודע את כיוון הפלטפורמה במרחב, הוא יכול לבצע פעולה שאינה אפשרית לפני כן:
להפריד בין כוח הכבידה לבין התאוצה האמיתית של הפלטפורמה.
לכאורה, נשמע פשוט.
בפועל, זהו אחד השלבים הקריטיים ביותר במערכת כולה.
נניח שהרחפן מונח ללא תנועה על שולחן.
מבחינת המשתמש, התאוצה שלו היא אפס.
אבל מד התאוצה אינו "יודע" שהרחפן עומד.
הוא מרגיש כוח של כ־1g הנובע ממשיכת כדור הארץ.
אם האלגוריתם היה מתייחס למדידה הזו כתאוצה אמיתית, הוא היה מגיע למסקנה שהרחפן מאיץ כלפי מעלה, למרות שבפועל הוא כלל אינו זז.
לכן, לפני שניתן לחשב מהירות או מיקום, האלגוריתם חייב לזהות כיצד הפלטפורמה מכוונת ביחס לכדור הארץ, לחשב את כיוון וקטור הכבידה במערכת הצירים של החיישן, ולהסיר אותו מהמדידה.
רק לאחר הסרת רכיב הכבידה מתקבלת התאוצה הלינארית האמיתית של הפלטפורמה.
זוהי התאוצה שממנה ניתן לחשב את מהירות התנועה.
בשלב זה אפשר להבין עד כמה כל השלבים במערכת תלויים זה בזה.
אם חישוב ה־Attitude שבוצע בשלב הקודם אינו מדויק, גם כיוון הכבידה יחושב בצורה שגויה.
המשמעות היא שחלק מכוח הכבידה יישאר בתוך המדידה, או לחלופין שתוסר תאוצה אמיתית בטעות.
במילים אחרות, טעות קטנה בזווית הפלטפורמה עלולה להפוך מיד לטעות בתאוצה המחושבת.
ומכיוון שהתאוצה תשמש בעוד רגע לחישוב המהירות והמיקום, אותה טעות תמשיך לגדול לאורך כל שרשרת הניווט.
זו בדיוק הסיבה שמערכות ניווט אינרציאליות משקיעות מאמץ כה רב בדיוק של חישוב ה־Attitude.
הוא אינו מיועד רק להצגת Roll, Pitch ו־Yaw למפעיל.
הוא מהווה את הבסיס שעליו נשענים כמעט כל חישובי הניווט בהמשך.
Measured Acceleration
│
├────── Gravity (1g)
└── Linear Acceleration
│
▼
Remove Gravity
│
▼
True Linear Acceleration
איור 6 – הסרת רכיב הכבידה (Gravity Compensation).
מד התאוצה מודד את הכוח הסגולי (Specific Force), הכולל הן את התאוצה הנובעת מתנועת הפלטפורמה והן את השפעת כוח הכבידה. לאחר שהאלגוריתם מחשב את כיוון הפלטפורמה (Attitude), הוא יכול להעריך את כיוון וקטור הכבידה ולהסירו מהמדידה. התוצאה היא התאוצה הלינארית האמיתית של הפלטפורמה, המשמשת בהמשך לחישוב המהירות והמיקום.
השלב החמישי – מתאוצה למהירות
לאחר שהאלגוריתם חישב את התאוצה הלינארית האמיתית של הפלטפורמה, ניתן לעבור לשלב הבא בשרשרת הניווט.
חישוב המהירות.
מבחינה מתמטית, הרעיון פשוט.
אם ידועה התאוצה בכל רגע, ניתן לחשב כיצד המהירות משתנה לאורך הזמן באמצעות אינטגרציה.
לדוגמה, אם כלי טיס מאיץ בקצב קבוע במשך מספר שניות, מהירותו תלך ותגדל בהתאם. האלגוריתם אינו ממתין לסיום התמרון, אלא מעדכן את אומדן המהירות בכל מחזור דגימה.
במערכת הפועלת בקצב של 1,000Hz, המשמעות היא שאלף פעמים בשנייה מחושב מחדש וקטור המהירות של הפלטפורמה.
אבל כאן מתחיל להופיע אחד האתגרים המרכזיים של ניווט אינרציאלי.
כל טעות קטנה בתאוצה המחושבת אינה נשארת באותו רגע.
היא עוברת גם אל חישוב המהירות.
אם האלגוריתם מעריך בטעות תאוצה של אלפיות בודדות של g, גם כאשר הפלטפורמה נעה במהירות קבועה, אותה טעות תצטבר בהדרגה ותגרום לכך שהמהירות המחושבת תתרחק יותר ויותר מהמהירות האמיתית.
זו הסיבה שמערכות ניווט אינרציאליות אינן מסתפקות רק בחישוב המתמטי של האינטגרציה.
במקביל לחישוב המהירות, האלגוריתם ממשיך לעקוב אחר איכות המדידות, מעדכן את אומדן השגיאות ומחפש הזדמנויות לתקן את הסטייה באמצעות מקורות מידע נוספים.
במילים אחרות, האלגוריתם אינו רק מחשב את המהירות.
הוא גם שואל את עצמו ללא הפסקה:
"עד כמה אני בטוח שהמהירות שחישבתי אכן נכונה?"
השאלה הזו תלווה אותנו גם בשלב הבא, כאשר מהירות הפלטפורמה תשמש בסיס לחישוב המיקום.
True Linear Acceleration
│
▼
Integration
│
▼
Velocity
│
▼
Navigation State
איור 7 – חישוב המהירות באמצעות אינטגרציה של התאוצה.
לאחר ביצוע Gravity Compensation, האלגוריתם מבצע אינטגרציה של התאוצה הלינארית לאורך הזמן כדי לעדכן את מהירות הפלטפורמה. התהליך מתבצע מחדש בכל מחזור דגימה, כך שווקטור המהירות מתעדכן באופן רציף. כל שגיאה בתאוצה המחושבת עלולה להצטבר עם הזמן ולהשפיע על דיוק אומדן המהירות, ולכן שלב זה תלוי באופן ישיר באיכות המדידות, בדיוק חישוב ה־Attitude ובמנגנוני פיצוי השגיאות של מערכת הניווט.
השלב השישי – האלגוריתם אינו מחשב רק מיקום. הוא מעריך את מצב המערכת.
עד עכשיו אפשר היה לחשוב שמערכת הניווט שומרת שלושה נתונים בלבד:
- מיקום
- מהירות
- כיוון
בפועל, אלו רק חלק קטן מהמידע שהאלגוריתם מנהל.
מערכת ניווט אינרציאלית מודרנית מחזיקה בכל רגע נתון מודל פנימי של מצב המערכת (State).
המודל הזה אינו מתאר רק היכן הפלטפורמה נמצאת, אלא גם כיצד היא מתנהגת, אילו שגיאות כבר זוהו, ועד כמה ניתן לסמוך על כל אחד מהמשתנים המחושבים.
במערכות פשוטות יחסית, מצב המערכת עשוי לכלול את המיקום, המהירות והכיוון בלבד.
לעומת זאת, במערכות טקטיות מתקדמות מתווספים בדרך כלל גם משתנים נוספים, כגון הטיית הג'יירוסקופים (Gyro Bias), הטיית מדי התאוצה (Accelerometer Bias), ולעיתים גם פרמטרים הקשורים להתקנה, לסנכרון הזמן או למודל התנועה של הפלטפורמה.
במילים אחרות, האלגוריתם אינו זוכר רק איפה הוא נמצא.
הוא גם זוכר כמה הוא סומך על עצמו.
זוהי נקודת ההבדל המרכזית בין אלגוריתם אינטגרציה פשוט לבין מערכת ניווט אינרציאלית אמיתית.
בכל מחזור דגימה, לאחר חישוב הכיוון, התאוצה והמהירות, האלגוריתם אינו מסתפק בעדכון ערכי הניווט.
הוא מעדכן גם את מצב המערכת כולו.
כאשר מתקבלת מדידה חדשה מה־IMU, או בהמשך מה־GNSS, המערכת אינה מתחילה לחשב הכול מחדש.
היא פשוט מעדכנת את מודל המצב הקיים שלה בהתאם למידע החדש.
אפשר לדמות זאת ליומן עבודה המתעדכן ללא הפסקה.
בכל רגע נרשמים בו לא רק הנתונים החדשים, אלא גם רמת הביטחון בכל אחד מהם.
כך, גם כאשר אחד החיישנים מפסיק לספק מידע או כאשר איכות המדידות יורדת, האלגוריתם עדיין מסוגל להמשיך לעבוד על בסיס הידע שכבר צבר.
זו אחת הסיבות לכך שמערכות INS מסוגלות להמשיך לספק פתרון ניווט גם כאשר אות ה־GNSS אובד למשך מספר שניות או אפילו דקות, בהתאם לאיכות המערכת.
Navigation State
📍 Position
➡️ Velocity
🧭 Attitude
⚙️ Gyroscope Bias
⚙️ Accelerometer Bias
🕒 Timestamp
איור 8 – מודל מצב המערכת (Navigation State).
מערכת ניווט אינרציאלית אינה שומרת רק את מיקום הפלטפורמה. בכל מחזור דגימה היא מנהלת מודל פנימי של מצב המערכת (State), הכולל בין היתר את המיקום, המהירות, הכיוון (Attitude), אומדן הטיית החיישנים (Gyroscope Bias ו־Accelerometer Bias) ומידע נוסף הדרוש לחישובי הניווט. מודל זה מתעדכן באופן רציף ומשמש בסיס לכל תהליכי החיזוי, תיקון השגיאות ו־Sensor Fusion.
השלב השביעי – Kalman Filter אינו מחשב את הניווט
אם תחפשו באינטרנט כיצד פועלת מערכת INS, סביר להניח שתיתקלו במשפט הבא:
"Kalman Filter מחשב את המיקום."
זו אחת התפיסות השגויות הנפוצות ביותר בתחום.
בפועל, מערכת הניווט כבר מחשבת את הכיוון, המהירות והמיקום גם ללא Kalman Filter.
החישובים הללו מתבצעים באופן רציף על בסיס מדידות ה־IMU, באמצעות האינטגרציה והמודלים המתמטיים שתיארנו בפרקים הקודמים.
אז מהו תפקידו של Kalman Filter?
התשובה היא:
הוא אינו מחשב את הניווט – הוא משפר אותו.
בכל רגע נתון, מערכת הניווט מנסה לחזות היכן הפלטפורמה אמורה להיות על סמך כל המידע שנאסף עד כה.
כאשר מתקבלת מדידה חדשה ממקור חיצוני, למשל ממקלט GNSS, מתחיל תהליך של השוואה.
האלגוריתם שואל שתי שאלות פשוטות:
מה ציפיתי לקבל?
ו-
מה באמת התקבל?
אם שתי התוצאות כמעט זהות, האלגוריתם מבין שהמודל שלו מדויק וממשיך כמעט ללא שינוי.
אבל אם קיים פער בין התחזית לבין המדידה, הוא אינו ממהר להחליף את כל פתרון הניווט.
במקום זאת, הוא מנסה להבין מה מקור הפער.
האם ה־GNSS שגה באופן רגעי?
האם אחד החיישנים מתחיל לסטות?
האם התפתח Bias חדש בג'יירוסקופ?
או שאולי הפלטפורמה ביצעה תמרון חריג שלא נלקח בחשבון במודל?
רק לאחר ניתוח הפערים, האלגוריתם מעדכן את מודל מצב המערכת.
לכן, Kalman Filter אינו "מתקן את המיקום".
הוא מעדכן את האמון של המערכת בעצמה, משפר את אומדן המשתנים הפנימיים ומקטין את השגיאות שיצטברו בעתיד.
אפשר לחשוב עליו כעל מנהל איכות של מערכת הניווט.
הוא אינו מבצע את המדידות ואינו מחשב את התנועה בעצמו.
תפקידו הוא לוודא שכל מקורות המידע משתלבים יחד בצורה האמינה ביותר, ולהחליט כמה משקל יש לתת לכל אחד מהם בכל רגע נתון.
זו הסיבה שגם כאשר אות ה־GNSS נעלם למספר שניות, מערכת הניווט אינה קורסת.
היא ממשיכה לעבוד על סמך התחזית הפנימית שלה, וכאשר מתקבל שוב מידע חיצוני, היא משלבת אותו באופן מבוקר כדי לעדכן את מצב המערכת.
Navigation State
│
▼
Prediction
│
▼
New GNSS Measurement
│
▼
Comparison
│
▼
Kalman Update
│
▼
Updated Navigation State
איור 9 – מחזור החיזוי והתיקון במערכת ניווט אינרציאלית.
מערכת ה־INS מחשבת באופן רציף תחזית של מצב הפלטפורמה על בסיס נתוני ה־IMU. כאשר מתקבלת מדידה ממקור עזר, כגון GNSS, ה־Kalman Filter משווה בין התחזית לבין המדידה, מחשב את השגיאה (Innovation) ומעדכן את מודל מצב המערכת. תהליך זה חוזר על עצמו בכל מחזור דגימה ומאפשר למערכת לצמצם את השגיאות המצטברות לאורך זמן.
אז למה כל כך קשה לבנות מערכת ניווט אינרציאלית?
לאחר שהכרנו את שרשרת העיבוד של מערכת הניווט, קל להבין מדוע פיתוח INS אינו מסתכם בבחירת IMU איכותי או בכתיבת מספר נוסחאות מתמטיות.
בכל אלפית שנייה המערכת נדרשת לבצע עשרות פעולות שונות:
- לקלוט נתונים מה־IMU.
- לסנכרן את כל החיישנים בזמן.
- לפצות על השפעות הטמפרטורה והטיות החיישנים.
- לחשב את כיוון הפלטפורמה.
- להפריד את כוח הכבידה מהתאוצה הנמדדת.
- לעדכן את המהירות והמיקום.
- לחזות את מצב המערכת.
- לשלב מידע ממקורות עזר.
- להעריך את איכות המדידות.
- ולעדכן מחדש את כל מודל הניווט.
וכל זה מתרחש מאות או אלפי פעמים בשנייה.
כאשר הפלטפורמה מבצעת תמרון חד, כאשר אות ה־GNSS נעלם, כאשר הטמפרטורה משתנה או כאשר מופיעות רעידות מכניות – האלגוריתם חייב להמשיך לפעול באופן רציף, מבלי לאבד את פתרון הניווט.
זו הסיבה שמערכת ניווט אינרציאלית היא הרבה יותר מתוכנת חישוב.
מדובר במערכת בזמן אמת, שבה כל שלב נשען על תוצאות השלב הקודם, וכל שגיאה קטנה עלולה להתפתח במהירות אם אינה מזוהה ומטופלת בזמן.
בסופו של דבר, הצלחתה של מערכת ניווט אינה נמדדת רק באיכות החיישנים שבה, אלא ביכולת האלגוריתם לנהל את השגיאות, להבין את מגבלות המדידות ולהפיק מהן את פתרון הניווט האמין ביותר.
סיכום
כאשר מסתכלים על מערכת INS מבחוץ, קל לחשוב שהיא מקבלת נתונים מה־IMU ומחזירה מיקום.
בפועל, בין שני השלבים הללו מסתתר אחד האלגוריתמים המורכבים ביותר בעולם ההנדסה.
בכל מחזור דגימה, מערכת הניווט קוראת את נתוני החיישנים, מתקנת את השגיאות הידועות, מחשבת את כיוון הפלטפורמה, מפצה על כוח הכבידה, מעדכנת את המהירות והמיקום, מנהלת את מודל מצב המערכת ומשלבת מידע ממקורות נוספים כדי לצמצם את השגיאה המצטברת.
כל התהליך הזה מתבצע באופן רציף, שוב ושוב, במשך כל זמן פעולתה של המערכת.
זו גם הסיבה ששני צוותי פיתוח יכולים לבחור בדיוק באותו IMU, ובכל זאת להגיע לביצועי ניווט שונים לחלוטין.
לעיתים קרובות, ההבדל אינו טמון בחיישן עצמו, אלא באיכות האלגוריתם, בדיוק סנכרון הזמן, בניהול השגיאות ובאופן שבו כל רכיבי המערכת משתלבים יחד לפתרון ניווט אחד.
דוגמה אמיתית – מה קורה כאשר מגיעה דגימה חדשה מה־IMU?
עד עכשיו הסברנו את העקרונות שעליהם מבוססת מערכת ניווט אינרציאלית.
כעת ניכנס צעד אחד עמוק יותר ונבחן כיצד נראה מחזור עבודה אמיתי של תוכנת ניווט.
לשם כך נשתמש בדוגמה המבוססת על IMU מסדרת LandMark™ SX2 של Gladiator Technologies.
ה־IMU שולח למחשב חבילת נתונים (Data Packet) בקצב קבוע, אשר יכול להגיע עד 10,000 דגימות בשנייה, בהתאם להגדרת המערכת. כל חבילה כוללת את מדידות הג'יירוסקופים, מדי התאוצה, טמפרטורת החיישן, מונה הודעות (Message Counter) ושדות נוספים הדרושים לבקרת התקשורת ולאימות תקינות הנתונים.
נניח שהתקבלה החבילה הבאה:
————————————————-
Message #15234
Time 12.001000 s
Gyro X +0.32 °/s
Gyro Y -0.15 °/s
Gyro Z +4.81 °/s
Accel X +0.031 g
Accel Y -0.012 g
Accel Z +1.002 g
Temperature 31.8°C
Status OK
————————————————-
מה קורה ברגע שהחבילה מגיעה למעבד?
מרגע שחבילת הנתונים התקבלה מה־IMU, עבודתו של האלגוריתם רק מתחילה.
הצעד הראשון אינו חישוב מיקום, מהירות או כיוון.
ראשית, התוכנה מפרקת את חבילת התקשורת וממירה את הנתונים למשתנים שבהם האלגוריתם יכול להשתמש.
בשלב זה נבדקים גם תקינות ההודעה, מונה ההודעות (Message Counter), שדות הסטטוס ושלמות הנתונים שהתקבלו מהחיישן.
רק לאחר שכל הבדיקות הסתיימו בהצלחה, ניתן להתחיל בעיבוד המדידות.
מבחינת המתכנת, השלב הראשון עשוי להיראות פשוט מאוד.
// Read one IMU packet
IMUSample sample = imu.read();
למרות שמדובר בשורת קוד אחת בלבד, מאחוריה מסתתרת עבודה רבה.
פונקציית imu.read() אינה מחזירה רק שישה מספרים.
היא קוראת את זרם הנתונים מהתקשורת הסדרתית, מאתרת את תחילת ההודעה באמצעות Sync Byte, בודקת את תקינות המבנה, מפענחת את שדות הנתונים, מאמתת את ה־Checksum וממירה את ערכי ה־Gyroscope, ה־Accelerometer והטמפרטורה למבנה נתונים שניתן לעבד בהמשך. מבנה ההודעות והשדות השונים מוגדרים בפרוטוקול התקשורת של סדרת SX2.
לאחר הפענוח, המשתנה sample עשוי להכיל מידע הדומה לזה:
sample.gyro.x
sample.gyro.y
sample.gyro.z
sample.accel.x
sample.accel.y
sample.accel.z
sample.temperature
sample.status
sample.messageCounter
זהו הרגע שבו המספרים שהגיעו מהחומרה הופכים למידע שהתוכנה יכולה להתחיל להבין.
אבל גם עכשיו, האלגוריתם עדיין אינו משתמש במדידות לצורך הניווט.
הוא יודע שכל חיישן מכיל שגיאות, ולכן לפני כל חישוב נוסף עליו לוודא שהנתונים אמינים, לעדכן את מצב החיישנים ולבצע את שלבי הפיצוי המתאימים.
במילים אחרות, הקריאה מה־IMU היא רק שער הכניסה.
הניווט עצמו עדיין לא התחיל.
השלב הבא – תיקון השגיאות מתחיל עוד לפני חישוב הניווט
לאחר שהמדידות נקלטו בהצלחה, האלגוריתם עדיין אינו משתמש בהן לצורך חישוב הכיוון או המיקום.
בשלב הראשון הוא מנסה לענות על שאלה פשוטה:
האם החיישן מודד את המציאות, או גם את השגיאות של עצמו?
זו אינה שאלה תאורטית.
כל ג'יירוסקופ וכל מד תאוצה סובלים מהטיות (Bias), מהשפעות טמפרטורה, מרעש אלקטרוני ומסטיות קטנות שנשארות גם לאחר כיול המפעל.
אם האלגוריתם יתעלם מהשגיאות הללו, הן ייכנסו ישירות לחישובי הניווט, יצטברו לאורך הזמן ויגרמו לסטייה הולכת וגדלה במיקום המחושב.
לכן, אחת הפעולות הראשונות שמבצעת התוכנה היא תיקון המדידות לפני כל חישוב נוסף.
בפסאודו־קוד, הדבר עשוי להיראות כך:
correctBias(sample);
temperatureCompensation(sample);
שתי שורות בלבד.
אבל מאחוריהן מסתתרת עבודה מורכבת הרבה יותר.
לדוגמה, הפונקציה correctBias() אינה מחסרת מספר קבוע מכל מדידה.
היא עשויה להשתמש בערכי כיול שנמדדו במפעל, בפרמטרים שנלמדו במהלך ההפעלה, או באומדן Bias המתעדכן באופן רציף על ידי ה־Kalman Filter.
באופן דומה, temperatureCompensation() אינה בודקת רק את הטמפרטורה הנוכחית של החיישן.
במערכות מתקדמות היא משתמשת במודלים שנבנו במהלך כיול בטווח רחב של טמפרטורות, ומעריכה כיצד כל שינוי תרמי משפיע על כל אחד מצירי המדידה.
אפשר לחשוב על שתי הפונקציות הללו כעל שלב "ניקוי" של הנתונים.
רק לאחר שהתוכנה מעריכה שהמדידות מייצגות בצורה טובה ככל האפשר את תנועת הפלטפורמה – ולא את מגבלות החיישן – ניתן להמשיך לחישובי הניווט עצמם.
Raw IMU Data
│
▼
Bias Compensation
│
▼
Temperature Compensation
│
▼
Validated Sensor Data
│
▼
Navigation Algorithm
איור 10 – עיבוד מקדים של מדידות ה־IMU.
לפני תחילת חישובי הניווט, האלגוריתם מפצה על שגיאות ידועות של החיישנים, כגון הטיות (Bias) והשפעות טמפרטורה. מטרת שלב זה היא להבטיח שהאלגוריתמים הבאים יעבדו על נתונים המייצגים ככל האפשר את תנועת הפלטפורמה, ולא את מגבלות מערכת המדידה.
דוגמה מספרית – כך מחושבת זווית הסיבוב
נניח שה־IMU שולח את המדידה הבאה:
Sampling Rate : 1000 Hz
Δt = 0.001 sec
Gyro Z = 20.0 °/sec
כלומר,
החיישן מודד שהפלטפורמה מסתובבת סביב ציר Z בקצב של 20 מעלות בשנייה.
אבל האלגוריתם אינו צריך לדעת כמה מעלות יהיו בעוד שנייה.
הוא צריך לדעת מה קרה באלפית השנייה האחרונה בלבד.
לכן הוא מבצע את החישוב הבא:
Angle Change
Δθ = ω × Δt
Δθ = 20 × 0.001
Δθ = 0.02°
במילים אחרות,
במהלך הדגימה האחרונה הפלטפורמה הסתובבה ב־
0.02° בלבד.
נשמע מספר זעיר.
אבל אם התהליך הזה חוזר 1000 פעמים בשנייה, האלגוריתם יכול לעקוב אחר כל שינוי בכיוון הפלטפורמה כמעט בזמן אמת.
בפסאודו־קוד, הפעולה עשויה להיראות כך:
double dt = 0.001;
Vector3 deltaAngle;
deltaAngle.x = gyro.x * dt;
deltaAngle.y = gyro.y * dt;
deltaAngle.z = gyro.z * dt;
בשלב זה האלגוריתם עדיין אינו מחשב את זוויות ה־Roll, Pitch ו־Yaw.
הוא רק מחשב בכמה השתנתה זווית הפלטפורמה מאז הדגימה הקודמת.
זהו ההבדל החשוב בין Angular Rate לבין Angle.
ה־Gyroscope מודד קצב סיבוב.
האלגוריתם הוא זה שהופך את קצב הסיבוב לשינוי בזווית באמצעות אינטגרציה לאורך הזמן.
כעת מגיעה שורת הקוד החשובה ביותר בכל מערכת INS.
attitude.update(deltaAngle);
לכאורה מדובר בפונקציה אחת בלבד.
אבל בתוך הפונקציה הזו מתבצעים החישובים המתמטיים שמעדכנים את תנוחת הפלטפורמה במרחב.
במערכות ניווט מודרניות, העדכון אינו מבוצע באמצעות חיבור פשוט של זוויות Roll, Pitch ו־Yaw.
במקום זאת, האלגוריתם מעדכן ייצוג מתמטי של הסיבוב – בדרך כלל Quaternion – אשר מאפשר לבצע אלפי עדכונים בשנייה ללא בעיות יציבות נומרית וללא תופעות כמו Gimbal Lock.
בסיום הפעולה מתקבל כיוון הפלטפורמה החדש, שישמש מיד בשלב הבא של האלגוריתם:
חישוב כיוון כוח הכבידה והסרתו ממדידות התאוצה.
Gyroscope
20°/sec
│
▼
Δθ = ω × Δt
│
▼
0.02°
│
▼
Quaternion Update
│
▼
New Attitude
במערכת הפועלת בקצב של 1000Hz, הפונקציה attitude.update() מבוצעת מיליון פעמים בתוך כ־17 דקות של פעולה רציפה. כל עדכון חייב להיות מדויק, משום שטעות זעירה בכל מחזור עלולה להצטבר לסטיית ניווט משמעותית לאורך זמן.
אבל רגע… למה בכלל צריך Accelerometer?
אם הג'יירוסקופ כבר מאפשר לחשב את זווית הסיבוב, אפשר לשאול שאלה פשוטה:
למה בכלל צריך גם Accelerometer?
התשובה היא שג'יירוסקופ, איכותי ככל שיהיה, אינו מושלם.
גם לאחר כיול, תמיד קיימת הטיה זעירה (Bias).
נניח שבמקום למדוד 0.000°/s, החיישן מודד בטעות:
0.020°/s
המספר הזה כמעט בלתי מורגש.
אבל האלגוריתם אינו יודע שמדובר בטעות.
מבחינתו, הפלטפורמה מסתובבת.
לכן הוא ימשיך לבצע אינטגרציה.
אחרי שנייה אחת:
0.020°
אחרי דקה:
1.2°
אחרי עשר דקות:
12°
למרות שהמערכת כלל לא זזה.
זו בדיוק הסיבה שמערכת INS אינה יכולה להסתמך על Gyroscope בלבד.
כאן נכנס לתמונה ה־Accelerometer.
כאשר הפלטפורמה נמצאת במנוחה, מד התאוצה מודד כמעט אך ורק את כוח הכבידה.
מבחינת האלגוריתם, זהו למעשה "מצפן" לכיוון מטה.
אם ה־Gyroscope טוען שהמערכת נטויה ב־5° ימינה, אבל וקטור הכבידה מצביע על כך שהיא עדיין מאוזנת, האלגוריתם מבין שמשהו אינו מסתדר.
כאן מתחיל אחד התהליכים החשובים ביותר במערכת הניווט.
האלגוריתם משלב בין שני החיישנים:
- ה־Gyroscope מספק תגובה מהירה מאוד לשינויים בתנועה.
- ה־Accelerometer מספק נקודת ייחוס יציבה ביחס לכוח הכבידה.
במקום לבחור באחד מהם, הוא משלב את שניהם כדי לקבל אומדן מדויק יותר של כיוון הפלטפורמה.
בפסאודו־קוד, הרעיון עשוי להיראות כך:
Attitude gyroPrediction =
attitude.predict(sample.gyro, dt);
Vector3 gravity =
normalize(sample.accel);
Attitude corrected =
sensorFusion(
gyroPrediction,
gravity);
כמובן, מערכת ניווט אמיתית אינה משתמשת בפונקציה בשם sensorFusion().
בפועל, תהליך זה מבוצע באמצעות אלגוריתמים מתקדמים יותר, כגון Kalman Filter, Extended Kalman Filter (EKF) או שיטות הערכת מצב אחרות.
אבל העיקרון נשאר זהה.
הג'יירוסקופ אומר:
"כך אני חושב שהפלטפורמה הסתובבה."
מד התאוצה אומר:
"זהו הכיוון שבו פועל כוח הכבידה."
האלגוריתם משלב את שתי ההערכות ומחליט מהי תנוחת הפלטפורמה הסבירה ביותר.
Gyroscope Measurements
│
▼
Attitude Prediction Model
│
▼
Predicted Attitude
▲
│
Gravity Vector from Accelerometer
│
▼
Kalman Filter / Sensor Fusion
│
▼
Corrected Attitude
איור 11 – עקרון ה־Sensor Fusion במערכת ניווט אינרציאלית.
האלגוריתם משלב את תגובתו המהירה של ה־Gyroscope עם מידע על כיוון כוח הכבידה מה־Accelerometer, וכך מפיק אומדן מדויק ויציב של תנוחת הפלטפורמה לאורך זמן.
ומה קורה כאשר מתקבלת מדידת GNSS?
עד כה הסתמכה מערכת הניווט אך ורק על חיישני ה־IMU.
היא חישבה את הכיוון באמצעות הג'יירוסקופים, את התאוצה באמצעות מדי התאוצה, ומהם גזרה את המהירות ואת המיקום.
לשיטה זו יש יתרון משמעותי: היא פועלת באופן רציף ואינה תלויה במקורות מידע חיצוניים.
אולם יש לה גם מגבלה בסיסית.
כל שגיאה קטנה במדידות החיישנים מצטברת לאורך הזמן.
גם אם הטעות בכל מחזור דגימה זניחה לחלוטין, לאחר דקות או שעות של פעולה היא עלולה להפוך לסטיית ניווט משמעותית.
לכן, כאשר מתקבלת מדידת מיקום ממערכת GNSS, האלגוריתם אינו מחליף את פתרון ה־INS.
במקום זאת, הוא משווה בין שני מקורות המידע.
מצד אחד נמצאת תחזית המיקום שחושבה על ידי מערכת ה־INS.
מצד שני מתקבלת מדידת המיקום מה־GNSS.
ההפרש ביניהם נקרא Innovation או Residual, והוא מהווה את הבסיס לתהליך התיקון.
לדוגמה:
INS Position
X = 1245.32 m
Y = 842.17 m
GNSS Position
X = 1245.08 m
Y = 842.51 m
במקרה זה האלגוריתם מזהה שהפתרון האינרציאלי סטה בכמה עשרות סנטימטרים מהמדידה החיצונית.
הוא אינו "קופץ" מיד למיקום החדש.
במקום זאת, הוא מעריך האם מדובר בסטייה אמיתית של מערכת הניווט או ברעש רגעי במדידת ה־GNSS.
רק לאחר הערכה זו מבוצע תיקון מבוקר של מצב המערכת.
בפסאודו־קוד, התהליך עשוי להיראות כך:
State prediction = ins.predict();
GNSSMeasurement gnss = receiver.read();
Innovation innovation =
gnss.position - prediction.position;
kalman.correct(innovation);
הפונקציה kalman.correct() אינה מתקנת רק את המיקום.
במערכות ניווט מודרניות היא עשויה לעדכן גם את:
- מיקום הפלטפורמה.
- המהירות.
- הזוויות (Attitude).
- הטיית הג'יירוסקופים (Gyro Bias).
- הטיית מדי התאוצה (Accelerometer Bias).
כלומר, מדידת GNSS אחת יכולה לשפר את איכותם של משתני מצב רבים, ולא רק את הקואורדינטות הגאוגרפיות.
לכן נהוג לומר שמסנן קלמן אינו רק "מתקן את המיקום", אלא מעדכן את מודל המצב כולו.
INS Prediction
│
▼
Predicted Position
│
│
GNSS Position ─────────┤
▼
Innovation (Error)
│
▼
Kalman Correction
│
▼
Updated Navigation State
איור 12 – תיקון פתרון ה־INS באמצעות מדידת GNSS.
בכל פעם שמתקבלת מדידת GNSS, האלגוריתם משווה אותה לפתרון שחושב על ידי מערכת ה־INS. ההפרש (Innovation) משמש את מסנן קלמן לעדכון מודל המצב, ובכך מפחית את השגיאה המצטברת ומשפר את דיוק הניווט לאורך זמן.
ומה קורה כאשר אות ה־GNSS נעלם?
זהו אחד התרחישים המאתגרים ביותר עבור כל מערכת ניווט.
ברגע שאות ה־GNSS אובד, מסנן קלמן מפסיק לקבל עדכוני מיקום חיצוניים.
מנקודה זו ואילך, מערכת הניווט נשענת אך ורק על המדידות שמספק ה־IMU.
המשמעות היא שכל שגיאה קטנה במדידות הג'יירוסקופים או מדי התאוצה מתחילה להצטבר ללא מנגנון תיקון חיצוני.
בשלב זה איכות הניווט תלויה כמעט לחלוטין באיכות החיישנים וביכולת האלגוריתם להעריך ולפצות על השגיאות המצטברות.
מערכות המבוססות על IMU טקטי או ניווטי עשויות להמשיך לספק פתרון מדויק במשך דקות ארוכות גם ללא GNSS, בעוד שמערכות המבוססות על חיישנים פשוטים יותר יאבדו דיוק בקצב מהיר בהרבה.
לכן, כאשר יצרן מציין ביצועים של IMU, אין די להסתכל על רמת הרעש או רזולוציית המדידה בלבד.
פרמטרים כמו Bias Stability, Angle Random Walk (ARW) ו־Velocity Random Walk (VRW) הם אלו שקובעים כיצד תתנהג מערכת הניווט כאשר לא תהיה לה אפשרות להסתמך על מקור מידע חיצוני.
במילים אחרות, איכות ה־IMU אינה נמדדת רק כאשר הכול עובד, אלא בעיקר כאשר מערכת הניווט נאלצת לעבוד לבדה.
בפסאודו־קוד, השינוי נראה כמעט טריוויאלי:
while (systemRunning)
{
IMUSample sample = imu.read();
navigation.predict(sample);
if (GNSS.available())
{
navigation.correct(receiver.read());
}
publishNavigationSolution();
}
כאשר ה־GNSS זמין, האלגוריתם מבצע שני שלבים בכל מחזור: Prediction ולאחריו Correction.
כאשר ה־GNSS אינו זמין, שלב התיקון פשוט אינו מתבצע.
למרות שהקוד כמעט ואינו משתנה, התנהגות המערכת משתנה לחלוטין. מרגע זה, כל פתרון הניווט מבוסס על תחזיות פנימיות בלבד, והשגיאה המצטברת מתחילה לגדול עם הזמן.
IMU Measurements
│
▼
INS Prediction
│
▼
GNSS Measurement?
┌───────────┐
Yes│ │No
▼ │
Kalman Update │
│ │
└─────┬─────┘
│
▼
Navigation Solution
איור 13 – השפעת זמינות ה־GNSS על מחזור הניווט. כאשר אות ה־GNSS זמין, מסנן קלמן מתקן באופן רציף את פתרון ה־INS באמצעות מדידות חיצוניות. בעת אובדן אות, האלגוריתם ממשיך להפיק פתרון ניווט המבוסס על חיזוי אינרציאלי בלבד, והשגיאה המצטברת גדלה בהתאם לאיכות החיישנים ולביצועי האלגוריתם.
🧩 לקריאה נוספת ולהעמקה
מאמר זה הוא חלק מסדרת מאמרים העוסקת בהנדסת מערכות אינרציאליות מודרניות ובאופן שבו חיישני MEMS משמשים במערכות בקרה, ייצוב וניווט מתקדמות. להבנה רחבה יותר של ההיבטים ההנדסיים והמערכתיים של Gyro ו-IMU, ניתן להעמיק גם במאמרים הבאים:
- בין בקרה לניווט: כיצד IMU מבוסס MEMS משנה את גבולות היישומים
- Gyro ו-IMU למערכות בקרה מתקדמות
- איך בוחרים Gyro ו-IMU ליישומי בקרה וניווט – ומה באמת קובע יציבות וביצועים
- למה External Sync הוא קריטי במערכות Gyro ו-IMU
- ייצוב, עקיבה וסנכרון זמן: הבסיס לשליטה מדויקת בקו הראייה
- ייצוב משימתי במערכות EO/IR דינמיות: מדוע רוחב סרט, קצב נתונים והשהיית פאזה מגדירים ביצועי Gimbal
- למה Gladiator? מה באמת מבדיל יצרן IMU ו-MEMS Gyro בשוק צפוף
- מיתוסים נפוצים על חיישני אינרציה MEMS: ומה באמת השתנה בטכנולוגיית Gyro ו-IMU בעשור האחרון
- Bias Stability vs Bias Instability: מה באמת קובע ביצועי Gyro ו-IMU במערכות ייצוב, עקיבה וניווט
- Scale Factor ב־MEMS IMU – השגיאה השקטה שהורסת דיוק
- מדוע שני IMU בעלי מפרט כמעט זהה סיפקו ביצועי ייצוב שונים לחלוטין?
- IMU של 2000Hz? לפני שמתרשמים, כדאי להבין שלושה מספרים שונים לחלוטין
- הדור הבא של MEMS: ארכיטקטורת SX3 ועתיד הניווט, העקיבה והייצוב
- למה IMU קטן עשוי לחסוך חודשים של פיתוח
- התמונה רועדת למרות שבחרתם Gyroscope עם Bias Stability מצוין
- למה החלפת IMU עלולה לגרום לשבועות של כיול מחדש?
- מ־IMU ל־INS: איך באמת בונים מערכת ניווט טקטית
Frequently Asked Questions (FAQ)
האם המאמר מסביר את כל מה שנדרש כדי לבנות מערכת INS?
לא.
מטרת המאמר היא להסביר את עקרונות הפעולה של מערכת ניווט אינרציאלית בצורה ברורה ומעשית. מערכות ניווט מבצעיות כוללות אלגוריתמים מתקדמים נוספים, אשר כל אחד מהם יכול להצדיק מאמר נפרד.
מהו Error-State Kalman Filter?
במערכות INS מודרניות, מסנן קלמן בדרך כלל אינו מעריך ישירות את המיקום, המהירות והזוויות, אלא את השגיאה שלהן. גישה זו, המכונה Error-State Kalman Filter (ESKF), משפרת את היציבות הנומרית ומאפשרת לבצע תיקונים מדויקים יותר לאורך זמן. כיום זוהי אחת הארכיטקטורות הנפוצות ביותר במערכות ניווט אינרציאליות.
מדוע משתמשים ב־Quaternion במקום Roll, Pitch ו־Yaw?
זוויות אוילר (Roll, Pitch ו־Yaw) נוחות להצגה למשתמש, אך אינן אידיאליות לחישובים מתמטיים רציפים. מערכות INS משתמשות בדרך כלל ב־Quaternions, המאפשרים לייצג סיבובים תלת־ממדיים ללא בעיות כמו Gimbal Lock, תוך שמירה על יציבות ודיוק גם לאחר מיליוני עדכונים.
מה הם Earth-Centered Frames (ECEF/NED)?
מערכת ניווט חייבת להגדיר באיזו מערכת צירים היא פועלת.
ביישומים רבים משתמשים במערכות ייחוס כגון ECEF (Earth-Centered, Earth-Fixed) או NED (North-East-Down), המאפשרות להמיר מדידות מה־IMU למיקום ולכיוון ביחס לכדור הארץ.
מהו Coning & Sculling Compensation?
כאשר הפלטפורמה מבצעת סיבובים ותאוצות מהירים מאוד, אינטגרציה פשוטה של המדידות אינה מספיקה.
אלגוריתמי Coning Compensation ו־Sculling Compensation מתקנים שגיאות הנוצרות כתוצאה מתנועה סיבובית ומורכבת בין דגימות עוקבות, ומשפרים את דיוק הניווט במיוחד במערכות בעלות קצב דגימה גבוה.
מהו Lever Arm Compensation?
לעיתים אנטנת ה־GNSS אינה ממוקמת בדיוק באותו מקום שבו מותקן ה־IMU.
המרחק ביניהם, המכונה Lever Arm, יוצר הבדלים במדידות בזמן תנועה או סיבוב. אלגוריתם Lever Arm Compensation מפצה על הפרש זה ומשפר את דיוק שילוב הנתונים בין החיישנים.
מהו Zero Velocity Update (ZUPT)?
ביישומים שבהם ידוע שהמערכת נעצרת לפרקי זמן קצרים, ניתן לנצל מידע זה כדי לאפס את המהירות המחושבת.
שיטה זו, הנקראת Zero Velocity Update (ZUPT), מפחיתה באופן משמעותי את השגיאה המצטברת ומשמשת במערכות ניווט להולכי רגל, רובוטים וכלים אוטונומיים.
מהו GNSS/INS Tight Coupling?
במערכות פשוטות, ה־INS מקבל פתרון מיקום מלא ממקלט ה־GNSS.
במערכות מתקדמות יותר, המכונות Tight Coupling, האלגוריתם משלב ישירות את מדידות הלוויינים בתוך מסנן קלמן. גישה זו מאפשרת להמשיך לפעול גם כאשר מספר הלוויינים הזמינים קטן או כאשר איכות האות יורדת.
מדוע משתמשים במספר אנטנות GNSS?
מערכות הכוללות שתי אנטנות GNSS או יותר מסוגלות לחשב גם את כיוון הפלטפורמה (Heading) ללא צורך בתנועה.
יכולת זו חשובה במיוחד בכלי טיס, כלי שיט, כלי רכב אוטונומיים ופלטפורמות מיוצבות.
מהו RTK Integration?
RTK (Real-Time Kinematic) הוא מנגנון המשפר את דיוק מדידות ה־GNSS באמצעות תחנת ייחוס ותיקונים בזמן אמת.
כאשר משלבים RTK עם מערכת INS איכותית, ניתן להגיע לדיוק של סנטימטרים בודדים ואף פחות, תוך שמירה על רציפות הניווט גם במהלך הפרעות זמניות בקליטת הלוויינים.
האם כל מערכת INS משתמשת בכל האלגוריתמים הללו?
לא.
בחירת האלגוריתמים תלויה בדרישות היישום, ברמת הדיוק הנדרשת, במשאבי העיבוד הזמינים ובאיכות החיישנים. מערכת ניווט לרחפן מסחרי, למשל, תהיה שונה מאוד ממערכת ניווט לטיל, לכלי טיס או לרכב אוטונומי.
מושגים חשובים
Accelerometer (מד תאוצה)
חיישן המודד תאוצה לאורך שלושה צירים. במערכת ניווט אינרציאלית הוא מודד את ה־Specific Force, הכוללת גם את השפעת כוח הכבידה, ומשמש להערכת תאוצה, מהירות וכיוון.
Attitude
תנוחת הפלטפורמה במרחב, המתארת את זוויות הסיבוב שלה ביחס למערכת ייחוס. בדרך כלל מיוצגת באמצעות Roll, Pitch ו־Yaw או באמצעות Quaternion.
Bias
שגיאה קבועה או איטית המשתנה לאורך הזמן במדידות החיישן. גם כאשר הפלטפורמה נמצאת במנוחה, Bias עלול לגרום לסטייה מצטברת בחישובי הניווט.
Bias Stability
מדד המתאר עד כמה הטיית החיישן נשארת יציבה לאורך זמן. זהו אחד הפרמטרים החשובים ביותר בקביעת ביצועי מערכת INS בזמן אובדן GNSS.
Coning Compensation
אלגוריתם המפצה על שגיאות הנוצרות כתוצאה מתנועות סיבוביות מורכבות בין דגימות עוקבות של הג'יירוסקופ, במיוחד בקצבי דגימה גבוהים.
Dead Reckoning
שיטת ניווט שבה המיקום מחושב באמצעות אינטגרציה רציפה של מהירות ותאוצה, ללא הסתמכות על מקורות מידע חיצוניים כגון GNSS.
Earth-Centered, Earth-Fixed (ECEF)
מערכת צירים תלת־ממדית שמרכזה במרכז כדור הארץ. משמשת במערכות ניווט לחישוב מיקום ותנועה ביחס לכדור הארץ.
Error-State Kalman Filter (ESKF)
גרסה מתקדמת של מסנן קלמן שבה האלגוריתם מעריך את שגיאת מצב המערכת במקום את המצב עצמו. גישה זו משפרת את היציבות והדיוק במערכות INS מודרניות.
Extended Kalman Filter (EKF)
גרסה של מסנן קלמן המותאמת למערכות לא־ליניאריות, כגון מערכות ניווט אינרציאליות. זהו אחד האלגוריתמים הנפוצים ביותר לשילוב נתוני IMU ו־GNSS.
Gimbal Lock
מצב מתמטי שבו ייצוג באמצעות זוויות אוילר מאבד דרגת חופש אחת, ולכן אינו מתאים לעדכון רציף של תנוחת הפלטפורמה. אחת הסיבות לשימוש ב־Quaternion.
GNSS
שם כולל למערכות ניווט לווייניות כגון GPS, Galileo, GLONASS ו־BeiDou. מספקות מידע על מיקום, מהירות וזמן.
Gyroscope (ג'יירוסקופ)
חיישן המודד מהירות זוויתית סביב שלושה צירים. באמצעות אינטגרציה של המדידות ניתן להעריך את שינויי הכיוון של הפלטפורמה.
Innovation
ההפרש בין התחזית שחישבה מערכת ה־INS לבין המדידה שהתקבלה ממקור חיצוני, כגון GNSS. ערך זה משמש את מסנן קלמן לביצוע תיקון.
Inertial Measurement Unit (IMU)
יחידת מדידה אינרציאלית הכוללת בדרך כלל שלושה ג'יירוסקופים ושלושה מדי תאוצה, ולעיתים גם חיישנים נוספים כגון מגנטומטרים וברומטרים.
Inertial Navigation System (INS)
מערכת ניווט המשתמשת במדידות מה־IMU ובאלגוריתמים מתמטיים כדי לחשב את הכיוון, המהירות והמיקום של הפלטפורמה.
Kalman Filter
אלגוריתם להערכת מצב המשלב בין תחזית מתמטית למדידות חיצוניות, תוך התחשבות באי־הוודאות של כל מקור מידע.
Lever Arm Compensation
פיצוי על המרחק הפיזי בין ה־IMU לבין אנטנת ה־GNSS או חיישנים אחרים, המשפר את דיוק שילוב הנתונים בזמן תנועה וסיבוב.
North-East-Down (NED)
מערכת צירים מקומית שבה הצירים מוגדרים כצפון, מזרח ומטה. נפוצה במיוחד במערכות ניווט אוויריות וימיות.
Quaternion
ייצוג מתמטי של סיבובים במרחב התלת־ממדי. מאפשר לבצע עדכוני תנוחה רציפים ללא בעיות כמו Gimbal Lock ונפוץ כמעט בכל מערכת INS מודרנית.
RTK (Real-Time Kinematic)
טכנולוגיית GNSS המשתמשת בתיקונים בזמן אמת כדי להגיע לדיוק של סנטימטרים בודדים.
Sculling Compensation
אלגוריתם המפצה על שגיאות אינטגרציה של תאוצה הנגרמות כתוצאה מתנועה משולבת של תאוצה וסיבוב בין דגימות עוקבות.
Sensor Fusion
תהליך של שילוב מידע ממספר חיישנים, כגון IMU, GNSS, מצלמות או LiDAR, כדי לקבל פתרון ניווט מדויק ויציב יותר.
Specific Force
התאוצה הנמדדת על ידי מד התאוצה, הכוללת את השפעת כוח הכבידה. לפני חישוב התנועה יש להסיר ממנה את רכיב הכבידה.
Zero Velocity Update (ZUPT)
טכניקה שבה האלגוריתם מנצל רגעים שבהם ידוע שהפלטפורמה אינה נעה כדי לאפס את המהירות המחושבת ולהפחית את השגיאה המצטברת.


