Lab040 — постоянное аварийное намерение и безопасное повторное разрешение движения Состояние Git до начала - Корень: C:/Users/user/Desktop/projects/SDR_Rover - Ветка: main - HEAD: b3ebe1637fbb401198cdbb43a862e94614be9cb0 - Рабочее дерево и индекс были чистыми; относительно локально известной origin/main расхождение составляло 0/0. - Коммиты Lab038 и Lab039 присутствовали; сетевые команды Git не выполнялись. Автоматы наземной станции и ровера - Наземная станция: GROUND_NORMAL → GROUND_EMERGENCY_REQUESTED → GROUND_EMERGENCY_CONFIRMED → GROUND_RESET_REQUESTED → GROUND_MOVEMENT_REAUTHORIZED. - Подтверждение аварийной команды прекращает её копии, но не снимает аварийное намерение и не разрешает положительные команды движения. - Ровер сохраняет состояния NORMAL, STAGE1_DECELERATION, STAGE2_BRAKING и EMERGENCY_LATCHED из Lab039. - Обычная или поздняя старая команда не снимает EMERGENCY_LATCHED. Безопасный сброс - Сброс использует отдельные идентификаторы потоков и прикладные данные внутри неизменного пакета LinkPacket из Lab033. - Проверяются зафиксированное аварийное состояние, нулевая фактическая скорость, свежесть связи 250 мс, идентификатор события, номер последовательности, нулевая требуемая скорость и запрет движения. - Потерянное подтверждение сброса вызывает повтор запроса; принятый дубликат не повторяет действие, но вызывает новое подтверждение. - После подтверждения сброса сохраняется нулевая скорость; новая команда оператора формируется только через 2 секунды и имеет новый номер последовательности. Параметры - Опыт 120 с; аварийная команда на 30-й секунде; сброс на 60-й секунде; команды 20 Гц; повторы каждые 50 мс. - Матрица: 5 каналов × 3 режима × 3 скорости = 45 сочетаний; условия с потерями по 200 повторов. - Сторожевой таймер 150/250 мс; замедление первой ступени 1,0 м/с², второй ступени 3,0 м/с², ускорение восстановления 1,0 м/с². - Исходная нагрузка проверена контрольной суммой и помехоустойчивым кодированием: 12356/714. Компактная таблица 45 сочетаний канал | режим | скорость | доставка аварийной команды, % | время аварийного намерения, % | небезопасное восстановление, % | остановка, % | нагрузка, кбит/с | видео, % | телеметрия, % | очередь Без потерь, 300 кбит/с | Ограниченное повторение | 5 | 100.000 | 0.417 | 0.000 | 100.000 | 0.00700 | 100.000 | 100.000 | 21 Без потерь, 300 кбит/с | Ограниченное повторение | 15 | 100.000 | 0.417 | 0.000 | 100.000 | 0.00700 | 100.000 | 100.000 | 21 Без потерь, 300 кбит/с | Ограниченное повторение | 25 | 100.000 | 0.417 | 0.000 | 100.000 | 0.00700 | 100.000 | 100.000 | 21 Без потерь, 300 кбит/с | Постоянное намерение | 5 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00700 | 100.000 | 100.000 | 21 Без потерь, 300 кбит/с | Постоянное намерение | 15 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00700 | 100.000 | 100.000 | 21 Без потерь, 300 кбит/с | Постоянное намерение | 25 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00700 | 100.000 | 100.000 | 21 Без потерь, 300 кбит/с | Постоянное намерение и сброс | 5 | 100.000 | 25.002 | 0.000 | 100.000 | 0.01333 | 100.000 | 100.000 | 21 Без потерь, 300 кбит/с | Постоянное намерение и сброс | 15 | 100.000 | 25.002 | 0.000 | 100.000 | 0.01333 | 100.000 | 100.000 | 21 Без потерь, 300 кбит/с | Постоянное намерение и сброс | 25 | 100.000 | 25.002 | 0.000 | 100.000 | 0.01333 | 100.000 | 100.000 | 21 300 кбит/с, помеха 50 мс | Ограниченное повторение | 5 | 100.000 | 0.417 | 0.000 | 100.000 | 0.00711 | 94.165 | 97.920 | 21 300 кбит/с, помеха 50 мс | Ограниченное повторение | 15 | 100.000 | 0.417 | 0.000 | 100.000 | 0.00711 | 94.165 | 97.920 | 21 300 кбит/с, помеха 50 мс | Ограниченное повторение | 25 | 100.000 | 0.417 | 0.000 | 100.000 | 0.00711 | 94.165 | 97.920 | 21 300 кбит/с, помеха 50 мс | Постоянное намерение | 5 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00711 | 94.165 | 97.920 | 21 300 кбит/с, помеха 50 мс | Постоянное намерение | 15 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00711 | 94.165 | 97.920 | 21 300 кбит/с, помеха 50 мс | Постоянное намерение | 25 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00711 | 94.165 | 97.920 | 21 300 кбит/с, помеха 50 мс | Постоянное намерение и сброс | 5 | 100.000 | 25.004 | 0.000 | 100.000 | 0.01360 | 94.164 | 97.919 | 21 300 кбит/с, помеха 50 мс | Постоянное намерение и сброс | 15 | 100.000 | 25.004 | 0.000 | 100.000 | 0.01360 | 94.164 | 97.919 | 21 300 кбит/с, помеха 50 мс | Постоянное намерение и сброс | 25 | 100.000 | 25.004 | 0.000 | 100.000 | 0.01360 | 94.164 | 97.919 | 21 260 кбит/с, помеха 200 мс | Ограниченное повторение | 5 | 100.000 | 0.417 | 0.000 | 100.000 | 0.00708 | 96.028 | 97.976 | 36 260 кбит/с, помеха 200 мс | Ограниченное повторение | 15 | 100.000 | 0.417 | 0.000 | 100.000 | 0.00708 | 96.028 | 97.976 | 36 260 кбит/с, помеха 200 мс | Ограниченное повторение | 25 | 100.000 | 0.417 | 0.000 | 100.000 | 0.00708 | 96.028 | 97.976 | 36 260 кбит/с, помеха 200 мс | Постоянное намерение | 5 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00708 | 96.028 | 97.976 | 36 260 кбит/с, помеха 200 мс | Постоянное намерение | 15 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00708 | 96.028 | 97.976 | 36 260 кбит/с, помеха 200 мс | Постоянное намерение | 25 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00708 | 96.028 | 97.976 | 36 260 кбит/с, помеха 200 мс | Постоянное намерение и сброс | 5 | 100.000 | 25.012 | 0.000 | 100.000 | 0.01392 | 96.031 | 97.977 | 38 260 кбит/с, помеха 200 мс | Постоянное намерение и сброс | 15 | 100.000 | 25.012 | 0.000 | 100.000 | 0.01392 | 96.031 | 97.977 | 38 260 кбит/с, помеха 200 мс | Постоянное намерение и сброс | 25 | 100.000 | 25.012 | 0.000 | 100.000 | 0.01392 | 96.031 | 97.977 | 38 230 кбит/с, помеха 200 мс | Ограниченное повторение | 5 | 100.000 | 0.417 | 0.000 | 100.000 | 0.00717 | 84.913 | 97.985 | 40 230 кбит/с, помеха 200 мс | Ограниченное повторение | 15 | 100.000 | 0.417 | 0.000 | 100.000 | 0.00717 | 84.913 | 97.985 | 40 230 кбит/с, помеха 200 мс | Ограниченное повторение | 25 | 100.000 | 0.417 | 0.000 | 100.000 | 0.00717 | 84.913 | 97.985 | 40 230 кбит/с, помеха 200 мс | Постоянное намерение | 5 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00717 | 84.913 | 97.985 | 40 230 кбит/с, помеха 200 мс | Постоянное намерение | 15 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00717 | 84.913 | 97.985 | 40 230 кбит/с, помеха 200 мс | Постоянное намерение | 25 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00717 | 84.913 | 97.985 | 40 230 кбит/с, помеха 200 мс | Постоянное намерение и сброс | 5 | 100.000 | 25.014 | 0.000 | 100.000 | 0.01430 | 84.918 | 97.987 | 40 230 кбит/с, помеха 200 мс | Постоянное намерение и сброс | 15 | 100.000 | 25.014 | 0.000 | 100.000 | 0.01430 | 84.918 | 97.987 | 40 230 кбит/с, помеха 200 мс | Постоянное намерение и сброс | 25 | 100.000 | 25.014 | 0.000 | 100.000 | 0.01430 | 84.918 | 97.987 | 40 230 кбит/с, помеха 1000 мс | Ограниченное повторение | 5 | 99.000 | 0.417 | 1.000 | 100.000 | 0.00739 | 86.314 | 97.971 | 40 230 кбит/с, помеха 1000 мс | Ограниченное повторение | 15 | 99.000 | 0.417 | 1.000 | 100.000 | 0.00739 | 86.314 | 97.971 | 40 230 кбит/с, помеха 1000 мс | Ограниченное повторение | 25 | 99.000 | 0.417 | 1.000 | 99.000 | 0.00739 | 86.314 | 97.971 | 40 230 кбит/с, помеха 1000 мс | Постоянное намерение | 5 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00811 | 86.314 | 97.971 | 40 230 кбит/с, помеха 1000 мс | Постоянное намерение | 15 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00811 | 86.314 | 97.971 | 40 230 кбит/с, помеха 1000 мс | Постоянное намерение | 25 | 100.000 | 75.000 | 0.000 | 100.000 | 0.00811 | 86.314 | 97.971 | 40 230 кбит/с, помеха 1000 мс | Постоянное намерение и сброс | 5 | 100.000 | 25.009 | 0.000 | 100.000 | 0.01479 | 86.318 | 97.975 | 39 230 кбит/с, помеха 1000 мс | Постоянное намерение и сброс | 15 | 100.000 | 25.009 | 0.000 | 100.000 | 0.01479 | 86.318 | 97.975 | 39 230 кбит/с, помеха 1000 мс | Постоянное намерение и сброс | 25 | 100.000 | 25.009 | 0.000 | 100.000 | 0.01479 | 86.318 | 97.975 | 39 Отрицательный исходный режим - Полностью потерянные первые 500 мс аварийной передачи: 2 на одно сочетание. - Остановки по сторожевому таймеру после такой потери: 4. - Небезопасные восстановления движения: 6; максимальная доля 1.000%. - Среднее время от остановки до повторного движения: 1.1666 с; путь после восстановления до 599.4074 м. - Ограниченный режим Lab038 служит отрицательным исходным уровнем и не принимается для рабочей архитектуры. Постоянное аварийное намерение - Итоговая доставка 100% в режимах постоянного намерения получена в конечной выборке и не является математической гарантией. - Безопасность не зависит от гарантированной доставки удалённой команды: локальный сторожевой таймер продолжает действовать. - Подтверждение аварийной команды (Emergency ACK) прекращает копии, но не снимает аварийное намерение emergency_intent. - Положительные задания при активном аварийном намерении: 0. - Команды с разрешением движения при активном аварийном намерении: 0. - Небезопасные восстановления в режимах 2 и 3: 0. Подтверждение сброса - Принятые запросы сброса: 1.0000 на опыт; отклонённые: 0.0120. - Причины отказов: аварийное состояние не зафиксировано=0, движение=0, устаревшая связь=36, неверное событие=0, старый номер последовательности=0, ненулевая скорость=0, разрешение движения=0. - Среднее число повторов сброса: 0.0990; потерянных подтверждений сброса: 0.0000. - 95-й процентиль времени от запроса оператора до подтверждения сброса: до 7.477 мс. - Движение до подтверждения сброса: 0; автоматическое восстановление старой команды: 0. - Подтверждение сброса (RESET_ACK) разрешает перейти только в безопасное состояние с нулевой скоростью. - Для движения после сброса требуется новая команда оператора. Точечная проверка пути до начала безопасной реакции - Канал: 230 кбит/с, средняя помеха 1000 мс; транспортный эксперимент повторно не запускался. - Если в момент действия оператора уже активно состояние STAGE1_DECELERATION, STAGE2_BRAKING или EMERGENCY_LATCHED, путь до начала реакции равен нулю и не измеряется до будущего перехода в торможение. - режим | скорость, км/ч | среднее, м | 95-й процентиль, м | максимум, м | полные остановки, % | небезопасные возобновления - Ограниченное повторение | 5 | 0.005284 | 0.005362 | 0.005362 | 100.000 | 2 - Ограниченное повторение | 15 | 0.015719 | 0.016087 | 0.016087 | 100.000 | 2 - Ограниченное повторение | 25 | 0.026197 | 0.026812 | 0.026812 | 99.000 | 2 - Постоянное намерение | 5 | 0.005284 | 0.005362 | 0.005362 | 100.000 | 0 - Постоянное намерение | 15 | 0.015719 | 0.016087 | 0.016087 | 100.000 | 0 - Постоянное намерение | 25 | 0.026197 | 0.026812 | 0.026812 | 100.000 | 0 - Постоянное намерение и сброс | 5 | 0.005284 | 0.005362 | 0.005362 | 100.000 | 0 - Постоянное намерение и сброс | 15 | 0.015719 | 0.016087 | 0.016087 | 100.000 | 0 - Постоянное намерение и сброс | 25 | 0.026197 | 0.026812 | 0.026812 | 100.000 | 0 - Сводная и двигательная таблицы согласованы по числу повторов, доле полных остановок и небезопасным возобновлениям. - Ни один график Lab040 напрямую не использует путь до начала реакции; график пути до остановки использует отдельный показатель полного пути и не требует изменения. Движение и нагрузка - Максимальный путь до полной остановки: 9.2678 м; максимальное время: 2.3335 с. - Дополнительная нагрузка защиты: 0.00948…0.01479 кбит/с. - Нагрузка нулевых состояний: до 5.52000 кбит/с; максимальная очередь 40 пакетов. - Видео опубликовано: 84.913…100.000%; телеметрия: 97.919…100.000%. Функциональные проверки - ПРОЙДЕНО — 01. Оператор фиксирует аварийное намерение: действие оператора фиксирует аварийное намерение наземной станции - ПРОЙДЕНО — 02. После аварии нет положительной заданной скорости: аварийное намерение заменяет движение безопасным нулевым состоянием с торможением - ПРОЙДЕНО — 03. Движение запрещено до сброса: после подтверждения аварийной команды движение остаётся запрещённым - ПРОЙДЕНО — 04. Потеря аварийной команды сохраняет намерение: управляемая помеха теряет все копии за первые 500 мс, не снимая аварийное намерение - ПРОЙДЕНО — 05. Подтверждение аварии сохраняет намерение: потеря первого подтверждения и доставка повтора сохраняют аварийное намерение - ПРОЙДЕНО — 06. Первая аварийная команда фиксирует состояние ровера: первая аварийная команда фиксирует аварийное состояние ровера - ПРОЙДЕНО — 07. Обычная команда не снимает аварийное состояние: обычная команда не снимает аварийное состояние ровера - ПРОЙДЕНО — 08. Старая команда движения отклоняется: запоздалая команда движения со старым номером последовательности отклоняется - ПРОЙДЕНО — 09. Сброс при движении отклоняется: движущийся ровер отклоняет запрос сброса - ПРОЙДЕНО — 10. Сброс при устаревшей связи отклоняется: при устаревшем состоянии связи запрос сброса отклоняется - ПРОЙДЕНО — 11. Сброс для неверного события отклоняется: запрос сброса с неверным идентификатором аварии отклоняется - ПРОЙДЕНО — 12. Сброс со старым номером последовательности отклоняется: запрос сброса со старым номером последовательности отклоняется - ПРОЙДЕНО — 13. Сброс с ненулевой скоростью отклоняется: ненулевая скорость или разрешение движения приводят к отклонению сброса - ПРОЙДЕНО — 14. После успешного сброса скорость остаётся нулевой: принятый сброс выводит из аварийного состояния только в состояние нулевой скорости - ПРОЙДЕНО — 15. До подтверждения сброса движение отсутствует: до подтверждения сброса наземная станция сохраняет безопасное нулевое задание - ПРОЙДЕНО — 16. Потеря подтверждения сброса вызывает повтор: управляемая потеря первого подтверждения сброса вызывает повтор запроса - ПРОЙДЕНО — 17. Дубликат не выполняет сброс дважды: принятый дубликат не выполняет сброс повторно - ПРОЙДЕНО — 18. На дубликат повторно отправляется подтверждение: принятый дубликат вызывает повторное подтверждение сброса - ПРОЙДЕНО — 19. Старая команда движения не восстанавливается: подтверждение сброса не восстанавливает сохранённую команду движения - ПРОЙДЕНО — 20. Для движения требуется новая команда оператора: для движения требуется новый номер последовательности команды оператора - ПРОЙДЕНО — 21. Аварийное состояние устойчиво к обычным командам: состояние EMERGENCY_LATCHED не снимается обычной командой управления - ПРОЙДЕНО — 22. Сторожевой таймер работает при потере аварийной команды: локальный двухступенчатый сторожевой таймер работает без доставки аварийной команды - ПРОЙДЕНО — 23. Интервалы помех воспроизводимы: фиксированное начальное значение генератора воспроизводит интервалы помех - ПРОЙДЕНО — 24. Действие оператора во время торможения: действие оператора при уже активном торможении даёт нулевой путь до начала реакции Созданные файлы - protocol/persistent_emergency.py - protocol/safe_reset.py - tests/lab040_persistent_emergency.py - data/processed/lab040/lab040_summary.csv - data/processed/lab040/lab040_emergency_metrics.csv - data/processed/lab040/lab040_reset_metrics.csv - data/processed/lab040/lab040_motion_metrics.csv - data/processed/lab040/lab040_load_metrics.csv - data/processed/lab040/lab040_report.txt - data/processed/lab040/lab040_emergency_delivery.png - data/processed/lab040/lab040_unsafe_recovery.png - data/processed/lab040/lab040_latch_time.png - data/processed/lab040/lab040_stop_path.png - data/processed/lab040/lab040_reset_latency.png - data/processed/lab040/lab040_protection_load.png - data/processed/lab040/lab040_video_telemetry.png - data/processed/lab040/lab040_tradeoff.png Ограничения - Параметры замедления предварительные и требуют измерения на реальном ровере. - Модель одномерная и не заменяет испытания тормозов, привода и процедуры операторского сброса. - Lab040 не добавлена в Git и не закоммичена; Lab028–Lab039 не изменены.