leo-navmsg (вид сценарію)
Вид сценарію рушія v0.40.0, родина Навігація на низькій навколоземній орбіті. Лише консультативно: результат аналізу від дослідницького та інженерного інструмента; це не навігаційне обладнання із затвердженням типу і не послуга забезпечення безпеки життя. Кожна позначка тут — від рушія або матриці верифікації; вид має рівень MODELLED, якщо матриця не каже іншого (як здобувається позначка: розділ «Докази» в README).
Що він робить#
Навігаційне повідомлення LEO: ефемериди та годинник, що транслюються супутником позиціонування, навігації та часу на низькій навколоземній орбіті (LEO), для будь-якої орбіти, несівної та моделі, з необов'язковими іменованими пресетами (Xona Pulsar, Iridium, Starlink, CentiSpace, репрезентативна система C-діапазону, модель нульового годинника ATOMIC, Celeste IOD). ВМІСТ: допоміжні дані (SVID, випуск даних, діапазон, стан сигналу), синхронізація (тиждень, час тижня, поліном годинника другого порядку af0-af2 відносно toc), ефемериди в одній із чотирьох моделей -- 16-параметричний кеплерів набір із Galileo OS SIS ICD; цей набір плюс поліноми поправок уздовж треку, поперек треку та радіальні; 22-параметрична модель Liu et al. 2025; ECEF-поліном без членів годинника (нульовий годинник ATOMIC) -- та інші служби (транслюваний набір Klobuchar, NeQuick-G ai0-ai2 з ефективним рівнем іонізації та параметри переходу від системного часу до UTC з логікою високосної секунди з ICD). ПІДГОНКА: істинна орбіта, проінтегрована із зональною гравітацією J2-J6 або EGM2008 до обраного ступеня та з опором, і заданий зерном (seed) вільний або керований годинник; підгонка кеплерового набору за методом Левенберга–Марквардта на неособливих елементах, потім лінійні поліноми поправок за найменшими квадратами; годинник підганяється за вирахуванням релятивістського члена, який додає користувач. АНАЛІЗИ: fit-interval-trade (похибка дальності в сигналі в просторі, SISRE, з глобально усередненими вагами для висоти орбіти, залежно від інтервалу підгонки та періоду оновлення, лише орбіта і з годинником), model-comparison (чотири моделі, кількість параметрів, закодовані біти та підгонка Kshana на висотах Liu et al. поряд з опублікованими значеннями), midpass-update (найвищий прохід над користувачем, стрибок положення, годинника та дальності користувача при кожному перемиканні повідомлення, стрибок за найгіршої геометрії, PASS/FAIL відносно порога безперервності), encode-decode (власний задокументований двійковий кадр Kshana з CRC-24Q, бюджет квантування за півкроку на поле, перевірка пошкодженого кадру, експорт та імпорт запису в стилі RINEX-4 з позначкою розширення Kshana і таблиця CSV). VALIDATED: ваги SISRE за опублікованою таблицею MEO/GEO (Montenbruck et al. 2018); користувацький алгоритм Galileo за RTKLIB на реальних транслюваних ефемеридах Galileo; CRC-24Q за контрольним значенням каталогу та прикладом кадру RTCM 1005. MODELLED: кожне значення підгонки та SISRE є похибкою подання відносно істини, проінтегрованої Kshana (без похибки визначення чи прогнозу орбіти); порівняння з Liu et al. використовує інші орбіти; формати кодування та тексту — власні формати Kshana.
Один прогін scenarios/leo-navmsg-celeste-iod.toml підсумовується так: LEO navigation message — 510 km, 97,4 deg, gravity degree 20, model kepler-rac SISRE weights: w_R 0,459, w_AC^2 1/2.53 (mask 0 deg) encode-decode: kepler-rac model, frame 152 bytes (1156 payload bits, 891 ephemeris+clock bits), CRC-24Q 0x58ADF2 quantisation: largest position change 0,52 mm, clock 0,09 mm; SISRE exact 0,0013 m, quantised 0,0013 m corrupted frame rejected: true; RINEX round trip 4.43e-6 m; CSV round trip 0.00e0 m fit-interval trade over 1800 s (usage period = fit interval): kepler16 60 s SISRE orbit RMS 0,0003 m max 0,0015 m with clock RMS 0,0006 m kepler16 120 s SISRE orbit RMS 0,0003 m max 0,0015 m with clock RMS 0,0007 m kepler16 300 s SISRE orbit RMS 0,0036 m max 0,0141 m with clock RMS 0,0037 m kepler16 600 s SISRE orbit RMS 0,0293 m max 0,1023 m with clock RMS 0,0293 m kepler16 900 s SISRE orbit RMS 0,1073 m max 0,3812 m with clock RMS 0,1075 m kepler-rac 60 s SISRE orbit RMS 0,0000 m max 0,0000 m with clock RMS 0,0005 m kepler-rac 120 s SISRE orbit RMS 0,0001 m max 0,0002 m with clock RMS 0,0007 m kepler-rac 300 s SISRE orbit RMS 0,0005 m max 0,0021 m with clock RMS 0,0012 m kepler-rac 600 s SISRE orbit RMS 0,0097 m max 0,0395 m with clock RMS 0,0096 m kepler-rac 900 s SISRE orbit RMS 0,0388 m max 0,1143 m with clock RMS 0,0390 m 16-параметричний кеплерів набір погіршується від 0,0003 м за 60 с до 0,1073 м за 900 с: один кеплерів набір із гармоніками двічі на оберт не може довше за кілька хвилин стежити за високочастотними гравітаційними членами та опором дуги LEO, а його залишок за найменшими квадратами коливається по вікну. Поліноми вздовж/поперек/радіально вищого ступеня, ніж охоплює кеплерів набір, поглинають те, що лишилося, даючи 0,0388 м за 900 с.
Входи#
Зі схеми (kshana kinds --json):
- Обов'язкові поля: немає
- Необов'язкові поля:
name,description,seed,analysis,preset,orbit,clock,message,trade,comparison,midpass
Приклад scenarios/leo-navmsg-celeste-iod.toml задає, зокрема:
| Поле | Значення | Одиниця |
|---|---|---|
analysis |
[encode-decode, fit-interval-trade] | не вказано |
kind |
leo-navmsg | text |
message.csv_schema |
celeste-iod | text |
name |
Повідомлення Celeste IOD (пресет для воркшопу) | text |
preset |
celeste-iod | text |
seed |
15 | не вказано |
trade.fit_intervals_s |
[60, 120, 300, 600, 900] | s |
trade.models |
[kepler16, kepler-rac] | не вказано |
trade.span_s |
1800 | s |
trade.update_fit_interval_s |
300 | s |
trade.update_periods_s |
[60, 150, 300] | s |
Запуск#
kshana scenarios/leo-navmsg-celeste-iod.toml
Цей тип використовують 5 вбудованих сценаріїв; решта — у scenarios/.
Що це дає#
Скалярні результати цього прогону з одиницями, які вказує рушій:
| Результат | Значення | Одиниця |
|---|---|---|
encode_decode.corrupted_frame_rejected |
true | flag |
encode_decode.crc24q |
0x58ADF2 | text |
encode_decode.crc24q_check_value_123456789 |
0xCDE703 | text |
encode_decode.csv_round_trip_max_pos_m |
0 | m |
encode_decode.csv_schema |
celeste-iod | text |
encode_decode.ephemeris_clock_bits |
891 | bit |
encode_decode.frame_bytes |
152 | byte |
encode_decode.model |
kepler-rac | text |
encode_decode.payload_bits |
1156 | bit |
encode_decode.quantised_max_clock_m |
9.4929e-5 | m |
Позначка результату (від рушія): MIXED — будівельні блоки рівня VALIDATED, результати рівня MODELLED. Ваги SISRE відтворюють опубліковану таблицю MEO/GEO (Montenbruck et al. 2018), користувацький алгоритм Galileo ICD відтворює RTKLIB на реальних транслюваних ефемеридах Galileo, а CRC-24Q відтворює своє контрольне значення каталогу та приклад кадру RTCM 1005
Докази#
MODELLED 5 · VALIDATED 6: рядки матриці верифікації, що згадують цей вид.
- VALIDATED leo_navmsg::sisre::sisre_weights: радіальна вага w_R та квадрат поперечної ваги w_AC^2 як середні від cos^2 і половини sin^2 надирного кута променя візування за користувачами, рівномірно розподіленими на видимій кулевій шапці Землі вище за висоту
- VALIDATED leo_navmsg::elements::kepler_point: обчислення кеплерового набору за Galileo OS SIS ICD (рівняння Кеплера, поправки другої гармоніки, жорстко зв'язаний із Землею вузол), записане окремо від RINEX-обчислювача рушія, що повертає положення з аргументом Тести: leo_navmsg_reference.rs.
- VALIDATED leo_navmsg::codec::crc24q: твірний поліном 0x1864CFB, початкове значення 0, без віддзеркалення, без кінцевого XOR, перевірка, яку кадр LEO від Kshana несе над кожним попереднім байтом
- VALIDATED Підганяч і компроміс виду
leo-navmsg: істинна орбіта, проінтегрована із зональною гравітацією J2-J6 або EGM2008 до обраного ступеня та з опором, і заданий зерном (seed) вільний або керований годинник; підгонка кеплерового набору Galileo методом Левенберга–Марквардта на неособливих - і ще 7 у матриці.
Рядки, які задіяв сам прогін, з оракулом, що його дає матриця кожному (публічні джерела названі там):
- MODELLED Детерміновані, хешовані за сценарієм, SBOM + міжплатформні еталонні шлюзи. Оракул (ExternalDataset): відповідність SBOM офіційній схемі JSON CycloneDX 1,5 (+ дійсні ідентифікатори SPDX) — зовнішній опублікований стандарт, нуль помилок валідації на всьому графі залежностей; частина щодо детермінованості FoM / побайтової відтворюваності залишається закріпленою перевіркою самоузгодженості, тому рядок залишається MODELLED
- VALIDATED leo_navmsg::sisre::sisre_weights: радіальна вага w_R та квадрат поперечної ваги w_AC^2 як середні від cos^2 і половини sin^2 надирного кута променя візування. Оракул (ExternalDataset): Опублікована таблиця вагових коефіцієнтів SISRE Монтенбрука, Штайгенбергера та Гаушильда (2018), Multi-GNSS signal-in-space range error assessment - Methodology and results, Advances in Space Research 61(12):3020-3038, doi 10.1016/j.asr.2018.03.041: GPS 0,98 та 1/49, GLONASS 0,98 та 1/45, Galileo 0,98 та 1/61, BeiDou MEO 0,98 та 1/54, BeiDou IGSO/GEO 0,99 та 1/126. Те саме усереднення, обчислене на радіусах LEO, дає
- VALIDATED leo_navmsg::elements::kepler_point: обчислення кеплерового набору за Galileo OS SIS ICD (рівняння Кеплера, поправки другої гармоніки, жорстко зв'язаний із Землею вузол), записане окремо. Оракул (ExternalDataset): положення ECEF за RTKLIB 2.4.2-p13 eph2pos (незалежна реалізація того самого алгоритму з ICD) для реальних трансльованих записів BKG/IGS від 2024-09-10, обидва зафіксовано з походженням у tests/fixtures/rinex_sp3_interop (NOTICE, rinex_ecef_reference.txt, brdc_multignss_slice.rnx). Це перевіряє користувацький кеплерів алгоритм; поправки вздовж/поперек/радіально, додані зверху, охоплюються власними рядками, а члени Liu b
- VALIDATED leo_navmsg::codec::crc24q: твірний поліном 0x1864CFB, початкове значення 0, без віддзеркалення, без кінцевого XOR, перевірка, яку кадр LEO від Kshana несе над кожним поперед. Оракул (ExternalDataset): Контрольне значення каталогу CRC для цих параметрів (каталог CRC reveng.sourceforge.io, CRC-24/LTE-A: ширина 24, poly 0x864CFB, init 0, check 0xCDE703), що є параметрами CRC-24Q для RTCM 10403 та Galileo OS SIS ICD, і приклад кадру типу повідомлення 1005, наведений у RTCM 10403
- VALIDATED Підганяч і компроміс виду
leo-navmsg: істинна орбіта, проінтегрована із зональною гравітацією J2-J6 або EGM2008 до обраного ступеня та з опором, і заданий зерном (seed) вільний або керов. Оракул (ExternalDataset): Реальні прецизійні наукові орбіти як істина (операційні редуковано-динамічні орбіти TU Graz IfG/ITSG, вільні для будь-якого використання із зазначенням авторства; значення SHA-256 у NOTICE фікстура), підігнані 16-параметричним набором на дугах по 20 і 30 хв, порівняно зі статистикою, яку Liu et al. 2025 (Remote Sensing 17(16):2894, CC BY 4,0) публікують для тих самих супутників і днів: вздовж, поперек та радіально RMS у межах 1.5x (виміряно 0,804 до 1,087), SISR
Обмеження#
Що, за власним звітом прогону, не обчислено за моделлю або не перевірено за зовнішнім еталоном:
- SISRE — це похибка подання повідомлення відносно істини, до якої його підігнано; похибки визначення та прогнозування орбіти не моделюються. (результат
limitations[0]) - Істинна орбіта — це числове інтегрування Kshana (зональна гравітація або EGM2008, статичний експоненційний опір), а не прецизійна орбіта реального супутника; без третього тіла, тиску сонячного випромінювання чи припливів. (результат
limitations[1]) - Двійковий формат — це власне задокументоване кодування Kshana за зразком опублікованих компонентів повідомлень; це не бітове розташування Celeste чи будь-якої іншої системи (жодне не є відкритим). (результат
limitations[2]) - Блок у стилі RINEX — це задокументоване розширення Kshana; RINEX 4,02 не визначає навігаційних записів LEO. (результат
limitations[3]) - Коефіцієнти NeQuick-G передаються, а ефективний рівень іонізації обчислюється, але інтегрування електронної густини NeQuick, яке перетворює його на затримку, не реалізовано; затримка Klobuchar реалізована і масштабується до несівної як 1/f^2 без поправки на супутник, що летить усередині іоносфери. (результат
limitations[4]) - 22-параметричні члени Liu et al. 2025 відповідають користувацькому алгоритму статті (Eq. 1-7) та стратегії підгонки (розділ 2,3); її значення SISRE залежно від висоти використовували реальні прецизійні орбіти, тому це порівняння на орбіті, проінтегрованій Kshana, має рівень MODELLED, а не VALIDATED (порівняння на реальній орбіті — tests/leo_navmsg_fit_real_orbit_oracle.rs). (результат
limitations[5]) - MIXED — будівельні блоки рівня VALIDATED, результати рівня MODELLED. Ваги SISRE відтворюють опубліковану таблицю MEO/GEO (Montenbruck et al. 2018), користувацький алгоритм Galileo ICD відтворює RTKLIB на реальних транслюваних ефемеридах Galileo, а CRC-24Q відтворює своє контрольне значення каталогу та приклад кадру RTCM 1005. Кожне значення підгонки, SISRE, безперервності та квантування має рівень MODELLED: похибка подання повідомлення відносно (результат
label) - MODELLED: кожне значення підгонки та SISRE є похибкою подання відносно істини, проінтегрованої Kshana (без похибки визначення чи прогнозу орбіти); Liu et al. (каталог видів (
kshana kinds --json))
Див. також#
- Сторінка родини: Навігація на низькій навколоземній орбіті
- Усі різновиди: KINDS.md
- Тематична сторінка: LEO-PNT.md
- Тематична сторінка: LEO-NAVMSG.md