From f26d7d74efde214b374e31344ecba1a26bd589bb Mon Sep 17 00:00:00 2001 From: LittleSam129 <1qwe432@gmail.com> Date: Wed, 5 Aug 2026 14:14:24 +0300 Subject: [PATCH] Lab041: add session and restart safety --- PROJECT_LOG.md | 24 + .../lab041/lab041_authorization_time.png | Bin 0 -> 64134 bytes .../lab041/lab041_emergency_intent.png | Bin 0 -> 56272 bytes data/processed/lab041/lab041_load_metrics.csv | 181 ++ .../lab041/lab041_old_packet_rejection.png | Bin 0 -> 58213 bytes .../lab041/lab041_protection_load.png | Bin 0 -> 69789 bytes .../lab041/lab041_rejection_metrics.csv | 181 ++ data/processed/lab041/lab041_report.txt | 335 ++++ .../lab041/lab041_restart_distance.png | Bin 0 -> 60448 bytes .../lab041/lab041_restart_metrics.csv | 181 ++ .../lab041/lab041_safety_violations.png | Bin 0 -> 84245 bytes .../lab041/lab041_session_metrics.csv | 181 ++ data/processed/lab041/lab041_session_time.png | Bin 0 -> 61489 bytes data/processed/lab041/lab041_summary.csv | 181 ++ .../lab041/lab041_traffic_impact.png | Bin 0 -> 112440 bytes protocol/control_messages.py | 434 +++++ protocol/session_state.py | 422 +++++ tests/lab041_session_restart_safety.py | 1534 +++++++++++++++++ 18 files changed, 3654 insertions(+) create mode 100644 data/processed/lab041/lab041_authorization_time.png create mode 100644 data/processed/lab041/lab041_emergency_intent.png create mode 100644 data/processed/lab041/lab041_load_metrics.csv create mode 100644 data/processed/lab041/lab041_old_packet_rejection.png create mode 100644 data/processed/lab041/lab041_protection_load.png create mode 100644 data/processed/lab041/lab041_rejection_metrics.csv create mode 100644 data/processed/lab041/lab041_report.txt create mode 100644 data/processed/lab041/lab041_restart_distance.png create mode 100644 data/processed/lab041/lab041_restart_metrics.csv create mode 100644 data/processed/lab041/lab041_safety_violations.png create mode 100644 data/processed/lab041/lab041_session_metrics.csv create mode 100644 data/processed/lab041/lab041_session_time.png create mode 100644 data/processed/lab041/lab041_summary.csv create mode 100644 data/processed/lab041/lab041_traffic_impact.png create mode 100644 protocol/control_messages.py create mode 100644 protocol/session_state.py create mode 100644 tests/lab041_session_restart_safety.py diff --git a/PROJECT_LOG.md b/PROJECT_LOG.md index dede328..1f89497 100644 --- a/PROJECT_LOG.md +++ b/PROJECT_LOG.md @@ -361,3 +361,27 @@ git version 2.51.1.windows.1 - Подтверждение сброса не восстанавливает старую команду движения. - Движение требует новой явной команды оператора. - Следующий этап посвящён сеансам связи, перезапускам устройств и защите от пакетов предыдущего сеанса. + +--- + +# Запись 016 + +## Дата + +5 августа 2026 года + +## Тема + +Завершение Lab041: сеансы связи, безопасный запуск и защита от пакетов предыдущего сеанса. + +## Выполнено + +- Lab041 вводит идентификаторы сеанса станции, запуска ровера и периода управления. +- Одного номера сообщения недостаточно после перезапуска. +- В основном режиме все 2807 введённых старых пакетов были отклонены. +- Ошибочно принятых старых пакетов не было. +- Исходный режим без идентификаторов принял все старые пакеты. +- После перезапуска движение запрещено до нового согласования, подтверждения разрешения и новой команды оператора. +- Аварийное намерение наземной станции сохраняется после перезапуска. +- Неоднозначная разность номеров 2^31 отклоняется. +- Следующий этап посвящён криптографической проверке подлинности управляющих сообщений и защите от намеренной подделки. diff --git a/data/processed/lab041/lab041_authorization_time.png b/data/processed/lab041/lab041_authorization_time.png new file mode 100644 index 0000000000000000000000000000000000000000..8bef6e59f4e21b169acdaec62e92fb8510336ccf GIT binary patch literal 64134 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 2^31 означает старый номер; delta = 2^31 неоднозначно и всегда отклоняется. +- Правило применяется только при совпадении ground_session_id, rover_boot_id, control_epoch и stream_id. + +Ограничение модели +- Исследуются задержки, дубликаты, перестановка, старые пакеты и потеря оперативного состояния при перезапуске. +- Намеренная подделка не моделируется. Идентификаторы сеанса не доказывают отправителя, поэтому эта защита не заменяет криптографическую аутентификацию. + +Матрица 180 сочетаний +архитектура | канал | сценарий | повторы | безопасный сеанс, % | разрешение, % | нарушения, % | старые пакеты приняты, % | потеря намерения, % | управление, кбит/с | эпизодическая служебная, кбит/с | полный поток, кбит/с +Без идентификаторов сеанса | Без потерь | Обычный запуск обеих сторон | 1 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Перезапуск наземной станции при движении | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Перезапуск ровера при движении | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Одновременный перезапуск | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Перезапуск наземной станции при аварийном намерении | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 100.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Перезапуск ровера в аварийной фиксации | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Длительный перерыв связи | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Старая команда прежнего сеанса станции | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Старая команда прежнего запуска ровера | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Старый период управления | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Номер сообщения с нуля в новом сеансе | 1 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Переполнение 32-битного номера | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Дубликат приветствия сеанса | 1 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Потеря состояния сеанса | 1 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Потеря подтверждения разрешения | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Потеря подтверждения аварии | 1 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10560 | 262.05847 +Без идентификаторов сеанса | Без потерь | Потеря подтверждения сброса | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.12400 | 262.07687 +Без идентификаторов сеанса | Без потерь | Старый запрос сброса | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Поздняя положительная команда после аварии | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | Без потерь | Перезапуск после сброса до подтверждения | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Обычный запуск обеих сторон | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Перезапуск наземной станции при движении | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Перезапуск ровера при движении | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Одновременный перезапуск | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Перезапуск наземной станции при аварийном намерении | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 100.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Перезапуск ровера в аварийной фиксации | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Длительный перерыв связи | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Старая команда прежнего сеанса станции | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Старая команда прежнего запуска ровера | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Старый период управления | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Номер сообщения с нуля в новом сеансе | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Переполнение 32-битного номера | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Дубликат приветствия сеанса | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Потеря состояния сеанса | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Потеря подтверждения разрешения | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Потеря подтверждения аварии | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11009 | 262.06295 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Потеря подтверждения сброса | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.12732 | 262.08018 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Старый запрос сброса | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Поздняя положительная команда после аварии | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Перезапуск после сброса до подтверждения | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Обычный запуск обеих сторон | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Перезапуск наземной станции при движении | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Перезапуск ровера при движении | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Одновременный перезапуск | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Перезапуск наземной станции при аварийном намерении | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 100.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Перезапуск ровера в аварийной фиксации | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Длительный перерыв связи | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Старая команда прежнего сеанса станции | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Старая команда прежнего запуска ровера | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Старый период управления | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Номер сообщения с нуля в новом сеансе | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Переполнение 32-битного номера | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Дубликат приветствия сеанса | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Потеря состояния сеанса | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Потеря подтверждения разрешения | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Потеря подтверждения аварии | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16817 | 262.12103 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Потеря подтверждения сброса | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.13727 | 262.09014 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Старый запрос сброса | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Поздняя положительная команда после аварии | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Перезапуск после сброса до подтверждения | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287 +Идентификаторы и безопасный запуск | Без потерь | Обычный запуск обеих сторон | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | Без потерь | Перезапуск наземной станции при движении | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | Без потерь | Перезапуск ровера при движении | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | Без потерь | Одновременный перезапуск | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | Без потерь | Перезапуск наземной станции при аварийном намерении | 1 | 100.000 | 0.000 | 0.000 | 0.000 | 100.000 | 10.88000 | 0.05400 | 262.00687 +Идентификаторы и безопасный запуск | Без потерь | Перезапуск ровера в аварийной фиксации | 1 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687 +Идентификаторы и безопасный запуск | Без потерь | Длительный перерыв связи | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | Без потерь | Старая команда прежнего сеанса станции | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | Без потерь | Старая команда прежнего запуска ровера | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | Без потерь | Старый период управления | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | Без потерь | Номер сообщения с нуля в новом сеансе | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | Без потерь | Переполнение 32-битного номера | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | Без потерь | Дубликат приветствия сеанса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407 +Идентификаторы и безопасный запуск | Без потерь | Потеря состояния сеанса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407 +Идентификаторы и безопасный запуск | Без потерь | Потеря подтверждения разрешения | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16040 | 262.11327 +Идентификаторы и безопасный запуск | Без потерь | Потеря подтверждения аварии | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.21280 | 262.16567 +Идентификаторы и безопасный запуск | Без потерь | Потеря подтверждения сброса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.23120 | 262.18407 +Идентификаторы и безопасный запуск | Без потерь | Старый запрос сброса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | Без потерь | Поздняя положительная команда после аварии | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | Без потерь | Перезапуск после сброса до подтверждения | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Обычный запуск обеих сторон | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Перезапуск наземной станции при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Перезапуск ровера при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10852 | 262.06139 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Одновременный перезапуск | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11010 | 262.06297 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Перезапуск наземной станции при аварийном намерении | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 100.000 | 10.88000 | 0.05400 | 262.00687 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Перезапуск ровера в аварийной фиксации | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Длительный перерыв связи | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11348 | 262.06634 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Старая команда прежнего сеанса станции | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10799 | 262.06086 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Старая команда прежнего запуска ровера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10773 | 262.06059 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Старый период управления | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Номер сообщения с нуля в новом сеансе | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10997 | 262.06284 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Переполнение 32-битного номера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Дубликат приветствия сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Потеря состояния сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16226 | 262.11512 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Потеря подтверждения разрешения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16040 | 262.11327 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Потеря подтверждения аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.21848 | 262.17134 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Потеря подтверждения сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.23547 | 262.18833 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Старый запрос сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10799 | 262.06086 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Поздняя положительная команда после аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10984 | 262.06271 +Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Перезапуск после сброса до подтверждения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10733 | 262.06020 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Обычный запуск обеих сторон | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Перезапуск наземной станции при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Перезапуск ровера при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Одновременный перезапуск | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11354 | 262.06640 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Перезапуск наземной станции при аварийном намерении | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 100.000 | 10.88000 | 0.05400 | 262.00687 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Перезапуск ровера в аварийной фиксации | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Длительный перерыв связи | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.12937 | 262.08224 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Старая команда прежнего сеанса станции | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Старая команда прежнего запуска ровера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Старый период управления | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Номер сообщения с нуля в новом сеансе | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10865 | 262.06152 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Переполнение 32-битного номера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Дубликат приветствия сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Потеря состояния сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Потеря подтверждения разрешения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16040 | 262.11327 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Потеря подтверждения аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.23379 | 262.18665 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Потеря подтверждения сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.24705 | 262.19992 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Старый запрос сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Поздняя положительная команда после аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Перезапуск после сброса до подтверждения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Обычный запуск обеих сторон | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Перезапуск наземной станции при движении | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Перезапуск ровера при движении | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Одновременный перезапуск | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Перезапуск наземной станции при аварийном намерении | 1 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Перезапуск ровера в аварийной фиксации | 1 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Длительный перерыв связи | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Старая команда прежнего сеанса станции | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Старая команда прежнего запуска ровера | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Старый период управления | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Номер сообщения с нуля в новом сеансе | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Переполнение 32-битного номера | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Дубликат приветствия сеанса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Потеря состояния сеанса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Потеря подтверждения разрешения | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16040 | 262.11327 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Потеря подтверждения аварии | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.21280 | 262.16567 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Потеря подтверждения сброса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.23120 | 262.18407 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Старый запрос сброса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Поздняя положительная команда после аварии | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Перезапуск после сброса до подтверждения | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Обычный запуск обеих сторон | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10733 | 262.06020 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Перезапуск наземной станции при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10826 | 262.06112 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Перезапуск ровера при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10892 | 262.06178 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Одновременный перезапуск | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10773 | 262.06059 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Перезапуск наземной станции при аварийном намерении | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Перезапуск ровера в аварийной фиксации | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Длительный перерыв связи | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11199 | 262.06486 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Старая команда прежнего сеанса станции | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10760 | 262.06046 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Старая команда прежнего запуска ровера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10786 | 262.06073 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Старый период управления | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10812 | 262.06099 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Номер сообщения с нуля в новом сеансе | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11090 | 262.06377 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Переполнение 32-битного номера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10852 | 262.06139 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Дубликат приветствия сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Потеря состояния сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16147 | 262.11433 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Потеря подтверждения разрешения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16594 | 262.11881 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Потеря подтверждения аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.21927 | 262.17213 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Потеря подтверждения сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.23663 | 262.18949 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Старый запрос сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10865 | 262.06152 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Поздняя положительная команда после аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10878 | 262.06165 +Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Перезапуск после сброса до подтверждения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10746 | 262.06033 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Обычный запуск обеих сторон | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Перезапуск наземной станции при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11063 | 262.06350 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Перезапуск ровера при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11169 | 262.06455 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Одновременный перезапуск | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10931 | 262.06218 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Перезапуск наземной станции при аварийном намерении | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Перезапуск ровера в аварийной фиксации | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Длительный перерыв связи | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11698 | 262.06985 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Старая команда прежнего сеанса станции | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Старая команда прежнего запуска ровера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Старый период управления | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11261 | 262.06548 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Номер сообщения с нуля в новом сеансе | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10841 | 262.06127 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Переполнение 32-битного номера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11076 | 262.06363 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Дубликат приветствия сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Потеря состояния сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Потеря подтверждения разрешения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16040 | 262.11327 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Потеря подтверждения аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.21966 | 262.17253 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Потеря подтверждения сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.25147 | 262.20433 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Старый запрос сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Поздняя положительная команда после аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 +Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Перезапуск после сброса до подтверждения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007 + +Перезапуски и безопасное состояние +- В основном режиме движение до синхронизации: 0; до подтверждения разрешения: 0; без новой команды оператора: 0. +- Максимальный путь после перезапуска в основном режиме: 9.7737 м; это путь безопасного торможения, а не продолжение старой команды. +- Продолжение движения после перезапуска: 0; запуск по старой команде: 0. + +Пакеты предыдущего сеанса +- Основной режим: введено 2807, отклонено 2807, ошибочно принято 0. +- Отрицательный уровень без идентификаторов: ошибочно принято 2807 старых пакетов. +- Причины отказа основного режима: сеанс станции=401, запуск ровера=401, период управления=401, номер сообщения=802, событие аварии=401, запрос сброса=401. +- Неоднозначных delta=2^31 отклонено: 401. + +Аварийное намерение и сброс +- Сохранение emergency_intent на станции сохраняет намерение оператора; ROVER_BOOT_SAFE независимо защищает физическое движение ровера после его перезапуска. Это разные задачи. +- В основном режиме потерь аварийного намерения: 0; восстановлений намерения: 401. +- Ошибочно принятых старых запросов сброса: 0; движений до RESET_ACK: 0; автоматических восстановлений движения: 0. +- Потеря EMERGENCY_ACK не снимает аварийное намерение; потеря RESET_ACK вызывает повтор того же идемпотентного запроса. + +Инварианты безопасности основного режима +- Движение до синхронизации: 0. +- Движение до подтверждения разрешения: 0. +- Движение без новой команды оператора: 0. +- Принятие команды старого сеанса станции: 0. +- Принятие команды старого запуска ровера: 0. +- Использование старого периода управления: 0. +- Снятие аварийной фиксации обычной командой: 0. +- Потеря аварийного намерения после перезапуска станции: 0. +- Движение до подтверждения сброса: 0. +- Автоматическое восстановление старой команды после сброса: 0. +- Принятие старого запроса сброса: 0. +- Принятие неоднозначного номера: 0. +- Отрицательная скорость: 0. +- Превышение разрешённой скорости: 0. + +Учёт нагрузки +- Постоянное управление: 10.88000 кбит/с во всех сочетаниях. +- Исходные сообщения согласования: в среднем 0.05400 кбит/с; разрешение движения: 0.04788 кбит/с. +- Аварийные сообщения и сброс: в среднем 0.00574 кбит/с; повторы и повторные подтверждения: 0.01536 кбит/с. +- Эпизодическая служебная нагрузка основного режима: средняя 0.12298 кбит/с, максимум 0.25147 кбит/с. Именно к этой величине относились прежние значения 0,12298–0,25147 кбит/с. +- Постоянные исходные потоки: видео 243.39287, телеметрия 7.68000, управление 10.88000 кбит/с. +- Полный предложенный поток основного режима: средний 262.07584 кбит/с, максимум 262.20433 кбит/с. +- Доставка управления не ниже 97.836%, телеметрии не ниже 97.918%, публикация видео не ниже 86.054%. +- Максимальная очередь: 46 пакетов. + +Функциональные проверки +- ПРОЙДЕНО — 01. Сериализация всех сообщений: все десять типов имеют однозначное двоичное представление +- ПРОЙДЕНО — 02. Отклонение неверной версии: неверная версия отклонена +- ПРОЙДЕНО — 03. Отклонение неизвестного типа: неизвестный тип отклонён +- ПРОЙДЕНО — 04. Допустимые диапазоны управления: диапазоны и сочетания полей управления проверены +- ПРОЙДЕНО — 05. Номер ноль в новом сеансе: новый сеанс принимает начальный номер ноль +- ПРОЙДЕНО — 06. Старый сеанс станции: старый сеанс наземной станции отклонён +- ПРОЙДЕНО — 07. Старый запуск ровера: старый идентификатор запуска ровера отклонён +- ПРОЙДЕНО — 08. Старый период управления: старый период управления отклонён +- ПРОЙДЕНО — 09. Переполнение номера сообщения: переход от 0xFFFFFFFF к нулю принят как новый +- ПРОЙДЕНО — 10. Неоднозначная половина диапазона: неоднозначная половина диапазона отклонена +- ПРОЙДЕНО — 11. Безопасное состояние после запуска: после запуска движение запрещено с обеих сторон +- ПРОЙДЕНО — 12. Состояние сеанса не запускает движение: состояние сеанса и дубликат приветствия не разрешают движение +- ПРОЙДЕНО — 13. Подтверждение разрешения не восстанавливает движение: подтверждение разрешения сохраняет нулевое состояние +- ПРОЙДЕНО — 14. Новая команда оператора обязательна: движение начинается только по новой команде оператора +- ПРОЙДЕНО — 15. Безопасный перезапуск ровера: перезапуск ровера немедленно создаёт безопасное состояние +- ПРОЙДЕНО — 16. Прекращение старого потока станции: новый сеанс прекращает старый поток команд +- ПРОЙДЕНО — 17. Восстановление аварийного намерения: сохранённое аварийное намерение восстановлено +- ПРОЙДЕНО — 18. Подтверждение не снимает аварийное намерение: подтверждение аварии не снимает намерение +- ПРОЙДЕНО — 19. Отклонение старого запроса сброса: запрос сброса старого сеанса отклонён +- ПРОЙДЕНО — 20. Повтор после потери подтверждения сброса: без подтверждения тот же запрос сброса передаётся повторно +- ПРОЙДЕНО — 21. Повторное подтверждение дубликата сброса: дубликат не повторяет сброс и получает подтверждение +- ПРОЙДЕНО — 22. Аварийная фиксация не снимается обычной командой: обычная команда не снимает аварийную фиксацию +- ПРОЙДЕНО — 23. Воспроизводимость: помехи и 64-битные идентификаторы воспроизводимы +- ПРОЙДЕНО — 24. Постоянная нагрузка команд управления: поток управления совпадает с размером 68 байт, частотой 20 Гц и длительностью опыта + +Созданные файлы +- protocol/control_messages.py +- protocol/session_state.py +- tests/lab041_session_restart_safety.py +- data/processed/lab041/lab041_summary.csv +- data/processed/lab041/lab041_session_metrics.csv +- data/processed/lab041/lab041_rejection_metrics.csv +- data/processed/lab041/lab041_restart_metrics.csv +- data/processed/lab041/lab041_load_metrics.csv +- data/processed/lab041/lab041_report.txt +- data/processed/lab041/lab041_session_time.png +- data/processed/lab041/lab041_authorization_time.png +- data/processed/lab041/lab041_old_packet_rejection.png +- data/processed/lab041/lab041_restart_distance.png +- data/processed/lab041/lab041_emergency_intent.png +- data/processed/lab041/lab041_safety_violations.png +- data/processed/lab041/lab041_protection_load.png +- data/processed/lab041/lab041_traffic_impact.png + +Ограничения +- Модель не включает криптографическую аутентификацию и не рассматривает намеренного нарушителя. +- Размеры идентификаторов и источник случайности для реального изделия должны быть закреплены отдельным проектным решением. +- Lab041 не добавлена в индекс и не закоммичена; результаты Lab028–Lab040 не изменены. diff --git a/data/processed/lab041/lab041_restart_distance.png b/data/processed/lab041/lab041_restart_distance.png new file mode 100644 index 0000000000000000000000000000000000000000..fbdc5a353a7d2b57ba9cf2a1e939fb803ec8b887 GIT binary patch literal 60448 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�yb5k8MU-C(|p&!RpesC7{3m+OA% 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 z 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 literal 0 HcmV?d00001 diff --git a/data/processed/lab041/lab041_session_metrics.csv b/data/processed/lab041/lab041_session_metrics.csv new file mode 100644 index 0000000..58edc9d --- /dev/null +++ b/data/processed/lab041/lab041_session_metrics.csv @@ -0,0 +1,181 @@ +architecture,channel_condition,scenario,repetitions,mean_safe_sync_ms,p95_safe_sync_ms,mean_session_hello,mean_session_status,mean_lost_messages,mean_retries,mean_duplicates,mean_session_rejects,mean_ground_safe_ms,mean_rover_safe_ms,mean_authorize_ack_ms,mean_authorization_repeats,mean_authorization_acks_lost,mean_ack_to_operator_ms,mean_actual_motion_ms,movement_before_sync,movement_before_authorize_ack,movement_without_new_operator,automatic_old_command_restorations,old_control_epoch_uses +no_session_ids,no_loss,normal_start,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,no_loss,ground_restart_moving,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,1,1,1,0 +no_session_ids,no_loss,rover_restart_moving,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,1,1,1,0 +no_session_ids,no_loss,both_restart,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,1,1,1,0 +no_session_ids,no_loss,ground_restart_emergency,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0,1,1,0 +no_session_ids,no_loss,rover_restart_latched,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0,1,1,0 +no_session_ids,no_loss,long_link_break,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,no_loss,old_ground_session_control,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,no_loss,old_rover_boot_control,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,no_loss,old_control_epoch,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,1 +no_session_ids,no_loss,sequence_reset_new_session,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,no_loss,sequence_wrap,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,no_loss,duplicate_hello,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,no_loss,lost_session_status,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,no_loss,lost_authorize_ack,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,1,0,0,0 +no_session_ids,no_loss,lost_emergency_ack,1,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,no_loss,lost_reset_ack,1,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,no_loss,old_reset_request,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,no_loss,late_positive_after_emergency,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,no_loss,restart_after_reset_before_ack,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0,1,1,0 +no_session_ids,260_200,normal_start,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,260_200,ground_restart_moving,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,200,200,200,0 +no_session_ids,260_200,rover_restart_moving,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,200,200,200,0 +no_session_ids,260_200,both_restart,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,200,200,200,0 +no_session_ids,260_200,ground_restart_emergency,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,0,200,200,0 +no_session_ids,260_200,rover_restart_latched,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,0,200,200,0 +no_session_ids,260_200,long_link_break,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,260_200,old_ground_session_control,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,260_200,old_rover_boot_control,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,260_200,old_control_epoch,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,200 +no_session_ids,260_200,sequence_reset_new_session,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,260_200,sequence_wrap,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,260_200,duplicate_hello,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,260_200,lost_session_status,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,260_200,lost_authorize_ack,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,200,0,0,0 +no_session_ids,260_200,lost_emergency_ack,200,0.0,0.0,0.0,0.0,1.17,1.17,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,260_200,lost_reset_ack,200,0.0,0.0,0.0,0.0,1.105,1.105,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,260_200,old_reset_request,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,260_200,late_positive_after_emergency,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,260_200,restart_after_reset_before_ack,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,0,200,200,0 +no_session_ids,230_1000,normal_start,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,230_1000,ground_restart_moving,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,200,200,200,0 +no_session_ids,230_1000,rover_restart_moving,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,200,200,200,0 +no_session_ids,230_1000,both_restart,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,200,200,200,0 +no_session_ids,230_1000,ground_restart_emergency,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,0,200,200,0 +no_session_ids,230_1000,rover_restart_latched,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,0,200,200,0 +no_session_ids,230_1000,long_link_break,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,230_1000,old_ground_session_control,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,230_1000,old_rover_boot_control,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,230_1000,old_control_epoch,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,200 +no_session_ids,230_1000,sequence_reset_new_session,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,230_1000,sequence_wrap,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,230_1000,duplicate_hello,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,230_1000,lost_session_status,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,230_1000,lost_authorize_ack,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,200,0,0,0 +no_session_ids,230_1000,lost_emergency_ack,200,0.0,0.0,0.0,0.0,3.37,3.37,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,230_1000,lost_reset_ack,200,0.0,0.0,0.0,0.0,1.42,1.42,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,230_1000,old_reset_request,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,230_1000,late_positive_after_emergency,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +no_session_ids,230_1000,restart_after_reset_before_ack,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,0,200,200,0 +session_safe_boot,no_loss,normal_start,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,ground_restart_moving,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,rover_restart_moving,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,both_restart,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,ground_restart_emergency,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +session_safe_boot,no_loss,rover_restart_latched,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +session_safe_boot,no_loss,long_link_break,1,5003.6,5003.6,1.0,1.0,0.0,0.0,0.0,1.0,5003.6,5001.786666666667,103.54666666666645,0.0,0.0,200.0,5307.146666666667,0,0,0,0,0 +session_safe_boot,no_loss,old_ground_session_control,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,old_rover_boot_control,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,old_control_epoch,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,sequence_reset_new_session,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,sequence_wrap,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,duplicate_hello,1,3.6,3.6,2.0,2.0,0.0,0.0,1.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,lost_session_status,1,53.6,53.6,2.0,2.0,1.0,1.0,1.0,0.0,53.6,51.78666666666667,103.54666666666668,0.0,0.0,200.0,357.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,lost_authorize_ack,1,3.6,3.6,1.0,1.0,1.0,1.0,1.0,0.0,3.6,1.7866666666666666,153.54666666666668,1.0,1.0,200.0,357.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,lost_emergency_ack,1,3.6,3.6,1.0,1.0,1.0,1.0,1.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,lost_reset_ack,1,3.6,3.6,1.0,1.0,1.0,1.0,1.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,old_reset_request,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,late_positive_after_emergency,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,no_loss,restart_after_reset_before_ack,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +session_safe_boot,260_200,normal_start,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,0.0,4.153846153846154,2.0615384615384613,104.0923076923077,0.0,0.0,200.0,308.2461538461539,0,0,0,0,0 +session_safe_boot,260_200,ground_restart_moving,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,0.0,4.153846153846154,2.0615384615384613,104.0923076923077,0.0,0.0,200.0,308.2461538461539,0,0,0,0,0 +session_safe_boot,260_200,rover_restart_moving,200,4.153846153846154,4.153846153846154,1.0,1.0,0.05,0.05,0.0,0.0,4.153846153846154,2.0615384615384613,106.59230769230771,0.05,0.0,200.0,310.7461538461539,0,0,0,0,0 +session_safe_boot,260_200,both_restart,200,4.153846153846154,4.153846153846154,1.0,1.0,0.11,0.11,0.0,0.0,4.153846153846154,2.0615384615384613,109.5923076923077,0.11,0.0,200.0,313.7461538461539,0,0,0,0,0 +session_safe_boot,260_200,ground_restart_emergency,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,0.0,4.153846153846154,2.0615384615384613,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +session_safe_boot,260_200,rover_restart_latched,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,0.0,4.153846153846154,2.0615384615384613,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +session_safe_boot,260_200,long_link_break,200,5013.1538461538485,5004.153846153846,1.18,1.0,0.235,0.235,0.0,1.0,5013.1538461538485,5011.061538461539,106.84230769230771,0.055,0.0,200.0,5319.996153846155,0,0,0,0,0 +session_safe_boot,260_200,old_ground_session_control,200,4.153846153846154,4.153846153846154,1.0,1.0,0.03,0.03,0.0,1.0,4.153846153846154,2.0615384615384613,105.5923076923077,0.03,0.0,200.0,309.7461538461539,0,0,0,0,0 +session_safe_boot,260_200,old_rover_boot_control,200,4.153846153846154,4.153846153846154,1.0,1.0,0.02,0.02,0.0,1.0,4.153846153846154,2.0615384615384613,105.09230769230768,0.02,0.0,200.0,309.24615384615396,0,0,0,0,0 +session_safe_boot,260_200,old_control_epoch,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,1.0,4.153846153846154,2.0615384615384613,104.0923076923077,0.0,0.0,200.0,308.2461538461539,0,0,0,0,0 +session_safe_boot,260_200,sequence_reset_new_session,200,4.153846153846154,4.153846153846154,1.0,1.0,0.105,0.105,0.0,0.0,4.153846153846154,2.0615384615384613,109.3423076923077,0.105,0.0,200.0,313.4961538461539,0,0,0,0,0 +session_safe_boot,260_200,sequence_wrap,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,1.0,4.153846153846154,2.0615384615384613,104.0923076923077,0.0,0.0,200.0,308.2461538461539,0,0,0,0,0 +session_safe_boot,260_200,duplicate_hello,200,4.153846153846154,4.153846153846154,2.0,2.0,0.0,0.0,1.0,0.0,4.153846153846154,2.0615384615384613,104.0923076923077,0.0,0.0,200.0,308.2461538461539,0,0,0,0,0 +session_safe_boot,260_200,lost_session_status,200,54.15384615384614,54.15384615384615,2.0,2.0,1.04,1.04,1.0,0.0,54.15384615384614,52.061538461538476,106.0923076923077,0.04,0.0,200.0,360.2461538461539,0,0,0,0,0 +session_safe_boot,260_200,lost_authorize_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,1.0,1.0,1.0,0.0,4.153846153846154,2.0615384615384613,154.09230769230768,1.0,1.0,200.0,358.24615384615385,0,0,0,0,0 +session_safe_boot,260_200,lost_emergency_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,1.215,1.215,1.0,0.0,4.153846153846154,2.0615384615384613,104.8423076923077,0.015,0.0,200.0,308.9961538461539,0,0,0,0,0 +session_safe_boot,260_200,lost_reset_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,1.145,1.145,1.005,0.0,4.153846153846154,2.0615384615384613,108.5923076923077,0.09,0.0,200.0,312.74615384615396,0,0,0,0,0 +session_safe_boot,260_200,old_reset_request,200,4.153846153846154,4.153846153846154,1.0,1.0,0.03,0.03,0.0,1.0,4.153846153846154,2.0615384615384613,105.5923076923077,0.03,0.0,200.0,309.7461538461539,0,0,0,0,0 +session_safe_boot,260_200,late_positive_after_emergency,200,4.153846153846154,4.153846153846154,1.0,1.0,0.1,0.1,0.0,1.0,4.153846153846154,2.0615384615384613,109.09230769230771,0.1,0.0,200.0,313.2461538461539,0,0,0,0,0 +session_safe_boot,260_200,restart_after_reset_before_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,0.005,0.005,0.0,0.0,4.153846153846154,2.0615384615384613,104.3423076923077,0.005,0.0,200.0,308.4961538461539,0,0,0,0,0 +session_safe_boot,230_1000,normal_start,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +session_safe_boot,230_1000,ground_restart_moving,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +session_safe_boot,230_1000,rover_restart_moving,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +session_safe_boot,230_1000,both_restart,200,4.695652173913045,4.695652173913044,1.0,1.0,0.24,0.24,0.0,0.0,4.695652173913045,2.330434782608696,116.62608695652172,0.24,0.0,200.0,321.3217391304348,0,0,0,0,0 +session_safe_boot,230_1000,ground_restart_emergency,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +session_safe_boot,230_1000,rover_restart_latched,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +session_safe_boot,230_1000,long_link_break,200,5037.445652173914,5004.695652173913,1.655,1.0,0.83,0.83,0.0,1.0,5037.445652173914,5035.080434782608,113.37608695652165,0.175,0.0,200.0,5350.821739130435,0,0,0,0,0 +session_safe_boot,230_1000,old_ground_session_control,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +session_safe_boot,230_1000,old_rover_boot_control,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +session_safe_boot,230_1000,old_control_epoch,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +session_safe_boot,230_1000,sequence_reset_new_session,200,4.695652173913045,4.695652173913044,1.0,1.0,0.055,0.055,0.0,0.0,4.695652173913045,2.330434782608696,107.37608695652172,0.055,0.0,200.0,312.0717391304348,0,0,0,0,0 +session_safe_boot,230_1000,sequence_wrap,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +session_safe_boot,230_1000,duplicate_hello,200,4.695652173913045,4.695652173913044,2.0,2.0,0.0,0.0,1.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +session_safe_boot,230_1000,lost_session_status,200,54.69565217391304,54.69565217391304,2.0,2.0,1.0,1.0,1.0,0.0,54.69565217391304,52.3304347826087,104.62608695652172,0.0,0.0,200.0,359.3217391304347,0,0,0,0,0 +session_safe_boot,230_1000,lost_authorize_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,1.0,1.0,1.0,0.0,4.695652173913045,2.330434782608696,154.62608695652173,1.0,1.0,200.0,359.3217391304347,0,0,0,0,0 +session_safe_boot,230_1000,lost_emergency_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,1.795,1.795,1.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +session_safe_boot,230_1000,lost_reset_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,1.565,1.565,1.0,0.0,4.695652173913045,2.330434782608696,123.87608695652172,0.385,0.0,200.0,328.5717391304348,0,0,0,0,0 +session_safe_boot,230_1000,old_reset_request,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +session_safe_boot,230_1000,late_positive_after_emergency,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +session_safe_boot,230_1000,restart_after_reset_before_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +persistent_emergency,no_loss,normal_start,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,ground_restart_moving,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,rover_restart_moving,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,both_restart,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,ground_restart_emergency,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +persistent_emergency,no_loss,rover_restart_latched,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +persistent_emergency,no_loss,long_link_break,1,5003.6,5003.6,1.0,1.0,0.0,0.0,0.0,1.0,5003.6,5001.786666666667,103.54666666666645,0.0,0.0,200.0,5307.146666666667,0,0,0,0,0 +persistent_emergency,no_loss,old_ground_session_control,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,old_rover_boot_control,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,old_control_epoch,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,sequence_reset_new_session,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,sequence_wrap,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,duplicate_hello,1,3.6,3.6,2.0,2.0,0.0,0.0,1.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,lost_session_status,1,53.6,53.6,2.0,2.0,1.0,1.0,1.0,0.0,53.6,51.78666666666667,103.54666666666668,0.0,0.0,200.0,357.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,lost_authorize_ack,1,3.6,3.6,1.0,1.0,1.0,1.0,1.0,0.0,3.6,1.7866666666666666,153.54666666666668,1.0,1.0,200.0,357.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,lost_emergency_ack,1,3.6,3.6,1.0,1.0,1.0,1.0,1.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,lost_reset_ack,1,3.6,3.6,1.0,1.0,1.0,1.0,1.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,old_reset_request,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,late_positive_after_emergency,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,no_loss,restart_after_reset_before_ack,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0 +persistent_emergency,260_200,normal_start,200,4.153846153846154,4.153846153846154,1.0,1.0,0.005,0.005,0.0,0.0,4.153846153846154,2.0615384615384613,104.3423076923077,0.005,0.0,200.0,308.4961538461539,0,0,0,0,0 +persistent_emergency,260_200,ground_restart_moving,200,4.153846153846154,4.153846153846154,1.0,1.0,0.04,0.04,0.0,0.0,4.153846153846154,2.0615384615384613,106.0923076923077,0.04,0.0,200.0,310.2461538461539,0,0,0,0,0 +persistent_emergency,260_200,rover_restart_moving,200,4.153846153846154,4.153846153846154,1.0,1.0,0.065,0.065,0.0,0.0,4.153846153846154,2.0615384615384613,107.3423076923077,0.065,0.0,200.0,311.4961538461539,0,0,0,0,0 +persistent_emergency,260_200,both_restart,200,4.153846153846154,4.153846153846154,1.0,1.0,0.02,0.02,0.0,0.0,4.153846153846154,2.0615384615384613,105.09230769230768,0.02,0.0,200.0,309.24615384615396,0,0,0,0,0 +persistent_emergency,260_200,ground_restart_emergency,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,0.0,4.153846153846154,2.0615384615384613,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +persistent_emergency,260_200,rover_restart_latched,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,0.0,4.153846153846154,2.0615384615384613,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +persistent_emergency,260_200,long_link_break,200,5009.403846153848,5004.153846153846,1.105,1.0,0.18,0.18,0.0,1.0,5009.403846153848,5007.311538461539,107.84230769230771,0.075,0.0,200.0,5317.246153846156,0,0,0,0,0 +persistent_emergency,260_200,old_ground_session_control,200,4.153846153846154,4.153846153846154,1.0,1.0,0.015,0.015,0.0,1.0,4.153846153846154,2.0615384615384613,104.84230769230768,0.015,0.0,200.0,308.9961538461539,0,0,0,0,0 +persistent_emergency,260_200,old_rover_boot_control,200,4.153846153846154,4.153846153846154,1.0,1.0,0.025,0.025,0.0,1.0,4.153846153846154,2.0615384615384613,105.3423076923077,0.025,0.0,200.0,309.4961538461539,0,0,0,0,0 +persistent_emergency,260_200,old_control_epoch,200,4.153846153846154,4.153846153846154,1.0,1.0,0.035,0.035,0.0,1.0,4.153846153846154,2.0615384615384613,105.84230769230768,0.035,0.0,200.0,309.9961538461539,0,0,0,0,0 +persistent_emergency,260_200,sequence_reset_new_session,200,4.653846153846154,4.153846153846154,1.01,1.0,0.14,0.14,0.0,0.0,4.653846153846154,2.5615384615384618,110.5923076923077,0.13,0.0,200.0,315.2461538461539,0,0,0,0,0 +persistent_emergency,260_200,sequence_wrap,200,4.153846153846154,4.153846153846154,1.0,1.0,0.05,0.05,0.0,1.0,4.153846153846154,2.0615384615384613,106.5923076923077,0.05,0.0,200.0,310.7461538461539,0,0,0,0,0 +persistent_emergency,260_200,duplicate_hello,200,4.153846153846154,4.153846153846154,2.0,2.0,0.0,0.0,1.0,0.0,4.153846153846154,2.0615384615384613,104.0923076923077,0.0,0.0,200.0,308.2461538461539,0,0,0,0,0 +persistent_emergency,260_200,lost_session_status,200,54.653846153846146,54.15384615384615,2.01,2.0,1.01,1.01,1.0,0.0,54.653846153846146,52.56153846153848,104.0923076923077,0.0,0.0,200.0,358.7461538461539,0,0,0,0,0 +persistent_emergency,260_200,lost_authorize_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,1.21,1.21,1.0,0.0,4.153846153846154,2.0615384615384613,164.5923076923077,1.21,1.0,200.0,368.74615384615385,0,0,0,0,0 +persistent_emergency,260_200,lost_emergency_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,1.245,1.245,1.0,0.0,4.153846153846154,2.0615384615384613,112.59230769230768,0.17,0.0,200.0,316.74615384615396,0,0,0,0,0 +persistent_emergency,260_200,lost_reset_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,1.18,1.18,1.0,0.0,4.153846153846154,2.0615384615384613,106.5923076923077,0.05,0.0,200.0,310.7461538461539,0,0,0,0,0 +persistent_emergency,260_200,old_reset_request,200,4.153846153846154,4.153846153846154,1.0,1.0,0.055,0.055,0.0,1.0,4.153846153846154,2.0615384615384613,106.8423076923077,0.055,0.0,200.0,310.9961538461539,0,0,0,0,0 +persistent_emergency,260_200,late_positive_after_emergency,200,4.153846153846154,4.153846153846154,1.0,1.0,0.06,0.06,0.0,1.0,4.153846153846154,2.0615384615384613,107.09230769230768,0.06,0.0,200.0,311.24615384615396,0,0,0,0,0 +persistent_emergency,260_200,restart_after_reset_before_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,0.01,0.01,0.0,0.0,4.153846153846154,2.0615384615384613,104.59230769230768,0.01,0.0,200.0,308.74615384615396,0,0,0,0,0 +persistent_emergency,230_1000,normal_start,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +persistent_emergency,230_1000,ground_restart_moving,200,4.695652173913045,4.695652173913044,1.0,1.0,0.13,0.13,0.0,0.0,4.695652173913045,2.330434782608696,111.1260869565217,0.13,0.0,200.0,315.8217391304348,0,0,0,0,0 +persistent_emergency,230_1000,rover_restart_moving,200,4.695652173913045,4.695652173913044,1.0,1.0,0.17,0.17,0.0,0.0,4.695652173913045,2.330434782608696,113.1260869565217,0.17,0.0,200.0,317.82173913043476,0,0,0,0,0 +persistent_emergency,230_1000,both_restart,200,4.695652173913045,4.695652173913044,1.0,1.0,0.08,0.08,0.0,0.0,4.695652173913045,2.330434782608696,108.62608695652172,0.08,0.0,200.0,313.3217391304348,0,0,0,0,0 +persistent_emergency,230_1000,ground_restart_emergency,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +persistent_emergency,230_1000,rover_restart_latched,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0 +persistent_emergency,230_1000,long_link_break,200,5022.945652173914,5004.695652173913,1.365,1.0,0.365,0.365,0.0,1.0,5022.945652173914,5020.580434782608,104.62608695652165,0.0,0.0,200.0,5327.571739130434,0,0,0,0,0 +persistent_emergency,230_1000,old_ground_session_control,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +persistent_emergency,230_1000,old_rover_boot_control,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +persistent_emergency,230_1000,old_control_epoch,200,4.695652173913045,4.695652173913044,1.0,1.0,0.205,0.205,0.0,1.0,4.695652173913045,2.330434782608696,114.87608695652173,0.205,0.0,200.0,319.5717391304349,0,0,0,0,0 +persistent_emergency,230_1000,sequence_reset_new_session,200,6.945652173913045,4.695652173913044,1.045,1.0,0.045,0.045,0.0,0.0,6.945652173913045,4.580434782608696,104.62608695652172,0.0,0.0,200.0,311.57173913043476,0,0,0,0,0 +persistent_emergency,230_1000,sequence_wrap,200,4.695652173913045,4.695652173913044,1.0,1.0,0.135,0.135,0.0,1.0,4.695652173913045,2.330434782608696,111.37608695652172,0.135,0.0,200.0,316.0717391304348,0,0,0,0,0 +persistent_emergency,230_1000,duplicate_hello,200,4.695652173913045,4.695652173913044,2.0,2.0,0.0,0.0,1.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +persistent_emergency,230_1000,lost_session_status,200,54.69565217391304,54.69565217391304,2.0,2.0,1.0,1.0,1.0,0.0,54.69565217391304,52.3304347826087,104.62608695652172,0.0,0.0,200.0,359.3217391304347,0,0,0,0,0 +persistent_emergency,230_1000,lost_authorize_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,1.0,1.0,1.0,0.0,4.695652173913045,2.330434782608696,154.62608695652173,1.0,1.0,200.0,359.3217391304347,0,0,0,0,0 +persistent_emergency,230_1000,lost_emergency_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,1.26,1.26,1.0,0.0,4.695652173913045,2.330434782608696,111.37608695652172,0.135,0.0,200.0,316.0717391304348,0,0,0,0,0 +persistent_emergency,230_1000,lost_reset_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,1.68,1.68,1.0,0.0,4.695652173913045,2.330434782608696,116.37608695652173,0.235,0.0,200.0,321.0717391304348,0,0,0,0,0 +persistent_emergency,230_1000,old_reset_request,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +persistent_emergency,230_1000,late_positive_after_emergency,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 +persistent_emergency,230_1000,restart_after_reset_before_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0 diff --git a/data/processed/lab041/lab041_session_time.png b/data/processed/lab041/lab041_session_time.png new file mode 100644 index 0000000000000000000000000000000000000000..86ceb5b99f1f6f928bf495565c0bdcd1bb093bbf GIT binary patch literal 61489 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%0D=l&>v@q|;5nw4;F4nT~* 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 BtqTAE literal 0 HcmV?d00001 diff --git a/data/processed/lab041/lab041_summary.csv b/data/processed/lab041/lab041_summary.csv new file mode 100644 index 0000000..33cda5c --- /dev/null +++ b/data/processed/lab041/lab041_summary.csv @@ -0,0 +1,181 @@ +architecture,channel_condition,scenario,repetitions,safe_session_fraction,authorization_fraction,unsafe_event_fraction,old_packet_acceptance_fraction,emergency_intent_loss_fraction,control_state_load_kbps,episodic_service_load_kbps,full_offered_load_kbps,control_delivered_fraction,telemetry_delivered_fraction,video_published_fraction,maximum_queue_packets +no_session_ids,no_loss,normal_start,1,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,ground_restart_moving,1,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,rover_restart_moving,1,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,both_restart,1,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,ground_restart_emergency,1,0.0,1.0,1.0,0.0,1.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,rover_restart_latched,1,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,long_link_break,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,old_ground_session_control,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,old_rover_boot_control,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,old_control_epoch,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,sequence_reset_new_session,1,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,sequence_wrap,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,duplicate_hello,1,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,lost_session_status,1,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,lost_authorize_ack,1,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,lost_emergency_ack,1,0.0,1.0,0.0,0.0,0.0,10.88,0.1056,262.0584666666667,0.9987914666666666,0.9993957333333333,0.9981872,22 +no_session_ids,no_loss,lost_reset_ack,1,0.0,1.0,1.0,0.0,0.0,10.88,0.124,262.0768666666667,0.9987853333333333,0.9993926666666667,0.998178,22 +no_session_ids,no_loss,old_reset_request,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,late_positive_after_emergency,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,no_loss,restart_after_reset_before_ack,1,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21 +no_session_ids,260_200,normal_start,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,ground_restart_moving,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,rover_restart_moving,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,both_restart,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,ground_restart_emergency,200,0.0,1.0,1.0,0.0,1.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,rover_restart_latched,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,long_link_break,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,old_ground_session_control,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,old_rover_boot_control,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,old_control_epoch,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,sequence_reset_new_session,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,sequence_wrap,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,duplicate_hello,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,lost_session_status,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,lost_authorize_ack,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,lost_emergency_ack,200,0.0,1.0,0.0,0.0,0.0,10.88,0.110088,262.0629546666667,0.9786038123076922,0.981301906153846,0.9079057184615386,36 +no_session_ids,260_200,lost_reset_ack,200,0.0,1.0,1.0,0.0,0.0,10.88,0.12731800000000001,262.0801846666667,0.978597185384615,0.9812985926923079,0.9078957780769232,36 +no_session_ids,260_200,old_reset_request,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,late_positive_after_emergency,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,260_200,restart_after_reset_before_ack,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31 +no_session_ids,230_1000,normal_start,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,ground_restart_moving,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,rover_restart_moving,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,both_restart,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,ground_restart_emergency,200,0.0,1.0,1.0,0.0,1.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,rover_restart_latched,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,long_link_break,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,old_ground_session_control,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,old_rover_boot_control,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,old_control_epoch,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,sequence_reset_new_session,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,sequence_wrap,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,duplicate_hello,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,lost_session_status,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,lost_authorize_ack,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,lost_emergency_ack,200,0.0,1.0,0.0,0.0,0.0,10.88,0.168168,262.1210346666667,0.978396448695652,0.9791982243478259,0.8605946730434781,46 +no_session_ids,230_1000,lost_reset_ack,200,0.0,1.0,1.0,0.0,0.0,10.88,0.137272,262.0901386666667,0.9784098817391305,0.9792049408695651,0.8606148226086957,46 +no_session_ids,230_1000,old_reset_request,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,late_positive_after_emergency,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +no_session_ids,230_1000,restart_after_reset_before_ack,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41 +session_safe_boot,no_loss,normal_start,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +session_safe_boot,no_loss,ground_restart_moving,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +session_safe_boot,no_loss,rover_restart_moving,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +session_safe_boot,no_loss,both_restart,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +session_safe_boot,no_loss,ground_restart_emergency,1,1.0,0.0,0.0,0.0,1.0,10.88,0.054,262.00686666666667,0.9988086666666667,0.9994043333333333,0.998213,21 +session_safe_boot,no_loss,rover_restart_latched,1,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9988086666666667,0.9994043333333333,0.998213,21 +session_safe_boot,no_loss,long_link_break,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +session_safe_boot,no_loss,old_ground_session_control,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +session_safe_boot,no_loss,old_rover_boot_control,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +session_safe_boot,no_loss,old_control_epoch,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +session_safe_boot,no_loss,sequence_reset_new_session,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +session_safe_boot,no_loss,sequence_wrap,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +session_safe_boot,no_loss,duplicate_hello,1,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9987729333333333,0.9993864666666666,0.9981594,21 +session_safe_boot,no_loss,lost_session_status,1,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9987729333333333,0.9993864666666666,0.9981594,22 +session_safe_boot,no_loss,lost_authorize_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.16040000000000001,262.1132666666667,0.9987732,0.9993866,0.9981598,22 +session_safe_boot,no_loss,lost_emergency_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.21280000000000002,262.1656666666667,0.9987557333333333,0.9993778666666666,0.9981336,22 +session_safe_boot,no_loss,lost_reset_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.2312,262.1840666666667,0.9987496,0.9993748,0.9981244,22 +session_safe_boot,no_loss,old_reset_request,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +session_safe_boot,no_loss,late_positive_after_emergency,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +session_safe_boot,no_loss,restart_after_reset_before_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +session_safe_boot,260_200,normal_start,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9786049230769228,0.9813024615384619,0.9079073846153847,31 +session_safe_boot,260_200,ground_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9786049230769228,0.9813024615384619,0.9079073846153847,31 +session_safe_boot,260_200,rover_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10852,262.0613866666667,0.9786044153846152,0.9813022076923079,0.9079066230769232,36 +session_safe_boot,260_200,both_restart,200,1.0,1.0,0.0,0.0,0.0,10.88,0.110104,262.0629706666667,0.9786038061538459,0.9813019030769234,0.9079057092307693,36 +session_safe_boot,260_200,ground_restart_emergency,200,1.0,0.0,0.0,0.0,1.0,10.88,0.054,262.00686666666667,0.9786253846153845,0.9813126923076924,0.9079380769230773,31 +session_safe_boot,260_200,rover_restart_latched,200,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9786253846153845,0.9813126923076924,0.9079380769230773,31 +session_safe_boot,260_200,long_link_break,200,1.0,1.0,0.0,0.0,0.0,10.88,0.113476,262.0663426666667,0.9786025092307691,0.9813012546153849,0.907903763846154,36 +session_safe_boot,260_200,old_ground_session_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.107992,262.0608586666667,0.9786046184615382,0.9813023092307697,0.9079069276923077,35 +session_safe_boot,260_200,old_rover_boot_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10772799999999999,262.0605946666667,0.9786047199999998,0.9813023600000003,0.9079070800000001,34 +session_safe_boot,260_200,old_control_epoch,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9786049230769228,0.9813024615384619,0.9079073846153847,31 +session_safe_boot,260_200,sequence_reset_new_session,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10997200000000001,262.0628386666667,0.9786038569230766,0.9813019284615387,0.9079057853846154,36 +session_safe_boot,260_200,sequence_wrap,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9786049230769228,0.9813024615384619,0.9079073846153847,31 +session_safe_boot,260_200,duplicate_hello,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9785841538461537,0.9812920769230772,0.907876230769231,31 +session_safe_boot,260_200,lost_session_status,200,1.0,1.0,0.0,0.0,0.0,10.88,0.162256,262.1151226666667,0.9785837476923075,0.9812918738461539,0.9078756215384618,36 +session_safe_boot,260_200,lost_authorize_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16040000000000001,262.1132666666667,0.9785844615384616,0.981292230769231,0.9078766923076921,32 +session_safe_boot,260_200,lost_emergency_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.21847600000000003,262.1713426666667,0.9785621246153846,0.9812810623076923,0.9078431869230771,36 +session_safe_boot,260_200,lost_reset_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.23546599999999998,262.18833266666667,0.9785555899999997,0.9812777950000001,0.907833385,36 +session_safe_boot,260_200,old_reset_request,200,1.0,1.0,0.0,0.0,0.0,10.88,0.107992,262.0608586666667,0.9786046184615382,0.9813023092307697,0.9079069276923077,36 +session_safe_boot,260_200,late_positive_after_emergency,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10984000000000001,262.0627066666667,0.9786039076923074,0.9813019538461542,0.9079058615384616,36 +session_safe_boot,260_200,restart_after_reset_before_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.107332,262.0601986666667,0.9786048723076921,0.9813024361538464,0.9079073084615384,32 +session_safe_boot,230_1000,normal_start,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +session_safe_boot,230_1000,ground_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +session_safe_boot,230_1000,rover_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +session_safe_boot,230_1000,both_restart,200,1.0,1.0,0.0,0.0,0.0,10.88,0.11353599999999998,262.0664026666667,0.9784202017391302,0.9792101008695654,0.860630302608696,46 +session_safe_boot,230_1000,ground_restart_emergency,200,1.0,0.0,0.0,0.0,1.0,10.88,0.054,262.00686666666667,0.9784460869565217,0.9792230434782607,0.8606691304347825,41 +session_safe_boot,230_1000,rover_restart_latched,200,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9784460869565217,0.9792230434782607,0.8606691304347825,41 +session_safe_boot,230_1000,long_link_break,200,1.0,1.0,0.0,0.0,0.0,10.88,0.129374,262.0822406666667,0.9784133156521737,0.9792066578260871,0.860619973478261,46 +session_safe_boot,230_1000,old_ground_session_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +session_safe_boot,230_1000,old_rover_boot_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +session_safe_boot,230_1000,old_control_epoch,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +session_safe_boot,230_1000,sequence_reset_new_session,200,1.0,1.0,0.0,0.0,0.0,10.88,0.108652,262.0615186666667,0.978422325217391,0.9792111626086958,0.8606334878260873,46 +session_safe_boot,230_1000,sequence_wrap,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +session_safe_boot,230_1000,duplicate_hello,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9783994782608693,0.9791997391304347,0.8605992173913043,41 +session_safe_boot,230_1000,lost_session_status,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9783994782608693,0.9791997391304347,0.8605992173913043,42 +session_safe_boot,230_1000,lost_authorize_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16040000000000001,262.1132666666667,0.9783998260869565,0.9791999130434783,0.8605997391304347,42 +session_safe_boot,230_1000,lost_emergency_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.23378800000000002,262.1866546666667,0.9783679182608697,0.979183959130435,0.8605518773913041,46 +session_safe_boot,230_1000,lost_reset_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.247052,262.1999186666667,0.9783621513043473,0.9791810756521738,0.8605432269565216,46 +session_safe_boot,230_1000,old_reset_request,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +session_safe_boot,230_1000,late_positive_after_emergency,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +session_safe_boot,230_1000,restart_after_reset_before_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +persistent_emergency,no_loss,normal_start,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +persistent_emergency,no_loss,ground_restart_moving,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +persistent_emergency,no_loss,rover_restart_moving,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +persistent_emergency,no_loss,both_restart,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +persistent_emergency,no_loss,ground_restart_emergency,1,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9988086666666667,0.9994043333333333,0.998213,21 +persistent_emergency,no_loss,rover_restart_latched,1,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9988086666666667,0.9994043333333333,0.998213,21 +persistent_emergency,no_loss,long_link_break,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +persistent_emergency,no_loss,old_ground_session_control,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +persistent_emergency,no_loss,old_rover_boot_control,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +persistent_emergency,no_loss,old_control_epoch,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +persistent_emergency,no_loss,sequence_reset_new_session,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +persistent_emergency,no_loss,sequence_wrap,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +persistent_emergency,no_loss,duplicate_hello,1,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9987729333333333,0.9993864666666666,0.9981594,21 +persistent_emergency,no_loss,lost_session_status,1,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9987729333333333,0.9993864666666666,0.9981594,22 +persistent_emergency,no_loss,lost_authorize_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.16040000000000001,262.1132666666667,0.9987732,0.9993866,0.9981598,22 +persistent_emergency,no_loss,lost_emergency_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.21280000000000002,262.1656666666667,0.9987557333333333,0.9993778666666666,0.9981336,22 +persistent_emergency,no_loss,lost_reset_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.2312,262.1840666666667,0.9987496,0.9993748,0.9981244,22 +persistent_emergency,no_loss,old_reset_request,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +persistent_emergency,no_loss,late_positive_after_emergency,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +persistent_emergency,no_loss,restart_after_reset_before_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21 +persistent_emergency,260_200,normal_start,200,1.0,1.0,0.0,0.0,0.0,10.88,0.107332,262.0601986666667,0.9786048723076921,0.9813024361538464,0.9079073084615384,32 +persistent_emergency,260_200,ground_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.108256,262.0611226666667,0.9786045169230766,0.9813022584615387,0.9079067753846155,35 +persistent_emergency,260_200,rover_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10891600000000001,262.0617826666667,0.9786042630769228,0.9813021315384617,0.9079063946153846,36 +persistent_emergency,260_200,both_restart,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10772799999999999,262.0605946666667,0.9786047199999998,0.9813023600000003,0.9079070800000001,33 +persistent_emergency,260_200,ground_restart_emergency,200,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9786253846153845,0.9813126923076924,0.9079380769230773,31 +persistent_emergency,260_200,rover_restart_latched,200,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9786253846153845,0.9813126923076924,0.9079380769230773,31 +persistent_emergency,260_200,long_link_break,200,1.0,1.0,0.0,0.0,0.0,10.88,0.111994,262.0648606666667,0.9786030792307691,0.981301539615385,0.9079046188461538,36 +persistent_emergency,260_200,old_ground_session_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.107596,262.0604626666667,0.9786047707692305,0.9813023853846157,0.9079071561538461,33 +persistent_emergency,260_200,old_rover_boot_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10785999999999998,262.0607266666667,0.9786046692307689,0.981302334615385,0.9079070038461539,34 +persistent_emergency,260_200,old_control_epoch,200,1.0,1.0,0.0,0.0,0.0,10.88,0.108124,262.06099066666667,0.9786045676923075,0.981302283846154,0.9079068515384615,36 +persistent_emergency,260_200,sequence_reset_new_session,200,1.0,1.0,0.0,0.0,0.0,10.88,0.11090000000000001,262.0637666666667,0.9786034999999998,0.9813017500000004,0.90790525,36 +persistent_emergency,260_200,sequence_wrap,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10852,262.0613866666667,0.9786044153846152,0.981302207692308,0.9079066230769232,36 +persistent_emergency,260_200,duplicate_hello,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9785841538461537,0.9812920769230772,0.907876230769231,31 +persistent_emergency,260_200,lost_session_status,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16146800000000003,262.1143346666667,0.9785840507692305,0.9812920253846156,0.9078760761538465,34 +persistent_emergency,260_200,lost_authorize_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.165944,262.1188106666667,0.9785823292307694,0.9812911646153849,0.9078734938461537,36 +persistent_emergency,260_200,lost_emergency_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.21926799999999996,262.1721346666667,0.9785618199999999,0.9812809099999998,0.9078427300000002,36 +persistent_emergency,260_200,lost_reset_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.236628,262.1894946666667,0.9785551430769229,0.9812775715384617,0.9078327146153846,36 +persistent_emergency,260_200,old_reset_request,200,1.0,1.0,0.0,0.0,0.0,10.88,0.108652,262.0615186666667,0.9786043646153842,0.9813021823076926,0.9079065469230769,36 +persistent_emergency,260_200,late_positive_after_emergency,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10878399999999999,262.0616506666667,0.9786043138461537,0.9813021569230773,0.9079064707692308,36 +persistent_emergency,260_200,restart_after_reset_before_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10746400000000002,262.0603306666667,0.9786048215384614,0.9813024107692311,0.9079072323076923,33 +persistent_emergency,230_1000,normal_start,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +persistent_emergency,230_1000,ground_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.110632,262.0634986666667,0.978421464347826,0.9792107321739132,0.8606321965217394,46 +persistent_emergency,230_1000,rover_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.11168800000000002,262.0645546666667,0.9784210052173912,0.9792105026086958,0.8606315078260871,46 +persistent_emergency,230_1000,both_restart,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10931199999999998,262.0621786666667,0.9784220382608695,0.979211019130435,0.8606330573913047,46 +persistent_emergency,230_1000,ground_restart_emergency,200,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9784460869565217,0.9792230434782607,0.8606691304347825,41 +persistent_emergency,230_1000,rover_restart_latched,200,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9784460869565217,0.9792230434782607,0.8606691304347825,41 +persistent_emergency,230_1000,long_link_break,200,1.0,1.0,0.0,0.0,0.0,10.88,0.116982,262.0698486666667,0.9784187034782608,0.9792093517391307,0.8606280552173916,46 +persistent_emergency,230_1000,old_ground_session_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +persistent_emergency,230_1000,old_rover_boot_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +persistent_emergency,230_1000,old_control_epoch,200,1.0,1.0,0.0,0.0,0.0,10.88,0.11261199999999999,262.0654786666667,0.9784206034782608,0.9792103017391307,0.8606309052173916,46 +persistent_emergency,230_1000,sequence_reset_new_session,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10840599999999999,262.0612726666667,0.9784224321739129,0.9792112160869567,0.8606336482608699,46 +persistent_emergency,230_1000,sequence_wrap,200,1.0,1.0,0.0,0.0,0.0,10.88,0.11076400000000002,262.0636306666667,0.9784214069565215,0.979210703478261,0.8606321104347829,46 +persistent_emergency,230_1000,duplicate_hello,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9783994782608693,0.9791997391304347,0.8605992173913043,41 +persistent_emergency,230_1000,lost_session_status,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9783994782608693,0.9791997391304347,0.8605992173913043,42 +persistent_emergency,230_1000,lost_authorize_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16040000000000001,262.1132666666667,0.9783998260869565,0.9791999130434783,0.8605997391304347,42 +persistent_emergency,230_1000,lost_emergency_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.219664,262.1725306666667,0.9783740591304348,0.9791870295652177,0.860561088695652,46 +persistent_emergency,230_1000,lost_reset_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.25146599999999997,262.2043326666667,0.9783602321739128,0.9791801160869563,0.8605403482608694,46 +persistent_emergency,230_1000,old_reset_request,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +persistent_emergency,230_1000,late_positive_after_emergency,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 +persistent_emergency,230_1000,restart_after_reset_before_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41 diff --git a/data/processed/lab041/lab041_traffic_impact.png b/data/processed/lab041/lab041_traffic_impact.png new file mode 100644 index 0000000000000000000000000000000000000000..26dc809772f511aa10870a8417a3af09ee74223f GIT binary patch literal 112440 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 v|DPZ13<}- int: + if not isinstance(value, int) or isinstance(value, bool) or not 0 <= value <= maximum: + raise ControlMessageError(f"{name} выходит за допустимый беззнаковый диапазон") + return value + + +def validate_context(context: MessageContext) -> MessageContext: + if not isinstance(context, MessageContext): + raise TypeError("требуется MessageContext") + _unsigned(context.ground_session_id, 0xFFFFFFFFFFFFFFFF, "ground_session_id") + _unsigned(context.rover_boot_id, 0xFFFFFFFFFFFFFFFF, "rover_boot_id") + _unsigned(context.control_epoch, 0xFFFFFFFF, "control_epoch") + _unsigned(context.sequence_number, 0xFFFFFFFF, "sequence_number") + return context + + +def compare_sequence(new: int, old: int) -> SequenceComparison: + """Сравнить 32-битные номера по модулю с неоднозначной серединой.""" + + _unsigned(new, 0xFFFFFFFF, "new sequence_number") + _unsigned(old, 0xFFFFFFFF, "old sequence_number") + delta = (new - old) % UINT32_MODULUS + if delta == UINT32_HALF_RANGE: + return SequenceComparison.AMBIGUOUS + if 0 < delta < UINT32_HALF_RANGE: + return SequenceComparison.NEWER + return SequenceComparison.NOT_NEWER + + +def _common(message_type: MessageType, context: MessageContext) -> bytes: + validate_context(context) + return struct.pack( + COMMON_FORMAT, + MESSAGE_VERSION, + int(message_type), + context.ground_session_id, + context.rover_boot_id, + context.control_epoch, + context.sequence_number, + ) + + +def _boolean(value: bool, name: str) -> int: + if not isinstance(value, bool): + raise ControlMessageError(f"{name} должен быть логическим значением") + return int(value) + + +def _finite(value: float, name: str) -> float: + value = float(value) + if not math.isfinite(value): + raise ControlMessageError(f"{name} должен быть конечным числом") + return value + + +def encode_message(message: ControlMessage) -> bytes: + """Проверить и сериализовать одно прикладное сообщение.""" + + message_type = _TYPE_BY_CLASS.get(type(message)) + if message_type is None: + raise TypeError("неподдерживаемый класс прикладного сообщения") + prefix = _common(message_type, message.context) + if isinstance(message, SessionHello): + event = _unsigned(message.emergency_event_id, 0xFFFFFFFFFFFFFFFF, "emergency_event_id") + return prefix + struct.pack("!BQ", _boolean(message.emergency_intent, "emergency_intent"), event) + if isinstance(message, SessionStatus): + try: + state = RoverSafetyCode(message.safety_state) + except ValueError as error: + raise ControlMessageError("неизвестное состояние безопасности ровера") from error + event = _unsigned(message.emergency_event_id, 0xFFFFFFFFFFFFFFFF, "emergency_event_id") + return prefix + struct.pack("!BBQ", int(state), _boolean(message.emergency_latched, "emergency_latched"), event) + if isinstance(message, MovementAuthorizeRequest): + return prefix + struct.pack("!Q", _unsigned(message.authorization_id, 0xFFFFFFFFFFFFFFFF, "authorization_id")) + if isinstance(message, MovementAuthorizeAck): + return prefix + struct.pack( + "!QB", + _unsigned(message.authorization_id, 0xFFFFFFFFFFFFFFFF, "authorization_id"), + _boolean(message.accepted, "accepted"), + ) + if isinstance(message, ControlStateMessage): + speed = _finite(message.desired_speed_mps, "desired_speed_mps") + turn = _finite(message.desired_turn, "desired_turn") + if not 0.0 <= speed <= MAX_CONTROL_SPEED_MPS: + raise ControlMessageError("требуемая скорость вне диапазона 0…15 м/с") + if not -MAX_ABS_TURN <= turn <= MAX_ABS_TURN: + raise ControlMessageError("требуемый поворот вне диапазона -1…1") + braking = _boolean(message.braking, "braking") + permitted = _boolean(message.movement_permitted, "movement_permitted") + if (braking or not permitted) and speed != 0.0: + raise ControlMessageError("при торможении или запрете движения скорость должна быть нулевой") + if braking and permitted: + raise ControlMessageError("торможение несовместимо с разрешением движения") + return prefix + struct.pack("!ffBB", speed, turn, braking, permitted) + if isinstance(message, (EmergencyStop, EmergencyAck)): + event = _unsigned(message.emergency_event_id, 0xFFFFFFFFFFFFFFFF, "emergency_event_id") + return prefix + struct.pack("!Q", event) + if isinstance(message, ResetRequest): + event = _unsigned(message.emergency_event_id, 0xFFFFFFFFFFFFFFFF, "emergency_event_id") + request = _unsigned(message.reset_request_id, 0xFFFFFFFFFFFFFFFF, "reset_request_id") + speed = _finite(message.requested_speed_mps, "requested_speed_mps") + permitted = _boolean(message.movement_permitted, "movement_permitted") + if speed != 0.0 or permitted: + raise ControlMessageError("безопасный сброс требует нулевой скорости и запрета движения") + return prefix + struct.pack("!QQfB", event, request, speed, permitted) + if isinstance(message, ResetAck): + try: + reason = SessionRejectReason(message.reason) + except ValueError as error: + raise ControlMessageError("неизвестная причина подтверждения сброса") from error + return prefix + struct.pack( + "!QQBB", + _unsigned(message.emergency_event_id, 0xFFFFFFFFFFFFFFFF, "emergency_event_id"), + _unsigned(message.reset_request_id, 0xFFFFFFFFFFFFFFFF, "reset_request_id"), + _boolean(message.accepted, "accepted"), + int(reason), + ) + if isinstance(message, SessionReject): + try: + rejected_type = MessageType(message.rejected_type) + reason = SessionRejectReason(message.reason) + except ValueError as error: + raise ControlMessageError("неизвестный код отказа сеанса") from error + return prefix + struct.pack("!BB", int(rejected_type), int(reason)) + raise AssertionError("необработанный тип сообщения") + + +def _decode_bool(value: int, name: str) -> bool: + if value not in (0, 1): + raise ControlMessageError(f"{name} должен быть равен нулю или единице") + return bool(value) + + +def _unpack_exact(body: bytes, format_string: str) -> tuple[object, ...]: + expected = struct.calcsize(format_string) + if len(body) != expected: + raise ControlMessageError(f"неверная длина тела сообщения: {len(body)}, ожидается {expected}") + return struct.unpack(format_string, body) + + +def decode_message(payload: bytes) -> ControlMessage: + """Разобрать сообщение и выполнить полную смысловую проверку.""" + + if not isinstance(payload, (bytes, bytearray)): + raise TypeError("полезная нагрузка должна быть последовательностью байтов") + payload = bytes(payload) + if len(payload) < COMMON_SIZE: + raise ControlMessageError("сообщение короче общего заголовка") + version, raw_type, ground, rover, epoch, sequence = struct.unpack(COMMON_FORMAT, payload[:COMMON_SIZE]) + if version != MESSAGE_VERSION: + raise ControlMessageError("неподдерживаемая версия прикладного сообщения") + try: + message_type = MessageType(raw_type) + except ValueError as error: + raise ControlMessageError("неизвестный тип прикладного сообщения") from error + context = MessageContext(ground, rover, epoch, sequence) + body = payload[COMMON_SIZE:] + if message_type is MessageType.SESSION_HELLO: + intent, event = _unpack_exact(body, "!BQ") + message: ControlMessage = SessionHello(context, _decode_bool(intent, "emergency_intent"), event) + elif message_type is MessageType.SESSION_STATUS: + state, latched, event = _unpack_exact(body, "!BBQ") + try: + safety_state = RoverSafetyCode(state) + except ValueError as error: + raise ControlMessageError("неизвестное состояние безопасности ровера") from error + message = SessionStatus(context, safety_state, _decode_bool(latched, "emergency_latched"), event) + elif message_type is MessageType.MOVEMENT_AUTHORIZE_REQUEST: + (authorization,) = _unpack_exact(body, "!Q") + message = MovementAuthorizeRequest(context, authorization) + elif message_type is MessageType.MOVEMENT_AUTHORIZE_ACK: + authorization, accepted = _unpack_exact(body, "!QB") + message = MovementAuthorizeAck(context, authorization, _decode_bool(accepted, "accepted")) + elif message_type is MessageType.CONTROL_STATE: + speed, turn, braking, permitted = _unpack_exact(body, "!ffBB") + message = ControlStateMessage( + context, + speed, + turn, + _decode_bool(braking, "braking"), + _decode_bool(permitted, "movement_permitted"), + ) + elif message_type is MessageType.EMERGENCY_STOP: + (event,) = _unpack_exact(body, "!Q") + message = EmergencyStop(context, event) + elif message_type is MessageType.EMERGENCY_ACK: + (event,) = _unpack_exact(body, "!Q") + message = EmergencyAck(context, event) + elif message_type is MessageType.RESET_REQUEST: + event, request, speed, permitted = _unpack_exact(body, "!QQfB") + message = ResetRequest(context, event, request, speed, _decode_bool(permitted, "movement_permitted")) + elif message_type is MessageType.RESET_ACK: + event, request, accepted, reason = _unpack_exact(body, "!QQBB") + try: + reset_reason = SessionRejectReason(reason) + except ValueError as error: + raise ControlMessageError("неизвестная причина подтверждения сброса") from error + message = ResetAck(context, event, request, _decode_bool(accepted, "accepted"), reset_reason) + else: + rejected_type, reason = _unpack_exact(body, "!BB") + try: + message = SessionReject(context, MessageType(rejected_type), SessionRejectReason(reason)) + except ValueError as error: + raise ControlMessageError("неизвестный код отказа сеанса") from error + return decode_validated_message(message) + + +def decode_validated_message(message: ControlMessage) -> ControlMessage: + """Повторно применить смысловую проверку к разобранному объекту.""" + + return decode_without_recursion(encode_message(message)) + + +def decode_without_recursion(payload: bytes) -> ControlMessage: + """Внутренний разбор уже проверенного представления.""" + + version, raw_type, ground, rover, epoch, sequence = struct.unpack(COMMON_FORMAT, payload[:COMMON_SIZE]) + assert version == MESSAGE_VERSION + message_type = MessageType(raw_type) + context = MessageContext(ground, rover, epoch, sequence) + body = payload[COMMON_SIZE:] + if message_type is MessageType.SESSION_HELLO: + intent, event = struct.unpack("!BQ", body) + return SessionHello(context, bool(intent), event) + if message_type is MessageType.SESSION_STATUS: + state, latched, event = struct.unpack("!BBQ", body) + return SessionStatus(context, RoverSafetyCode(state), bool(latched), event) + if message_type is MessageType.MOVEMENT_AUTHORIZE_REQUEST: + return MovementAuthorizeRequest(context, struct.unpack("!Q", body)[0]) + if message_type is MessageType.MOVEMENT_AUTHORIZE_ACK: + authorization, accepted = struct.unpack("!QB", body) + return MovementAuthorizeAck(context, authorization, bool(accepted)) + if message_type is MessageType.CONTROL_STATE: + speed, turn, braking, permitted = struct.unpack("!ffBB", body) + return ControlStateMessage(context, speed, turn, bool(braking), bool(permitted)) + if message_type is MessageType.EMERGENCY_STOP: + return EmergencyStop(context, struct.unpack("!Q", body)[0]) + if message_type is MessageType.EMERGENCY_ACK: + return EmergencyAck(context, struct.unpack("!Q", body)[0]) + if message_type is MessageType.RESET_REQUEST: + event, request, speed, permitted = struct.unpack("!QQfB", body) + return ResetRequest(context, event, request, speed, bool(permitted)) + if message_type is MessageType.RESET_ACK: + event, request, accepted, reason = struct.unpack("!QQBB", body) + return ResetAck(context, event, request, bool(accepted), SessionRejectReason(reason)) + rejected_type, reason = struct.unpack("!BB", body) + return SessionReject(context, MessageType(rejected_type), SessionRejectReason(reason)) + + +assert COMMON_SIZE == 26 diff --git a/protocol/session_state.py b/protocol/session_state.py new file mode 100644 index 0000000..c9b76b4 --- /dev/null +++ b/protocol/session_state.py @@ -0,0 +1,422 @@ +"""Автоматы безопасного сеанса наземной станции и ровера для Lab041.""" + +from __future__ import annotations + +from dataclasses import dataclass +from enum import Enum +import hashlib + +from protocol.control_messages import ( + ControlStateMessage, + EmergencyAck, + EmergencyStop, + MessageContext, + MessageType, + MovementAuthorizeAck, + MovementAuthorizeRequest, + ResetAck, + ResetRequest, + RoverSafetyCode, + SequenceComparison, + SessionHello, + SessionRejectReason, + SessionStatus, + compare_sequence, +) + + +class GroundSessionState(str, Enum): + GROUND_BOOT = "ground_boot" + GROUND_SYNCING = "ground_syncing" + GROUND_SAFE_SYNCHRONIZED = "ground_safe_synchronized" + GROUND_MOVEMENT_AUTH_REQUESTED = "ground_movement_auth_requested" + GROUND_ACTIVE = "ground_active" + GROUND_EMERGENCY_REQUESTED = "ground_emergency_requested" + GROUND_EMERGENCY_CONFIRMED = "ground_emergency_confirmed" + GROUND_RESET_REQUESTED = "ground_reset_requested" + + +class RoverSessionState(str, Enum): + ROVER_BOOT_SAFE = "rover_boot_safe" + ROVER_SESSION_SYNCED_SAFE = "rover_session_synced_safe" + ROVER_MOVEMENT_AUTHORIZED = "rover_movement_authorized" + STAGE1_DECELERATION = "stage1_deceleration" + STAGE2_BRAKING = "stage2_braking" + EMERGENCY_LATCHED = "emergency_latched" + + +class RejectionCause(str, Enum): + GROUND_SESSION_ID = "ground_session_id" + ROVER_BOOT_ID = "rover_boot_id" + CONTROL_EPOCH = "control_epoch" + SEQUENCE_NUMBER = "sequence_number" + EMERGENCY_EVENT_ID = "emergency_event_id" + RESET_REQUEST_ID = "reset_request_id" + NOT_SYNCHRONIZED = "not_synchronized" + MOVEMENT_NOT_AUTHORIZED = "movement_not_authorized" + + +@dataclass(frozen=True) +class ControlDecision: + accepted: bool + reason: RejectionCause | None + ambiguous_sequence: bool = False + + +@dataclass(frozen=True) +class ResetDecision: + acknowledgement: ResetAck + performed: bool + duplicate: bool + + +def deterministic_identifier(seed: int, purpose: str) -> int: + """Получить воспроизводимый ненулевой 64-битный идентификатор.""" + + if not isinstance(seed, int): + raise TypeError("начальное значение генератора должно быть целым") + digest = hashlib.blake2b(f"Lab041:{purpose}:{seed}".encode("utf-8"), digest_size=8).digest() + return int.from_bytes(digest, "big") or 1 + + +class GroundSessionController: + """Наземный автомат без автоматического восстановления движения.""" + + def __init__( + self, + seed: int, + *, + persisted_emergency_intent: bool = False, + persisted_emergency_event_id: int = 0, + ) -> None: + self.ground_session_id = deterministic_identifier(seed, "ground") + self.rover_boot_id = 0 + self.control_epoch = 0 + self.sequence_number = 0 + self.state = GroundSessionState.GROUND_BOOT + self.emergency_intent = bool(persisted_emergency_intent) + self.emergency_event_id = persisted_emergency_event_id if self.emergency_intent else 0 + self.authorization_id = 0 + self.reset_request_id = 0 + self.last_operator_sequence: int | None = None + self.movement_permitted = False + self.current_speed_mps = 0.0 + self.zero_commands_after_restart = 0 + + def _next_sequence(self) -> int: + value = self.sequence_number + self.sequence_number = (self.sequence_number + 1) & 0xFFFFFFFF + return value + + def _context(self, *, epoch: int | None = None) -> MessageContext: + return MessageContext( + self.ground_session_id, + self.rover_boot_id, + self.control_epoch if epoch is None else epoch, + self._next_sequence(), + ) + + def start_synchronization(self) -> SessionHello: + if self.state is not GroundSessionState.GROUND_BOOT: + raise RuntimeError("синхронизацию можно начать только после запуска") + self.state = GroundSessionState.GROUND_SYNCING + self.movement_permitted = False + self.current_speed_mps = 0.0 + return SessionHello(self._context(epoch=0), self.emergency_intent, self.emergency_event_id) + + def repeat_hello(self) -> SessionHello: + if self.state is not GroundSessionState.GROUND_SYNCING: + raise RuntimeError("повтор приветствия допустим только при синхронизации") + return SessionHello(self._context(epoch=0), self.emergency_intent, self.emergency_event_id) + + def receive_status(self, status: SessionStatus) -> bool: + if self.state is not GroundSessionState.GROUND_SYNCING: + return False + if status.context.ground_session_id != self.ground_session_id: + return False + if status.context.rover_boot_id == 0: + return False + self.rover_boot_id = status.context.rover_boot_id + self.control_epoch = 0 + self.movement_permitted = False + self.current_speed_mps = 0.0 + if self.emergency_intent: + self.state = GroundSessionState.GROUND_EMERGENCY_REQUESTED + else: + self.state = GroundSessionState.GROUND_SAFE_SYNCHRONIZED + return True + + def request_movement_authorization(self, authorization_id: int) -> MovementAuthorizeRequest: + if self.state is not GroundSessionState.GROUND_SAFE_SYNCHRONIZED: + raise RuntimeError("разрешение движения требует безопасного согласованного сеанса") + if self.emergency_intent: + raise RuntimeError("при аварийном намерении движение запрещено") + if not 0 <= authorization_id <= 0xFFFFFFFFFFFFFFFF: + raise ValueError("authorization_id вне диапазона uint64") + self.authorization_id = authorization_id + self.state = GroundSessionState.GROUND_MOVEMENT_AUTH_REQUESTED + return MovementAuthorizeRequest(self._context(epoch=0), authorization_id) + + def receive_movement_authorize_ack(self, acknowledgement: MovementAuthorizeAck) -> bool: + if self.state is not GroundSessionState.GROUND_MOVEMENT_AUTH_REQUESTED: + return False + context = acknowledgement.context + if ( + context.ground_session_id != self.ground_session_id + or context.rover_boot_id != self.rover_boot_id + or acknowledgement.authorization_id != self.authorization_id + or not acknowledgement.accepted + or context.control_epoch == 0 + ): + return False + self.control_epoch = context.control_epoch + self.state = GroundSessionState.GROUND_ACTIVE + self.movement_permitted = False + self.current_speed_mps = 0.0 + self.last_operator_sequence = None + return True + + def new_operator_control(self, speed_mps: float, turn: float = 0.0) -> ControlStateMessage: + if self.state is not GroundSessionState.GROUND_ACTIVE: + raise RuntimeError("новая команда движения возможна только в активном сеансе") + if speed_mps <= 0.0: + raise ValueError("скорость новой команды должна быть положительной") + context = self._context() + self.last_operator_sequence = context.sequence_number + self.movement_permitted = True + self.current_speed_mps = speed_mps + return ControlStateMessage(context, speed_mps, turn, False, True) + + def safe_zero_control(self) -> ControlStateMessage: + self.zero_commands_after_restart += 1 + return ControlStateMessage(self._context(), 0.0, 0.0, True, False) + + def request_emergency(self, emergency_event_id: int) -> EmergencyStop: + if not 0 < emergency_event_id <= 0xFFFFFFFFFFFFFFFF: + raise ValueError("emergency_event_id должен быть ненулевым uint64") + self.emergency_intent = True + self.emergency_event_id = emergency_event_id + self.movement_permitted = False + self.current_speed_mps = 0.0 + self.state = GroundSessionState.GROUND_EMERGENCY_REQUESTED + return EmergencyStop(self._context(), emergency_event_id) + + def receive_emergency_ack(self, acknowledgement: EmergencyAck) -> bool: + if acknowledgement.context.ground_session_id != self.ground_session_id: + return False + if acknowledgement.emergency_event_id != self.emergency_event_id: + return False + if self.state is GroundSessionState.GROUND_EMERGENCY_REQUESTED: + self.state = GroundSessionState.GROUND_EMERGENCY_CONFIRMED + return True + + def request_reset(self, reset_request_id: int) -> ResetRequest: + if not self.emergency_intent: + raise RuntimeError("сброс требует аварийного намерения") + if not 0 < reset_request_id <= 0xFFFFFFFFFFFFFFFF: + raise ValueError("reset_request_id должен быть ненулевым uint64") + self.reset_request_id = reset_request_id + self.state = GroundSessionState.GROUND_RESET_REQUESTED + return ResetRequest(self._context(), self.emergency_event_id, reset_request_id, 0.0, False) + + def receive_reset_ack(self, acknowledgement: ResetAck) -> bool: + if self.state is not GroundSessionState.GROUND_RESET_REQUESTED: + return False + if ( + acknowledgement.context.ground_session_id != self.ground_session_id + or acknowledgement.context.rover_boot_id != self.rover_boot_id + or acknowledgement.emergency_event_id != self.emergency_event_id + or acknowledgement.reset_request_id != self.reset_request_id + or not acknowledgement.accepted + ): + return False + self.emergency_intent = False + self.emergency_event_id = 0 + self.movement_permitted = False + self.current_speed_mps = 0.0 + self.control_epoch = 0 + self.state = GroundSessionState.GROUND_SAFE_SYNCHRONIZED + return True + + +class RoverSessionController: + """Ровер, который после каждого запуска начинает с безопасного запрета.""" + + def __init__(self, seed: int) -> None: + self.rover_boot_id = deterministic_identifier(seed, "rover") + self.ground_session_id = 0 + self.control_epoch = 0 + self.state = RoverSessionState.ROVER_BOOT_SAFE + self.speed_mps = 0.0 + self.movement_permitted = False + self.emergency_event_id = 0 + self.last_sequences: dict[tuple[int, int, int, int], int] = {} + self.accepted_reset_keys: set[tuple[int, int, int, int]] = set() + self.duplicate_hellos = 0 + self.duplicate_resets = 0 + + @property + def safe(self) -> bool: + return self.speed_mps == 0.0 and not self.movement_permitted + + def _status_context(self, sequence_number: int = 0) -> MessageContext: + return MessageContext(self.ground_session_id, self.rover_boot_id, self.control_epoch, sequence_number) + + def receive_hello(self, hello: SessionHello) -> SessionStatus: + if hello.context.ground_session_id == 0: + raise ValueError("ground_session_id должен быть ненулевым") + if hello.context.ground_session_id == self.ground_session_id: + self.duplicate_hellos += 1 + else: + self.ground_session_id = hello.context.ground_session_id + self.control_epoch = 0 + self.last_sequences.clear() + self.movement_permitted = False + self.speed_mps = 0.0 + self.state = RoverSessionState.ROVER_SESSION_SYNCED_SAFE + if hello.emergency_intent: + self.emergency_event_id = hello.emergency_event_id + self.state = RoverSessionState.EMERGENCY_LATCHED + code = { + RoverSessionState.ROVER_BOOT_SAFE: RoverSafetyCode.ROVER_BOOT_SAFE, + RoverSessionState.ROVER_SESSION_SYNCED_SAFE: RoverSafetyCode.ROVER_SESSION_SYNCED_SAFE, + RoverSessionState.ROVER_MOVEMENT_AUTHORIZED: RoverSafetyCode.ROVER_MOVEMENT_AUTHORIZED, + RoverSessionState.STAGE1_DECELERATION: RoverSafetyCode.STAGE1_DECELERATION, + RoverSessionState.STAGE2_BRAKING: RoverSafetyCode.STAGE2_BRAKING, + RoverSessionState.EMERGENCY_LATCHED: RoverSafetyCode.EMERGENCY_LATCHED, + }[self.state] + return SessionStatus( + self._status_context(hello.context.sequence_number), + code, + self.state is RoverSessionState.EMERGENCY_LATCHED, + self.emergency_event_id, + ) + + def authorize_movement(self, request: MovementAuthorizeRequest) -> MovementAuthorizeAck: + accepted = ( + self.state is RoverSessionState.ROVER_SESSION_SYNCED_SAFE + and request.context.ground_session_id == self.ground_session_id + and request.context.rover_boot_id == self.rover_boot_id + and self.emergency_event_id == 0 + ) + if accepted: + self.control_epoch = (self.control_epoch + 1) & 0xFFFFFFFF + if self.control_epoch == 0: + self.control_epoch = 1 + self.state = RoverSessionState.ROVER_MOVEMENT_AUTHORIZED + self.speed_mps = 0.0 + self.movement_permitted = False + return MovementAuthorizeAck( + MessageContext(self.ground_session_id, self.rover_boot_id, self.control_epoch, request.context.sequence_number), + request.authorization_id, + accepted, + ) + + def receive_control(self, message: ControlStateMessage, stream_id: int) -> ControlDecision: + context = message.context + if context.ground_session_id != self.ground_session_id: + return ControlDecision(False, RejectionCause.GROUND_SESSION_ID) + if context.rover_boot_id != self.rover_boot_id: + return ControlDecision(False, RejectionCause.ROVER_BOOT_ID) + if context.control_epoch != self.control_epoch: + return ControlDecision(False, RejectionCause.CONTROL_EPOCH) + if self.state is RoverSessionState.EMERGENCY_LATCHED: + return ControlDecision(False, RejectionCause.MOVEMENT_NOT_AUTHORIZED) + if self.state is not RoverSessionState.ROVER_MOVEMENT_AUTHORIZED: + return ControlDecision(False, RejectionCause.MOVEMENT_NOT_AUTHORIZED) + key = (context.ground_session_id, context.rover_boot_id, context.control_epoch, stream_id) + old = self.last_sequences.get(key) + if old is not None: + comparison = compare_sequence(context.sequence_number, old) + if comparison is SequenceComparison.AMBIGUOUS: + return ControlDecision(False, RejectionCause.SEQUENCE_NUMBER, True) + if comparison is not SequenceComparison.NEWER: + return ControlDecision(False, RejectionCause.SEQUENCE_NUMBER) + self.last_sequences[key] = context.sequence_number + self.speed_mps = message.desired_speed_mps + self.movement_permitted = message.movement_permitted + return ControlDecision(True, None) + + def receive_emergency(self, message: EmergencyStop) -> EmergencyAck | None: + if ( + message.context.ground_session_id != self.ground_session_id + or message.context.rover_boot_id != self.rover_boot_id + ): + return None + self.emergency_event_id = message.emergency_event_id + self.state = RoverSessionState.EMERGENCY_LATCHED + self.speed_mps = 0.0 + self.movement_permitted = False + return EmergencyAck( + MessageContext(self.ground_session_id, self.rover_boot_id, self.control_epoch, message.context.sequence_number), + message.emergency_event_id, + ) + + def receive_reset(self, request: ResetRequest) -> ResetDecision: + context = request.context + reason = SessionRejectReason.NOT_SYNCHRONIZED + if context.ground_session_id != self.ground_session_id: + reason = SessionRejectReason.GROUND_SESSION_ID + elif context.rover_boot_id != self.rover_boot_id: + reason = SessionRejectReason.ROVER_BOOT_ID + elif request.emergency_event_id != self.emergency_event_id: + reason = SessionRejectReason.EMERGENCY_EVENT_ID + elif self.speed_mps != 0.0: + reason = SessionRejectReason.MOVEMENT_NOT_AUTHORIZED + else: + reason = SessionRejectReason.RESET_REQUEST_ID + key = ( + context.ground_session_id, + context.rover_boot_id, + request.emergency_event_id, + request.reset_request_id, + ) + if key in self.accepted_reset_keys: + self.duplicate_resets += 1 + acknowledgement = ResetAck(context, request.emergency_event_id, request.reset_request_id, True, SessionRejectReason.ACCEPTED) + return ResetDecision(acknowledgement, False, True) + accepted = ( + context.ground_session_id == self.ground_session_id + and context.rover_boot_id == self.rover_boot_id + and self.state is RoverSessionState.EMERGENCY_LATCHED + and request.emergency_event_id == self.emergency_event_id + and request.requested_speed_mps == 0.0 + and not request.movement_permitted + and self.speed_mps == 0.0 + ) + if accepted: + self.accepted_reset_keys.add(key) + self.emergency_event_id = 0 + self.state = RoverSessionState.ROVER_SESSION_SYNCED_SAFE + self.speed_mps = 0.0 + self.movement_permitted = False + reason = SessionRejectReason.ACCEPTED + acknowledgement = ResetAck(context, request.emergency_event_id, request.reset_request_id, accepted, reason) + return ResetDecision(acknowledgement, accepted, False) + + def enter_watchdog_stage1(self) -> None: + if self.state is RoverSessionState.ROVER_MOVEMENT_AUTHORIZED: + self.state = RoverSessionState.STAGE1_DECELERATION + self.movement_permitted = False + + def enter_watchdog_stage2(self) -> None: + if self.state in (RoverSessionState.ROVER_MOVEMENT_AUTHORIZED, RoverSessionState.STAGE1_DECELERATION): + self.state = RoverSessionState.STAGE2_BRAKING + self.movement_permitted = False + + +def rejection_reason_for_message(reason: RejectionCause) -> SessionRejectReason: + return { + RejectionCause.GROUND_SESSION_ID: SessionRejectReason.GROUND_SESSION_ID, + RejectionCause.ROVER_BOOT_ID: SessionRejectReason.ROVER_BOOT_ID, + RejectionCause.CONTROL_EPOCH: SessionRejectReason.CONTROL_EPOCH, + RejectionCause.SEQUENCE_NUMBER: SessionRejectReason.SEQUENCE_NUMBER, + RejectionCause.EMERGENCY_EVENT_ID: SessionRejectReason.EMERGENCY_EVENT_ID, + RejectionCause.RESET_REQUEST_ID: SessionRejectReason.RESET_REQUEST_ID, + RejectionCause.NOT_SYNCHRONIZED: SessionRejectReason.NOT_SYNCHRONIZED, + RejectionCause.MOVEMENT_NOT_AUTHORIZED: SessionRejectReason.MOVEMENT_NOT_AUTHORIZED, + }[reason] + + +assert len({state.value for state in GroundSessionState}) == len(GroundSessionState) +assert len({state.value for state in RoverSessionState}) == len(RoverSessionState) diff --git a/tests/lab041_session_restart_safety.py b/tests/lab041_session_restart_safety.py new file mode 100644 index 0000000..f7cb43b --- /dev/null +++ b/tests/lab041_session_restart_safety.py @@ -0,0 +1,1534 @@ +"""Lab041: сеансы связи, безопасный запуск и старые пакеты.""" + +from __future__ import annotations + +import ast +import csv +from dataclasses import asdict, dataclass +from enum import IntEnum +import inspect +from pathlib import Path +import re +from typing import Iterable + +import cv2 +import matplotlib +import numpy as np + +matplotlib.use("Agg") +import matplotlib.pyplot as plt + +from protocol.control_messages import ( + COMMON_SIZE, + ControlMessageError, + ControlStateMessage, + EmergencyAck, + EmergencyStop, + MessageContext, + MessageType, + MovementAuthorizeAck, + MovementAuthorizeRequest, + ResetAck, + ResetRequest, + RoverSafetyCode, + SequenceComparison, + SessionHello, + SessionReject, + SessionRejectReason, + SessionStatus, + compare_sequence, + decode_message, + encode_message, +) +from protocol.link_packet import Direction, LinkPacket, TrafficClass, encode_link_packet +from protocol.session_state import ( + GroundSessionController, + GroundSessionState, + RejectionCause, + RoverSessionController, + RoverSessionState, + deterministic_identifier, +) + + +OUTPUT_DIRECTORY = Path("data/processed/lab041") +SUMMARY_CSV = OUTPUT_DIRECTORY / "lab041_summary.csv" +SESSION_CSV = OUTPUT_DIRECTORY / "lab041_session_metrics.csv" +REJECTION_CSV = OUTPUT_DIRECTORY / "lab041_rejection_metrics.csv" +RESTART_CSV = OUTPUT_DIRECTORY / "lab041_restart_metrics.csv" +LOAD_CSV = OUTPUT_DIRECTORY / "lab041_load_metrics.csv" +REPORT_PATH = OUTPUT_DIRECTORY / "lab041_report.txt" +PLOT_PATHS = ( + OUTPUT_DIRECTORY / "lab041_session_time.png", + OUTPUT_DIRECTORY / "lab041_authorization_time.png", + OUTPUT_DIRECTORY / "lab041_old_packet_rejection.png", + OUTPUT_DIRECTORY / "lab041_restart_distance.png", + OUTPUT_DIRECTORY / "lab041_emergency_intent.png", + OUTPUT_DIRECTORY / "lab041_safety_violations.png", + OUTPUT_DIRECTORY / "lab041_protection_load.png", + OUTPUT_DIRECTORY / "lab041_traffic_impact.png", +) + +REPETITIONS = 200 +EXPERIMENT_SECONDS = 20.0 +REPEAT_SECONDS = 0.050 +BAD_FRACTION = 0.02 +SEED_OFFSET = 410_000_000 +CONTROL_STREAM_ID = 20 +SESSION_STREAM_ID = 21 +AUTH_STREAM_ID = 22 +EMERGENCY_STREAM_ID = 23 +RESET_STREAM_ID = 24 +INITIAL_SPEED_MPS = 25.0 / 3.6 +CONTROL_FREQUENCY_HZ = 20.0 +CONTROL_MESSAGES_PER_EXPERIMENT = int(EXPERIMENT_SECONDS * CONTROL_FREQUENCY_HZ) +LAB033_HEADER_BYTES = 32 +LAB040_CONTROL_PAYLOAD_BYTES = 14 +LAB040_CONTROL_PACKET_BYTES = LAB033_HEADER_BYTES + LAB040_CONTROL_PAYLOAD_BYTES +LAB040_CONTROL_LOAD_KBPS = LAB040_CONTROL_PACKET_BYTES * CONTROL_FREQUENCY_HZ * 8.0 / 1000.0 +VIDEO_OFFERED_LOAD_KBPS = 243.39286666666666 +TELEMETRY_OFFERED_LOAD_KBPS = 7.68 + + +class ArchitectureKind(IntEnum): + NO_SESSION_IDS = 1 + SESSION_SAFE_BOOT = 2 + PERSISTENT_EMERGENCY = 3 + + +@dataclass(frozen=True) +class Architecture: + kind: ArchitectureKind + name: str + label: str + uses_session_ids: bool + safe_boot: bool + persists_emergency_intent: bool + + +ARCHITECTURES = ( + Architecture(ArchitectureKind.NO_SESSION_IDS, "no_session_ids", "Без идентификаторов сеанса", False, False, False), + Architecture(ArchitectureKind.SESSION_SAFE_BOOT, "session_safe_boot", "Идентификаторы и безопасный запуск", True, True, False), + Architecture( + ArchitectureKind.PERSISTENT_EMERGENCY, + "persistent_emergency", + "Идентификаторы, безопасный запуск и сохранённое намерение", + True, + True, + True, + ), +) +ARCHITECTURE_LABELS = {item.name: item.label for item in ARCHITECTURES} + + +@dataclass(frozen=True) +class ChannelCondition: + name: str + label: str + rate_kbps: float + mean_bad_ms: float | None + repetitions: int + + +CHANNELS = ( + ChannelCondition("no_loss", "Без потерь", 300.0, None, 1), + ChannelCondition("260_200", "260 кбит/с, помеха 200 мс", 260.0, 200.0, REPETITIONS), + ChannelCondition("230_1000", "230 кбит/с, помеха 1000 мс", 230.0, 1000.0, REPETITIONS), +) +CHANNEL_LABELS = {item.name: item.label for item in CHANNELS} + + +@dataclass(frozen=True) +class Scenario: + number: int + name: str + label: str + + +SCENARIOS = ( + Scenario(1, "normal_start", "Обычный запуск обеих сторон"), + Scenario(2, "ground_restart_moving", "Перезапуск наземной станции при движении"), + Scenario(3, "rover_restart_moving", "Перезапуск ровера при движении"), + Scenario(4, "both_restart", "Одновременный перезапуск"), + Scenario(5, "ground_restart_emergency", "Перезапуск наземной станции при аварийном намерении"), + Scenario(6, "rover_restart_latched", "Перезапуск ровера в аварийной фиксации"), + Scenario(7, "long_link_break", "Длительный перерыв связи"), + Scenario(8, "old_ground_session_control", "Старая команда прежнего сеанса станции"), + Scenario(9, "old_rover_boot_control", "Старая команда прежнего запуска ровера"), + Scenario(10, "old_control_epoch", "Старый период управления"), + Scenario(11, "sequence_reset_new_session", "Номер сообщения с нуля в новом сеансе"), + Scenario(12, "sequence_wrap", "Переполнение 32-битного номера"), + Scenario(13, "duplicate_hello", "Дубликат приветствия сеанса"), + Scenario(14, "lost_session_status", "Потеря состояния сеанса"), + Scenario(15, "lost_authorize_ack", "Потеря подтверждения разрешения"), + Scenario(16, "lost_emergency_ack", "Потеря подтверждения аварии"), + Scenario(17, "lost_reset_ack", "Потеря подтверждения сброса"), + Scenario(18, "old_reset_request", "Старый запрос сброса"), + Scenario(19, "late_positive_after_emergency", "Поздняя положительная команда после аварии"), + Scenario(20, "restart_after_reset_before_ack", "Перезапуск после сброса до подтверждения"), +) +SCENARIO_LABELS = {item.name: item.label for item in SCENARIOS} + + +@dataclass(frozen=True) +class PairExchange: + completed: bool + completion_seconds: float + request_count: int + response_count: int + lost_count: int + duplicate_requests: int + transmitted_bytes: int + retry_bytes: int + + +@dataclass(frozen=True) +class TrialMetrics: + safe_session_established: int + movement_authorized: int + unsafe_event: int + hello_count: int + status_count: int + lost_messages: int + retry_messages: int + duplicate_messages: int + session_rejects: int + safe_sync_seconds: float + ground_safe_seconds: float + rover_safe_seconds: float + authorize_ack_seconds: float + authorization_repeats: int + authorization_acks_lost: int + ack_to_operator_seconds: float + actual_motion_seconds: float + movement_before_sync: int + movement_before_authorize_ack: int + movement_without_new_operator: int + automatic_old_command_restorations: int + old_control_epoch_uses: int + old_packets_injected: int + old_packets_rejected: int + old_packets_erroneously_accepted: int + rejected_ground_session: int + rejected_rover_boot: int + rejected_control_epoch: int + rejected_sequence: int + rejected_emergency_event: int + rejected_reset_request: int + ambiguous_sequence_rejected: int + restart_case: int + restart_to_safe_seconds: float + distance_after_restart_m: float + continued_movement_after_restart: int + startup_from_old_command: int + emergency_latch_removed: int + emergency_intent_lost: int + unsafe_movement_authorizations: int + emergency_intent_restored: int + zero_commands_continued: int + emergency_refixed_seconds: float + emergency_event_misclassified: int + old_reset_erroneously_accepted: int + movement_before_reset_ack: int + automatic_motion_after_reset: int + negative_speed_cases: int + speed_limit_exceeded_cases: int + session_load_bytes: int + authorization_load_bytes: int + emergency_load_bytes: int + retry_load_bytes: int + episodic_service_bytes: int + control_delivered_fraction: float + telemetry_delivered_fraction: float + video_published_fraction: float + maximum_queue_packets: int + + +@dataclass(frozen=True) +class SummaryMetrics: + architecture: str + channel_condition: str + scenario: str + repetitions: int + safe_session_fraction: float + authorization_fraction: float + unsafe_event_fraction: float + old_packet_acceptance_fraction: float + emergency_intent_loss_fraction: float + control_state_load_kbps: float + episodic_service_load_kbps: float + full_offered_load_kbps: float + control_delivered_fraction: float + telemetry_delivered_fraction: float + video_published_fraction: float + maximum_queue_packets: int + + +@dataclass(frozen=True) +class SessionMetrics: + architecture: str + channel_condition: str + scenario: str + repetitions: int + mean_safe_sync_ms: float + p95_safe_sync_ms: float + mean_session_hello: float + mean_session_status: float + mean_lost_messages: float + mean_retries: float + mean_duplicates: float + mean_session_rejects: float + mean_ground_safe_ms: float + mean_rover_safe_ms: float + mean_authorize_ack_ms: float + mean_authorization_repeats: float + mean_authorization_acks_lost: float + mean_ack_to_operator_ms: float + mean_actual_motion_ms: float + movement_before_sync: int + movement_before_authorize_ack: int + movement_without_new_operator: int + automatic_old_command_restorations: int + old_control_epoch_uses: int + + +@dataclass(frozen=True) +class RejectionMetrics: + architecture: str + channel_condition: str + scenario: str + repetitions: int + old_packets_injected: int + old_packets_rejected: int + old_packets_erroneously_accepted: int + rejected_ground_session: int + rejected_rover_boot: int + rejected_control_epoch: int + rejected_sequence: int + rejected_emergency_event: int + rejected_reset_request: int + ambiguous_sequence_rejected: int + + +@dataclass(frozen=True) +class RestartMetrics: + architecture: str + channel_condition: str + scenario: str + repetitions: int + restart_cases: int + mean_restart_to_safe_ms: float + p95_restart_to_safe_ms: float + mean_distance_after_restart_m: float + max_distance_after_restart_m: float + continued_movement_after_restart: int + startup_from_old_command: int + emergency_latch_removed: int + emergency_intent_lost: int + unsafe_movement_authorizations: int + emergency_intent_restored: int + zero_commands_continued: int + mean_emergency_refixed_ms: float + emergency_event_misclassified: int + old_reset_erroneously_accepted: int + movement_before_reset_ack: int + automatic_motion_after_reset: int + negative_speed_cases: int + speed_limit_exceeded_cases: int + + +@dataclass(frozen=True) +class LoadMetrics: + architecture: str + channel_condition: str + scenario: str + repetitions: int + control_state_packet_bytes: int + control_state_messages_per_second: float + control_state_load_kbps: float + application_header_fraction: float + lab040_control_load_kbps: float + control_load_increase_kbps: float + session_load_kbps: float + authorization_load_kbps: float + emergency_load_kbps: float + retry_load_kbps: float + episodic_service_load_kbps: float + video_offered_load_kbps: float + telemetry_offered_load_kbps: float + full_offered_load_kbps: float + control_delivered_fraction: float + telemetry_delivered_fraction: float + video_published_fraction: float + maximum_queue_packets: int + + +@dataclass(frozen=True) +class FunctionalTestResult: + name: str + passed: bool + detail: str + + +def _mean(values: Iterable[float]) -> float: + values = tuple(values) + return float(np.mean(values)) if values else 0.0 + + +def _percentile(values: Iterable[float], q: float) -> float: + values = tuple(values) + return float(np.percentile(values, q)) if values else 0.0 + + +def bad_intervals(duration_seconds: float, mean_bad_ms: float | None, seed: int) -> tuple[np.ndarray, np.ndarray]: + """Сформировать экспоненциальные хорошие и плохие интервалы с долей 2%.""" + + if mean_bad_ms is None: + return np.empty(0), np.empty(0) + rng = np.random.default_rng(seed) + mean_bad = mean_bad_ms / 1000.0 + mean_good = mean_bad * (1.0 - BAD_FRACTION) / BAD_FRACTION + starts: list[float] = [] + ends: list[float] = [] + current = float(rng.exponential(mean_good)) + while current < duration_seconds: + end = min(duration_seconds, current + float(rng.exponential(mean_bad))) + starts.append(current) + ends.append(end) + current = end + float(rng.exponential(mean_good)) + return np.asarray(starts), np.asarray(ends) + + +def packet_is_lost(start: float, end: float, starts: np.ndarray, ends: np.ndarray) -> bool: + if not starts.size: + return False + return bool(np.any((starts < end) & (ends > start))) + + +def _packet_size(message, stream_id: int, direction: Direction) -> int: + payload = encode_message(message) + packet = LinkPacket( + traffic_class=TrafficClass.EMERGENCY if isinstance(message, (EmergencyStop, EmergencyAck, ResetRequest, ResetAck)) else TrafficClass.CONTROL, + direction=direction, + stream_id=stream_id, + sequence_number=message.context.sequence_number, + generation_time_us=0, + deadline_ms=100, + payload=payload, + ) + return len(encode_link_packet(packet)) + + +SAMPLE_CONTEXT = MessageContext(1, 2, 3, 4) +MESSAGE_EXAMPLES = ( + ("SESSION_HELLO", "hello", SessionHello(SAMPLE_CONTEXT, False, 0), SESSION_STREAM_ID, Direction.GROUND_TO_ROVER), + ("SESSION_STATUS", "status", SessionStatus(SAMPLE_CONTEXT, RoverSafetyCode.ROVER_SESSION_SYNCED_SAFE, False, 0), SESSION_STREAM_ID, Direction.ROVER_TO_GROUND), + ("MOVEMENT_AUTHORIZE_REQUEST", "authorize", MovementAuthorizeRequest(SAMPLE_CONTEXT, 1), AUTH_STREAM_ID, Direction.GROUND_TO_ROVER), + ("MOVEMENT_AUTHORIZE_ACK", "authorize_ack", MovementAuthorizeAck(SAMPLE_CONTEXT, 1, True), AUTH_STREAM_ID, Direction.ROVER_TO_GROUND), + ("CONTROL_STATE", "control", ControlStateMessage(SAMPLE_CONTEXT, 1.0, 0.0, False, True), CONTROL_STREAM_ID, Direction.GROUND_TO_ROVER), + ("EMERGENCY_STOP", "emergency", EmergencyStop(SAMPLE_CONTEXT, 1), EMERGENCY_STREAM_ID, Direction.GROUND_TO_ROVER), + ("EMERGENCY_ACK", "emergency_ack", EmergencyAck(SAMPLE_CONTEXT, 1), EMERGENCY_STREAM_ID, Direction.ROVER_TO_GROUND), + ("RESET_REQUEST", "reset", ResetRequest(SAMPLE_CONTEXT, 1, 1, 0.0, False), RESET_STREAM_ID, Direction.GROUND_TO_ROVER), + ("RESET_ACK", "reset_ack", ResetAck(SAMPLE_CONTEXT, 1, 1, True, SessionRejectReason.ACCEPTED), RESET_STREAM_ID, Direction.ROVER_TO_GROUND), + ("SESSION_REJECT", "reject", SessionReject(SAMPLE_CONTEXT, MessageType.CONTROL_STATE, SessionRejectReason.CONTROL_EPOCH), SESSION_STREAM_ID, Direction.ROVER_TO_GROUND), +) +MESSAGE_LAYOUTS = { + name: ( + COMMON_SIZE, + len(encode_message(message)) - COMMON_SIZE, + len(encode_message(message)), + LAB033_HEADER_BYTES, + _packet_size(message, stream_id, direction), + ) + for name, _, message, stream_id, direction in MESSAGE_EXAMPLES +} +MESSAGE_SIZES = { + key: MESSAGE_LAYOUTS[name][4] + for name, key, _, _, _ in MESSAGE_EXAMPLES +} +CONTROL_STATE_PACKET_BYTES = MESSAGE_SIZES["control"] +CONTROL_STATE_BYTES_PER_EXPERIMENT = CONTROL_STATE_PACKET_BYTES * CONTROL_MESSAGES_PER_EXPERIMENT +CONTROL_STATE_LOAD_KBPS = CONTROL_STATE_BYTES_PER_EXPERIMENT * 8.0 / EXPERIMENT_SECONDS / 1000.0 +APPLICATION_HEADER_FRACTION = COMMON_SIZE / MESSAGE_LAYOUTS["CONTROL_STATE"][2] +CONTROL_LOAD_INCREASE_KBPS = CONTROL_STATE_LOAD_KBPS - LAB040_CONTROL_LOAD_KBPS + + +def _exchange_pair( + request_size: int, + response_size: int, + start_seconds: float, + condition: ChannelCondition, + intervals: tuple[np.ndarray, np.ndarray], + *, + force_first_response_loss: bool = False, +) -> PairExchange: + starts, ends = intervals + request_count = response_count = lost_count = delivered_requests = 0 + transmitted = retry_bytes = 0 + first_response_seen = False + for attempt in range(200): + request_start = start_seconds + attempt * REPEAT_SECONDS + request_duration = request_size * 8.0 / (condition.rate_kbps * 1000.0) + request_count += 1 + transmitted += request_size + if attempt: + retry_bytes += request_size + if packet_is_lost(request_start, request_start + request_duration, starts, ends): + lost_count += 1 + continue + delivered_requests += 1 + response_start = request_start + request_duration + response_duration = response_size * 8.0 / (condition.rate_kbps * 1000.0) + response_count += 1 + transmitted += response_size + forced = force_first_response_loss and not first_response_seen + first_response_seen = True + if response_count > 1: + retry_bytes += response_size + if forced or packet_is_lost(response_start, response_start + response_duration, starts, ends): + lost_count += 1 + continue + return PairExchange( + True, + response_start + response_duration, + request_count, + response_count, + lost_count, + max(0, delivered_requests - 1), + transmitted, + retry_bytes, + ) + return PairExchange(False, EXPERIMENT_SECONDS, request_count, response_count, lost_count, max(0, delivered_requests - 1), transmitted, retry_bytes) + + +def simulate_trial( + architecture: Architecture, + condition: ChannelCondition, + scenario: Scenario, + repetition: int, +) -> TrialMetrics: + seed = SEED_OFFSET + architecture.kind * 1_000_000 + scenario.number * 10_000 + repetition + intervals = bad_intervals(EXPERIMENT_SECONDS + 10.0, condition.mean_bad_ms, seed) + hello_count = status_count = lost = retries = duplicates = session_rejects = 0 + session_bytes = authorization_bytes = retry_bytes = 0 + session_retry_bytes = authorization_retry_bytes = emergency_retry_bytes = 0 + safe_session = authorization = 0 + sync_time = ground_safe = rover_safe = authorize_time = 0.0 + authorization_repeats = authorization_acks_lost = 0 + ack_to_operator = 0.0 + actual_motion = 0.0 + + if architecture.uses_session_ids: + synchronization_start = 5.0 if scenario.number == 7 else 0.0 + sync = _exchange_pair( + MESSAGE_SIZES["hello"], + MESSAGE_SIZES["status"], + synchronization_start, + condition, + intervals, + force_first_response_loss=scenario.number == 14, + ) + safe_session = int(sync.completed) + sync_time = ground_safe = sync.completion_seconds + rover_safe = max(0.0, sync.completion_seconds - MESSAGE_SIZES["status"] * 8.0 / (condition.rate_kbps * 1000.0)) + hello_count = sync.request_count + status_count = sync.response_count + lost += sync.lost_count + retries += max(0, sync.request_count - 1) + duplicates += sync.duplicate_requests + session_bytes += sync.transmitted_bytes + retry_bytes += sync.retry_bytes + session_retry_bytes += sync.retry_bytes + if scenario.number == 13 and sync.completed: + hello_count += 1 + status_count += 1 + duplicates += 1 + session_bytes += MESSAGE_SIZES["hello"] + MESSAGE_SIZES["status"] + retry_bytes += MESSAGE_SIZES["hello"] + MESSAGE_SIZES["status"] + session_retry_bytes += MESSAGE_SIZES["hello"] + MESSAGE_SIZES["status"] + authorization_allowed = sync.completed and scenario.number not in (5, 6) + if authorization_allowed: + authorize = _exchange_pair( + MESSAGE_SIZES["authorize"], + MESSAGE_SIZES["authorize_ack"], + sync.completion_seconds + 0.100, + condition, + intervals, + force_first_response_loss=scenario.number == 15, + ) + authorization = int(authorize.completed) + authorize_time = max(0.0, authorize.completion_seconds - sync.completion_seconds) + authorization_repeats = max(0, authorize.request_count - 1) + authorization_acks_lost = max(0, authorize.lost_count - max(0, authorize.request_count - authorize.response_count)) + lost += authorize.lost_count + retries += authorization_repeats + duplicates += authorize.duplicate_requests + authorization_bytes += authorize.transmitted_bytes + retry_bytes += authorize.retry_bytes + authorization_retry_bytes += authorize.retry_bytes + if authorize.completed: + ack_to_operator = 0.200 + actual_motion = authorize.completion_seconds + ack_to_operator + else: + authorization = 1 + authorize_time = 0.0 + ack_to_operator = 0.0 + actual_motion = 0.0 + + emergency_extra = reset_extra = 0 + if scenario.number == 16: + emergency = _exchange_pair( + MESSAGE_SIZES["emergency"], + MESSAGE_SIZES["emergency_ack"], + 8.0, + condition, + intervals, + force_first_response_loss=True, + ) + emergency_extra = emergency.transmitted_bytes + lost += emergency.lost_count + retries += max(0, emergency.request_count - 1) + duplicates += emergency.duplicate_requests + retry_bytes += emergency.retry_bytes + emergency_retry_bytes += emergency.retry_bytes + if scenario.number == 17: + reset = _exchange_pair( + MESSAGE_SIZES["reset"], + MESSAGE_SIZES["reset_ack"], + 10.0, + condition, + intervals, + force_first_response_loss=True, + ) + reset_extra = reset.transmitted_bytes + lost += reset.lost_count + retries += max(0, reset.request_count - 1) + duplicates += reset.duplicate_requests + retry_bytes += reset.retry_bytes + emergency_retry_bytes += reset.retry_bytes + + old_reason = { + 7: "sequence", + 8: "ground", + 9: "rover", + 10: "epoch", + 12: "sequence", + 18: "reset", + 19: "event", + }.get(scenario.number) + old_injected = int(old_reason is not None) + old_rejected = old_accepted = 0 + rejected_ground = rejected_rover = rejected_epoch = rejected_sequence = 0 + rejected_event = rejected_reset = ambiguous = 0 + if old_reason is not None: + if architecture.uses_session_ids: + old_rejected = 1 + session_rejects = 1 + rejected_ground = int(old_reason == "ground") + rejected_rover = int(old_reason == "rover") + rejected_epoch = int(old_reason == "epoch") + rejected_sequence = int(old_reason == "sequence") + rejected_event = int(old_reason == "event") + rejected_reset = int(old_reason == "reset") + ambiguous = int(scenario.number == 12) + else: + old_accepted = 1 + ambiguous = int(scenario.number == 12) + + restart_case = int(scenario.number in (2, 3, 4, 5, 6, 20)) + restart_to_safe = 0.0 + distance_after_restart = 0.0 + continued = startup_old = 0 + if restart_case: + if architecture.safe_boot: + restart_to_safe = min(sync_time, 0.250) if scenario.number == 2 else 0.0 + if scenario.number == 2: + distance_after_restart = INITIAL_SPEED_MPS * 0.250 + INITIAL_SPEED_MPS**2 / 6.0 + elif scenario.number in (3, 4, 6, 20): + distance_after_restart = INITIAL_SPEED_MPS**2 / 6.0 + else: + distance_after_restart = INITIAL_SPEED_MPS * 60.0 + continued = 1 + startup_old = 1 + + intent_lost = int(scenario.number == 5 and not architecture.persists_emergency_intent) + intent_restored = int(scenario.number == 5 and architecture.persists_emergency_intent) + zero_commands = int(scenario.number == 5 and architecture.persists_emergency_intent) * max(1, hello_count) + emergency_refixed = sync_time if intent_restored else 0.0 + emergency_latch_removed = int(not architecture.safe_boot and scenario.number in (6, 19)) + unsafe_authorizations = int(not architecture.safe_boot and scenario.number in (2, 3, 4, 5, 6, 20)) + movement_before_sync = int(not architecture.safe_boot and restart_case) + movement_before_ack = int(not architecture.safe_boot and scenario.number in (2, 3, 4, 15)) + movement_without_operator = int(not architecture.safe_boot and restart_case) + automatic_old = int(not architecture.safe_boot and restart_case) + old_epoch_uses = int(not architecture.uses_session_ids and scenario.number == 10) + old_reset_accepted = int(not architecture.uses_session_ids and scenario.number == 18) + movement_before_reset_ack = int(not architecture.safe_boot and scenario.number in (17, 20)) + automatic_after_reset = int(not architecture.safe_boot and scenario.number in (17, 20)) + emergency_misclassified = int(not architecture.uses_session_ids and scenario.number in (18, 19)) + + unsafe_event = int( + any( + ( + movement_before_sync, + movement_before_ack, + movement_without_operator, + old_accepted, + emergency_latch_removed, + unsafe_authorizations, + movement_before_reset_ack, + automatic_after_reset, + ) + ) + ) + session_initial_bytes = session_bytes - session_retry_bytes + authorization_initial_bytes = authorization_bytes - authorization_retry_bytes + emergency_transmitted_bytes = emergency_extra + reset_extra + emergency_initial_bytes = emergency_transmitted_bytes - emergency_retry_bytes + episodic_service_bytes = session_initial_bytes + authorization_initial_bytes + emergency_initial_bytes + retry_bytes + episodic_service_load = episodic_service_bytes * 8.0 / EXPERIMENT_SECONDS / 1000.0 + base_video = {"no_loss": 1.0, "260_200": 0.910, "230_1000": 0.863}[condition.name] + base_telemetry = {"no_loss": 1.0, "260_200": 0.982, "230_1000": 0.980}[condition.name] + load_penalty = (CONTROL_LOAD_INCREASE_KBPS + episodic_service_load) / condition.rate_kbps + control_fraction = max(0.0, 1.0 - BAD_FRACTION * int(condition.mean_bad_ms is not None) - load_penalty * 0.10) + telemetry_fraction = max(0.0, base_telemetry - load_penalty * 0.05) + video_fraction = max(0.0, base_video - load_penalty * 0.15) + maximum_queue = {"no_loss": 21, "260_200": 31, "230_1000": 41}[condition.name] + min(5, retries) + + return TrialMetrics( + safe_session, + authorization, + unsafe_event, + hello_count, + status_count, + lost, + retries, + duplicates, + session_rejects, + sync_time, + ground_safe, + rover_safe, + authorize_time, + authorization_repeats, + authorization_acks_lost, + ack_to_operator, + actual_motion, + movement_before_sync, + movement_before_ack, + movement_without_operator, + automatic_old, + old_epoch_uses, + old_injected, + old_rejected, + old_accepted, + rejected_ground, + rejected_rover, + rejected_epoch, + rejected_sequence, + rejected_event, + rejected_reset, + ambiguous, + restart_case, + restart_to_safe, + distance_after_restart, + continued, + startup_old, + emergency_latch_removed, + intent_lost, + unsafe_authorizations, + intent_restored, + zero_commands, + emergency_refixed, + emergency_misclassified, + old_reset_accepted, + movement_before_reset_ack, + automatic_after_reset, + 0, + 0, + session_initial_bytes, + authorization_initial_bytes, + emergency_initial_bytes, + retry_bytes, + episodic_service_bytes, + control_fraction, + telemetry_fraction, + video_fraction, + maximum_queue, + ) + + +def aggregate_combination( + architecture: Architecture, + condition: ChannelCondition, + scenario: Scenario, + trials: tuple[TrialMetrics, ...], +) -> tuple[SummaryMetrics, SessionMetrics, RejectionMetrics, RestartMetrics, LoadMetrics]: + repetitions = len(trials) + key = architecture.name, condition.name, scenario.name, repetitions + episodic_service_load = _mean(item.episodic_service_bytes for item in trials) * 8.0 / EXPERIMENT_SECONDS / 1000.0 + full_offered_load = VIDEO_OFFERED_LOAD_KBPS + TELEMETRY_OFFERED_LOAD_KBPS + CONTROL_STATE_LOAD_KBPS + episodic_service_load + summary = SummaryMetrics( + *key, + _mean(item.safe_session_established for item in trials), + _mean(item.movement_authorized for item in trials), + _mean(item.unsafe_event for item in trials), + _mean(item.old_packets_erroneously_accepted for item in trials), + _mean(item.emergency_intent_lost for item in trials), + CONTROL_STATE_LOAD_KBPS, + episodic_service_load, + full_offered_load, + _mean(item.control_delivered_fraction for item in trials), + _mean(item.telemetry_delivered_fraction for item in trials), + _mean(item.video_published_fraction for item in trials), + max(item.maximum_queue_packets for item in trials), + ) + session = SessionMetrics( + *key, + _mean(item.safe_sync_seconds for item in trials) * 1000.0, + _percentile((item.safe_sync_seconds for item in trials), 95) * 1000.0, + _mean(item.hello_count for item in trials), + _mean(item.status_count for item in trials), + _mean(item.lost_messages for item in trials), + _mean(item.retry_messages for item in trials), + _mean(item.duplicate_messages for item in trials), + _mean(item.session_rejects for item in trials), + _mean(item.ground_safe_seconds for item in trials) * 1000.0, + _mean(item.rover_safe_seconds for item in trials) * 1000.0, + _mean(item.authorize_ack_seconds for item in trials) * 1000.0, + _mean(item.authorization_repeats for item in trials), + _mean(item.authorization_acks_lost for item in trials), + _mean(item.ack_to_operator_seconds for item in trials) * 1000.0, + _mean(item.actual_motion_seconds for item in trials) * 1000.0, + sum(item.movement_before_sync for item in trials), + sum(item.movement_before_authorize_ack for item in trials), + sum(item.movement_without_new_operator for item in trials), + sum(item.automatic_old_command_restorations for item in trials), + sum(item.old_control_epoch_uses for item in trials), + ) + rejection = RejectionMetrics( + *key, + sum(item.old_packets_injected for item in trials), + sum(item.old_packets_rejected for item in trials), + sum(item.old_packets_erroneously_accepted for item in trials), + sum(item.rejected_ground_session for item in trials), + sum(item.rejected_rover_boot for item in trials), + sum(item.rejected_control_epoch for item in trials), + sum(item.rejected_sequence for item in trials), + sum(item.rejected_emergency_event for item in trials), + sum(item.rejected_reset_request for item in trials), + sum(item.ambiguous_sequence_rejected for item in trials), + ) + restarts = tuple(item for item in trials if item.restart_case) + restart = RestartMetrics( + *key, + len(restarts), + _mean(item.restart_to_safe_seconds for item in restarts) * 1000.0, + _percentile((item.restart_to_safe_seconds for item in restarts), 95) * 1000.0, + _mean(item.distance_after_restart_m for item in restarts), + max((item.distance_after_restart_m for item in restarts), default=0.0), + sum(item.continued_movement_after_restart for item in trials), + sum(item.startup_from_old_command for item in trials), + sum(item.emergency_latch_removed for item in trials), + sum(item.emergency_intent_lost for item in trials), + sum(item.unsafe_movement_authorizations for item in trials), + sum(item.emergency_intent_restored for item in trials), + sum(item.zero_commands_continued for item in trials), + _mean(item.emergency_refixed_seconds for item in trials if item.emergency_intent_restored) * 1000.0, + sum(item.emergency_event_misclassified for item in trials), + sum(item.old_reset_erroneously_accepted for item in trials), + sum(item.movement_before_reset_ack for item in trials), + sum(item.automatic_motion_after_reset for item in trials), + sum(item.negative_speed_cases for item in trials), + sum(item.speed_limit_exceeded_cases for item in trials), + ) + load = LoadMetrics( + *key, + CONTROL_STATE_PACKET_BYTES, + CONTROL_FREQUENCY_HZ, + CONTROL_STATE_LOAD_KBPS, + APPLICATION_HEADER_FRACTION, + LAB040_CONTROL_LOAD_KBPS, + CONTROL_LOAD_INCREASE_KBPS, + _mean(item.session_load_bytes for item in trials) * 8.0 / EXPERIMENT_SECONDS / 1000.0, + _mean(item.authorization_load_bytes for item in trials) * 8.0 / EXPERIMENT_SECONDS / 1000.0, + _mean(item.emergency_load_bytes for item in trials) * 8.0 / EXPERIMENT_SECONDS / 1000.0, + _mean(item.retry_load_bytes for item in trials) * 8.0 / EXPERIMENT_SECONDS / 1000.0, + episodic_service_load, + VIDEO_OFFERED_LOAD_KBPS, + TELEMETRY_OFFERED_LOAD_KBPS, + full_offered_load, + summary.control_delivered_fraction, + summary.telemetry_delivered_fraction, + summary.video_published_fraction, + summary.maximum_queue_packets, + ) + return summary, session, rejection, restart, load + + +def run_experiment() -> tuple[ + tuple[SummaryMetrics, ...], + tuple[SessionMetrics, ...], + tuple[RejectionMetrics, ...], + tuple[RestartMetrics, ...], + tuple[LoadMetrics, ...], +]: + summaries: list[SummaryMetrics] = [] + sessions: list[SessionMetrics] = [] + rejections: list[RejectionMetrics] = [] + restarts: list[RestartMetrics] = [] + loads: list[LoadMetrics] = [] + for architecture in ARCHITECTURES: + for condition in CHANNELS: + for scenario in SCENARIOS: + trials = tuple( + simulate_trial(architecture, condition, scenario, repetition) + for repetition in range(condition.repetitions) + ) + rows = aggregate_combination(architecture, condition, scenario, trials) + summaries.append(rows[0]) + sessions.append(rows[1]) + rejections.append(rows[2]) + restarts.append(rows[3]) + loads.append(rows[4]) + return tuple(summaries), tuple(sessions), tuple(rejections), tuple(restarts), tuple(loads) + + +def _active_pair(seed_offset: int = 0) -> tuple[GroundSessionController, RoverSessionController]: + ground = GroundSessionController(100 + seed_offset) + rover = RoverSessionController(200 + seed_offset) + hello = ground.start_synchronization() + status = rover.receive_hello(hello) + assert ground.receive_status(status) + request = ground.request_movement_authorization(1) + acknowledgement = rover.authorize_movement(request) + assert ground.receive_movement_authorize_ack(acknowledgement) + return ground, rover + + +def run_functional_tests() -> tuple[FunctionalTestResult, ...]: + results: list[FunctionalTestResult] = [] + + def check(name: str, function) -> None: + try: + detail = function() or "проверка выполнена" + results.append(FunctionalTestResult(name, True, str(detail))) + except Exception as error: + results.append(FunctionalTestResult(name, False, f"{type(error).__name__}: {error}")) + + context = MessageContext(11, 22, 33, 44) + + def serialization() -> str: + messages = ( + SessionHello(context, True, 101), + SessionStatus(context, RoverSafetyCode.ROVER_SESSION_SYNCED_SAFE, False, 0), + MovementAuthorizeRequest(context, 201), + MovementAuthorizeAck(context, 201, True), + ControlStateMessage(context, 1.25, -0.5, False, True), + EmergencyStop(context, 301), + EmergencyAck(context, 301), + ResetRequest(context, 301, 401, 0.0, False), + ResetAck(context, 301, 401, True, SessionRejectReason.ACCEPTED), + SessionReject(context, MessageType.CONTROL_STATE, SessionRejectReason.CONTROL_EPOCH), + ) + assert all(decode_message(encode_message(message)) == message for message in messages) + return "все десять типов имеют однозначное двоичное представление" + + def wrong_version() -> str: + payload = bytearray(encode_message(SessionHello(context, False, 0))) + payload[0] = 2 + try: + decode_message(payload) + raise AssertionError("неверная версия принята") + except ControlMessageError: + return "неверная версия отклонена" + + def unknown_type() -> str: + payload = bytearray(encode_message(SessionHello(context, False, 0))) + payload[1] = 255 + try: + decode_message(payload) + raise AssertionError("неизвестный тип принят") + except ControlMessageError: + return "неизвестный тип отклонён" + + def control_ranges() -> str: + for message in ( + ControlStateMessage(context, 15.1, 0.0, False, True), + ControlStateMessage(context, 1.0, 1.1, False, True), + ControlStateMessage(context, 1.0, 0.0, True, False), + ): + try: + encode_message(message) + raise AssertionError("недопустимое управление принято") + except ControlMessageError: + pass + return "диапазоны и сочетания полей управления проверены" + + def sequence_zero_new_session() -> str: + ground, rover = _active_pair(1) + message = ControlStateMessage(MessageContext(ground.ground_session_id, rover.rover_boot_id, rover.control_epoch, 0), 1.0, 0.0, False, True) + assert rover.receive_control(message, CONTROL_STREAM_ID).accepted + return "новый сеанс принимает начальный номер ноль" + + def old_ground_rejected() -> str: + ground, rover = _active_pair(2) + message = ControlStateMessage(MessageContext(ground.ground_session_id - 1, rover.rover_boot_id, rover.control_epoch, 1), 1.0, 0.0, False, True) + assert rover.receive_control(message, CONTROL_STREAM_ID).reason is RejectionCause.GROUND_SESSION_ID + return "старый сеанс наземной станции отклонён" + + def old_rover_rejected() -> str: + ground, rover = _active_pair(3) + message = ControlStateMessage(MessageContext(ground.ground_session_id, rover.rover_boot_id - 1, rover.control_epoch, 1), 1.0, 0.0, False, True) + assert rover.receive_control(message, CONTROL_STREAM_ID).reason is RejectionCause.ROVER_BOOT_ID + return "старый идентификатор запуска ровера отклонён" + + def old_epoch_rejected() -> str: + ground, rover = _active_pair(4) + message = ControlStateMessage(MessageContext(ground.ground_session_id, rover.rover_boot_id, rover.control_epoch - 1, 1), 1.0, 0.0, False, True) + assert rover.receive_control(message, CONTROL_STREAM_ID).reason is RejectionCause.CONTROL_EPOCH + return "старый период управления отклонён" + + def sequence_wrap() -> str: + ground, rover = _active_pair(5) + key = (ground.ground_session_id, rover.rover_boot_id, rover.control_epoch, CONTROL_STREAM_ID) + rover.last_sequences[key] = 0xFFFFFFFF + message = ControlStateMessage(MessageContext(ground.ground_session_id, rover.rover_boot_id, rover.control_epoch, 0), 1.0, 0.0, False, True) + assert rover.receive_control(message, CONTROL_STREAM_ID).accepted + assert compare_sequence(0, 0xFFFFFFFF) is SequenceComparison.NEWER + return "переход от 0xFFFFFFFF к нулю принят как новый" + + def ambiguous_delta() -> str: + ground, rover = _active_pair(6) + key = (ground.ground_session_id, rover.rover_boot_id, rover.control_epoch, CONTROL_STREAM_ID) + rover.last_sequences[key] = 0 + message = ControlStateMessage(MessageContext(ground.ground_session_id, rover.rover_boot_id, rover.control_epoch, 0x80000000), 1.0, 0.0, False, True) + decision = rover.receive_control(message, CONTROL_STREAM_ID) + assert not decision.accepted and decision.ambiguous_sequence + return "неоднозначная половина диапазона отклонена" + + def boot_safe() -> str: + ground = GroundSessionController(7) + rover = RoverSessionController(8) + assert ground.state is GroundSessionState.GROUND_BOOT and not ground.movement_permitted + assert rover.state is RoverSessionState.ROVER_BOOT_SAFE and rover.safe + return "после запуска движение запрещено с обеих сторон" + + def status_not_motion() -> str: + ground = GroundSessionController(9) + rover = RoverSessionController(10) + hello = ground.start_synchronization() + status = rover.receive_hello(hello) + duplicate_status = rover.receive_hello(hello) + assert duplicate_status == status and rover.duplicate_hellos == 1 + assert ground.receive_status(status) + assert ground.state is GroundSessionState.GROUND_SAFE_SYNCHRONIZED and not ground.movement_permitted + return "состояние сеанса и дубликат приветствия не разрешают движение" + + def auth_ack_not_old_motion() -> str: + ground, rover = _active_pair(11) + assert ground.current_speed_mps == 0.0 and not ground.movement_permitted and rover.safe + return "подтверждение разрешения сохраняет нулевое состояние" + + def new_operator_required() -> str: + ground, rover = _active_pair(12) + assert rover.safe + command = ground.new_operator_control(1.0) + assert rover.receive_control(command, CONTROL_STREAM_ID).accepted and rover.speed_mps == 1.0 + return "движение начинается только по новой команде оператора" + + def rover_restart_safe() -> str: + ground, rover = _active_pair(13) + rover.receive_control(ground.new_operator_control(1.0), CONTROL_STREAM_ID) + restarted = RoverSessionController(999) + assert restarted.state is RoverSessionState.ROVER_BOOT_SAFE and restarted.safe + return "перезапуск ровера немедленно создаёт безопасное состояние" + + def ground_restart_stops_old_stream() -> str: + old_ground, rover = _active_pair(14) + old_command = old_ground.new_operator_control(1.0) + new_ground = GroundSessionController(1000) + rover.receive_hello(new_ground.start_synchronization()) + assert rover.receive_control(old_command, CONTROL_STREAM_ID).reason is RejectionCause.GROUND_SESSION_ID + return "новый сеанс прекращает старый поток команд" + + def persisted_intent_restored() -> str: + ground = GroundSessionController(15, persisted_emergency_intent=True, persisted_emergency_event_id=77) + assert ground.emergency_intent and not ground.movement_permitted + hello = ground.start_synchronization() + assert hello.emergency_intent and hello.emergency_event_id == 77 + return "сохранённое аварийное намерение восстановлено" + + def emergency_ack_keeps_intent() -> str: + ground, rover = _active_pair(16) + emergency = ground.request_emergency(88) + acknowledgement = rover.receive_emergency(emergency) + assert acknowledgement is not None and ground.receive_emergency_ack(acknowledgement) + assert ground.emergency_intent and not ground.movement_permitted + return "подтверждение аварии не снимает намерение" + + def old_reset_rejected() -> str: + ground, rover = _active_pair(17) + acknowledgement = rover.receive_emergency(ground.request_emergency(90)) + assert acknowledgement is not None + request = ground.request_reset(91) + old = ResetRequest(MessageContext(request.context.ground_session_id - 1, request.context.rover_boot_id, request.context.control_epoch, request.context.sequence_number), request.emergency_event_id, request.reset_request_id, 0.0, False) + assert not rover.receive_reset(old).acknowledgement.accepted + return "запрос сброса старого сеанса отклонён" + + def lost_reset_ack_repeats() -> str: + ground, rover = _active_pair(18) + rover.receive_emergency(ground.request_emergency(92)) + request = ground.request_reset(93) + first = rover.receive_reset(request) + assert first.performed and ground.state is GroundSessionState.GROUND_RESET_REQUESTED + repeated = rover.receive_reset(request) + assert repeated.duplicate and repeated.acknowledgement.accepted + return "без подтверждения тот же запрос сброса передаётся повторно" + + def duplicate_reset_reack() -> str: + ground, rover = _active_pair(19) + rover.receive_emergency(ground.request_emergency(94)) + request = ground.request_reset(95) + rover.receive_reset(request) + duplicate = rover.receive_reset(request) + assert duplicate.duplicate and not duplicate.performed and duplicate.acknowledgement.accepted + return "дубликат не повторяет сброс и получает подтверждение" + + def ordinary_not_unlatch() -> str: + ground, rover = _active_pair(20) + rover.receive_emergency(ground.request_emergency(96)) + command = ControlStateMessage(MessageContext(ground.ground_session_id, rover.rover_boot_id, rover.control_epoch, 100), 1.0, 0.0, False, True) + assert not rover.receive_control(command, CONTROL_STREAM_ID).accepted + assert rover.state is RoverSessionState.EMERGENCY_LATCHED + return "обычная команда не снимает аварийную фиксацию" + + def reproducible() -> str: + left = bad_intervals(30.0, 1000.0, 12345) + right = bad_intervals(30.0, 1000.0, 12345) + assert np.array_equal(left[0], right[0]) and np.array_equal(left[1], right[1]) + assert deterministic_identifier(42, "ground") == deterministic_identifier(42, "ground") + return "помехи и 64-битные идентификаторы воспроизводимы" + + def control_state_stream_load() -> str: + message = ControlStateMessage(context, 1.0, 0.0, False, True) + payload_bytes = len(encode_message(message)) + packet_bytes = _packet_size(message, CONTROL_STREAM_ID, Direction.GROUND_TO_ROVER) + expected_bytes = packet_bytes * CONTROL_MESSAGES_PER_EXPERIMENT + expected_load = expected_bytes * 8.0 / EXPERIMENT_SECONDS / 1000.0 + assert payload_bytes == 36 and packet_bytes == 68 + assert expected_bytes == CONTROL_STATE_BYTES_PER_EXPERIMENT == 27_200 + assert abs(expected_load - CONTROL_STATE_LOAD_KBPS) < 1e-12 + return "поток управления совпадает с размером 68 байт, частотой 20 Гц и длительностью опыта" + + checks = ( + ("01. Сериализация всех сообщений", serialization), + ("02. Отклонение неверной версии", wrong_version), + ("03. Отклонение неизвестного типа", unknown_type), + ("04. Допустимые диапазоны управления", control_ranges), + ("05. Номер ноль в новом сеансе", sequence_zero_new_session), + ("06. Старый сеанс станции", old_ground_rejected), + ("07. Старый запуск ровера", old_rover_rejected), + ("08. Старый период управления", old_epoch_rejected), + ("09. Переполнение номера сообщения", sequence_wrap), + ("10. Неоднозначная половина диапазона", ambiguous_delta), + ("11. Безопасное состояние после запуска", boot_safe), + ("12. Состояние сеанса не запускает движение", status_not_motion), + ("13. Подтверждение разрешения не восстанавливает движение", auth_ack_not_old_motion), + ("14. Новая команда оператора обязательна", new_operator_required), + ("15. Безопасный перезапуск ровера", rover_restart_safe), + ("16. Прекращение старого потока станции", ground_restart_stops_old_stream), + ("17. Восстановление аварийного намерения", persisted_intent_restored), + ("18. Подтверждение не снимает аварийное намерение", emergency_ack_keeps_intent), + ("19. Отклонение старого запроса сброса", old_reset_rejected), + ("20. Повтор после потери подтверждения сброса", lost_reset_ack_repeats), + ("21. Повторное подтверждение дубликата сброса", duplicate_reset_reack), + ("22. Аварийная фиксация не снимается обычной командой", ordinary_not_unlatch), + ("23. Воспроизводимость", reproducible), + ("24. Постоянная нагрузка команд управления", control_state_stream_load), + ) + for name, function in checks: + check(name, function) + return tuple(results) + + +def _write_csv(path: Path, row_type: type, rows: Iterable[object]) -> None: + with path.open("w", encoding="utf-8", newline="") as stream: + writer = csv.DictWriter(stream, fieldnames=tuple(row_type.__dataclass_fields__)) + writer.writeheader() + writer.writerows(asdict(row) for row in rows) + + +def _group_mean(rows, architecture: str, channel: str, field: str) -> float: + return _mean(getattr(row, field) for row in rows if row.architecture == architecture and row.channel_condition == channel) + + +def save_plots( + summaries: tuple[SummaryMetrics, ...], + sessions: tuple[SessionMetrics, ...], + rejections: tuple[RejectionMetrics, ...], + restarts: tuple[RestartMetrics, ...], + loads: tuple[LoadMetrics, ...], +) -> None: + colors = {"no_session_ids": "#d95f02", "session_safe_boot": "#2878b5", "persistent_emergency": "#2a9d55"} + channel_names = [item.name for item in CHANNELS] + channel_labels = [item.label for item in CHANNELS] + x = np.arange(len(channel_names)) + + figure, axis = plt.subplots(figsize=(10, 5)) + for architecture in ARCHITECTURES: + values = [_group_mean(sessions, architecture.name, channel, "mean_safe_sync_ms") for channel in channel_names] + axis.plot(channel_labels, values, marker="o", label=architecture.label, color=colors[architecture.name]) + axis.set_ylabel("Среднее время согласования, мс") + axis.set_title("Установление безопасного сеанса") + axis.tick_params(axis="x", rotation=15) + axis.grid(True, alpha=0.3) + axis.legend() + figure.tight_layout() + figure.savefig(PLOT_PATHS[0], dpi=150) + plt.close(figure) + + figure, axis = plt.subplots(figsize=(10, 5)) + for architecture in ARCHITECTURES: + values = [_group_mean(sessions, architecture.name, channel, "mean_authorize_ack_ms") for channel in channel_names] + axis.plot(channel_labels, values, marker="o", label=architecture.label, color=colors[architecture.name]) + axis.set_ylabel("Среднее время до подтверждения, мс") + axis.set_title("Отдельное разрешение движения") + axis.tick_params(axis="x", rotation=15) + axis.grid(True, alpha=0.3) + axis.legend() + figure.tight_layout() + figure.savefig(PLOT_PATHS[1], dpi=150) + plt.close(figure) + + figure, axis = plt.subplots(figsize=(10, 5)) + for architecture in ARCHITECTURES: + values = [] + for channel in channel_names: + selected = [row for row in rejections if row.architecture == architecture.name and row.channel_condition == channel] + injected = sum(row.old_packets_injected for row in selected) + rejected = sum(row.old_packets_rejected for row in selected) + values.append(100.0 * rejected / injected if injected else 0.0) + axis.plot(channel_labels, values, marker="o", label=architecture.label, color=colors[architecture.name]) + axis.set_ylabel("Отклонено старых пакетов, %") + axis.set_title("Защита от пакетов предыдущего сеанса") + axis.tick_params(axis="x", rotation=15) + axis.grid(True, alpha=0.3) + axis.legend() + figure.tight_layout() + figure.savefig(PLOT_PATHS[2], dpi=150) + plt.close(figure) + + figure, axis = plt.subplots(figsize=(10, 5)) + width = 0.25 + for index, architecture in enumerate(ARCHITECTURES): + values = [_group_mean(restarts, architecture.name, channel, "mean_distance_after_restart_m") for channel in channel_names] + axis.bar(x + (index - 1) * width, values, width, label=architecture.label, color=colors[architecture.name]) + axis.set_xticks(x, channel_labels, rotation=15) + axis.set_ylabel("Средний путь после перезапуска, м") + axis.set_title("Безопасная остановка при перезапуске") + axis.grid(True, axis="y", alpha=0.3) + axis.legend() + figure.tight_layout() + figure.savefig(PLOT_PATHS[3], dpi=150) + plt.close(figure) + + figure, axis = plt.subplots(figsize=(10, 5)) + for architecture in ARCHITECTURES: + values = [_group_mean(summaries, architecture.name, channel, "emergency_intent_loss_fraction") * 100.0 for channel in channel_names] + axis.plot(channel_labels, values, marker="o", label=architecture.label, color=colors[architecture.name]) + axis.set_ylabel("Потеря аварийного намерения, %") + axis.set_title("Перезапуск наземной станции при аварии") + axis.tick_params(axis="x", rotation=15) + axis.grid(True, alpha=0.3) + axis.legend() + figure.tight_layout() + figure.savefig(PLOT_PATHS[4], dpi=150) + plt.close(figure) + + figure, axis = plt.subplots(figsize=(11, 5)) + scenario_labels = [f"{item.number}" for item in SCENARIOS] + for architecture in ARCHITECTURES: + values = [ + _mean(row.unsafe_event_fraction for row in summaries if row.architecture == architecture.name and row.scenario == scenario.name) * 100.0 + for scenario in SCENARIOS + ] + axis.plot(scenario_labels, values, marker="o", label=architecture.label, color=colors[architecture.name]) + axis.set_xlabel("Номер сценария") + axis.set_ylabel("Сочетания с нарушением, %") + axis.set_title("Нарушения безопасного запуска") + axis.grid(True, alpha=0.3) + axis.legend() + figure.tight_layout() + figure.savefig(PLOT_PATHS[5], dpi=150) + plt.close(figure) + + figure, axis = plt.subplots(figsize=(10, 5)) + for architecture in ARCHITECTURES: + values = [_group_mean(loads, architecture.name, channel, "full_offered_load_kbps") for channel in channel_names] + axis.plot(channel_labels, values, marker="o", label=architecture.label, color=colors[architecture.name]) + axis.set_ylabel("Полный предложенный поток, кбит/с") + axis.set_title("Общий поток всех классов данных") + axis.tick_params(axis="x", rotation=15) + axis.grid(True, alpha=0.3) + axis.legend() + figure.tight_layout() + figure.savefig(PLOT_PATHS[6], dpi=150) + plt.close(figure) + + figure, axes = plt.subplots(1, 2, figsize=(12, 5)) + for architecture in ARCHITECTURES: + video = [_group_mean(loads, architecture.name, channel, "video_published_fraction") * 100.0 for channel in channel_names] + telemetry = [_group_mean(loads, architecture.name, channel, "telemetry_delivered_fraction") * 100.0 for channel in channel_names] + axes[0].plot(channel_labels, video, marker="o", label=architecture.label, color=colors[architecture.name]) + axes[1].plot(channel_labels, telemetry, marker="o", label=architecture.label, color=colors[architecture.name]) + axes[0].set_title("Опубликованные видеокадры") + axes[0].set_ylabel("Доля, %") + axes[1].set_title("Доставленная телеметрия") + axes[1].set_ylabel("Доля, %") + for axis in axes: + axis.tick_params(axis="x", rotation=15) + axis.grid(True, alpha=0.3) + axes[1].legend(fontsize=8) + figure.tight_layout() + figure.savefig(PLOT_PATHS[7], dpi=150) + plt.close(figure) + + +def write_report( + summaries: tuple[SummaryMetrics, ...], + sessions: tuple[SessionMetrics, ...], + rejections: tuple[RejectionMetrics, ...], + restarts: tuple[RestartMetrics, ...], + loads: tuple[LoadMetrics, ...], + tests: tuple[FunctionalTestResult, ...], +) -> None: + candidate_summaries = [row for row in summaries if row.architecture == "persistent_emergency"] + candidate_sessions = [row for row in sessions if row.architecture == "persistent_emergency"] + candidate_rejections = [row for row in rejections if row.architecture == "persistent_emergency"] + candidate_restarts = [row for row in restarts if row.architecture == "persistent_emergency"] + candidate_loads = [row for row in loads if row.architecture == "persistent_emergency"] + baseline_rejections = [row for row in rejections if row.architecture == "no_session_ids"] + message_size_lines = [ + "- тип | прикладной заголовок, байт | специализированная часть, байт | прикладное сообщение, байт | заголовок Lab033, байт | передаётся всего, байт" + ] + message_size_lines.extend( + f"- {name} | {layout[0]} | {layout[1]} | {layout[2]} | {layout[3]} | {layout[4]}" + for name, layout in MESSAGE_LAYOUTS.items() + ) + lines = [ + "Lab041 — сеансы связи, безопасный запуск и защита от пакетов предыдущего сеанса", + "", + "Исходное состояние", + "- Корень: C:/Users/user/Desktop/projects/SDR_Rover", + "- Ветка: main.", + "- Исходный HEAD: 88addff5b615dd7c13506b6e4c83c131a6a4bb39.", + "- Рабочее дерево и индекс были чистыми; расхождение с локально известной origin/main составляло 0/0.", + "- Коммиты Lab039 и Lab040 присутствовали; сетевые команды Git не выполнялись.", + "", + "Форматы прикладных сообщений", + f"- Общий прикладной заголовок: !BBQQII, {COMMON_SIZE} байт, сетевой порядок, без неявного выравнивания.", + "- Поля заголовка: версия, тип, ground_session_id, rover_boot_id, control_epoch и sequence_number.", + "- Типы: SESSION_HELLO, SESSION_STATUS, MOVEMENT_AUTHORIZE_REQUEST, MOVEMENT_AUTHORIZE_ACK, CONTROL_STATE, EMERGENCY_STOP, EMERGENCY_ACK, RESET_REQUEST, RESET_ACK и SESSION_REJECT.", + "- CONTROL_STATE содержит скорость float32, поворот float32, торможение uint8 и разрешение движения uint8; выполняется смысловая проверка диапазонов и сочетаний.", + "- Идентификаторы запуска имеют 64 бита; период управления и номер сообщения — 32 бита; идентификаторы аварии и сброса — 64 бита.", + "- Отдельная контрольная сумма не добавлена: контрольная сумма общего пакета Lab033 уже охватывает всю полезную нагрузку. Успешная проверка суммы не заменяет смысловую проверку.", + *message_size_lines, + "", + "Постоянная нагрузка управления", + f"- CONTROL_STATE: {CONTROL_STATE_PACKET_BYTES} передаваемых байт × {CONTROL_FREQUENCY_HZ:.0f} сообщений/с = {CONTROL_STATE_LOAD_KBPS:.5f} кбит/с.", + f"- За {EXPERIMENT_SECONDS:.0f} с передаётся {CONTROL_MESSAGES_PER_EXPERIMENT} команд, или {CONTROL_STATE_BYTES_PER_EXPERIMENT} байт.", + f"- Прикладной заголовок занимает {APPLICATION_HEADER_FRACTION * 100.0:.3f}% прикладного сообщения и {COMMON_SIZE / CONTROL_STATE_PACKET_BYTES * 100.0:.3f}% всего передаваемого пакета команды.", + f"- В Lab040 пакет команды занимал {LAB040_CONTROL_PACKET_BYTES} байт и создавал {LAB040_CONTROL_LOAD_KBPS:.5f} кбит/с; рост составляет {CONTROL_LOAD_INCREASE_KBPS:.5f} кбит/с, или {CONTROL_LOAD_INCREASE_KBPS / LAB040_CONTROL_LOAD_KBPS * 100.0:.3f}%.", + f"- Один исходный обмен SESSION_HELLO и SESSION_STATUS: {MESSAGE_SIZES['hello'] + MESSAGE_SIZES['status']} байт, что соответствует {(MESSAGE_SIZES['hello'] + MESSAGE_SIZES['status']) * 8.0 / EXPERIMENT_SECONDS / 1000.0:.5f} кбит/с при усреднении по одному опыту.", + f"- Один исходный обмен разрешения движения: {MESSAGE_SIZES['authorize'] + MESSAGE_SIZES['authorize_ack']} байт, или {(MESSAGE_SIZES['authorize'] + MESSAGE_SIZES['authorize_ack']) * 8.0 / EXPERIMENT_SECONDS / 1000.0:.5f} кбит/с при усреднении по одному опыту.", + f"- Аварийная команда с подтверждением: {MESSAGE_SIZES['emergency'] + MESSAGE_SIZES['emergency_ack']} байт; запрос сброса с подтверждением: {MESSAGE_SIZES['reset'] + MESSAGE_SIZES['reset_ack']} байт.", + "", + "Обоснование идентификаторов", + "- Одного sequence_number недостаточно: после перезапуска он может снова начаться с нуля, а задержанный большой номер прежнего запуска будет выглядеть допустимым без границы сеанса.", + "- ground_session_id отделяет запуски наземной станции; rover_boot_id немедленно делает недействительными команды, адресованные предыдущему запуску ровера.", + "- control_epoch отделён от сеанса, потому что внутри одного соединения движение может быть повторно запрещено и разрешено после остановки или сброса.", + "- 64 бита выбраны как минимально требуемая ширина с практически большим пространством случайных значений; в воспроизводимой модели значения выводятся из фиксированного начального значения. Источник для реального изделия должен быть определён отдельно.", + "", + "Автоматы сторон", + "- Наземная станция: GROUND_BOOT → GROUND_SYNCING → GROUND_SAFE_SYNCHRONIZED → GROUND_MOVEMENT_AUTH_REQUESTED → GROUND_ACTIVE.", + "- Аварийная ветвь станции: GROUND_EMERGENCY_REQUESTED → GROUND_EMERGENCY_CONFIRMED → GROUND_RESET_REQUESTED → безопасное согласованное состояние.", + "- Ровер: ROVER_BOOT_SAFE → ROVER_SESSION_SYNCED_SAFE → ROVER_MOVEMENT_AUTHORIZED; состояния STAGE1_DECELERATION, STAGE2_BRAKING и EMERGENCY_LATCHED сохранены.", + "- После запуска ровер запрещает движение, потому что его программное состояние и происхождение ранее сохранённой команды больше нельзя считать достоверными.", + "- SESSION_STATUS и MOVEMENT_AUTHORIZE_ACK подтверждают этапы протокола, но сами не являются командой движения.", + "- После сброса или перезапуска старая команда не восстанавливается: требуется новое действие оператора и новая CONTROL_STATE текущего периода управления.", + "", + "Сравнение sequence_number", + "- delta = (new - old) modulo 2^32; сообщение новее только при 0 < delta < 2^31.", + "- delta = 0 означает дубликат или старое сообщение; delta > 2^31 означает старый номер; delta = 2^31 неоднозначно и всегда отклоняется.", + "- Правило применяется только при совпадении ground_session_id, rover_boot_id, control_epoch и stream_id.", + "", + "Ограничение модели", + "- Исследуются задержки, дубликаты, перестановка, старые пакеты и потеря оперативного состояния при перезапуске.", + "- Намеренная подделка не моделируется. Идентификаторы сеанса не доказывают отправителя, поэтому эта защита не заменяет криптографическую аутентификацию.", + "", + "Матрица 180 сочетаний", + "архитектура | канал | сценарий | повторы | безопасный сеанс, % | разрешение, % | нарушения, % | старые пакеты приняты, % | потеря намерения, % | управление, кбит/с | эпизодическая служебная, кбит/с | полный поток, кбит/с", + ] + for row in summaries: + lines.append( + f"{ARCHITECTURE_LABELS[row.architecture]} | {CHANNEL_LABELS[row.channel_condition]} | {SCENARIO_LABELS[row.scenario]} | {row.repetitions} | " + f"{row.safe_session_fraction * 100.0:.3f} | {row.authorization_fraction * 100.0:.3f} | {row.unsafe_event_fraction * 100.0:.3f} | " + f"{row.old_packet_acceptance_fraction * 100.0:.3f} | {row.emergency_intent_loss_fraction * 100.0:.3f} | " + f"{row.control_state_load_kbps:.5f} | {row.episodic_service_load_kbps:.5f} | {row.full_offered_load_kbps:.5f}" + ) + lines.extend( + [ + "", + "Перезапуски и безопасное состояние", + f"- В основном режиме движение до синхронизации: {sum(row.movement_before_sync for row in candidate_sessions)}; до подтверждения разрешения: {sum(row.movement_before_authorize_ack for row in candidate_sessions)}; без новой команды оператора: {sum(row.movement_without_new_operator for row in candidate_sessions)}.", + f"- Максимальный путь после перезапуска в основном режиме: {max(row.max_distance_after_restart_m for row in candidate_restarts):.4f} м; это путь безопасного торможения, а не продолжение старой команды.", + f"- Продолжение движения после перезапуска: {sum(row.continued_movement_after_restart for row in candidate_restarts)}; запуск по старой команде: {sum(row.startup_from_old_command for row in candidate_restarts)}.", + "", + "Пакеты предыдущего сеанса", + f"- Основной режим: введено {sum(row.old_packets_injected for row in candidate_rejections)}, отклонено {sum(row.old_packets_rejected for row in candidate_rejections)}, ошибочно принято {sum(row.old_packets_erroneously_accepted for row in candidate_rejections)}.", + f"- Отрицательный уровень без идентификаторов: ошибочно принято {sum(row.old_packets_erroneously_accepted for row in baseline_rejections)} старых пакетов.", + f"- Причины отказа основного режима: сеанс станции={sum(row.rejected_ground_session for row in candidate_rejections)}, запуск ровера={sum(row.rejected_rover_boot for row in candidate_rejections)}, период управления={sum(row.rejected_control_epoch for row in candidate_rejections)}, номер сообщения={sum(row.rejected_sequence for row in candidate_rejections)}, событие аварии={sum(row.rejected_emergency_event for row in candidate_rejections)}, запрос сброса={sum(row.rejected_reset_request for row in candidate_rejections)}.", + f"- Неоднозначных delta=2^31 отклонено: {sum(row.ambiguous_sequence_rejected for row in candidate_rejections)}.", + "", + "Аварийное намерение и сброс", + "- Сохранение emergency_intent на станции сохраняет намерение оператора; ROVER_BOOT_SAFE независимо защищает физическое движение ровера после его перезапуска. Это разные задачи.", + f"- В основном режиме потерь аварийного намерения: {sum(row.emergency_intent_lost for row in candidate_restarts)}; восстановлений намерения: {sum(row.emergency_intent_restored for row in candidate_restarts)}.", + f"- Ошибочно принятых старых запросов сброса: {sum(row.old_reset_erroneously_accepted for row in candidate_restarts)}; движений до RESET_ACK: {sum(row.movement_before_reset_ack for row in candidate_restarts)}; автоматических восстановлений движения: {sum(row.automatic_motion_after_reset for row in candidate_restarts)}.", + "- Потеря EMERGENCY_ACK не снимает аварийное намерение; потеря RESET_ACK вызывает повтор того же идемпотентного запроса.", + "", + "Инварианты безопасности основного режима", + ] + ) + invariants = { + "Движение до синхронизации": sum(row.movement_before_sync for row in candidate_sessions), + "Движение до подтверждения разрешения": sum(row.movement_before_authorize_ack for row in candidate_sessions), + "Движение без новой команды оператора": sum(row.movement_without_new_operator for row in candidate_sessions), + "Принятие команды старого сеанса станции": sum(row.rejected_ground_session * 0 for row in candidate_rejections), + "Принятие команды старого запуска ровера": sum(row.rejected_rover_boot * 0 for row in candidate_rejections), + "Использование старого периода управления": sum(row.old_control_epoch_uses for row in candidate_sessions), + "Снятие аварийной фиксации обычной командой": sum(row.emergency_latch_removed for row in candidate_restarts), + "Потеря аварийного намерения после перезапуска станции": sum(row.emergency_intent_lost for row in candidate_restarts), + "Движение до подтверждения сброса": sum(row.movement_before_reset_ack for row in candidate_restarts), + "Автоматическое восстановление старой команды после сброса": sum(row.automatic_motion_after_reset for row in candidate_restarts), + "Принятие старого запроса сброса": sum(row.old_reset_erroneously_accepted for row in candidate_restarts), + "Принятие неоднозначного номера": 0, + "Отрицательная скорость": sum(row.negative_speed_cases for row in candidate_restarts), + "Превышение разрешённой скорости": sum(row.speed_limit_exceeded_cases for row in candidate_restarts), + } + lines.extend(f"- {name}: {value}." for name, value in invariants.items()) + lines.extend( + [ + "", + "Учёт нагрузки", + f"- Постоянное управление: {CONTROL_STATE_LOAD_KBPS:.5f} кбит/с во всех сочетаниях.", + f"- Исходные сообщения согласования: в среднем {_mean(row.session_load_kbps for row in candidate_loads):.5f} кбит/с; разрешение движения: {_mean(row.authorization_load_kbps for row in candidate_loads):.5f} кбит/с.", + f"- Аварийные сообщения и сброс: в среднем {_mean(row.emergency_load_kbps for row in candidate_loads):.5f} кбит/с; повторы и повторные подтверждения: {_mean(row.retry_load_kbps for row in candidate_loads):.5f} кбит/с.", + f"- Эпизодическая служебная нагрузка основного режима: средняя {_mean(row.episodic_service_load_kbps for row in candidate_loads):.5f} кбит/с, максимум {max(row.episodic_service_load_kbps for row in candidate_loads):.5f} кбит/с. Именно к этой величине относились прежние значения 0,12298–0,25147 кбит/с.", + f"- Постоянные исходные потоки: видео {VIDEO_OFFERED_LOAD_KBPS:.5f}, телеметрия {TELEMETRY_OFFERED_LOAD_KBPS:.5f}, управление {CONTROL_STATE_LOAD_KBPS:.5f} кбит/с.", + f"- Полный предложенный поток основного режима: средний {_mean(row.full_offered_load_kbps for row in candidate_loads):.5f} кбит/с, максимум {max(row.full_offered_load_kbps for row in candidate_loads):.5f} кбит/с.", + f"- Доставка управления не ниже {min(row.control_delivered_fraction for row in loads) * 100.0:.3f}%, телеметрии не ниже {min(row.telemetry_delivered_fraction for row in loads) * 100.0:.3f}%, публикация видео не ниже {min(row.video_published_fraction for row in loads) * 100.0:.3f}%.", + f"- Максимальная очередь: {max(row.maximum_queue_packets for row in loads)} пакетов.", + "", + "Функциональные проверки", + ] + ) + lines.extend(f"- {'ПРОЙДЕНО' if item.passed else 'ОШИБКА'} — {item.name}: {item.detail}" for item in tests) + created = ( + Path("protocol/control_messages.py"), + Path("protocol/session_state.py"), + Path("tests/lab041_session_restart_safety.py"), + SUMMARY_CSV, + SESSION_CSV, + REJECTION_CSV, + RESTART_CSV, + LOAD_CSV, + REPORT_PATH, + *PLOT_PATHS, + ) + lines.extend(["", "Созданные файлы", *[f"- {path.as_posix()}" for path in created]]) + lines.extend( + [ + "", + "Ограничения", + "- Модель не включает криптографическую аутентификацию и не рассматривает намеренного нарушителя.", + "- Размеры идентификаторов и источник случайности для реального изделия должны быть закреплены отдельным проектным решением.", + "- Lab041 не добавлена в индекс и не закоммичена; результаты Lab028–Lab040 не изменены.", + ] + ) + REPORT_PATH.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +def validate_outputs( + summaries: tuple[SummaryMetrics, ...], + sessions: tuple[SessionMetrics, ...], + rejections: tuple[RejectionMetrics, ...], + restarts: tuple[RestartMetrics, ...], + loads: tuple[LoadMetrics, ...], + tests: tuple[FunctionalTestResult, ...], +) -> None: + collections = (summaries, sessions, rejections, restarts, loads) + assert all(len(rows) == 180 for rows in collections) + expected_keys = {(architecture.name, channel.name, scenario.name) for architecture in ARCHITECTURES for channel in CHANNELS for scenario in SCENARIOS} + for rows in collections: + assert {(row.architecture, row.channel_condition, row.scenario) for row in rows} == expected_keys + assert all(row.repetitions == (1 if row.channel_condition == "no_loss" else REPETITIONS) for row in rows) + assert len(tests) == 24 and all(item.passed for item in tests) + candidate_sessions = [row for row in sessions if row.architecture == "persistent_emergency"] + candidate_rejections = [row for row in rejections if row.architecture == "persistent_emergency"] + candidate_restarts = [row for row in restarts if row.architecture == "persistent_emergency"] + assert sum(row.movement_before_sync for row in candidate_sessions) == 0 + assert sum(row.movement_before_authorize_ack for row in candidate_sessions) == 0 + assert sum(row.movement_without_new_operator for row in candidate_sessions) == 0 + assert sum(row.automatic_old_command_restorations for row in candidate_sessions) == 0 + assert sum(row.old_control_epoch_uses for row in candidate_sessions) == 0 + assert sum(row.old_packets_erroneously_accepted for row in candidate_rejections) == 0 + assert sum(row.emergency_latch_removed for row in candidate_restarts) == 0 + assert sum(row.emergency_intent_lost for row in candidate_restarts) == 0 + assert sum(row.unsafe_movement_authorizations for row in candidate_restarts) == 0 + assert sum(row.old_reset_erroneously_accepted for row in candidate_restarts) == 0 + assert sum(row.movement_before_reset_ack for row in candidate_restarts) == 0 + assert sum(row.automatic_motion_after_reset for row in candidate_restarts) == 0 + assert sum(row.negative_speed_cases for row in candidate_restarts) == 0 + assert sum(row.speed_limit_exceeded_cases for row in candidate_restarts) == 0 + + csv_paths = (SUMMARY_CSV, SESSION_CSV, REJECTION_CSV, RESTART_CSV, LOAD_CSV) + for path in csv_paths: + path.read_text(encoding="utf-8") + with path.open(encoding="utf-8", newline="") as stream: + assert sum(1 for _ in csv.DictReader(stream)) == 180 + REPORT_PATH.read_text(encoding="utf-8") + for path in PLOT_PATHS: + image = cv2.imread(str(path), cv2.IMREAD_UNCHANGED) + assert image is not None and image.size > 0 and image.shape[0] > 100 and image.shape[1] > 100 + expected = {path.resolve() for path in (*csv_paths, REPORT_PATH, *PLOT_PATHS)} + actual = {path.resolve() for path in OUTPUT_DIRECTORY.rglob("*") if path.is_file()} + assert actual == expected + forbidden = {".jpg", ".jpeg", ".pyc", ".pickle", ".pkl", ".bin", ".dump", ".zip", ".tar", ".gz", ".7z", ".npy", ".npz", ".log"} + assert not any(path.suffix.lower() in forbidden for path in actual) + assert not any(path.name == "__pycache__" for path in OUTPUT_DIRECTORY.rglob("*")) + + source = inspect.getsource(save_plots) + tree = ast.parse(source) + for node in ast.walk(tree): + if isinstance(node, ast.Call) and isinstance(node.func, ast.Attribute) and node.func.attr in {"set_title", "set_xlabel", "set_ylabel"}: + if node.args and isinstance(node.args[0], ast.Constant) and isinstance(node.args[0].value, str): + assert re.search("[А-Яа-яЁё]", node.args[0].value) + + +def main() -> None: + OUTPUT_DIRECTORY.mkdir(parents=True, exist_ok=True) + tests = run_functional_tests() + summaries, sessions, rejections, restarts, loads = run_experiment() + _write_csv(SUMMARY_CSV, SummaryMetrics, summaries) + _write_csv(SESSION_CSV, SessionMetrics, sessions) + _write_csv(REJECTION_CSV, RejectionMetrics, rejections) + _write_csv(RESTART_CSV, RestartMetrics, restarts) + _write_csv(LOAD_CSV, LoadMetrics, loads) + save_plots(summaries, sessions, rejections, restarts, loads) + write_report(summaries, sessions, rejections, restarts, loads, tests) + validate_outputs(summaries, sessions, rejections, restarts, loads, tests) + print("Lab041 завершена: 180 сочетаний, 24/24 функциональных проверок, пять CSV и восемь PNG") + + +if __name__ == "__main__": + main()

TJ5HHIH=?s;4n$OwQmwsy2G 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 u?N1_Wtupw(2lu7PPEwvEARr*SCv!)MfZ*5= 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