הפניה ל-struct של GnssMeasurement
#include <
gps.h
>
שדות נתונים |
|
size_t | size |
GnssMeasurementFlags | דגלים |
int16_t | svid |
GnssConstellationType | קבוצת כוכבים |
כפול | time_offset_ns |
GnssMeasurementState | state |
int64_t | received_sv_time_in_ns |
int64_t | received_sv_time_uncertainty_in_ns |
כפול | c_n0_dbhz |
כפול | pseudorange_rate_mps |
כפול | pseudorange_rate_uncertainty_mps |
GnssAccumulatedDeltaRangeState | accumulated_delta_range_state |
כפול | accumulated_delta_range_m |
כפול | accumulated_delta_range_uncertainty_m |
float | carrier_frequency_hz |
int64_t | carrier_cycles |
כפול | carrier_phase |
כפול | carrier_phase_uncertainty |
GnssMultipathIndicator | multipath_indicator |
כפול | snr_db |
תיאור מפורט
מייצג מדידה של GNSS, מכיל מידע גולמי ומחושב.
עצמאות – כל המידע על מדידת האות (למשל, sv_time, pseudorange_rate, multipath_indicator) שמדווח במבנה הזה צריך להתבסס על מדידות של אותות GNSS בלבד. אסור ליצור מדידות על ידי חישוב או דיווח על מדידות צפויות על סמך מיקום, מהירות או זמן ידועים או משוערים.
מסמכי תיעוד של שדה
double accumulated_delta_range_m |
טווח הדלתה המצטבר מאז האיפוס האחרון של הערוץ, במטרים. ערך חיובי מציין שה-SV מתרחק מהמקלט.
הסימן של 'טווח הדלתה המצטבר' והקשר שלו לסימן של 'שלב התדר הנושא' נתונים בנוסחה: טווח הדלתה המצטבר = -k * שלב התדר הנושא (כאשר k הוא קבוע)
צריך לאכלס את הערך הזה אם 'accumulated delta range state' != GPS_ADR_STATE_UNKNOWN. עם זאת, הנתונים אמורים להיות מדויקים רק כאשר: 'accumulated delta range state' == GPS_ADR_STATE_VALID.
GnssAccumulatedDeltaRangeState accumulated_delta_range_state |
double accumulated_delta_range_uncertainty_m |
double c_n0_dbhz |
int64_t carrier_cycles |
מספר מחזורי הגלן המלאים בין הלוויין לבין המקלט. תדירות העזר מצוינה בשדה 'carrier_frequency_hz'. אפשר להסיק סימנים לפספוסים ולאיפוסים אפשריים של מחזורים במצטבר של הערך הזה מהדגלים accumulated_delta_range_state.
אם הנתונים זמינים, השדה 'flags' חייב להכיל את הערך GNSS_MEASUREMENT_HAS_CARRIER_CYCLES.
float carrier_frequency_hz |
double carrier_phase |
פאזה של RF שזוהתה על ידי המקלט, בטווח [0.0, 1.0]. בדרך כלל, זהו החלק השברוני של המדידה המלאה של שלב הת carrier.
תדירות העזר מצוינה בשדה 'carrier_frequency_hz'. הערך מכיל את הערך 'carrier-phase uncertainty'.
אם הנתונים זמינים, השדה 'flags' חייב להכיל את הערך GNSS_MEASUREMENT_HAS_CARRIER_PHASE.
double carrier_phase_uncertainty |
GnssConstellationType קבוצת כוכבים |
הדגלים GnssMeasurementFlags |
GnssMultipathIndicator multipath_indicator |
ספירה שמציינת את המצב 'multipath' של האירוע.
האינדיקטור של נתיב מרובים נועד לדווח על נוכחות של אותות חופפים שמופיעים כפסגות קורלציה מעוותות.
- אם יש צורת שיא קורלציה מעוותת, מדווחים שהנתיב המרוב הוא GNSS_MULTIPATH_INDICATOR_PRESENT.
- אם אין צורה מעוותת של שיא מתאם, יש לדווח על GNSS_MULTIPATH_INDICATOR_NOT_PRESENT
- אם האותות חלשים מדי כדי להבחין במידע הזה, יש לדווח על GNSS_MULTIPATH_INDICATOR_UNKNOWN
דוגמה: כשמבצעים את בדיקת הביצועים הסטנדרטית של נתיב מרובים חופפים (3GPP TS 34.171), האינדיקטור של נתיב מרובים צריך לדווח על GNSS_MULTIPATH_INDICATOR_PRESENT עבור האותות שאחריהם מתבצע מעקב, וכוללים נתיב מרובים, ועל GNSS_MULTIPATH_INDICATOR_NOT_PRESENT עבור האותות שאחריהם מתבצע מעקב, ולא כוללים נתיב מרובים.
double pseudorange_rate_mps |
קצב טווח הפסאודו בחותמת הזמן, ב-m/s. התיקון של ערך נתון של שיעור פסאודו-טווח כולל תיקונים לשגיאות בתדר של השעון של המקלט ושל הלוויין. חשוב לוודא שהשדה הזה עצמאי (ראו את ההערה בחלק העליון של המבנה GnssMeasurement ).
חובה לספק את 'קצב פסאודורנג' 'לא מתוקן', וגם את השדה 'סטייה' של GpsClock (כשמספקים את קצב הפסאודורנג הלא מתוקן, לא מחילים את התיקונים שמפורטים למעלה).
הערך כולל את 'pseudorange rate uncertainty'. ערך חיובי של 'לא מתוקן' מציין שה-SV מתרחק מהמקלט.
הסימן של 'שיעור טווח הדמיה לא מתוקן' והקשר שלו לסימן של 'שינוי דופלר' נתונים בנוסחה: שיעור טווח הדמיה = -k * שינוי דופלר (כאשר k הוא קבוע)
זה אמור להיות קצב פסאודו-המרחק המדויק ביותר שזמין, על סמך מדידות אות עדכניות מהערוץ הזה.
חובה לספק את הערך הזה באיכות PRR אופיינית של שלב המוביל (כמה סנטימטרים לשנייה לשנייה של אי-ודאות, או יותר) – כשהאותות חזקים ויציבים מספיק, למשל אותות מסימולטור GPS בעוצמה של 35 dB-Hz ומעלה.
double pseudorange_rate_uncertainty_mps |
int64_t received_sv_time_in_ns |
השעה בשבוע של GNSS שהתקבלה בזמן המדידה, בננו-שניות. חשוב לוודא שהשדה הזה עצמאי (ראו את ההערה בחלק העליון של המבנה GnssMeasurement ).
ב-GPS וב-QZSS, זהו: שעון השבוע של GPS שהתקבל בזמן המדידה, בננו-שניות. הערך הוא יחסי לתחילת השבוע הנוכחי ב-GPS.
בהתאם למצב הסנכרון הגבוה ביותר שאפשר להשיג לכל לוויין, הטווח החוקי לשדה הזה יכול להיות: חיפוש : [ 0 ] : GNSS_MEASUREMENT_STATE_UNKNOWN נעילת קוד C/A : [ 0 1ms ] : GNSS_MEASUREMENT_STATE_CODE_LOCK מוגדר סנכרון ביט : [ 0 20ms ] : GNSS_MEASUREMENT_STATE_BIT_SYNC מוגדר סנכרון של מסגרת משנה : [ 0 6s ] : GNSS_MEASUREMENT_STATE_SUBFRAME_SYNC מוגדר פענוח TOW : [ 0 1week ] : GNSS_MEASUREMENT_STATE_TOW_DECODED מוגדר
הערה חשובה: אם יש אי-בהירות במיליסיקון שלם, צריך להגדיר את GNSS_MEASUREMENT_STATE_MSEC_AMBIGUOUS בהתאם, בשדה 'state'.
צריך לאכלס את הערך הזה אם 'state' != GNSS_MEASUREMENT_STATE_UNKNOWN.
ב-Glonass, זהו: שעה ביום שהתקבלה מ-Glonass, בזמן המדידה, בננו-שניות.
בהתאם למצב הסנכרון הגבוה ביותר שאפשר להשיג לכל לוויין, הטווח החוקי לשדה הזה יכול להיות: חיפוש : [0]: GNSS_MEASUREMENT_STATE_UNKNOWN נעילת קוד C/A : [0 1ms]: GNSS_MEASUREMENT_STATE_CODE_LOCK מוגדר סנכרון סמלים : [0 10ms]: GNSS_MEASUREMENT_STATE_SYMBOL_SYNC מוגדר סנכרון ביט : [0 20ms]: GNSS_MEASUREMENT_STATE_BIT_SYNC מוגדר סנכרון מחרוזת : [0 2s]: GNSS_MEASUREMENT_STATE_GLO_STRING_SYNC מוגדר שעה ביום : [0 1day]: GNSS_MEASUREMENT_STATE_GLO_TOD_DECODED מוגדר
ב-Beidou, זהו: זמן השבוע שהתקבל מ-Beidou, בזמן המדידה בננו-שניות.
בהתאם למצב הסנכרון הגבוה ביותר שאפשר להשיג לכל לוויין, הטווח החוקי לשדה הזה יכול להיות: חיפוש : [ 0 ] : GNSS_MEASUREMENT_STATE_UNKNOWN נעול לקוד C/A: [ 0 1ms ] : GNSS_MEASUREMENT_STATE_CODE_LOCK מוגדר סנכרון ביט (D2): [ 0 2ms ] : GNSS_MEASUREMENT_STATE_BDS_D2_BIT_SYNC מוגדר סנכרון ביט (D1): [ 0 20ms ] : GNSS_MEASUREMENT_STATE_BIT_SYNC מוגדר תת-פריים (D2): [ 0 0.6s ] : GNSS_MEASUREMENT_STATE_BDS_D2_SUBFRAME_SYNC מוגדר תת-פריים (D1): [ 0 6s ] : GNSS_MEASUREMENT_STATE_SUBFRAME_SYNC מוגדר שעה בשבוע : [ 0 1week ] : GNSS_MEASUREMENT_STATE_TOW_DECODED מוגדר
ב-Galileo, זהו: זמן השבוע שהתקבל מ-Galileo, בזמן המדידה בננו-שניות.
נעילת קוד E1BC: [ 0 4ms ] : GNSS_MEASUREMENT_STATE_GAL_E1BC_CODE_LOCK is set נעילת קוד E1C שנייה: [ 0 100ms ] : GNSS_MEASUREMENT_STATE_GAL_E1C_2ND_CODE_LOCK is set
דף E1B: [0 2s]: GNSS_MEASUREMENT_STATE_GAL_E1B_PAGE_SYNC מוגדר. שעה בשבוע: [0 1week]: GNSS_MEASUREMENT_STATE_TOW_DECODED מוגדר.
ב-SBAS, זהו: זמן ה-SBAS שהתקבל, בזמן המדידה, בננו-שניות.
בהתאם למצב הסנכרון הגבוה ביותר שאפשר להשיג לכל לוויין, הטווח החוקי לשדה הזה יכול להיות: חיפוש : [ 0 ] : GNSS_MEASUREMENT_STATE_UNKNOWN נעילת קוד C/A: [ 0 1ms ] : GNSS_MEASUREMENT_STATE_CODE_LOCK מוגדר סנכרון סמלים : [ 0 2ms ] : GNSS_MEASUREMENT_STATE_SYMBOL_SYNC מוגדר הודעה : [ 0 1s ] : GNSS_MEASUREMENT_STATE_SBAS_SYNC מוגדר
int64_t received_sv_time_uncertainty_in_ns |
double snr_db |
המצב של GnssMeasurementState |
int16_t svid |
מספר מזהה הרכב בלוויין, כפי שמוגדר ב- GnssSvInfo::svid זהו ערך חובה.
double time_offset_ns |
הבדלי הזמן שבהם בוצעה המדידה, בננו-שניות. השעון של מקלט העזר מצוין על ידי GpsData::clock::time_ns, וצריך לפרש אותו באותו אופן שמציין GpsClock::type .
הסימן של time_offset_ns נקבע לפי המשוואה הבאה: זמן המדידה = GpsClock::time_ns + time_offset_ns
הוא מספק חותמת זמן ספציפית למדידה ומאפשר דיוק של פחות מננו-שנייה. זהו ערך חובה.
התיעוד של המבנה הזה נוצר מהקובץ הבא:
- hardware/libhardware/include/hardware/ gps.h