Files
SDR-Rover/data/processed/lab034/lab034_report.txt
2026-08-03 13:17:55 +03:00

99 lines
9.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Lab034. Ограничение возраста видеоданных и отбрасывание устаревших кадров
1. Исходное состояние
- Commit Lab033: 21751f41dd0af022fc1f935c67e795e3ae4257c5.
- Перед Lab034 рабочее дерево было чистым; main опережала origin/main на один commit.
- Lab028-Lab033 и их результаты не изменяются.
2. Формирование FEC-блоков
layout | source | parity | blocks | partial | cross-frame | frames/block mean/max | before/after Lab033 kbps
Непрерывные | 862 | 216 | 72 | 1 | 58 | 1.806/2 | 226.951/240.240
По кадрам | 862 | 251 | 125 | 62 | 0 | 1.000/1 | 232.926/246.647
- Дополнительная избыточность выравнивания: 5.975 кбит/с (2.633%).
- Средняя эквивалентная группа кадра: непрерывные 17.111 пакета / 263.968 мс; выровненные 17.667 пакета / 271.007 мс при 300 кбит/с.
3. Пятнадцать сочетаний
speed | policy | offered/capacity | published/drop/partial | update fps | age P95 ms | control P95 ms | emergency ms | queue max/end | drain s | wasted bytes
300 | Непрерывные, без отбрасывания | 0.8607 | 63/0/0 | 2.986 | 593.333 | 17.466 | 1.707 | 22/15 | 0.231867 | 0
300 | По кадрам, без отбрасывания | 0.8821 | 63/0/0 | 2.986 | 590.000 | 17.466 | 1.707 | 21/13 | 0.199440 | 0
300 | По кадрам, 1500 мс | 0.8821 | 63/0/0 | 2.986 | 590.000 | 17.466 | 1.707 | 21/13 | 0.199440 | 0
300 | По кадрам, 1000 мс | 0.8821 | 63/0/0 | 2.986 | 590.000 | 17.466 | 1.707 | 21/13 | 0.199440 | 0
300 | По кадрам, 500 мс | 0.8821 | 63/0/0 | 2.986 | 590.000 | 17.466 | 1.707 | 21/13 | 0.199440 | 0
260 | Непрерывные, без отбрасывания | 0.9931 | 63/0/0 | 2.937 | 690.000 | 18.754 | 1.969 | 28/23 | 0.399200 | 0
260 | По кадрам, без отбрасывания | 1.0178 | 63/0/0 | 2.937 | 773.833 | 18.908 | 1.969 | 37/30 | 0.539293 | 0
260 | По кадрам, 1500 мс | 1.0178 | 63/0/0 | 2.937 | 773.833 | 18.908 | 1.969 | 37/30 | 0.539293 | 0
260 | По кадрам, 1000 мс | 1.0178 | 63/0/0 | 2.937 | 773.833 | 18.908 | 1.969 | 37/30 | 0.539293 | 0
260 | По кадрам, 500 мс | 1.0178 | 56/7/7 | 2.648 | 1053.833 | 18.908 | 1.969 | 31/24 | 0.403939 | 69597
230 | Непрерывные, без отбрасывания | 1.1227 | 63/0/0 | 2.697 | 2443.833 | 21.848 | 11.548 | 132/127 | 2.547420 | 0
230 | По кадрам, без отбрасывания | 1.1505 | 63/0/0 | 2.600 | 2913.333 | 22.500 | 22.330 | 160/155 | 3.125855 | 0
230 | По кадрам, 1500 мс | 1.1505 | 27/36/36 | 1.300 | 11064.833 | 22.461 | 22.330 | 87/81 | 1.418064 | 321929
230 | По кадрам, 1000 мс | 1.1505 | 14/49/49 | 0.674 | 11731.500 | 22.578 | 11.652 | 63/53 | 0.904881 | 434885
230 | По кадрам, 500 мс | 1.1505 | 3/60/60 | 0.144 | 11731.500 | 22.230 | 3.687 | 32/27 | 0.419072 | 532167
4. Практический смысл ограничений возраста
- При 300 кбит/с очередь обслуживается достаточно быстро: ограничения 500, 1000 и 1500 мс не срабатывают и не дают выигрыша.
- При 260 кбит/с пределы 1000 и 1500 мс также не срабатывают; предел 500 мс публикует 56 из 63 кадров и отбрасывает 7, поэтому он уже чрезмерно жёсткий для части кадров.
- При 230 кбит/с предел 1500 мс сохраняет 27 кадров, 1000 мс — 14, 500 мс — только 3; более строгий предел лучше ограничивает очередь, но резко уменьшает частоту обновления.
- В исследованной перегрузке 1500 мс является наиболее мягким из конечных ограничений; 1000 мс сильнее улучшает свежесть ценой обновлений, а 500 мс чрезмерно жёсток.
5. Интерпретация
- Произвольное удаление символа из непрерывного FEC-блока опасно: блок может содержать соседние кадры, и нехватка символов затрагивает их совместное декодирование.
- Выравнивание изолирует кадр в собственных блоках, поэтому все ожидающие символы устаревшего кадра можно удалить без повреждения соседей.
- Цена изоляции — 5.975 кбит/с дополнительного внешнего потока из-за большего числа неполных блоков.
- Полная доставка после освобождения очереди не является целью операторского видео: поздний полный кадр уже не описывает текущее состояние ровера.
- При перегрузке отбрасывание старого кадра освобождает ресурс для более свежего изображения и не затрагивает команды.
- При 230 кбит/с выравнивание меняет фазу активного видеопакета около 10,0 с; фактическая задержка аварийной команды может отличаться от Lab033, но отбрасывание её не увеличивает, а непереключаемая верхняя граница остаётся прежней, поскольку максимальный размер пакета не изменён.
- Слишком малый возраст может отменять кадры быстрее их полной передачи и снижать фактическую частоту обновления.
- Поэтому возраст изображения оценивается вместе с частотой обновления: хорошее значение одного показателя не гарантирует полезный видеопоток.
- Замена команд допустима только для текущего состояния (скорость, поворот, торможение, телеметрия). Дискретные события заменять нельзя; в Lab034 они не моделируются.
6. Допущения
- Один общий абстрактный ресурс, одна скорость для обоих направлений, без времени переключения и без выбора физического duplex/TDD/FDD.
- Ошибки и помехи отсутствуют; начатый пакет не прерывается; форматы Lab028, Lab030 и Lab033 неизменны.
- Возраст считается от формирования составного кадра по generation_time_us; служебные frame_id и состояние отмены не сериализуются.
- Видеокадр с удалёнными пакетами очищается в приёмнике и никогда не публикуется.
- Допустимые возраста 500, 1000 и 1500 мс заданы явно и автоматически не выбираются.
7. Функциональные проверки
- PASS 01_continuous_matches_lab033: PASS
- PASS 02_aligned_blocks_one_frame: PASS
- PASS 03_aligned_no_drop_recovers_all: PASS
- PASS 04_whole_frame_drop_isolated: PASS
- PASS 05_only_waiting_video_removed: PASS
- PASS 06_active_packet_not_preempted: PASS
- PASS 07_partial_cancel_not_published: PASS
- PASS 08_age_uses_frame_generation: PASS
- PASS 09_receiver_cleans_stale_state: PASS
- PASS 10_emergency_never_deleted: PASS
- PASS 11_high_priority_before_video: PASS
- PASS 12_230kbps_finite_age_bounds_queue: PASS
- PASS 13_packet_accounting: PASS
- PASS 14_byte_accounting: PASS
- PASS 15_all_crc_layers_pass: PASS
- PASS 16_incomplete_frame_never_published: PASS
- PASS 17_reproducible: PASS
- PASS 18_drop_does_not_worsen_emergency: PASS
8. Созданные файлы
- protocol/video_age_policy.py
- tests/lab034_stale_video_drop.py
- data/processed/lab034/lab034_summary.csv
- data/processed/lab034/lab034_video_metrics.csv
- data/processed/lab034/lab034_control_metrics.csv
- data/processed/lab034/lab034_report.txt
- data/processed/lab034/lab034_image_age.png
- data/processed/lab034/lab034_frame_outcomes.png
- data/processed/lab034/lab034_queue_size.png
- data/processed/lab034/lab034_control_delay.png
- data/processed/lab034/lab034_update_rate.png
- data/processed/lab034/lab034_fec_alignment_overhead.png
- data/processed/lab034/lab034_policy_comparison.png
9. Итоговый Git status
- Lab034 не добавлена в индекс и не закоммичена.
## main...origin/main [ahead 1]
?? data/processed/lab034/
?? protocol/video_age_policy.py
?? tests/lab034_stale_video_drop.py