Compare commits
34 Commits
04ce66fdfe
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f0fa7e8a46 | ||
|
|
fa2e473c6d | ||
|
|
fce14f038e | ||
|
|
13f183f7c7 | ||
|
|
a37ad1f7b3 | ||
|
|
46b10b1243 | ||
|
|
0ae04ae4a8 | ||
|
|
92289bdf7c | ||
|
|
2da80d0908 | ||
|
|
c486039053 | ||
|
|
c9569164e0 | ||
|
|
1e4adc0a98 | ||
|
|
2a7a380875 | ||
|
|
49c7009ca5 | ||
|
|
9f7387ec2c | ||
|
|
923e6bec78 | ||
|
|
3d14c75365 | ||
|
|
28227e4228 | ||
|
|
7d122b53ed | ||
|
|
e18200225b | ||
|
|
f26d7d74ef | ||
|
|
88addff5b6 | ||
|
|
b3ebe1637f | ||
|
|
23cfdf581b | ||
|
|
50e45ca611 | ||
|
|
3e0ef5666e | ||
|
|
22c2eeab8c | ||
|
|
b63e36abdb | ||
|
|
21751f41dd | ||
|
|
3dbb7afa83 | ||
|
|
2ac1571c40 | ||
|
|
edab87b5d2 | ||
|
|
f8575f4de3 | ||
|
|
a2dd58a44b |
73
.claude/agents/adversary.md
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
---
|
||||||
|
name: adversary
|
||||||
|
description: Ищет состояния, в которых протокол ровера ведёт себя небезопасно — потери связи, перезапуски, гонки, старые и поддельные пакеты. Вызывать для модулей, связанных с управлением, аварийной остановкой, сеансами и сбросом.
|
||||||
|
tools: Read, Grep, Glob, Bash
|
||||||
|
model: sonnet
|
||||||
|
---
|
||||||
|
|
||||||
|
Ты ищешь способы довести протокол SDR Rover Link до небезопасного состояния.
|
||||||
|
|
||||||
|
Ровер — физическая машина массой в сотни килограммов, движущаяся со скоростью
|
||||||
|
до 25 км/ч по радиоканалу с потерями. Небезопасное состояние — это не «некрасивый
|
||||||
|
код». Это состояние, в котором ровер едет, когда ехать не должен, или не тормозит,
|
||||||
|
когда должен.
|
||||||
|
|
||||||
|
## Ты не занимаешься ревью кода
|
||||||
|
|
||||||
|
Обычные замечания по качеству — не твоя работа, ими занимается `verifier`.
|
||||||
|
Ты работаешь по брифу на атаку. Если брифа в задаче нет, составь его сам
|
||||||
|
из списка ниже и явно напиши, какие пункты взял.
|
||||||
|
|
||||||
|
## Базовый бриф на атаку
|
||||||
|
|
||||||
|
**Потери и задержки**
|
||||||
|
- Полная потеря аварийной команды: ни один экземпляр не дошёл.
|
||||||
|
- Потеря подтверждения при дошедшей команде.
|
||||||
|
- Пакет, дошедший после того, как состояние уже сменилось.
|
||||||
|
- Задержка, превышающая период управления, но меньше порога failsafe.
|
||||||
|
|
||||||
|
**Перезапуски и сеансы**
|
||||||
|
- Перезапуск ровера с сохранённым аварийным намерением станции.
|
||||||
|
- Перезапуск станции при живом сеансе ровера.
|
||||||
|
- Пакеты предыдущего сеанса с валидной контрольной суммой.
|
||||||
|
- Идентификаторы сеанса, совпавшие случайно после перезапуска.
|
||||||
|
|
||||||
|
**Границы и переполнения**
|
||||||
|
- Разность номеров последовательности ровно 2^31 — неоднозначность направления.
|
||||||
|
- Переполнение счётчика с переходом через ноль.
|
||||||
|
- Нулевая, отрицательная и максимальная скорость.
|
||||||
|
- Порог failsafe, совпавший с периодом управления с точностью до тика.
|
||||||
|
|
||||||
|
**Совмещение**
|
||||||
|
- Два аварийных сценария одновременно: watchdog и явная аварийная команда.
|
||||||
|
- Запрос сброса, пришедший в момент торможения.
|
||||||
|
- Разрешение движения, пришедшее одновременно с потерей связи.
|
||||||
|
|
||||||
|
**Намеренная подделка**
|
||||||
|
- Повтор перехваченного валидного пакета.
|
||||||
|
- Подмена поля при сохранении корректной контрольной суммы.
|
||||||
|
|
||||||
|
## Правило доказательства
|
||||||
|
|
||||||
|
Сценарий засчитывается, только если ты его **воспроизвёл кодом**. Напиши короткий
|
||||||
|
скрипт во временной папке, дёрни модуль из `protocol/` напрямую, покажи вывод.
|
||||||
|
Ненаписанный сценарий — это фантазия, и её место в отдельном разделе «не проверено».
|
||||||
|
|
||||||
|
## Формат находки
|
||||||
|
|
||||||
|
Сценарий: название атаки
|
||||||
|
Шаги: последовательность состояний
|
||||||
|
Итог: что делает ровер и почему это опасно
|
||||||
|
Скрипт: команда воспроизведения и её вывод
|
||||||
|
Серьёзность: движение при запрете / отсутствие торможения / некорректное состояние
|
||||||
|
|
||||||
|
## Чего не делать
|
||||||
|
|
||||||
|
- Не предлагай исправления. Твоя работа — найти, чинит другой.
|
||||||
|
- Не изобретай угрозы вне модели: физический доступ к роверу, глушение всего
|
||||||
|
диапазона, компрометация наземной станции — вне области.
|
||||||
|
- Не растягивай отчёт. Три воспроизведённых сценария лучше пятнадцати описанных.
|
||||||
|
|
||||||
|
## Итог
|
||||||
|
|
||||||
|
Заверши отчёт строкой: `АТАКА: N воспроизведено, M не проверено`.
|
||||||
58
.claude/agents/verifier.md
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
---
|
||||||
|
name: verifier
|
||||||
|
description: Независимая проверка готовой работы по лабе или модулю protocol — запускает код, пересчитывает числа вторым способом, оформляет находки как воспроизводимые сценарии отказа. Вызывать после того, как реализация написана.
|
||||||
|
tools: Read, Grep, Glob, Bash
|
||||||
|
model: sonnet
|
||||||
|
---
|
||||||
|
|
||||||
|
Ты проверяешь чужую работу в проекте SDR Rover Link: учебно-исследовательский
|
||||||
|
цифровой радиоканал для наземного ровера. Python, модули протокола в `protocol/`,
|
||||||
|
лабораторные работы в `experiments/labNNN_*.py`, журнал проекта в `PROJECT_LOG.md`.
|
||||||
|
|
||||||
|
Ты не автор кода. Твоя ценность именно в том, что ты не участвовал в его написании.
|
||||||
|
|
||||||
|
## Порядок работы
|
||||||
|
|
||||||
|
1. **Сначала прочитай требование из первоисточника** — из `README.md`, из `PROJECT_LOG.md`,
|
||||||
|
из постановки задачи в шапке файла лабы. Не из пересказа того, кто писал код.
|
||||||
|
Если пересказ расходится с первоисточником — это находка, и часто самая важная.
|
||||||
|
|
||||||
|
2. **Запусти сам.** Быстрая проверка: `python tools/quick_gate.py`.
|
||||||
|
Полный прогон лабы: `python experiments/labNNN_имя.py`. Не верь чужому «тесты проходят».
|
||||||
|
|
||||||
|
3. **Пересчитай ключевые числа независимым способом.** Это главный инструмент.
|
||||||
|
Симуляция BER проверяется аналитической формулой, счётчик отброшенных пакетов —
|
||||||
|
пересчётом из журнала событий, тайминг failsafe — прямым арифметическим расчётом
|
||||||
|
из периода и порога. Если второй способ дал другое число, разбирайся, какой врёт.
|
||||||
|
|
||||||
|
4. **Проверь края.** Ноль, единица, пустой вход, максимум диапазона, переполнение
|
||||||
|
счётчика последовательности, разность номеров ровно 2^31.
|
||||||
|
|
||||||
|
5. **Проверь соответствие стилю проекта.** Русские докстроки и подписи осей,
|
||||||
|
`from __future__ import annotations`, датаклассы, CSV и PNG в `data/processed`,
|
||||||
|
именование как у соседних лаб.
|
||||||
|
|
||||||
|
## Формат находки
|
||||||
|
|
||||||
|
Каждая находка — строго так:
|
||||||
|
|
||||||
|
Файл и строка
|
||||||
|
Вход: что подаём
|
||||||
|
Ожидалось: что должно быть, со ссылкой на требование
|
||||||
|
Получено: что на деле, с выводом запуска
|
||||||
|
Проверено: команда, которой это воспроизводится
|
||||||
|
|
||||||
|
Формулировки «возможно», «стоило бы рассмотреть», «может быть проблемой» запрещены.
|
||||||
|
Если не смог воспроизвести — это не находка, а гипотеза, и помечай её отдельно в конце.
|
||||||
|
|
||||||
|
## Чего не делать
|
||||||
|
|
||||||
|
- Не редактируй файлы. У тебя нет на это инструментов и не должно быть.
|
||||||
|
- Не пиши замечания по стилю кода ради объёма. Одна подтверждённая находка
|
||||||
|
ценнее десяти рассуждений.
|
||||||
|
- Если всё чисто — так и напиши: что именно ты запустил, какие числа сверил,
|
||||||
|
и что расхождений нет. Пустой честный отчёт лучше выдуманного.
|
||||||
|
|
||||||
|
## Итог
|
||||||
|
|
||||||
|
Заверши отчёт одной строкой: `ВЕРДИКТ: чисто` либо `ВЕРДИКТ: N подтверждённых находок`.
|
||||||
35
.claude/commands/check.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
description: Независимая проверка уже сделанной работы — verifier и, при необходимости, adversary
|
||||||
|
argument-hint: [что проверяем: номер лабы, модуль или «текущие изменения»]
|
||||||
|
---
|
||||||
|
|
||||||
|
Проверяем: $ARGUMENTS
|
||||||
|
|
||||||
|
Если аргумент не задан, проверяем незакоммиченные изменения — возьми их из
|
||||||
|
`git status --porcelain` и `git diff`.
|
||||||
|
|
||||||
|
## Что сделать
|
||||||
|
|
||||||
|
1. Собери фактуру: какие файлы затронуты, какая лаба или модуль за это отвечает,
|
||||||
|
какой командой прогоняется полный тест.
|
||||||
|
|
||||||
|
2. Запусти `python tools/quick_gate.py`. Если шлюз не пройден — дальше не иди,
|
||||||
|
сначала почини, агентов дёргать бессмысленно.
|
||||||
|
|
||||||
|
3. Запусти агента `verifier`. Передай ему:
|
||||||
|
- список затронутых файлов,
|
||||||
|
- команду полного прогона,
|
||||||
|
- указание брать требование из `README.md` и `PROJECT_LOG.md`, а не из твоих слов.
|
||||||
|
|
||||||
|
4. Агента `adversary` запускай **только** если затронуто что-то из списка:
|
||||||
|
управление, failsafe, аварийная остановка, сеансы, перезапуск, сброс,
|
||||||
|
подлинность сообщений. Для видео, сжатия, FEC и модуляции он бесполезен —
|
||||||
|
не трать лимит.
|
||||||
|
|
||||||
|
5. Разбери находки как арбитр: воспроизведи, отклони невоспроизводимые вслух,
|
||||||
|
почини подтверждённые.
|
||||||
|
|
||||||
|
## Отчёт пользователю
|
||||||
|
|
||||||
|
Коротко: что запускалось, что нашли, что починили, что отклонили и почему.
|
||||||
|
Отчёты агентов пользователь не видит — пересказывай сам, не отсылай к ним.
|
||||||
68
.claude/commands/lab.md
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
---
|
||||||
|
description: Полный цикл работы над лабой — аудит, план, реализация, независимая проверка
|
||||||
|
argument-hint: <номер лабы> [краткая постановка]
|
||||||
|
---
|
||||||
|
|
||||||
|
Работаем над лабой: $ARGUMENTS
|
||||||
|
|
||||||
|
Порядок обязательный. Не перескакивай через этапы и не начинай писать код,
|
||||||
|
пока пользователь не согласовал план.
|
||||||
|
|
||||||
|
## Этап 1. Аудит
|
||||||
|
|
||||||
|
Запусти агента `Explore` с запросом: что в `protocol/` уже относится к этой задаче,
|
||||||
|
какие модули придётся трогать, где есть пересечение или дублирование, как устроены
|
||||||
|
две-три ближайшие по смыслу лабы в `experiments/`.
|
||||||
|
|
||||||
|
Прочитай сам последние записи в `PROJECT_LOG.md` — там указано, чем должен
|
||||||
|
заниматься следующий этап.
|
||||||
|
|
||||||
|
Выдай карту: что есть, чего нет, что придётся изменить. Только карта, без решений.
|
||||||
|
|
||||||
|
## Этап 2. План
|
||||||
|
|
||||||
|
На основе карты предложи план: какие модули создаются, какие меняются, что именно
|
||||||
|
измеряет лаба, какие CSV и PNG появятся в `data/processed`, какие функциональные
|
||||||
|
проверки будут в `run_functional_tests`.
|
||||||
|
|
||||||
|
**Остановись и дождись согласования.** Это прямое требование пользователя.
|
||||||
|
|
||||||
|
## Этап 3. Реализация
|
||||||
|
|
||||||
|
Пишешь ты, в этом же треде. Отдельного агента-кодера не запускай — у тебя уже есть
|
||||||
|
весь контекст, а он начнёт с нуля и потратит лимит впустую.
|
||||||
|
|
||||||
|
Держи стиль проекта: русские докстроки и подписи осей, `from __future__ import annotations`,
|
||||||
|
датаклассы для метрик, CSV и PNG в `data/processed`, `run_functional_tests` и `main`
|
||||||
|
как в соседних лабах.
|
||||||
|
|
||||||
|
После каждой заметной правки: `python tools/quick_gate.py`.
|
||||||
|
|
||||||
|
## Этап 4. Проверка
|
||||||
|
|
||||||
|
Запусти агента `verifier`. В задании передай:
|
||||||
|
- номер и постановку лабы своими словами,
|
||||||
|
- список созданных и изменённых файлов,
|
||||||
|
- команду полного прогона,
|
||||||
|
- прямое указание читать требование из `README.md` и `PROJECT_LOG.md`, а не из твоего пересказа.
|
||||||
|
|
||||||
|
Если лаба касается управления, аварийной остановки, сеансов, сброса или подлинности
|
||||||
|
сообщений — параллельно запусти `adversary` с брифом на атаку под эту тему.
|
||||||
|
|
||||||
|
Оба агента read-only. Правки вносишь ты.
|
||||||
|
|
||||||
|
## Этап 5. Разбор находок
|
||||||
|
|
||||||
|
Ты арбитр. По каждой находке:
|
||||||
|
- воспроизведи её сам, прежде чем чинить;
|
||||||
|
- невоспроизводимую отклони и скажи об этом вслух;
|
||||||
|
- подтверждённую почини и перезапусти проверку.
|
||||||
|
|
||||||
|
Не чини всё подряд из вежливости к агенту.
|
||||||
|
|
||||||
|
## Этап 6. Завершение
|
||||||
|
|
||||||
|
Полный прогон лабы, затем `python tools/quick_gate.py`.
|
||||||
|
Запись в `PROJECT_LOG.md` в том же формате, что предыдущие записи.
|
||||||
|
Коммит в стиле проекта: `LabNNN: краткое описание на английском`.
|
||||||
|
Коммить только после явного согласия пользователя.
|
||||||
59
.claude/hooks/quick_gate_hook.py
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
"""
|
||||||
|
Обёртка быстрого шлюза для хука PostToolUse.
|
||||||
|
|
||||||
|
Читает JSON события со стандартного ввода. Если правка затронула файл Python
|
||||||
|
в protocol или tests, запускает tools/quick_gate.py.
|
||||||
|
|
||||||
|
Коды возврата:
|
||||||
|
0 — правка не по теме либо шлюз пройден, вывода нет;
|
||||||
|
2 — шлюз не пройден, текст ошибки уходит в stderr и возвращается модели.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
PROJECT_ROOT = Path(__file__).resolve().parents[2]
|
||||||
|
WATCHED = re.compile(r"[\\/](?:protocol|experiments|tests|tools)[\\/][^\\/]+\.py$")
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> int:
|
||||||
|
try:
|
||||||
|
event = json.load(sys.stdin)
|
||||||
|
except (json.JSONDecodeError, ValueError):
|
||||||
|
return 0
|
||||||
|
|
||||||
|
tool_input = event.get("tool_input") or {}
|
||||||
|
tool_response = event.get("tool_response") or {}
|
||||||
|
file_path = tool_response.get("filePath") or tool_input.get("file_path") or ""
|
||||||
|
|
||||||
|
if not WATCHED.search(str(file_path)):
|
||||||
|
return 0
|
||||||
|
|
||||||
|
environment = dict(os.environ, PYTHONIOENCODING="utf-8")
|
||||||
|
|
||||||
|
completed = subprocess.run(
|
||||||
|
[sys.executable, str(PROJECT_ROOT / "tools" / "quick_gate.py")],
|
||||||
|
cwd=PROJECT_ROOT,
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
encoding="utf-8",
|
||||||
|
errors="replace",
|
||||||
|
env=environment,
|
||||||
|
)
|
||||||
|
|
||||||
|
if completed.returncode == 0:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
output = (completed.stdout + completed.stderr).strip()
|
||||||
|
print(output, file=sys.stderr)
|
||||||
|
return 2
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
raise SystemExit(main())
|
||||||
18
.claude/settings.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json.schemastore.org/claude-code-settings.json",
|
||||||
|
"hooks": {
|
||||||
|
"PostToolUse": [
|
||||||
|
{
|
||||||
|
"matcher": "Edit|Write|MultiEdit",
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "python .claude/hooks/quick_gate_hook.py",
|
||||||
|
"timeout": 60,
|
||||||
|
"statusMessage": "Быстрый шлюз"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
17
.gitignore
vendored
@@ -29,9 +29,24 @@ __pycache__/
|
|||||||
venv/
|
venv/
|
||||||
env/
|
env/
|
||||||
|
|
||||||
# Необработанные данные и IQ-записи
|
# Необработанные данные и IQ-записи.
|
||||||
|
# Правило закрывает крупные записи отсчётов и видео: они воспроизводятся
|
||||||
|
# заново и в историю не помещаются.
|
||||||
data/raw/
|
data/raw/
|
||||||
|
|
||||||
|
# Исключения: исходные изображения — это входные данные лабораторных, а не
|
||||||
|
# результат. Без них Lab007, Lab009, Lab011 и Lab012 не запускаются, поэтому
|
||||||
|
# они хранятся в репозитории. Суммарно около 1 МБ.
|
||||||
|
!data/raw/lab007_source.jpg
|
||||||
|
!data/raw/lab009_source.jpg
|
||||||
|
!data/raw/lab011_scene.jpg
|
||||||
|
!data/raw/lab012_safety_scene.jpg
|
||||||
|
|
||||||
|
# Метаданные и спектр записи Lab024a: сама запись отсчётов не хранится,
|
||||||
|
# поэтому они оставлены как след проведённого измерения.
|
||||||
|
!data/raw/lab024a_pluto_rx_100mhz.json
|
||||||
|
!data/raw/lab024a_pluto_rx_100mhz_spectrum.png
|
||||||
|
|
||||||
# Временные файлы редакторов
|
# Временные файлы редакторов
|
||||||
*.tmp
|
*.tmp
|
||||||
*.temp
|
*.temp
|
||||||
|
|||||||
60
.gitlab-ci.yml
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# Непрерывная проверка SDR Rover Link.
|
||||||
|
#
|
||||||
|
# Здесь выполняются только быстрые проверки: они должны укладываться в
|
||||||
|
# секунды. Лабораторные эксперименты сюда не помещаются — они длятся
|
||||||
|
# минутами, требуют исходных данных из data/raw и в части случаев
|
||||||
|
# подключённого PlutoSDR. Их запуск остаётся ручным.
|
||||||
|
#
|
||||||
|
# Оборудование конвейеру не нужно: устанавливается только расчётное
|
||||||
|
# окружение, без pyadi-iio и libiio.
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- gate
|
||||||
|
- test
|
||||||
|
- lint
|
||||||
|
|
||||||
|
default:
|
||||||
|
image: python:3.13
|
||||||
|
before_script:
|
||||||
|
- python --version
|
||||||
|
- python -m pip install --quiet --upgrade pip
|
||||||
|
- python -m pip install --quiet -r requirements.txt
|
||||||
|
cache:
|
||||||
|
key: "python-$CI_COMMIT_REF_SLUG"
|
||||||
|
paths:
|
||||||
|
- .cache/pip
|
||||||
|
|
||||||
|
variables:
|
||||||
|
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
|
||||||
|
PYTHONIOENCODING: "utf-8"
|
||||||
|
|
||||||
|
# Дешёвый шлюз: синтаксис всех файлов, импорт protocol и функциональные
|
||||||
|
# проверки тех лабораторных, которым не нужны данные эксперимента.
|
||||||
|
# Выполняется первым, потому что ловит самые грубые поломки за секунду.
|
||||||
|
быстрый-шлюз:
|
||||||
|
stage: gate
|
||||||
|
script:
|
||||||
|
- python tools/quick_gate.py
|
||||||
|
|
||||||
|
# Быстрые проверки ядра протокола.
|
||||||
|
тесты-ядра:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- python -m pytest tests/ -q --junitxml=report.xml
|
||||||
|
artifacts:
|
||||||
|
when: always
|
||||||
|
reports:
|
||||||
|
junit: report.xml
|
||||||
|
expire_in: 1 week
|
||||||
|
|
||||||
|
# Проверка стиля. Пока не блокирует конвейер: в лабораторных Lab001–Lab041
|
||||||
|
# принято своеобразное оформление с переносами аргументов, и приводить их
|
||||||
|
# к единому стилю сейчас означало бы тронуть 50 файлов с зафиксированными
|
||||||
|
# результатами. Ограничение снимается, когда договоримся о правилах.
|
||||||
|
стиль:
|
||||||
|
stage: lint
|
||||||
|
allow_failure: true
|
||||||
|
before_script:
|
||||||
|
- python -m pip install --quiet ruff
|
||||||
|
script:
|
||||||
|
- ruff check protocol/ tests/ tools/
|
||||||
537
PROJECT_LOG.md
@@ -54,3 +54,540 @@ git version 2.51.1.windows.1
|
|||||||
- Исследованы размеры payload 64, 128, 256, 512 и 1024 байта.
|
- Исследованы размеры payload 64, 128, 256, 512 и 1024 байта.
|
||||||
- Размер payload 512 байт принят как рабочий кандидат.
|
- Размер payload 512 байт принят как рабочий кандидат.
|
||||||
- Окончательный выбор размера пакета перенесён в Lab029.
|
- Окончательный выбор размера пакета перенесён в Lab029.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 003
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
27 июля 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab029: моделирование потерь и ошибок видеопакетов.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Исследованы независимые потери пакетов и независимые битовые ошибки.
|
||||||
|
- Проверены короткие, средние и длинные серии потерь по модели Gilbert–Elliott.
|
||||||
|
- Выполнено сравнение payload 256, 512 и 1024 байта.
|
||||||
|
- Подтверждены packet CRC32, изоляция соседних кадров и атомарная сборка BASE + ROI.
|
||||||
|
- Зафиксировано ограничение пакетной временной шкалы Lab029.
|
||||||
|
- Сравнение помех одинаковой физической длительности перенесено в Lab029B.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 004
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
27 июля 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab029B: временная модель серийных потерь.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Помехи смоделированы на непрерывной временной шкале.
|
||||||
|
- Контрольная скорость передачи установлена равной 300 кбит/с.
|
||||||
|
- Исследованы средние длительности Bad 10, 50, 200 и 1000 мс.
|
||||||
|
- Payload 512 байт выбран для дальнейшей разработки.
|
||||||
|
- Payload 1024 байта оставлен резервным вариантом.
|
||||||
|
- Подтверждено, что без исправления ошибок возможны длительные прерывания видеопотока.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 005
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
29 июля 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab030: блочное исправление стираний.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Реализовано блочное исправление стираний над GF(256).
|
||||||
|
- Проверены режимы без исправления, 8+1, 8+2 и 8+4.
|
||||||
|
- Режим 8+2 выбран основным рабочим режимом.
|
||||||
|
- Режим 8+4 оставлен контрольным.
|
||||||
|
- Подтверждено, что без перемежения продолжительные серии потерь не исправляются.
|
||||||
|
- Следующая лабораторная посвящена перемежению пакетов.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 006
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
29 июля 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab031: перемежение блоков исправления ошибок.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Исследовано перемежение блоков исправления ошибок.
|
||||||
|
- Проверены глубины D=1, 2, 4 и 8.
|
||||||
|
- Подтверждено, что глубокое перемежение повышает задержку сильнее, чем полезность для операторского видеопотока.
|
||||||
|
- D=1 оставлен основным режимом.
|
||||||
|
- D=2 сохранён как резервный вариант.
|
||||||
|
- D=4 и D=8 исключены из основной линии разработки.
|
||||||
|
- Следующая лабораторная подбирает размер блока и количество проверочных пакетов.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 007
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
29 июля 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab032: параметры блочного исправления потерянных пакетов.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Исследованы параметры блочного исправления потерянных пакетов.
|
||||||
|
- Сравнивались режимы без исправления, 4+1, 8+2, 12+3, 6+2, 8+3, 4+2 и 8+4.
|
||||||
|
- Режим 12+3 выбран основным.
|
||||||
|
- Его транспортный поток составляет 226,951 кбит/с.
|
||||||
|
- Запас до контрольных 300 кбит/с составляет 73,049 кбит/с.
|
||||||
|
- Режим 8+4 оставлен усиленным экспериментальным вариантом.
|
||||||
|
- Режим 8+3 не принят из-за отсутствия устойчивого преимущества.
|
||||||
|
- Подтверждено, что продолжительные помехи нельзя компенсировать только увеличением числа проверочных пакетов.
|
||||||
|
- Следующий этап посвящён совместной передаче команд, телеметрии и видео с приоритетным обслуживанием.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 008
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
3 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab033: общий пакет канала и приоритетное обслуживание.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Добавлен общий 32-байтный заголовок канала для команд, телеметрии и видео.
|
||||||
|
- Общая предложенная нагрузка составляет 258,214 кбит/с.
|
||||||
|
- Подтверждено, что FIFO не обеспечивает требуемую задержку команд.
|
||||||
|
- Выбран строгий приоритет с заменой устаревших состояний.
|
||||||
|
- Аварийная команда имеет наивысший приоритет.
|
||||||
|
- Скорость 260 кбит/с практически полностью загружена.
|
||||||
|
- При 230 кбит/с видеоданные накапливаются и устаревают.
|
||||||
|
- Итоговое восстановление всех кадров после освобождения очереди не означает работу видео в реальном времени.
|
||||||
|
- Расчёты и графики выполнены с Matplotlib 3.11.1.
|
||||||
|
- Следующий этап посвящён отбрасыванию устаревших видеокадров.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 009
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
3 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab034: реактивное отбрасывание устаревших видеокадров.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Сравнены непрерывные FEC-блоки и блоки, выровненные по составным кадрам.
|
||||||
|
- Выравнивание увеличивает видеопоток на 5,975 кбит/с, или на 2,633%.
|
||||||
|
- При 300 кбит/с удаление кадров не требуется.
|
||||||
|
- При 260 кбит/с ограничения 1000 и 1500 мс не срабатывают, а ограничение 500 мс уже чрезмерно.
|
||||||
|
- При 230 кбит/с реактивное удаление устаревших кадров уменьшает очередь, но резко снижает частоту обновления.
|
||||||
|
- Ограничение 500 мс оставляет только 3 из 63 кадров.
|
||||||
|
- Ограничение 1500 мс оставляет 27 из 63 кадров.
|
||||||
|
- Подтверждено, что короткая очередь сама по себе не означает свежее изображение.
|
||||||
|
- Текущая реактивная политика не принята.
|
||||||
|
- Следующий этап посвящён упреждающему допуску кадров и обслуживанию видео целыми кадрами.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 010
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
3 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab035: упреждающий допуск и обслуживание видео целыми составными кадрами.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Lab035 исследует упреждающий допуск и обслуживание видео целыми составными кадрами.
|
||||||
|
- Начатый кадр всегда передаётся полностью.
|
||||||
|
- Команды и телеметрия могут передаваться между его пакетами.
|
||||||
|
- Реактивное удаление Lab034 окончательно не принято.
|
||||||
|
- Основная политика — хранение только самого свежего не начатого кадра.
|
||||||
|
- При 230 кбит/с опубликовано 56 из 63 кадров с частотой около 2,6 кадра/с.
|
||||||
|
- Бесполезно переданных видеобайтов нет.
|
||||||
|
- Очередь из двух кадров увеличивает возраст изображения.
|
||||||
|
- Прогноз 1000 мс не дал преимущества над более простой политикой.
|
||||||
|
- Прогноз 500 мс чрезмерно снижает частоту обновления.
|
||||||
|
- Следующая лабораторная проверяет долговременную устойчивость и изменение пропускной способности канала.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 011
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
3 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab036: долговременная устойчивость видеопланировщика при изменении пропускной способности.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Lab036 проверяет видеопланировщик на протяжении 600 секунд.
|
||||||
|
- Расчётный рост очереди без удаления совпал с моделью.
|
||||||
|
- При 230 кбит/с очередь без удаления выросла до 4139 пакетов.
|
||||||
|
- 95-й процентиль возраста изображения достиг 74,6 секунды.
|
||||||
|
- Плавное поступление сильно устаревших кадров непригодно для управления.
|
||||||
|
- Политика хранения только самого свежего не начатого кадра ограничивает очередь.
|
||||||
|
- При 230 кбит/с она обеспечила около 2,615 кадра/с.
|
||||||
|
- После восстановления скорости возраст изображения снизился ниже 500 мс за 0,077 секунды.
|
||||||
|
- Политика двух ожидающих кадров оставлена резервной.
|
||||||
|
- Следующая лабораторная объединяет планировщик с моделью ошибок радиоканала и защитой команд управления.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 012
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
4 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab037: полный транспорт с серийными потерями и повторением критических команд.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Lab037 объединяет видеопоток, обычные и аварийные команды, телеметрию и временные серийные потери пакетов.
|
||||||
|
- Близкие повторные копии команд часто попадают в один и тот же интервал помехи.
|
||||||
|
- Повторение Lab037 лишь умеренно уменьшило долю недоставленных управляющих состояний.
|
||||||
|
- Максимальный промежуток без свежей команды остался более одной секунды.
|
||||||
|
- Своевременная доставка аварийной команды по радиоканалу не гарантируется.
|
||||||
|
- Для безопасного поведения при потере связи требуется локальный сторожевой таймер на ровере.
|
||||||
|
- Следующий этап исследует сторожевой таймер, временно разнесённую аварийную команду и подтверждение получения.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 013
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
4 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab038: локальный сторожевой таймер и подтверждаемая аварийная команда.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Lab038 исследует локальный сторожевой таймер, разнесённую аварийную команду и подтверждение получения.
|
||||||
|
- Три инварианта безопасности не нарушены ни разу.
|
||||||
|
- Подтверждение не является условием выполнения аварийной остановки.
|
||||||
|
- Режим с подтверждением сохранил итоговую доставку аварийной команды 99,694%.
|
||||||
|
- Среднее число аварийных копий уменьшилось с 11 до 1,071.
|
||||||
|
- Дополнительная нагрузка подтверждаемого режима составляет около 0,0093 кбит/с.
|
||||||
|
- Дополнительное повторение обычных команд не принято как основной режим.
|
||||||
|
- Порог 100 мс вызывает слишком частые безопасные остановки.
|
||||||
|
- Порог 500 мс допускает слишком большой путь до реакции.
|
||||||
|
- Для следующей проверки принята двухступенчатая логика: предварительная реакция после 150 мс и обязательная остановка после 250 мс.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 014
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
5 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab039: двухступенчатая безопасная реакция и оценка пути до остановки.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Lab039 реализует состояния NORMAL, STAGE1_DECELERATION, STAGE2_BRAKING и EMERGENCY_LATCHED.
|
||||||
|
- Используется точное событийное интегрирование движения.
|
||||||
|
- Аналитические значения совпали с моделью с нулевой ошибкой.
|
||||||
|
- Максимальный полный путь составил 13,9642 м.
|
||||||
|
- При 25 км/ч и номинальном профиле политика 150/250 мс дала полный путь около 9,5388 м.
|
||||||
|
- Основную часть пути составляет торможение после реакции.
|
||||||
|
- Пара 150/250 мс сохраняется как предварительный кандидат, но окончательно не утверждается.
|
||||||
|
- Фактические замедления должны быть измерены на реальном ровере.
|
||||||
|
- Локальный сторожевой таймер сохранил безопасную реакцию в опытах, где аварийная команда не была доставлена.
|
||||||
|
- Следующий этап исследует постоянное аварийное намерение наземной станции и безопасное разрешение повторного движения.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 015
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
5 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab040: постоянное аварийное намерение и безопасное повторное разрешение движения.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Lab040 реализует постоянное аварийное намерение наземной станции.
|
||||||
|
- Ограниченное окно повторения 500 мс признано небезопасным.
|
||||||
|
- При полностью потерянной аварийной передаче ограниченный режим допускал последующее возобновление движения.
|
||||||
|
- В одном из тяжёлых условий путь после такого восстановления достигал в среднем около 490 м при 25 км/ч.
|
||||||
|
- Постоянное аварийное намерение исключило положительные задания скорости и небезопасные возобновления движения.
|
||||||
|
- Подтверждение аварийной команды не снимает аварийное намерение.
|
||||||
|
- Сброс принимается только после остановки, при свежей связи и корректных идентификаторах.
|
||||||
|
- Подтверждение сброса не восстанавливает старую команду движения.
|
||||||
|
- Движение требует новой явной команды оператора.
|
||||||
|
- Следующий этап посвящён сеансам связи, перезапускам устройств и защите от пакетов предыдущего сеанса.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 016
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
5 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab041: сеансы связи, безопасный запуск и защита от пакетов предыдущего сеанса.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Lab041 вводит идентификаторы сеанса станции, запуска ровера и периода управления.
|
||||||
|
- Одного номера сообщения недостаточно после перезапуска.
|
||||||
|
- В основном режиме все 2807 введённых старых пакетов были отклонены.
|
||||||
|
- Ошибочно принятых старых пакетов не было.
|
||||||
|
- Исходный режим без идентификаторов принял все старые пакеты.
|
||||||
|
- После перезапуска движение запрещено до нового согласования, подтверждения разрешения и новой команды оператора.
|
||||||
|
- Аварийное намерение наземной станции сохраняется после перезапуска.
|
||||||
|
- Неоднозначная разность номеров 2^31 отклоняется.
|
||||||
|
- Следующий этап посвящён криптографической проверке подлинности управляющих сообщений и защите от намеренной подделки.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 017
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
7 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Аудит достоверности Lab041 и удаление показателей, не выводимых из модели. Начало этапа стабилизации после Lab041.
|
||||||
|
|
||||||
|
## Причина записи
|
||||||
|
|
||||||
|
Запись 016 не отменяется, но нуждается в уточнении. Машинный аудит репозитория показал, что часть числовых результатов Lab041 не выводилась ни из модели этой лабораторной, ни из указанного источника. Согласно правилу журнала прежняя запись сохранена, а изменение зафиксировано отдельно.
|
||||||
|
|
||||||
|
## Что обнаружено
|
||||||
|
|
||||||
|
- В функции `simulate_trial` доли публикации видео, доставки телеметрии и доставки управления, а также базовая длина очереди задавались вписанными таблицами, а не вычислялись.
|
||||||
|
- Значение доли видео 0,910 для канала 260 кбит/с не соответствовало заявленному источнику: Lab040 даёт 0,9603, Lab037 — разброс 0,9026...0,9174.
|
||||||
|
- Базовая длина очереди 31 для того же канала не соответствовала Lab040, где получено 36...38 пакетов.
|
||||||
|
- Коэффициенты влияния нагрузки 0,15, 0,10 и 0,05 не выводились ни из какой модели.
|
||||||
|
- Параметры торможения были зашиты литералами `0.250` и делителем `6.0` без связи с профилем `nominal` Lab039, откуда они происходят.
|
||||||
|
- Пять из четырнадцати инвариантов безопасности не измерялись: два вычислялись выражением с умножением на ноль, один был литеральным нулём, ещё два опирались на поля, которые никогда не заполнялись. Проверка `validate_outputs` подтверждала эти константы, то есть проверяла тождество.
|
||||||
|
- Формулировка «все 2807 введённых старых пакетов были отклонены» описывает перебор таблицы сценариев, а не измеренную вероятность отклонения. Число раскладывается как семь сценариев на 401 повтор.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Из Lab041 удалены четыре показателя: доли доставки видео, телеметрии и управления и максимальная длина очереди. Они относятся к Lab037 и Lab040 и в Lab041 не моделируются.
|
||||||
|
- Удалён график `lab041_traffic_impact.png`, потерявший основание. Осталось семь графиков.
|
||||||
|
- Удалены поля `negative_speed_cases` и `speed_limit_exceeded_cases`, которые никогда не вычислялись, и тождественные проверки в `validate_outputs`.
|
||||||
|
- Параметры торможения связаны с профилем `nominal` Lab039 через именованные константы `LAB039_NOMINAL_STAGE2_MPS2` и `LAB039_STAGE2_THRESHOLD_SECONDS`; горизонт незащищённого движения выделен как явно принятое допущение.
|
||||||
|
- Перенесённые величины `VIDEO_OFFERED_LOAD_KBPS` и `TELEMETRY_OFFERED_LOAD_KBPS` снабжены указанием источника: Lab038, поля `video_load_kbps` и `telemetry_load_kbps`.
|
||||||
|
- Секция инвариантов переписана: девять свойств, следующих из архитектуры, снабжены ссылками на подтверждающие функциональные проверки; пять свойств, которые матрица не может измерить, вынесены в отдельный раздел со ссылками на проверки 04, 06, 07, 10, 16 и 19.
|
||||||
|
- В отчёт добавлено разграничение того, что моделируется розыгрышем, что задано архитектурой и что не моделируется вовсе.
|
||||||
|
- Проверка 04 расширена отрицательной скоростью и границей 15 м/с, поэтому соответствующее свойство теперь подтверждается реально, а не константой.
|
||||||
|
- Оценка пути после перезапуска помечена как расчёт по замкнутой формуле, одинаковый во всех повторах, а не как результат розыгрыша.
|
||||||
|
|
||||||
|
## Результат
|
||||||
|
|
||||||
|
- Lab041 перезапущена полностью: 180 сочетаний, 24 из 24 функциональных проверок пройдены, пять CSV и семь PNG.
|
||||||
|
- Сверка с прежними файлами показала, что удалено ровно шесть столбцов, а все сохранённые значения совпали до последнего знака. Расхождений в общих столбцах ноль.
|
||||||
|
- Научные выводы Lab041 не изменились. Максимальный путь после перезапуска остался 9,7737 м, постоянная нагрузка управления 10,88000 кбит/с, полный предложенный поток 262,076 кбит/с.
|
||||||
|
- Выводы Записи 016 о сеансах, безопасном запуске и отклонении старых пакетов остаются в силе. Уточняется их основание: доказательством служат 24 функциональные проверки, работающие с настоящими автоматами, а не счётчики матрицы из 180 сочетаний.
|
||||||
|
|
||||||
|
## Следующий этап
|
||||||
|
|
||||||
|
Криптографическая аутентификация отложена. Сначала выполняется этап стабилизации: быстрые тесты `protocol/` вместо единственной точки входа через лабораторную, разделение быстрых проверок и экспериментов, воспроизводимое описание окружения.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 018
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
10 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Выбор радиочастотной архитектуры: рабочий диапазон, скачки по частоте и меры против подавления.
|
||||||
|
|
||||||
|
## Исходные данные
|
||||||
|
|
||||||
|
- Устройство опрошено напрямую: `Analog Devices PlutoSDR Rev.C (Z7010-AD9361)`. Приёмник перестраивается от 70 МГц до 6 ГГц, передатчик от 46,9 МГц. Минимальная частота дискретизации 2 083 333 Гц.
|
||||||
|
- Ограничений по разрешённым частотам у проекта нет.
|
||||||
|
- Усилителя мощности нет, покупка отложена до первых испытаний.
|
||||||
|
|
||||||
|
## Отвергнутые варианты и причины
|
||||||
|
|
||||||
|
**Выбор редкой фиксированной частоты.** Рассматривался как защита от подавления. Отклонён: одиночная несущая в пустом эфире обнаруживается сканирующим приёмником тривиально. Уязвимость создаёт не значение частоты, а её неизменность.
|
||||||
|
|
||||||
|
**Скачки по всему диапазону 70 МГц – 6 ГГц.** Теоретически требуют от заградительной помехи на 42 дБ больше мощности, но выигрыш недостижим. Отношение крайних частот 86:1, одна антенна такой полосы не перекрывает; разброс потерь на 10 км составляет 39 дБ, проектировать пришлось бы по худшему краю; выше примерно 1 ГГц дифракция исчезает и для наземного ровера без прямой видимости эти каналы мертвы. Кроме того, подавление направлено на диапазон, в котором связь действительно работает, а не на тот, который способно настроить оборудование.
|
||||||
|
|
||||||
|
**Диапазоны 330–433 МГц.** Отклонены как плотно занятые и общеизвестные.
|
||||||
|
|
||||||
|
## Принято
|
||||||
|
|
||||||
|
Рабочий диапазон **200–250 МГц**. Обоснование: четвертьволновая антенна 33 см пригодна для установки на ровер, дифракция ещё эффективна, участок заметно свободнее любительского 144 МГц и УКВ выше 300 МГц. Потери на 10 км составляют около 99,5 дБ.
|
||||||
|
|
||||||
|
Совокупность мер против подавления:
|
||||||
|
|
||||||
|
1. **Скачки по частоте в пределах 200–250 МГц.** Требуют от заградительной помехи на 22 дБ больше мощности при неизменной антенне и механике ровера.
|
||||||
|
2. **Направленная антенна наземной станции.** Даёт 10–20 дБ усиления и пространственно подавляет помеху, приходящую с иного направления.
|
||||||
|
3. **Расширение спектра для команд управления.** Поток команд составляет 10,88 кбит/с, поэтому расширение для него реализуемо в узкой полосе, в отличие от видеопотока.
|
||||||
|
|
||||||
|
Видео остаётся некритичным классом: при подавлении управление сохраняется в узкой полосе, а ровер переходит к безопасному поведению по уже реализованной логике.
|
||||||
|
|
||||||
|
## Запрещённые участки
|
||||||
|
|
||||||
|
- 108–137 МГц — авиационная связь.
|
||||||
|
- 243 МГц — международная аварийная частота.
|
||||||
|
|
||||||
|
## Ограничения решения
|
||||||
|
|
||||||
|
- Нижняя граница 70 МГц определяется приёмником Pluto и без смены оборудования не преодолевается.
|
||||||
|
- Скачки требуют согласованной последовательности у обеих сторон, то есть зависят от криптографической аутентификации, которая пока не реализована.
|
||||||
|
- Расчёты выполнены для свободного пространства. Потери на препятствиях 20–40 дБ учтены оценочно и подлежат измерению.
|
||||||
|
- Дальность 10 км без усилителя мощности не достигается.
|
||||||
|
|
||||||
|
## Влияние на ближайшие работы
|
||||||
|
|
||||||
|
На Lab042 не влияет: там кабельная петля, несущая 435 МГц выбрана произвольно. Диапазон 200–250 МГц вступает в силу начиная с эфирных испытаний.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 019
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
10 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Lab042: первая передача изображения через реальный радиотракт. Эфирная проверка на паре антенн.
|
||||||
|
|
||||||
|
## Причина эфирного прогона
|
||||||
|
|
||||||
|
Кабельная петля требует переходника SMA папа-папа, которого пока нет: пигтейлы к антеннам оканчиваются папой, а разъёмы Pluto — мамы. Чтобы не простаивать, выполнена вспомогательная эфирная проверка на двух антеннах, разнесённых на 60 см. Она не заменяет кабельный опыт: уровни в помещении не контролируются строго, возможны переотражения. Её задача — снять последнюю неизвестность в коде, а именно обвязку вокруг устройства, которая в моделях не проверяется.
|
||||||
|
|
||||||
|
## Условия
|
||||||
|
|
||||||
|
- Устройство Analog Devices PlutoSDR Rev.C, чип AD9361, прошивка v0.32.
|
||||||
|
- Несущая 225 МГц, внутри целевого диапазона Записи 018.
|
||||||
|
- Антенны, рассчитанные на 108 МГц, работают на несущей как полуволновые. Частота передачи и частота, на которую рассчитана антенна, различны, поэтому в авиационный диапазон 108–137 МГц опыт не заходит.
|
||||||
|
- Изображение 320x180 в градациях серого, JPEG 4756 байт при качестве 35, десять фрагментов.
|
||||||
|
|
||||||
|
## Результат
|
||||||
|
|
||||||
|
- Изображение передано и собрано побайтово идентично исходному. Контрольная сумма MD5 переданного и принятого файла совпала.
|
||||||
|
- Десять фрагментов из десяти, ни одной несошедшейся контрольной суммы.
|
||||||
|
- Средняя нормированная корреляция при поиске кадра 0,99951.
|
||||||
|
- Средняя оценка ухода несущей минус 0,368 Гц, что отражает общий опорный генератор передатчика и приёмника.
|
||||||
|
- Канальная скорость 18,404 кбит/с при длительности сигнала в эфире около 2,07 секунды.
|
||||||
|
- Результат воспроизведён тремя запусками подряд с одинаковой контрольной суммой.
|
||||||
|
|
||||||
|
## Дефекты, вскрытые железом
|
||||||
|
|
||||||
|
Программная модель проходила чисто, но на устройстве обнаружились четыре дефекта, каждый воспроизведён и устранён.
|
||||||
|
|
||||||
|
- Кадр длиной 566 528 отсчётов не помещался в приёмный буфер 262 144. Между отдельными чтениями поток отсчётов не является непрерывным, и кадр на стыке разрушался. Приём переведён на один буфер, размер которого рассчитывается по длине кадра.
|
||||||
|
- Частотная коррекция применялась всегда, тогда как при общем опорном генераторе истинный уход близок к нулю. Оценка по маркеру длиной 80 символов состояла из шума, и коррекция им поворачивала фазу вдоль всего кадра: измерено 65 процентов ошибочных битов. Перенесена защита should_apply_cfo_correction из Lab023, разрешающая коррекцию только вне мёртвой зоны.
|
||||||
|
- Усиление приёмника 20 дБ давало сигнал около 0,0003 от шкалы АЦП. Рабочие уровни подобраны измерением: приёмник 50 дБ, передатчик минус 10 дБ дают ноль ошибочных битов с запасом.
|
||||||
|
- Величина вектора ошибки при неудачном приёме возвращала ноль, то есть показывала идеальный сигнал там, где сигнала не было. Это тот же класс ошибки, что вписанные показатели Lab041: метрика при отказе рапортует лучшее значение. Заменена на явный признак невычислимости.
|
||||||
|
|
||||||
|
## Ограничения
|
||||||
|
|
||||||
|
- Эфирный прогон является проверкой тракта, а не измерением: уровни не контролируются как в кабельной сборке.
|
||||||
|
- Потолок усиления передатчика в эфирном режиме рассчитывается из бюджета линии по расстоянию между антеннами, а не задан константой.
|
||||||
|
|
||||||
|
## Следующий этап
|
||||||
|
|
||||||
|
Кабельная петля через аттенюатор 30 дБ после получения переходника папа-папа. Это и есть заявленный опыт Lab042 с контролируемыми уровнями, его результат станет основным для лабораторной. Затем Lab043 — разведение на два устройства.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 020
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
11 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Lab042 завершена: кабельная петля через аттенюатор, зависимость доставки от мощности, устранение трёх дефектов отчётности.
|
||||||
|
|
||||||
|
## Схема опыта
|
||||||
|
|
||||||
|
Выход передатчика PlutoSDR через кабель SMA, аттенюатор AT30S 30 дБ, переходник и второй кабель на вход приёмника того же устройства. Антенны сняты. Это заявленный основной опыт лабораторной с контролируемыми уровнями, в отличие от вспомогательной эфирной проверки Записи 019.
|
||||||
|
|
||||||
|
## Зависимость доставки от мощности передатчика
|
||||||
|
|
||||||
|
Кабельный тракт при неизменной схеме исследован по усилению передатчика. Получен отчётливый переход от отказа к устойчивой передаче:
|
||||||
|
|
||||||
|
- TX минус 30 дБ: 0 из 10 фрагментов, контрольная сумма не сходится ни разу, средняя корреляция 0,936. Сигнал ниже порога уверенного приёма.
|
||||||
|
- TX минус 20 дБ: 8 из 10 фрагментов, средняя корреляция 0,992. Пограничный режим: часть кадров проходит.
|
||||||
|
- TX минус 10 дБ: 10 из 10 фрагментов, изображение собрано побайтово. Устойчивая передача.
|
||||||
|
|
||||||
|
Значения TX минус 30 и минус 20 дБ — исследование порога, повторять их не требуется. Рабочая точка кабельной петли: TX минус 10 дБ, RX плюс 20 дБ, аттенюатор 30 дБ, несущая 435 МГц.
|
||||||
|
|
||||||
|
Начальные умолчания кабельного режима TX минус 30 и RX плюс 20 дБ на железе прежде не проверялись; отказ первого прогона объяснялся именно этим, а не дефектом обработки.
|
||||||
|
|
||||||
|
## Результат рабочей точки
|
||||||
|
|
||||||
|
- Найдено 10 кадров из 10, контрольная сумма сошлась у всех десяти, восстановлены все фрагменты.
|
||||||
|
- Изображение собрано и совпадает с переданным. Совпадение подтверждено независимо: SHA-256 принятого файла сверен с SHA-256 переданного JPEG, пересобранного из исходника отдельно от прогона. Оба равны 751d7ea0d8711e2ef54fc5cf209a809cfee5bbb14916dd20aa201d5285b40286.
|
||||||
|
- Размер JPEG 4756 байт, качество 30, десять фрагментов.
|
||||||
|
- Длительность сигнала около 2,07 секунды, канальная скорость 18,404 кбит/с.
|
||||||
|
- Кадр 8 прошёл контрольную сумму при пониженной корреляции поиска 0,866 против 0,998 у остальных: низкая корреляция маркера не означает испорченных данных, фаза дискретизации была подобрана и кадр демодулировался чисто.
|
||||||
|
|
||||||
|
## Устранённые дефекты отчётности
|
||||||
|
|
||||||
|
Разбор кабельного прогона вскрыл три дефекта, при которых провал мог быть принят за успех. Все три устранены, каждый закрыт быстрым тестом в tests/test_lab042_reporting.py.
|
||||||
|
|
||||||
|
- Величина вектора ошибки нормировалась на единичный эталон, из-за чего при слабом сигнале становилась искусственно малой: провалившийся прогон показывал EVM меньше, чем успешный. Нормировка исправлена на мощность подогнанного сигнала. При невозможности вычислить величину возвращается признак невычислимости, а не ноль.
|
||||||
|
- Отчёт перечислял lab042_received.jpg среди созданных файлов безусловно, даже когда изображение не собрано и файла нет. Теперь файл указывается только при фактической сборке.
|
||||||
|
- Программа завершалась кодом ноль при полном отказе передачи. Введён критерий приёмки: при несобранном изображении код завершения ненулевой, чтобы автоматика не приняла провал за успех.
|
||||||
|
|
||||||
|
## Проверки
|
||||||
|
|
||||||
|
- Быстрые тесты ядра расширены с 125 до 135. Добавленные проверяют неуспешный путь: провал даёт ненулевой код, отсутствующий файл не объявляется созданным, невычислимая метрика не превращается в ноль.
|
||||||
|
- Окончательный кабельный прогон рабочей точки выполнен уже исправленной версией программы, поэтому итоговый отчёт сформирован ею.
|
||||||
|
|
||||||
|
## Следующий этап
|
||||||
|
|
||||||
|
Lab043: передаёт PlutoSDR, принимает RTL-SDR. Общий опорный генератор исчезает, впервые появляется реальное рассогласование несущей и частоты дискретизации двух независимых устройств. Здесь понадобится защищённая частотная коррекция, перенесённая в Записи 019.
|
||||||
|
|||||||
364
README.md
@@ -4,330 +4,170 @@
|
|||||||
|
|
||||||
**SDR Rover Link** — учебно-исследовательский проект по разработке цифрового радиоканала для наземного робототехнического комплекса с использованием программно-определяемого радио — SDR, Software Defined Radio.
|
**SDR Rover Link** — учебно-исследовательский проект по разработке цифрового радиоканала для наземного робототехнического комплекса с использованием программно-определяемого радио — SDR, Software Defined Radio.
|
||||||
|
|
||||||
Проект должен пройти полный путь от передачи простого текстового пакета до передачи телеметрии и отдельных JPEG-изображений через реальный радиоканал.
|
Проект должен пройти полный путь от передачи простого текстового пакета до передачи телеметрии и изображений через реальный радиоканал.
|
||||||
|
|
||||||
Основная задача проекта — не только получить работающую систему, но и последовательно изучить все этапы цифровой радиосвязи:
|
Основная задача — не только получить работающую систему, но и последовательно изучить все этапы цифровой радиосвязи: формирование данных, разбиение на пакеты, контроль целостности, исправление ошибок, цифровую модуляцию, формирование IQ-сигнала, передачу через SDR, приём, демодуляцию и восстановление исходных данных.
|
||||||
|
|
||||||
- формирование данных;
|
|
||||||
- разбиение данных на пакеты;
|
|
||||||
- контроль целостности;
|
|
||||||
- исправление ошибок;
|
|
||||||
- цифровую модуляцию;
|
|
||||||
- формирование IQ-сигнала;
|
|
||||||
- передачу через SDR;
|
|
||||||
- приём и демодуляцию;
|
|
||||||
- восстановление исходных данных.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2. Целевой сценарий
|
## 2. Целевой сценарий
|
||||||
|
|
||||||
Разрабатываемая система предназначена для исследовательского наземного ровера.
|
|
||||||
|
|
||||||
Целевые требования:
|
|
||||||
|
|
||||||
| Параметр | Требование |
|
| Параметр | Требование |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Дальность связи | до 10 км |
|
| Дальность связи | до 10 км |
|
||||||
| Скорость ровера | до 25 км/ч |
|
| Скорость ровера | до 25 км/ч |
|
||||||
| Прямая радиовидимость | может отсутствовать |
|
| Прямая радиовидимость | может отсутствовать |
|
||||||
| Рабочие частоты | ниже 350 МГц |
|
| Рабочий диапазон | 200–250 МГц, см. Запись 018 журнала |
|
||||||
| Основной тип данных | телеметрия и отдельные изображения |
|
| Основной тип данных | телеметрия, команды и изображения |
|
||||||
| Формат изображения | JPEG |
|
| Формат изображения | JPEG |
|
||||||
| Частота передачи изображений | отдельные кадры, не видеопоток |
|
|
||||||
| Действие при потере связи | безопасная остановка ровера |
|
| Действие при потере связи | безопасная остановка ровера |
|
||||||
|
|
||||||
Дальность 10 км без прямой видимости является целевым исследовательским требованием, а не гарантированной характеристикой первой версии системы.
|
Дальность 10 км без прямой видимости — целевое исследовательское требование, а не гарантированная характеристика первой версии.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 3. Почему не используется обычное FPV-видео
|
## 3. Почему не используется обычное FPV-видео
|
||||||
|
|
||||||
Типовые FPV-системы работают преимущественно в диапазонах 2,4 и 5,8 ГГц.
|
Типовые FPV-системы работают в диапазонах 2,4 и 5,8 ГГц. Для наземного робота это плохо: велики потери у поверхности земли, сильное затенение рельефом и растительностью, а главное — на таких частотах практически нет дифракции, поэтому за препятствием связь пропадает.
|
||||||
|
|
||||||
Для наземного робота такие диапазоны имеют ряд ограничений:
|
В этом проекте вместо непрерывного видеопотока передаются отдельные сжатые изображения, что резко снижает требуемую скорость канала.
|
||||||
|
|
||||||
- высокие потери при работе у поверхности земли;
|
---
|
||||||
- затенение рельефом, зданиями и растительностью;
|
|
||||||
- быстрое ухудшение изображения при слабом сигнале;
|
|
||||||
- высокая загруженность распространённых диапазонов;
|
|
||||||
- зависимость от постоянного широкополосного видеопотока.
|
|
||||||
|
|
||||||
В этом проекте вместо непрерывного видео предполагается передавать отдельные сжатые изображения.
|
## 4. Текущее состояние
|
||||||
|
|
||||||
Пример:
|
**Выполнено:** лабораторные Lab001–Lab042. Пройден путь от структуры пакета до первой передачи изображения через реальный радиотракт.
|
||||||
|
|
||||||
```text
|
Что реализовано и проверено:
|
||||||
Камера
|
|
||||||
↓
|
- пакетный протокол с CRC32, фрагментация и сборка изображений;
|
||||||
JPEG-изображение
|
- модуляция и демодуляция BPSK, формирующий фильтр, кадровая синхронизация, оценка и коррекция ухода несущей;
|
||||||
↓
|
- блочное исправление стираний над GF(256), перемежение, подбор параметров;
|
||||||
Разбиение на пакеты
|
- приоритетное обслуживание команд, телеметрии и видео;
|
||||||
↓
|
- двухступенчатая безопасная остановка, сторожевой таймер, постоянное аварийное намерение, безопасный сброс;
|
||||||
Передача через SDR
|
- идентификаторы сеанса, безопасный запуск, отклонение пакетов предыдущего сеанса;
|
||||||
↓
|
- передача JPEG через настоящий радиотракт на одном PlutoSDR: сначала по эфиру на паре антенн, затем по кабелю через аттенюатор 30 дБ. Принятое изображение совпало с переданным побайтово (Записи 019 и 020).
|
||||||
Сборка изображения на наземной станции
|
|
||||||
|
**Что ещё не сделано:** два независимых устройства пока не разведены. Все передачи выполнены в петле одного PlutoSDR, где передатчик и приёмник делят опорный генератор, поэтому рассогласования несущей и частоты дискретизации между сторонами почти нет.
|
||||||
|
|
||||||
|
**Ближайшая работа:** Lab043 — передача с PlutoSDR на приём RTL-SDR. Общий опорный генератор исчезает, впервые появляется реальное рассогласование двух устройств. Техническое задание на завершённую Lab042: [docs/lab042_hardware_loopback_spec.md](docs/lab042_hardware_loopback_spec.md).
|
||||||
|
|
||||||
|
Хронология решений и результатов: [PROJECT_LOG.md](PROJECT_LOG.md).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Оборудование
|
||||||
|
|
||||||
|
| Позиция | Состояние |
|
||||||
|
|---|---|
|
||||||
|
| **Pluto+** — приёмопередатчик, чип AD9361, 70 МГц – 6 ГГц | есть |
|
||||||
|
| RTL-SDR — приёмный донгл | есть |
|
||||||
|
| Аттенюатор AT30S, 30 дБ, SMA | есть |
|
||||||
|
| Кабели SMA, штыревые антенны | есть |
|
||||||
|
| Усилитель мощности около 1 Вт | планируется после первых испытаний |
|
||||||
|
| Raspberry Pi как бортовой вычислитель | планируется |
|
||||||
|
|
||||||
|
Устройство подключается по USB и появляется в системе как сетевой адаптер с адресом `192.168.2.1`.
|
||||||
|
|
||||||
|
**Проверять связь с Pluto командой `ping` бесполезно.** При активном VPN трафик уходит в туннель, и «успешный» отклик приходит даже от несуществующего адреса. Достоверна только успешная установка контекста `iio.Context("ip:192.168.2.1")`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Установка окружения
|
||||||
|
|
||||||
|
Расчётная часть работает на компьютере без SDR:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pip install -r requirements.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
Такой подход позволяет существенно снизить требуемую скорость радиоканала.
|
Для лабораторных, работающих с устройством, дополнительно:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m pip install -r requirements-hardware.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Версии зафиксированы по проверенному окружению, Python 3.13.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 4. Текущее оборудование
|
## 7. Как запускать
|
||||||
|
|
||||||
### SDR-оборудование
|
**Быстрые проверки ядра** — секунды, оборудование не нужно:
|
||||||
|
|
||||||
- RTL-SDR — приёмник;
|
```bash
|
||||||
- ADALM-PlutoSDR — приёмопередатчик, ожидается поступление;
|
python -m pytest tests/ -q
|
||||||
- HackRF One — может временно использоваться при необходимости.
|
```
|
||||||
|
|
||||||
### Вычислительное оборудование
|
**Дешёвый шлюз** — синтаксис, импорт `protocol`, быстрые проверки ядра и функциональные проверки лабораторных. Отвечает на один вопрос: не сломана ли кодовая база прямо сейчас:
|
||||||
|
|
||||||
- компьютер под управлением Windows;
|
```bash
|
||||||
- Raspberry Pi — планируется для установки на ровер;
|
python tools/quick_gate.py
|
||||||
- бортовой вычислитель ровера — будет выбран позднее.
|
```
|
||||||
|
|
||||||
### Программное обеспечение
|
**Лабораторный эксперимент** — минуты, пишет результаты в `data/processed/`:
|
||||||
|
|
||||||
- Python 3.12;
|
```bash
|
||||||
- Anaconda;
|
python -m experiments.lab041_session_restart_safety
|
||||||
- Spyder;
|
```
|
||||||
- Git;
|
|
||||||
- GNU Radio — будет установлен на следующем этапе;
|
|
||||||
- libiio и драйверы PlutoSDR — будут установлены после получения устройства.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5. Предварительно рассматриваемые диапазоны
|
## 8. Структура репозитория
|
||||||
|
|
||||||
В рамках проекта рассматриваются:
|
|
||||||
|
|
||||||
- 27 МГц;
|
|
||||||
- 50 МГц;
|
|
||||||
- 144 МГц;
|
|
||||||
- другие разрешённые для лабораторных испытаний частоты ниже 350 МГц.
|
|
||||||
|
|
||||||
Конкретный диапазон будет выбран после анализа:
|
|
||||||
|
|
||||||
- доступной полосы;
|
|
||||||
- требований законодательства;
|
|
||||||
- размеров антенны;
|
|
||||||
- потерь распространения;
|
|
||||||
- уровня внешних помех;
|
|
||||||
- возможностей выходного радиочастотного тракта;
|
|
||||||
- допустимой мощности передачи.
|
|
||||||
|
|
||||||
Передача по эфиру должна выполняться только на разрешённых частотах и с соблюдением допустимой мощности. Первые опыты следует проводить через аттенюатор, эквивалент нагрузки или в экранированной лабораторной конфигурации.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 6. Основные этапы проекта
|
|
||||||
|
|
||||||
### Этап 0. Подготовка среды
|
|
||||||
|
|
||||||
- создание репозитория;
|
|
||||||
- настройка Git;
|
|
||||||
- настройка Python и Spyder;
|
|
||||||
- подготовка структуры каталогов;
|
|
||||||
- ведение документации.
|
|
||||||
|
|
||||||
### Этап 1. Пакетный протокол
|
|
||||||
|
|
||||||
- структура пакета;
|
|
||||||
- типы сообщений;
|
|
||||||
- порядковый номер пакета;
|
|
||||||
- длина данных;
|
|
||||||
- CRC;
|
|
||||||
- кодирование и декодирование.
|
|
||||||
|
|
||||||
### Этап 2. Виртуальный канал
|
|
||||||
|
|
||||||
- передача пакетов между Python-программами;
|
|
||||||
- имитация потерь;
|
|
||||||
- имитация повреждения битов;
|
|
||||||
- измерение числа ошибочных пакетов.
|
|
||||||
|
|
||||||
### Этап 3. Передача файлов
|
|
||||||
|
|
||||||
- разбиение файла на фрагменты;
|
|
||||||
- нумерация фрагментов;
|
|
||||||
- подтверждение приёма;
|
|
||||||
- повторная передача;
|
|
||||||
- сборка исходного файла.
|
|
||||||
|
|
||||||
### Этап 4. Передача изображений
|
|
||||||
|
|
||||||
- загрузка JPEG;
|
|
||||||
- разбиение JPEG на пакеты;
|
|
||||||
- передача через виртуальный канал;
|
|
||||||
- восстановление изображения;
|
|
||||||
- обработка потерянных фрагментов.
|
|
||||||
|
|
||||||
### Этап 5. Физический уровень
|
|
||||||
|
|
||||||
- BPSK;
|
|
||||||
- QPSK;
|
|
||||||
- формирование символов;
|
|
||||||
- IQ-сэмплы;
|
|
||||||
- синхронизация;
|
|
||||||
- фильтрация;
|
|
||||||
- оценка BER и PER.
|
|
||||||
|
|
||||||
### Этап 6. PlutoSDR
|
|
||||||
|
|
||||||
- подключение устройства;
|
|
||||||
- передача несущей;
|
|
||||||
- передача тестовой последовательности;
|
|
||||||
- передача цифрового пакета;
|
|
||||||
- приём сигнала RTL-SDR или вторым SDR.
|
|
||||||
|
|
||||||
### Этап 7. Радиоканал передачи изображений
|
|
||||||
|
|
||||||
- передача JPEG через SDR;
|
|
||||||
- измерение времени доставки;
|
|
||||||
- испытания при различных уровнях сигнала;
|
|
||||||
- испытания при наличии помех;
|
|
||||||
- подбор скорости и модуляции.
|
|
||||||
|
|
||||||
### Этап 8. Полевые испытания
|
|
||||||
|
|
||||||
- испытания на малой мощности;
|
|
||||||
- испытания на малой дистанции;
|
|
||||||
- постепенное увеличение расстояния;
|
|
||||||
- испытания с ретранслятором;
|
|
||||||
- испытания на наземном ровере.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 7. Структура репозитория
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
SDR_Rover
|
SDR_Rover
|
||||||
│
|
├── protocol/ реализация протокола и радиотракта
|
||||||
├── README.md
|
├── experiments/ лабораторные Lab001–Lab041
|
||||||
├── docs
|
├── tests/ быстрые автоматические проверки
|
||||||
├── protocol
|
├── tools/ вспомогательные программы и шлюз
|
||||||
├── rover
|
├── docs/ технические задания и исследования
|
||||||
├── ground_station
|
├── data/ исходные данные и результаты
|
||||||
├── gnuradio
|
├── rover/ пока пусто
|
||||||
├── tests
|
├── ground_station/ пока пусто
|
||||||
└── tools
|
└── gnuradio/ пока пусто
|
||||||
```
|
```
|
||||||
|
|
||||||
### `docs`
|
|
||||||
|
|
||||||
Документация, лабораторные работы, схемы и отчёты.
|
|
||||||
|
|
||||||
### `protocol`
|
### `protocol`
|
||||||
|
|
||||||
Реализация пакетного протокола:
|
Ядро системы. Пакет с CRC32, фрагментация изображений, кадр канала, исправление стираний, приоритеты, аварийная логика, сеансы связи, примитивы BPSK-радиотракта.
|
||||||
|
|
||||||
- структура пакета;
|
### `experiments`
|
||||||
- CRC;
|
|
||||||
- кодирование;
|
|
||||||
- декодирование;
|
|
||||||
- типы сообщений.
|
|
||||||
|
|
||||||
### `rover`
|
Лабораторные работы. Это исследовательские программы: они моделируют канал, выполняют сотни повторов, строят CSV, графики и отчёты. **Быстрыми тестами они не являются.** При импорте создают каталоги и пишут файлы, поэтому импортировать их не следует — для повторного использования кода служит `protocol/`.
|
||||||
|
|
||||||
Программы, которые будут работать на борту ровера:
|
|
||||||
|
|
||||||
- получение изображения;
|
|
||||||
- сжатие JPEG;
|
|
||||||
- передача телеметрии;
|
|
||||||
- формирование радиопакетов.
|
|
||||||
|
|
||||||
### `ground_station`
|
|
||||||
|
|
||||||
Программы наземной станции:
|
|
||||||
|
|
||||||
- приём пакетов;
|
|
||||||
- сборка изображений;
|
|
||||||
- отображение телеметрии;
|
|
||||||
- управление передачей.
|
|
||||||
|
|
||||||
### `gnuradio`
|
|
||||||
|
|
||||||
Схемы GNU Radio Companion:
|
|
||||||
|
|
||||||
- передатчик;
|
|
||||||
- приёмник;
|
|
||||||
- BPSK-модем;
|
|
||||||
- QPSK-модем;
|
|
||||||
- тестовые генераторы.
|
|
||||||
|
|
||||||
### `tests`
|
### `tests`
|
||||||
|
|
||||||
Автоматические и лабораторные тесты.
|
Настоящие быстрые проверки `protocol/`. Выполняются за доли секунды, оборудования не требуют, запускаются через `pytest`.
|
||||||
|
|
||||||
### `tools`
|
### `rover`, `ground_station`, `gnuradio`
|
||||||
|
|
||||||
Вспомогательные программы:
|
Каталоги созданы под будущую прикладную часть и пока пусты. Бортовая программа ровера, программа наземной станции и схемы GNU Radio появятся после того, как радиоканал заработает в эфире.
|
||||||
|
|
||||||
- анализ пакетов;
|
|
||||||
- генераторы тестовых данных;
|
|
||||||
- построение графиков;
|
|
||||||
- анализ журналов.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 8. Принципы разработки
|
## 9. Данные
|
||||||
|
|
||||||
В проекте применяются следующие правила:
|
- `data/raw` — исходные данные. Крупные записи отсчётов и видео в репозиторий не помещаются, исходные изображения лабораторных хранятся.
|
||||||
|
- `data/processed` — результаты лабораторных: CSV, отчёты и графики.
|
||||||
|
|
||||||
|
**Ограничение воспроизводимости.** Исходное видео `data/raw/lab026_rover_source.mp4` (около 7,8 МБ) в репозитории не хранится. Без него Lab026 и Lab027 не запускаются, файл нужно получить отдельно.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Принципы разработки
|
||||||
|
|
||||||
1. Каждый новый термин сначала объясняется, затем используется.
|
1. Каждый новый термин сначала объясняется, затем используется.
|
||||||
2. Каждый этап должен завершаться работающим результатом.
|
2. Каждый этап завершается работающим результатом.
|
||||||
3. Радиоканал и пакетный протокол разрабатываются отдельно.
|
3. Радиоканал и пакетный протокол разрабатываются отдельно.
|
||||||
4. Код проверяется автоматическими тестами.
|
4. Код проверяется автоматическими тестами.
|
||||||
5. Все существенные решения фиксируются в документации.
|
5. Все существенные решения фиксируются в журнале.
|
||||||
6. Сложность увеличивается постепенно.
|
6. Сложность увеличивается постепенно.
|
||||||
7. Испытания по эфиру начинаются только после проверки через виртуальный канал.
|
7. Испытания по эфиру начинаются только после проверки через модель.
|
||||||
8. Передатчик сначала проверяется через аттенюатор или эквивалент нагрузки.
|
8. Передатчик сначала проверяется через аттенюатор или эквивалент нагрузки.
|
||||||
|
9. **Каждое число в отчёте должно вычисляться из измерений текущего запуска.** Перенесённые из других лабораторных величины сопровождаются указанием источника. Вписанные вручную результаты недопустимы.
|
||||||
|
|
||||||
---
|
Девятое правило добавлено после аудита достоверности, см. Запись 017 журнала.
|
||||||
|
|
||||||
## 9. Текущий статус
|
|
||||||
|
|
||||||
Выполнено:
|
|
||||||
|
|
||||||
- установлен Python;
|
|
||||||
- установлена Anaconda;
|
|
||||||
- выбран Spyder;
|
|
||||||
- установлен Git;
|
|
||||||
- создан локальный Git-репозиторий;
|
|
||||||
- создана базовая структура каталогов.
|
|
||||||
|
|
||||||
Следующая задача:
|
|
||||||
|
|
||||||
> Создать первый Python-модуль пакетного протокола и передать сообщение через виртуальный канал без SDR-оборудования.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 10. Ближайший контрольный результат
|
|
||||||
|
|
||||||
Первая рабочая версия должна выполнять следующий цикл:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Текстовое сообщение
|
|
||||||
↓
|
|
||||||
Преобразование в байты
|
|
||||||
↓
|
|
||||||
Формирование пакета
|
|
||||||
↓
|
|
||||||
Добавление CRC
|
|
||||||
↓
|
|
||||||
Имитация радиоканала
|
|
||||||
↓
|
|
||||||
Проверка CRC
|
|
||||||
↓
|
|
||||||
Восстановление сообщения
|
|
||||||
```
|
|
||||||
|
|
||||||
Первое тестовое сообщение:
|
|
||||||
|
|
||||||
```text
|
|
||||||
HELLO SDR
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -337,4 +177,4 @@ HELLO SDR
|
|||||||
|
|
||||||
НИЯУ МИФИ
|
НИЯУ МИФИ
|
||||||
|
|
||||||
2026
|
2026
|
||||||
|
|||||||
BIN
data/processed/lab029/lab029_ber_success.png
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
data/processed/lab029/lab029_burst_loss_results.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
data/processed/lab029/lab029_independent_loss_success.png
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
data/processed/lab029/lab029_payload_comparison.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
95
data/processed/lab029/lab029_report.txt
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
Lab029. Прохождение видеопакетов через канал с потерями и ошибками
|
||||||
|
|
||||||
|
Исходные данные и неизменный транспорт Lab028
|
||||||
|
- Видео: data\raw\lab026_rover_source.mp4
|
||||||
|
- Источник: 1280x720, 30.000000 fps, 623 кадров, 20.766667 с.
|
||||||
|
- Реальных синхронных JPEG-пар: 63; BASE 240x135 grayscale Q23, ROI 320x180 grayscale Q33, 3 composite fps.
|
||||||
|
- Использован protocol/video_packet.py без изменения: 32-byte header, packet CRC32, object CRC32, отдельные BASE/ROI и атомарная выдача CompositeReassembler.
|
||||||
|
- Payload: 256, 512, 1024 байт.
|
||||||
|
- Пакетов в одном проходе: 256 B=1660, 512 B=862, 1024 B=478.
|
||||||
|
|
||||||
|
Методика Monte Carlo
|
||||||
|
- Повторов на каждую строку: 200.
|
||||||
|
- Master seed: 29029; independent seeds 29029...29034; BER seeds 30029...30034; burst seeds 31029...31031.
|
||||||
|
- Для одинакового параметра один seed повторно используется для payload 256/512/1024, чтобы сравнение было коррелированным и воспроизводимым.
|
||||||
|
- packet_delivery_rate = (received - CRC rejected) / transmitted.
|
||||||
|
- effective delivered JPEG bitrate учитывает BASE+ROI bytes только атомарно выданных составных кадров и полное симулированное время.
|
||||||
|
- Потерянный фрагмент — физически потерянный пакет или пакет, отклонённый проверкой транспорта.
|
||||||
|
- FEC, ARQ, повторные передачи и интерливинг не применяются.
|
||||||
|
|
||||||
|
Модели канала
|
||||||
|
- Independent loss: каждый пакет теряется независимо с заданной вероятностью.
|
||||||
|
- BER: число независимых битовых ошибок выбирается binomial по полной длине пакета в битах, включая 32-byte header; выбранные биты физически инвертируются перед reassembler.
|
||||||
|
- Gilbert-Elliott: Good доставляет все пакеты, Bad теряет все. Начальное состояние выбирается из стационарного распределения.
|
||||||
|
- В Lab029 длительность состояния Bad и серии потерь задаётся количеством пакетов, а не физическим временем.
|
||||||
|
- Серия из одинакового количества пакетов имеет разную физическую длительность для payload 256, 512 и 1024 байта, поскольку различается время передачи пакета.
|
||||||
|
- Доля успешно восстановленных кадров не показывает длительность непрерывного отсутствия нового изображения.
|
||||||
|
- Поэтому burst-loss результаты Lab029 не являются окончательным сравнением размеров payload; для временного сравнения предназначена Lab029B.
|
||||||
|
- short: короткие серии потерь; P(G->B)=0.010204082, P(B->G)=0.500000000, stationary loss=2.000%, expected mean burst=2.0.
|
||||||
|
- medium: средние серии потерь; P(G->B)=0.004081633, P(B->G)=0.200000000, stationary loss=2.000%, expected mean burst=5.0.
|
||||||
|
- long: длинные серии потерь; P(G->B)=0.001020408, P(B->G)=0.050000000, stationary loss=2.000%, expected mean burst=20.0.
|
||||||
|
|
||||||
|
Функциональные проверки
|
||||||
|
- PASS zero_impairment_100_percent: all payloads delivered 100% packets and composite frames
|
||||||
|
- PASS packet_crc_rejects_bit_error: payload bit flip was rejected by packet CRC32
|
||||||
|
- PASS adjacent_frame_isolation: two interleaved neighboring frames remained independent
|
||||||
|
- PASS atomic_incomplete_frame: missing ROI fragment prevented atomic publication
|
||||||
|
- PASS fixed_seed_reproducibility: identical seed produced byte-for-byte equal result fields
|
||||||
|
|
||||||
|
1. Independent packet loss — atomic composite success
|
||||||
|
parameter | payload 256 | payload 512 | payload 1024
|
||||||
|
---------:|------------:|------------:|-------------:
|
||||||
|
0.0% | 100.000% | 100.000% | 100.000%
|
||||||
|
0.1% | 97.397% | 98.651% | 99.214%
|
||||||
|
0.5% | 87.294% | 93.357% | 96.254%
|
||||||
|
1.0% | 76.405% | 87.008% | 92.206%
|
||||||
|
2.0% | 58.937% | 76.516% | 86.286%
|
||||||
|
5.0% | 25.698% | 48.738% | 67.198%
|
||||||
|
|
||||||
|
2. BER — atomic composite success
|
||||||
|
parameter | payload 256 | payload 512 | payload 1024
|
||||||
|
---------:|------------:|------------:|-------------:
|
||||||
|
0 | 100.000% | 100.000% | 100.000%
|
||||||
|
1e-07 | 99.413% | 99.524% | 99.357%
|
||||||
|
3e-07 | 98.222% | 98.476% | 98.492%
|
||||||
|
1e-06 | 94.111% | 94.714% | 94.754%
|
||||||
|
3e-06 | 83.905% | 84.373% | 85.397%
|
||||||
|
1e-05 | 55.357% | 56.722% | 57.770%
|
||||||
|
|
||||||
|
3. Burst-loss
|
||||||
|
scenario | payload | expected loss | observed loss | mean/max burst | composite success | burst distribution
|
||||||
|
--------:|--------:|--------------:|--------------:|---------------:|------------------:|:------------------
|
||||||
|
short | 256 | 2.000% | 1.932% | 1.972/12 | 76.111% | 1:1628;2:822;3-4:635;5-8:155;9-16:12;17-32:0;33+:0
|
||||||
|
short | 512 | 2.000% | 1.853% | 1.903/11 | 86.484% | 1:861;2:429;3-4:318;5-8:67;9-16:3;17-32:0;33+:0
|
||||||
|
short | 1024 | 2.000% | 1.891% | 1.899/8 | 91.714% | 1:475;2:263;3-4:171;5-8:43;9-16:0;17-32:0;33+:0
|
||||||
|
medium | 256 | 2.000% | 2.007% | 4.991/30 | 88.333% | 1:258;2:226;3-4:324;5-8:306;9-16:180;17-32:41;33+:0
|
||||||
|
medium | 512 | 2.000% | 1.909% | 4.890/27 | 93.317% | 1:124;2:121;3-4:178;5-8:142;9-16:87;17-32:21;33+:0
|
||||||
|
medium | 1024 | 2.000% | 2.016% | 5.084/27 | 95.357% | 1:77;2:57;3-4:100;5-8:77;9-16:53;17-32:15;33+:0
|
||||||
|
long | 256 | 2.000% | 1.975% | 19.061/116 | 95.405% | 1:22;2:10;3-4:22;5-8:58;9-16:84;17-32:83;33+:65
|
||||||
|
long | 512 | 2.000% | 1.983% | 19.311/124 | 96.762% | 1:14;2:4;3-4:13;5-8:32;9-16:39;17-32:40;33+:35
|
||||||
|
long | 1024 | 2.000% | 2.192% | 20.350/124 | 97.198% | 1:12;2:1;3-4:8;5-8:15;9-16:24;17-32:21;33+:22
|
||||||
|
|
||||||
|
4. Сравнение payload 256/512/1024
|
||||||
|
payload | loss 1% success | BER 1e-6 success | medium burst success | Lab028 wire kbit/s
|
||||||
|
-------:|----------------:|-----------------:|---------------------:|--------------------:
|
||||||
|
256 | 76.405% | 94.111% | 88.333% | 178.233
|
||||||
|
512 | 87.008% | 94.714% | 93.317% | 168.396
|
||||||
|
1024 | 92.206% | 94.754% | 95.357% | 163.662
|
||||||
|
|
||||||
|
Интерпретация
|
||||||
|
- При фиксированной вероятности потери пакета крупный payload уменьшает число обязательных фрагментов. Поскольку потеря любого фрагмента делает объект неполным, меньшее число пакетов обычно повышает шанс полного кадра.
|
||||||
|
- При фиксированном BER длинный отдельный пакет чаще повреждается: P(error)=1-(1-BER)^(packet_bits). Одновременно крупный payload уменьшает число 32-byte headers и общую длину wire-потока, поэтому итоговый composite success определяется обоими эффектами.
|
||||||
|
- Атомарная сборка требует одновременной готовности BASE и ROI. Даже полностью собранный BASE не даёт полезного составного кадра без ROI, поэтому composite success ниже успеха каждого объекта отдельно.
|
||||||
|
- Burst-loss особенно опасен без интерливинга: соседние фрагменты и иногда соседние кадры теряются одной серией, а CRC только обнаруживает ошибку и не восстанавливает данные.
|
||||||
|
- Payload 256 B даёт наименьшую длину отдельного пакета и наименьшую вероятность BER-повреждения одного пакета, но требует больше всего фрагментов и headers.
|
||||||
|
- Payload 512 B остаётся умеренным рабочим кандидатом между packet count и длиной отдельного пакета.
|
||||||
|
- Payload 1024 B даёт минимум пакетов и header overhead в этих моделях, но каждый пакет длиннее и при его потере пропадает более крупный фрагмент JPEG.
|
||||||
|
- Окончательный packet payload автоматически не выбирается; для решения нужны Lab029 и последующие данные реального радиоканала, FEC/ARQ и задержек.
|
||||||
|
|
||||||
|
Артефакты
|
||||||
|
- CSV: data\processed\lab029\lab029_results.csv
|
||||||
|
- Independent loss plot: data\processed\lab029\lab029_independent_loss_success.png
|
||||||
|
- BER plot: data\processed\lab029\lab029_ber_success.png
|
||||||
|
- Burst plot: data\processed\lab029\lab029_burst_loss_results.png
|
||||||
|
- Payload comparison: data\processed\lab029\lab029_payload_comparison.png
|
||||||
|
- JPEG, пакеты и бинарные дампы на диск не сохранялись.
|
||||||
46
data/processed/lab029/lab029_results.csv
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
model,parameter_name,parameter_value,scenario,payload_size,monte_carlo_repetitions,seed,good_to_bad_probability,bad_to_good_probability,expected_loss_probability,expected_mean_loss_burst,observed_loss_probability,transmitted_packets,received_packets,lost_packets,crc_rejected_packets,packet_delivery_rate,base_objects_completed,roi_objects_completed,atomic_composite_frames_completed,base_only_frames,roi_only_frames,incomplete_frames,composite_success_rate,effective_delivered_jpeg_bitrate_kbps,mean_lost_fragments_per_frame,p95_lost_fragments_per_frame,mean_loss_burst_length,max_loss_burst_length,loss_burst_distribution
|
||||||
|
independent_loss,packet_loss_probability,0,,256,200,29029,0,0,0,0,0,332000,332000,0,0,1,12600,12600,12600,0,0,0,1,157.76975923,0,0,0,0,1:0;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0,,512,200,29029,0,0,0,0,0,172400,172400,0,0,1,12600,12600,12600,0,0,0,1,157.76975923,0,0,0,0,1:0;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0,,1024,200,29029,0,0,0,0,0,95600,95600,0,0,1,12600,12600,12600,0,0,0,1,157.76975923,0,0,0,0,1:0;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.001,,256,200,29030,0,0,0.001,1.001001001,0.00101807228916,332000,331662,338,0,0.998981927711,12468,12398,12272,196,126,328,0.973968253968,153.639124238,0.0268253968254,0,1,1,1:338;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.001,,512,200,29030,0,0,0.001,1.001001001,0.000991879350348,172400,172229,171,0,0.99900812065,12530,12499,12430,100,69,170,0.986507936508,155.629063242,0.0135714285714,0,1,1,1:171;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.001,,1024,200,29030,0,0,0.001,1.001001001,0.00103556485356,95600,95501,99,0,0.998964435146,12563,12538,12501,62,37,99,0.992142857143,156.519451685,0.00785714285714,0,1,1,1:99;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.005,,256,200,29031,0,0,0.005,1.00502512563,0.00515361445783,332000,330289,1711,0,0.994846385542,11987,11558,10999,988,559,1601,0.872936507937,137.693897913,0.135793650794,1,1.00765606596,2,1:1685;2:13;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.005,,512,200,29031,0,0,0.005,1.00502512563,0.00505220417633,172400,171529,871,0,0.994947795824,12302,12046,11763,539,283,837,0.933571428571,147.277529374,0.069126984127,1,1.01044083527,2,1:853;2:9;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.005,,1024,200,29031,0,0,0.005,1.00502512563,0.00503138075314,95600,95119,481,0,0.994968619247,12408,12317,12128,280,189,472,0.96253968254,151.818947673,0.0381746031746,0,1.01050420168,2,1:471;2:5;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.01,,256,200,29032,0,0,0.01,1.0101010101,0.0101746987952,332000,328622,3378,0,0.989825301205,11449,10592,9627,1822,965,2973,0.764047619048,120.432163724,0.268095238095,1,1.00775656325,2,1:3326;2:26;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.01,,512,200,29032,0,0,0.01,1.0101010101,0.0100928074246,172400,170660,1740,0,0.989907192575,11993,11526,10963,1030,563,1637,0.870079365079,137.210552167,0.138095238095,1,1.00752750434,2,1:1714;2:13;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.01,,1024,200,29032,0,0,0.01,1.0101010101,0.0105962343096,95600,94587,1013,0,0.98940376569,12198,12003,11618,580,385,982,0.922063492063,145.437291814,0.0803968253968,1,1.007960199,2,1:997;2:8;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.02,,256,200,29033,0,0,0.02,1.02040816327,0.0198795180723,332000,325400,6600,0,0.980120481928,10436,8989,7426,3010,1563,5174,0.589365079365,92.8966767255,0.52380952381,2,1.01946246525,3,1:6350;2:122;3-4:2;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.02,,512,200,29033,0,0,0.02,1.02040816327,0.0195649651972,172400,169027,3373,0,0.980435034803,11432,10607,9641,1791,966,2959,0.765158730159,120.639628892,0.267698412698,1,1.0178032589,3,1:3256;2:57;3-4:1;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.02,,1024,200,29033,0,0,0.02,1.02040816327,0.0192573221757,95600,93759,1841,0,0.980742677824,11880,11536,10872,1008,664,1728,0.862857142857,136.121568539,0.146111111111,1,1.01712707182,3,1:1780;2:29;3-4:1;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.05,,256,200,29034,0,0,0.05,1.05263157895,0.0503072289157,332000,315298,16702,0,0.949692771084,7774,5198,3238,4536,1960,9362,0.256984126984,40.4080507223,1.32555555556,3,1.05189570475,4,1:15094;2:746;3-4:38;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.05,,512,200,29034,0,0,0.05,1.05263157895,0.0510266821346,172400,163603,8797,0,0.948973317865,9647,8012,6141,3506,1871,6459,0.487380952381,76.7984243981,0.698174603175,2,1.05139237481,4,1:7961;2:383;3-4:23;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
independent_loss,packet_loss_probability,0.05,,1024,200,29034,0,0,0.05,1.05263157895,0.0507949790795,95600,90744,4856,0,0.949205020921,10780,9911,8467,2313,1444,4133,0.671984126984,105.919342536,0.385396825397,2,1.0492653414,4,1:4415;2:199;3-4:14;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,0,,256,200,30029,0,0,0,0,0,332000,332000,0,0,1,12600,12600,12600,0,0,0,1,157.76975923,0,0,0,0,1:0;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,0,,512,200,30029,0,0,0,0,0,172400,172400,0,0,1,12600,12600,12600,0,0,0,1,157.76975923,0,0,0,0,1:0;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,0,,1024,200,30029,0,0,0,0,0,95600,95600,0,0,1,12600,12600,12600,0,0,0,1,157.76975923,0,0,0,0,1:0;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,1e-07,,256,200,30030,0,0,0,0,0.000225903614458,332000,332000,0,75,0.999774096386,12570,12556,12526,44,30,74,0.994126984127,156.829585233,0.00595238095238,0,1,1,1:75;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,1e-07,,512,200,30030,0,0,0,0,0.000348027842227,172400,172400,0,60,0.999651972158,12578,12562,12540,38,22,60,0.995238095238,157.006054575,0.0047619047619,0,1,1,1:60;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,1e-07,,1024,200,30030,0,0,0,0,0.000847280334728,95600,95600,0,81,0.999152719665,12569,12550,12519,50,31,81,0.993571428571,156.742861637,0.00642857142857,0,1,1,1:81;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,3e-07,,256,200,30031,0,0,0,0,0.000680722891566,332000,332000,0,226,0.999319277108,12514,12461,12376,138,85,224,0.982222222222,154.967524238,0.0179365079365,0,1,1,1:226;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,3e-07,,512,200,30031,0,0,0,0,0.00111368909513,172400,172400,0,192,0.998886310905,12530,12478,12408,122,70,192,0.984761904762,155.35917496,0.0152380952381,0,1,1,1:192;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,3e-07,,1024,200,30031,0,0,0,0,0.00199790794979,95600,95600,0,191,0.99800209205,12532,12478,12410,122,68,190,0.984920634921,155.39185618,0.0151587301587,0,1,1,1:191;2:0;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,1e-06,,256,200,30032,0,0,0,0,0.00229819277108,332000,332000,0,763,0.997701807229,12337,12111,11858,479,253,742,0.941111111111,148.434593258,0.0605555555556,1,1.00131233596,2,1:761;2:1;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,1e-06,,512,200,30032,0,0,0,0,0.00396171693735,172400,172400,0,683,0.996038283063,12345,12182,11934,411,248,666,0.947142857143,149.411587801,0.0542063492063,1,1.0058910162,2,1:675;2:4;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,1e-06,,1024,200,30032,0,0,0,0,0.00713389121339,95600,95600,0,682,0.992866108787,12371,12157,11939,432,218,661,0.94753968254,149.447597432,0.054126984127,1,1.0118694362,3,1:667;2:6;3-4:1;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,3e-06,,256,200,30033,0,0,0,0,0.00661445783133,332000,332000,0,2196,0.993385542169,11810,11280,10572,1238,708,2028,0.839047619048,132.241321348,0.174285714286,1,1.00687757909,2,1:2166;2:15;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,3e-06,,512,200,30033,0,0,0,0,0.0122563805104,172400,172400,0,2113,0.98774361949,11848,11321,10631,1217,690,1969,0.84373015873,133.045201926,0.167698412698,1,1.0114887506,2,1:2065;2:24;3-4:0;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,3e-06,,1024,200,30033,0,0,0,0,0.0204916317992,95600,95600,0,1959,0.979508368201,11923,11387,10760,1163,627,1840,0.853968253968,134.696365329,0.155476190476,1,1.02404600105,3,1:1868;2:44;3-4:1;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,1e-05,,256,200,30034,0,0,0,0,0.0222018072289,332000,332000,0,7371,0.977798192771,10234,8590,6975,3259,1615,5625,0.553571428571,87.1395390048,0.585,2,1.01950207469,4,1:7095;2:130;3-4:5;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,1e-05,,512,200,30034,0,0,0,0,0.0407192575406,172400,172400,0,7020,0.959280742459,10313,8706,7147,3166,1559,5453,0.567222222222,89.3745245586,0.557142857143,2,1.03984594875,4,1:6492;2:250;3-4:9;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
ber,bit_error_rate,1e-05,,1024,200,30034,0,0,0,0,0.0692573221757,95600,95600,0,6621,0.930742677824,10300,8931,7279,3021,1652,5321,0.577698412698,91.0087704655,0.525476190476,2,1.07066623545,4,1:5779;2:376;3-4:29;5-8:0;9-16:0;17-32:0;33+:0
|
||||||
|
burst,gilbert_elliott_scenario,0,short,256,200,31029,0.0102040816327,0.5,0.02,2,0.0193162650602,332000,325587,6413,0,0.98068373494,11365,10541,9590,1775,951,3010,0.761111111111,119.954532905,0.508968253968,3,1.97201722017,12,1:1628;2:822;3-4:635;5-8:155;9-16:12;17-32:0;33+:0
|
||||||
|
burst,gilbert_elliott_scenario,0,short,512,200,31029,0.0102040816327,0.5,0.02,2,0.0185266821346,172400,169206,3194,0,0.981473317865,11907,11463,10897,1010,566,1703,0.864841269841,136.370440449,0.253492063492,2,1.90345649583,11,1:861;2:429;3-4:318;5-8:67;9-16:3;17-32:0;33+:0
|
||||||
|
burst,gilbert_elliott_scenario,0,short,1024,200,31029,0.0102040816327,0.5,0.02,2,0.0189121338912,95600,93792,1808,0,0.981087866109,12097,11940,11556,541,384,1044,0.917142857143,144.700911717,0.143492063492,1,1.89915966387,8,1:475;2:263;3-4:171;5-8:43;9-16:0;17-32:0;33+:0
|
||||||
|
burst,gilbert_elliott_scenario,1,medium,256,200,31030,0.00408163265306,0.2,0.02,5,0.0200692771084,332000,325337,6663,0,0.979930722892,11962,11552,11130,832,422,1470,0.883333333333,139.320930337,0.52880952381,4,4.99101123596,30,1:258;2:226;3-4:324;5-8:306;9-16:180;17-32:41;33+:0
|
||||||
|
burst,gilbert_elliott_scenario,1,medium,512,200,31030,0.00408163265306,0.2,0.02,5,0.0190893271462,172400,169109,3291,0,0.980910672854,12172,11987,11758,414,229,842,0.933174603175,147.194698555,0.26119047619,2,4.89004457652,27,1:124;2:121;3-4:178;5-8:142;9-16:87;17-32:21;33+:0
|
||||||
|
burst,gilbert_elliott_scenario,1,medium,1024,200,31030,0.00408163265306,0.2,0.02,5,0.0201569037657,95600,93673,1927,0,0.979843096234,12256,12154,12015,241,139,585,0.953571428571,150.407112039,0.152936507937,0,5.08443271768,27,1:77;2:57;3-4:100;5-8:77;9-16:53;17-32:15;33+:0
|
||||||
|
burst,gilbert_elliott_scenario,2,long,256,200,31031,0.00102040816327,0.05,0.02,20,0.01975,332000,325443,6557,0,0.98025,12247,12146,12021,226,125,579,0.954047619048,150.526746067,0.520396825397,0,19.0610465116,116,1:22;2:10;3-4:22;5-8:58;9-16:84;17-32:83;33+:65
|
||||||
|
burst,gilbert_elliott_scenario,2,long,512,200,31031,0.00102040816327,0.05,0.02,20,0.0198259860789,172400,168982,3418,0,0.980174013921,12301,12253,12192,109,61,408,0.967619047619,152.666767897,0.27126984127,0,19.3107344633,124,1:14;2:4;3-4:13;5-8:32;9-16:39;17-32:40;33+:35
|
||||||
|
burst,gilbert_elliott_scenario,2,long,1024,200,31031,0.00102040816327,0.05,0.02,20,0.0219246861925,95600,93504,2096,0,0.978075313808,12305,12279,12247,58,32,353,0.971984126984,153.307654575,0.166349206349,0,20.3495145631,124,1:12;2:1;3-4:8;5-8:15;9-16:24;17-32:21;33+:22
|
||||||
|
BIN
data/processed/lab029b/lab029b_composite_success.png
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
data/processed/lab029b/lab029b_missing_frame_runs.png
Normal file
|
After Width: | Height: | Size: 87 KiB |
BIN
data/processed/lab029b/lab029b_no_image_duration.png
Normal file
|
After Width: | Height: | Size: 111 KiB |
BIN
data/processed/lab029b/lab029b_payload_comparison.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
74
data/processed/lab029b/lab029b_report.txt
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
Lab029B. Временная модель серийных потерь видеопакетов
|
||||||
|
|
||||||
|
Исходные данные и транспорт
|
||||||
|
- Видео: data\raw\lab026_rover_source.mp4
|
||||||
|
- Источник: 1280x720, 30.000000 fps, 623 кадров, 20.766667 с.
|
||||||
|
- Использованы все 63 реальные пары: BASE 240x135 grayscale JPEG Q23, ROI 320x180 grayscale JPEG Q33, 3 составных кадра/с.
|
||||||
|
- Формат Lab028 не изменён: заголовок 32 байта, packet CRC32, object CRC32, отдельные BASE/ROI, атомарный CompositeReassembler.
|
||||||
|
- Порядок передачи внутри кадра: сначала все BASE-фрагменты, затем все ROI-фрагменты. Поэтому длительная помеха может затрагивать объекты несимметрично.
|
||||||
|
|
||||||
|
Временная модель передачи
|
||||||
|
- Контрольная скорость: 300 кбит/с. Это параметр лабораторной, а не выбранная скорость радиоканала.
|
||||||
|
- Длительность пакета = фактическая длина (32-byte header + фактический payload) × 8 / 300000.
|
||||||
|
- Кадр доступен в момент frame_id / 3. Пакеты BASE и ROI передаются подряд; искусственных межпакетных интервалов нет. Остаток периода до следующего кадра является естественным idle.
|
||||||
|
- Payload 256: packets=1660, timeline=20.881627 с, packet duration min/max=0.986667/7.680000 мс.
|
||||||
|
- Payload 512: packets=862, timeline=20.869680 с, packet duration min/max=1.093333/14.506667 мс.
|
||||||
|
- Payload 1024: packets=478, timeline=20.863707 с, packet duration min/max=1.093333/28.160000 мс.
|
||||||
|
|
||||||
|
Временная модель канала
|
||||||
|
- Good пропускает пакеты, Bad теряет пакеты. Длительности состояний независимы и экспоненциально распределены.
|
||||||
|
- Целевая стационарная доля Bad: 2.0%.
|
||||||
|
- mean Good = mean Bad × (1-0.02)/0.02 = 49 × mean Bad.
|
||||||
|
- Консервативное допущение: пакет считается потерянным, если хотя бы часть его передачи пересекается с Bad.
|
||||||
|
- Monte Carlo: 200 повторов на условие; master seed=290290; seeds 290290...290293.
|
||||||
|
- Один seed для одинаковой длительности повторно используется для payload 256/512/1024.
|
||||||
|
|
||||||
|
Параметры состояний
|
||||||
|
mean Bad | mean Good | target Bad
|
||||||
|
--------:|----------:|----------:
|
||||||
|
10 мс | 490 мс | 2.0%
|
||||||
|
50 мс | 2450 мс | 2.0%
|
||||||
|
200 мс | 9800 мс | 2.0%
|
||||||
|
1000 мс | 49000 мс | 2.0%
|
||||||
|
|
||||||
|
Функциональные проверки
|
||||||
|
- PASS zero_bad_state_100_percent: all 63 composite frames restored for all payloads
|
||||||
|
- PASS fixed_seed_reproducibility: identical seed produced identical aggregate fields
|
||||||
|
- PASS adjacent_frame_isolation: two interleaved neighboring frames remained independent
|
||||||
|
- PASS atomic_incomplete_frame: missing ROI fragment prevented atomic publication
|
||||||
|
- PASS stationary_bad_fraction: all observed Bad fractions are within 0.323 percentage points of 2%
|
||||||
|
- PASS longer_bad_longer_outage: mean held-image interval increased from 0.819350 to 1.295846 s
|
||||||
|
- PASS actual_packet_transmission_time: duration equals actual wire bits / 300000 for full and short final packets
|
||||||
|
|
||||||
|
Полная сравнительная таблица
|
||||||
|
Bad ms | payload | Bad actual | tx/rx/lost packets | packet delivery | BASE | ROI | composite | BASE-only | ROI-only | incomplete | lost burst mean/p95/max | incomplete run mean/p95/max | no image mean/p95/max s | recovery mean/p95/max s | video kbit/s
|
||||||
|
------:|--------:|-----------:|-------------------:|----------------:|-----:|----:|----------:|----------:|---------:|-----------:|-----------------------:|----------------------------:|-------------------------:|------------------------:|------------:
|
||||||
|
10 | 256 | 2.016% | 332000/320339/11661 | 96.488% | 84.611% | 75.659% | 65.357% | 2426 | 1298 | 4365 | 2.27/5.0/13 | 1.52/3.0/10 | 0.831/1.350/3.650 | 0.547/1.180/3.364 | 102.487
|
||||||
|
10 | 512 | 2.008% | 172400/164214/8186 | 95.252% | 85.183% | 77.008% | 66.968% | 2295 | 1265 | 4162 | 1.72/3.0/8 | 1.48/3.0/10 | 0.815/1.343/3.651 | 0.521/1.131/3.353 | 105.043
|
||||||
|
10 | 1024 | 2.022% | 95600/89121/6479 | 93.223% | 85.595% | 76.984% | 67.397% | 2293 | 1208 | 4108 | 1.43/3.0/6 | 1.47/3.0/10 | 0.812/1.339/3.651 | 0.513/1.115/3.348 | 105.783
|
||||||
|
50 | 256 | 2.041% | 332000/324191/7809 | 97.648% | 95.333% | 92.960% | 90.405% | 621 | 322 | 1209 | 6.43/17.3/37 | 1.10/2.0/3 | 0.694/1.001/1.348 | 0.441/0.727/1.207 | 141.796
|
||||||
|
50 | 512 | 2.083% | 172400/167870/4530 | 97.372% | 95.492% | 93.198% | 90.889% | 580 | 291 | 1148 | 3.94/10.0/19 | 1.10/2.0/3 | 0.693/1.000/1.348 | 0.428/0.714/1.196 | 142.643
|
||||||
|
50 | 1024 | 2.046% | 95600/92757/2843 | 97.026% | 95.619% | 93.421% | 91.095% | 570 | 293 | 1122 | 2.55/6.0/12 | 1.10/2.0/3 | 0.691/1.000/1.348 | 0.422/0.702/1.191 | 143.006
|
||||||
|
200 | 256 | 1.854% | 332000/325460/6540 | 98.030% | 97.540% | 96.762% | 96.230% | 165 | 67 | 475 | 17.82/49.0/80 | 1.32/3.0/4 | 0.765/1.312/1.657 | 0.547/0.970/1.468 | 150.968
|
||||||
|
200 | 512 | 1.854% | 172400/168900/3500 | 97.970% | 97.579% | 96.857% | 96.333% | 157 | 66 | 462 | 9.72/26.0/41 | 1.31/3.0/4 | 0.761/1.158/1.657 | 0.536/0.959/1.456 | 151.215
|
||||||
|
200 | 1024 | 1.854% | 95600/93582/2018 | 97.889% | 97.627% | 96.905% | 96.381% | 157 | 66 | 456 | 5.70/15.0/24 | 1.31/3.0/4 | 0.762/1.228/1.658 | 0.531/0.954/1.451 | 151.334
|
||||||
|
1000 | 256 | 1.678% | 332000/326429/5571 | 98.322% | 98.143% | 98.008% | 97.802% | 43 | 26 | 277 | 59.27/172.4/403 | 2.98/7.4/16 | 1.302/2.809/5.665 | 1.087/2.487/5.585 | 153.470
|
||||||
|
1000 | 512 | 1.678% | 172400/169489/2911 | 98.311% | 98.143% | 98.048% | 97.841% | 38 | 26 | 272 | 31.30/91.6/210 | 2.96/7.5/16 | 1.295/2.826/5.665 | 1.077/2.476/5.576 | 153.618
|
||||||
|
1000 | 1024 | 1.677% | 95600/93965/1635 | 98.290% | 98.143% | 98.079% | 97.873% | 34 | 26 | 268 | 17.77/50.9/116 | 2.95/7.5/16 | 1.291/2.843/5.665 | 1.071/2.471/5.571 | 153.712
|
||||||
|
|
||||||
|
Допущения и ограничения
|
||||||
|
- Не моделируются FEC, интерливинг, ARQ, повторные передачи, искусственные межпакетные интервалы, преамбула физического уровня, управление и телеметрия.
|
||||||
|
- Bad-интервалы не зависят от границ пакетов; любое частичное пересечение уничтожает пакет целиком.
|
||||||
|
- no-new-image duration для серии невосстановленных кадров измеряется от публикации предыдущего полного кадра до публикации следующего; при краевых сериях используются начало и конец временной шкалы.
|
||||||
|
- interference-to-next-frame измеряется от начала каждого Bad-интервала до первого следующего опубликованного составного кадра или до конца шкалы.
|
||||||
|
- Эффективный видеопоток учитывает JPEG bytes только атомарно восстановленных BASE+ROI и полную длительность расписания.
|
||||||
|
- Результаты зависят от порядка BASE затем ROI и от контрольной скорости 300 кбит/с.
|
||||||
|
- Окончательный размер payload автоматически не выбирается.
|
||||||
|
|
||||||
|
Артефакты
|
||||||
|
- CSV: data\processed\lab029b\lab029b_results.csv
|
||||||
|
- Composite success: data\processed\lab029b\lab029b_composite_success.png
|
||||||
|
- No-new-image duration: data\processed\lab029b\lab029b_no_image_duration.png
|
||||||
|
- Missing frame runs: data\processed\lab029b\lab029b_missing_frame_runs.png
|
||||||
|
- Payload comparison: data\processed\lab029b\lab029b_payload_comparison.png
|
||||||
|
- JPEG, пакеты и бинарные дампы не сохранялись.
|
||||||
13
data/processed/lab029b/lab029b_results.csv
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
payload_size,mean_bad_duration_ms,mean_good_duration_ms,target_bad_time_fraction,actual_bad_time_fraction,control_stream_bitrate_kbps,schedule_duration_seconds,monte_carlo_repetitions,seed,transmitted_packets,received_packets,lost_packets,packet_delivery_rate,base_objects_completed,base_object_success_rate,roi_objects_completed,roi_object_success_rate,atomic_composite_frames_completed,composite_success_rate,base_only_frames,roi_only_frames,incomplete_frames,mean_lost_packet_burst,p95_lost_packet_burst,max_lost_packet_burst,mean_consecutive_incomplete_frames,p95_consecutive_incomplete_frames,max_consecutive_incomplete_frames,mean_no_new_image_duration_seconds,p95_no_new_image_duration_seconds,max_no_new_image_duration_seconds,mean_interference_to_next_frame_seconds,p95_interference_to_next_frame_seconds,max_interference_to_next_frame_seconds,effective_delivered_video_bitrate_kbps,bad_interval_count,actual_mean_bad_duration_ms,actual_p95_bad_duration_ms,actual_max_bad_duration_ms
|
||||||
|
256,10,490,0.02,0.0201609958077,300,20.8816266667,200,290290,332000,320339,11661,0.964876506024,10661,0.846111111111,9533,0.756587301587,8235,0.653571428571,2426,1298,4365,2.27442949093,5,13,1.52409217877,3,10,0.831002299814,1.35024,3.64970666667,0.546677484673,1.18029690393,3.36407888773,102.486509991,8442,9.97380686292,29.8125428395,83.5331876125
|
||||||
|
512,10,490,0.02,0.0200817045481,300,20.86968,200,290290,172400,164214,8186,0.952517401392,10733,0.851825396825,9703,0.770079365079,8438,0.669682539683,2295,1265,4162,1.72409435552,3,8,1.47903340441,3,10,0.814651021085,1.34314,3.65056,0.521191488299,1.13097049803,3.3529855544,105.043418011,8411,9.96549156518,29.9160688622,83.5331876125
|
||||||
|
1024,10,490,0.02,0.0202168068758,300,20.8637066667,200,290290,95600,89121,6479,0.932228033473,10785,0.855952380952,9700,0.769841269841,8492,0.673968253968,2293,1208,4108,1.43467670505,3,6,1.46976744186,3,10,0.812397042338,1.33936,3.65141333333,0.512839823089,1.11539721678,3.3478655544,105.78281392,8446,9.98810154849,29.7582896487,83.5331876125
|
||||||
|
256,50,2450,0.02,0.0204084786408,300,20.8816266667,200,290291,332000,324191,7809,0.976478915663,12012,0.953333333333,11713,0.929603174603,11391,0.904047619048,621,322,1209,6.42716049383,17.3,37,1.10209662716,2,3,0.693585900942,1.00062933333,1.34818666667,0.440632357759,0.727111920855,1.20734749202,141.795746436,1677,50.8243568053,152.864106144,405.431274995
|
||||||
|
512,50,2450,0.02,0.0208318699816,300,20.86968,200,290291,172400,167870,4530,0.973723897912,12032,0.954920634921,11743,0.931984126984,11452,0.908888888889,580,291,1148,3.93913043478,10,19,1.1027857829,2,3,0.693375395453,1.00016,1.34818666667,0.427559832342,0.714012825361,1.19625415869,142.643151213,1691,51.4198060694,156.002187328,405.431274995
|
||||||
|
1024,50,2450,0.02,0.0204619230445,300,20.8637066667,200,290291,95600,92757,2843,0.970261506276,12048,0.95619047619,11771,0.934206349206,11478,0.910952380952,570,293,1122,2.54749103943,6,12,1.095703125,2,3,0.691450052083,1.00014,1.34818666667,0.422249750197,0.702414015204,1.19113415869,143.006280124,1677,50.913722151,152.938028086,405.431274995
|
||||||
|
256,200,9800,0.02,0.0185410363364,300,20.8816266667,200,290292,332000,325460,6540,0.980301204819,12290,0.975396825397,12192,0.967619047619,12125,0.962301587302,165,67,475,17.8201634877,49,80,1.32311977716,3,4,0.765005088208,1.312048,1.65677333333,0.546872959401,0.96963489665,1.46756878424,150.967631513,414,187.037197483,563.305764922,989.194024493
|
||||||
|
512,200,9800,0.02,0.0185430633718,300,20.86968,200,290292,172400,168900,3500,0.97969837587,12295,0.975793650794,12204,0.968571428571,12138,0.963333333333,157,66,462,9.72222222222,26,41,1.3125,3,4,0.761154924242,1.15764533333,1.65677333333,0.536053764553,0.95939489665,1.45647545091,151.21462907,414,186.950627434,563.305764922,989.194024493
|
||||||
|
1024,200,9800,0.02,0.01854407776,300,20.8637066667,200,290292,95600,93582,2018,0.978891213389,12301,0.97626984127,12210,0.969047619048,12144,0.96380952381,157,66,456,5.70056497175,15,24,1.31412103746,3,4,0.761923535062,1.227696,1.65762666667,0.530838949739,0.95427489665,1.45135545091,151.334042912,414,186.90734241,563.305764922,989.194024493
|
||||||
|
256,1000,49000,0.02,0.0167841318375,300,20.8816266667,200,290293,332000,326429,5571,0.983219879518,12366,0.981428571429,12349,0.980079365079,12323,0.978015873016,43,26,277,59.2659574468,172.45,403,2.97849462366,7.4,16,1.30231827957,2.80936533333,5.66493333333,1.08734051838,2.48701382037,5.58511553493,153.469720111,97,722.639123618,2207.25170213,5246.24764036
|
||||||
|
512,1000,49000,0.02,0.0167765665288,300,20.86968,200,290293,172400,169489,2911,0.983114849188,12366,0.981428571429,12354,0.980476190476,12328,0.978412698413,38,26,272,31.3010752688,91.6,210,2.95652173913,7.45,16,1.29471797101,2.82593466667,5.66493333333,1.07655508883,2.47643248703,5.57572886827,153.618205933,97,721.900154546,2207.25170213,5246.24764036
|
||||||
|
1024,1000,49000,0.02,0.0167727806255,300,20.8637066667,200,290293,95600,93965,1635,0.98289748954,12366,0.981428571429,12358,0.980793650794,12332,0.97873015873,34,26,268,17.7717391304,50.85,116,2.94505494505,7.5,16,1.2905010989,2.84318666667,5.66493333333,1.07132952182,2.47131248703,5.57060886827,153.711503485,97,721.53067001,2207.25170213,5246.24764036
|
||||||
|
BIN
data/processed/lab030/lab030_composite_success.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
data/processed/lab030/lab030_delay_queue.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
data/processed/lab030/lab030_mode_comparison.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
data/processed/lab030/lab030_no_image_duration.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
87
data/processed/lab030/lab030_report.txt
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
Lab030. Пакетное избыточное кодирование стираний
|
||||||
|
|
||||||
|
Исходный профиль и неизменный внутренний транспорт
|
||||||
|
- Видео: data\raw\lab026_rover_source.mp4
|
||||||
|
- 63 реальных пар BASE/ROI, 3 fps; BASE 240x135 grayscale JPEG Q23, ROI 320x180 grayscale JPEG Q33.
|
||||||
|
- Внутренний Lab028 packet не изменён: payload 512 байт, 32-byte header, packet CRC32 и object CRC32.
|
||||||
|
|
||||||
|
GF(256) и блочный код
|
||||||
|
- Примитивный полином: 0x11D (x^8+x^4+x^3+x^2+1).
|
||||||
|
- Матрица Вандермонда n×k умножается на обратную верхнюю k×k матрицу и становится систематической.
|
||||||
|
- Любые k доступных строк систематической генераторной матрицы восстанавливают k исходных символов.
|
||||||
|
- Нулевое дополнение используется только в математике; восстановленный внутренний пакет обрезается по payload_length Lab028 и проходит собственный CRC.
|
||||||
|
|
||||||
|
Внешний пакет FEC
|
||||||
|
- struct: !4sBBHIHHHHHHII
|
||||||
|
- Размер: 32 байта, network byte order, padding отсутствует.
|
||||||
|
- Layout: magic[4]@0, version:u8@4, flags:u8@5, header_size:u16@6, block_id:u32@8, symbol_index:u16@12, k:u16@14, r:u16@16, symbol_size:u16@18, data_length:u16@20, reserved16:u16@22, reserved32:u32@24, outer_crc32:u32@28.
|
||||||
|
- flags bit0: parity. CRC32 вычисляется по заголовку с нулевым outer_crc32 и данным внешнего символа.
|
||||||
|
|
||||||
|
Формирование блоков и передача
|
||||||
|
- Последовательный поток внутренних пакетов BASE→ROI делится на k=8; блок может пересекать границу кадра.
|
||||||
|
- Сначала передаются systematic symbols, затем parity symbols этого блока; перемежение отсутствует.
|
||||||
|
- Последний блок содержит 6 исходных пакетов. Для него r_last=max(1, ceil(k_last*r/8)): режимы 8+1, 8+2, 8+4 получают соответственно 1, 2 и 3 parity.
|
||||||
|
- Режим Без FEC передаёт исходные Lab028 packets без внешней обёртки; остальные режимы используют внешний заголовок.
|
||||||
|
- FIFO учитывает время генерации кадра, все внешние пакеты, фактический размер и скорость 300 кбит/с. Очередь не сбрасывается на границах кадров.
|
||||||
|
|
||||||
|
Скорость, избыточность и очередь
|
||||||
|
mode | source packets | parity packets | last block k+r | JPEG kbit/s | inner kbit/s | outer kbit/s | overhead | queue mean/max | timeline s
|
||||||
|
----:|---------------:|---------------:|---------------:|------------:|-------------:|-------------:|---------:|---------------:|----------:
|
||||||
|
Без FEC | 862 | 0 | none | 157.770 | 168.396 | 168.396 | 6.310% | 13.717/15 | 20.869680
|
||||||
|
8+1 | 862 | 108 | 6+1 | 157.770 | 168.396 | 202.987 | 22.276% | 15.452/18 | 20.928560
|
||||||
|
8+2 | 862 | 216 | 6+2 | 157.770 | 168.396 | 226.951 | 30.483% | 17.210/21 | 20.974640
|
||||||
|
8+4 | 862 | 431 | 6+3 | 157.770 | 168.396 | 274.659 | 42.558% | 20.859/26 | 21.051440
|
||||||
|
|
||||||
|
Временная модель
|
||||||
|
- Экспоненциальные Good/Bad интервалы Lab029B, Bad≈2%, mean Bad 10/50/200/1000 мс, 200 повторов, fixed seeds 300300...300303.
|
||||||
|
- Пакет теряется при любом пересечении его передачи с Bad.
|
||||||
|
- FEC исправляет стирания; CRC обнаруживает повреждения, но битовые ошибки отдельно не добавляются.
|
||||||
|
|
||||||
|
Функциональные проверки
|
||||||
|
- PASS gf256_arithmetic: inverse, division, and distributivity passed
|
||||||
|
- PASS fec_without_loss: systematic 8+4 block is byte-exact without loss
|
||||||
|
- PASS recover_any_r_erasures: all 549 exact-r erasure combinations recovered
|
||||||
|
- PASS r_plus_one_not_guaranteed: 8+2 correctly rejected seven available symbols
|
||||||
|
- PASS restored_inner_packet_and_crc: restored Lab028 packets are byte-exact and CRC-valid
|
||||||
|
- PASS outer_crc_detection: outer payload bit flip rejected by outer CRC32
|
||||||
|
- PASS zero_bad_100_percent: all modes restored all 63 frames without Bad
|
||||||
|
- PASS fixed_seed_reproducibility: identical seed produced identical result fields
|
||||||
|
- PASS atomic_incomplete_composite: missing ROI fragment prevented atomic publication
|
||||||
|
- PASS queue_counts_parity: 431 parity packets included in FIFO timing and queue metrics
|
||||||
|
|
||||||
|
Результаты Monte Carlo
|
||||||
|
Bad ms | mode | Bad actual | lost src/parity | recovered pkt | blocks recovered/failed | block recovery | composite | BASE-only/ROI-only | no image mean/p95/max s | delay mean/p95/max s | video kbit/s
|
||||||
|
------:|-----:|-----------:|----------------:|--------------:|------------------------:|---------------:|----------:|------------------:|-------------------------:|----------------------:|------------:
|
||||||
|
10 | Без FEC | 2.024% | 8130/0 | 0 | 0/0 | 0.000% | 66.960% | 2341/1207 | 0.814/1.346/3.008 | 0.185/0.203/0.210 | 105.091
|
||||||
|
10 | 8+1 | 2.038% | 8457/1121 | 2390 | 2390/2725 | 46.725% | 78.873% | 1471/776 | 0.767/1.317/2.360 | 0.231/0.364/0.451 | 123.422
|
||||||
|
10 | 8+2 | 2.055% | 8451/2229 | 5560 | 4070/1028 | 79.835% | 91.286% | 600/295 | 0.731/1.017/1.798 | 0.260/0.395/0.466 | 142.607
|
||||||
|
10 | 8+4 | 1.990% | 8364/4311 | 7797 | 4860/144 | 97.122% | 98.698% | 84/36 | 0.710/1.017/1.069 | 0.308/0.410/0.496 | 153.620
|
||||||
|
50 | Без FEC | 1.914% | 4062/0 | 0 | 0/0 | 0.000% | 91.452% | 529/296 | 0.693/0.998/1.687 | 0.185/0.203/0.210 | 143.553
|
||||||
|
50 | 8+1 | 1.929% | 4255/562 | 325 | 325/1216 | 21.090% | 91.762% | 542/263 | 0.709/1.004/1.994 | 0.223/0.245/0.451 | 143.615
|
||||||
|
50 | 8+2 | 1.995% | 4326/1104 | 971 | 658/905 | 42.099% | 93.333% | 423/214 | 0.713/1.010/1.632 | 0.248/0.275/0.465 | 145.767
|
||||||
|
50 | 8+4 | 2.035% | 4506/2275 | 2062 | 979/520 | 65.310% | 95.532% | 261/141 | 0.749/1.057/1.406 | 0.298/0.339/0.495 | 148.638
|
||||||
|
200 | Без FEC | 2.117% | 3877/0 | 0 | 0/0 | 0.000% | 96.071% | 146/83 | 0.786/1.325/2.333 | 0.185/0.203/0.210 | 150.881
|
||||||
|
200 | 8+1 | 2.169% | 3983/513 | 74 | 74/734 | 9.158% | 95.865% | 162/91 | 0.810/1.332/2.334 | 0.221/0.244/0.448 | 150.129
|
||||||
|
200 | 8+2 | 1.945% | 3573/908 | 144 | 101/602 | 14.367% | 96.302% | 149/80 | 0.837/1.339/2.334 | 0.246/0.275/0.467 | 150.483
|
||||||
|
200 | 8+4 | 1.940% | 3550/1777 | 375 | 160/522 | 23.460% | 96.310% | 153/90 | 0.900/1.348/2.334 | 0.296/0.337/0.466 | 149.944
|
||||||
|
1000 | Без FEC | 1.722% | 3014/0 | 0 | 0/0 | 0.000% | 97.976% | 27/10 | 1.403/3.050/4.327 | 0.185/0.203/0.210 | 153.809
|
||||||
|
1000 | 8+1 | 1.720% | 3003/374 | 13 | 13/423 | 2.982% | 97.921% | 33/13 | 1.437/3.040/4.311 | 0.221/0.244/0.250 | 153.287
|
||||||
|
1000 | 8+2 | 1.763% | 3079/781 | 25 | 16/427 | 3.612% | 97.833% | 39/15 | 1.466/3.048/4.295 | 0.246/0.275/0.450 | 152.807
|
||||||
|
1000 | 8+4 | 1.719% | 3004/1509 | 64 | 27/400 | 6.323% | 97.817% | 47/21 | 1.533/3.095/4.275 | 0.296/0.337/0.465 | 152.233
|
||||||
|
|
||||||
|
Допущения и ограничения
|
||||||
|
- Не реализованы перемежение, ARQ, повторные передачи, команды управления, телеметрия и реальный SDR.
|
||||||
|
- Любое частичное пересечение Bad уничтожает весь внешний или базовый внутренний пакет.
|
||||||
|
- Принятые systematic packets немедленно поступают reassembler; восстановленные стирания становятся доступны при получении k символов блока.
|
||||||
|
- Publication delay измеряется от frame_id/3 до атомарной выдачи BASE+ROI.
|
||||||
|
- Queue length измеряется в моменты генерации пакетов и включает ожидающие и обслуживаемый пакет.
|
||||||
|
- Окончательный режим FEC автоматически не выбирается.
|
||||||
|
|
||||||
|
Артефакты
|
||||||
|
- CSV: data\processed\lab030\lab030_results.csv
|
||||||
|
- Composite success: data\processed\lab030\lab030_composite_success.png
|
||||||
|
- No-image duration: data\processed\lab030\lab030_no_image_duration.png
|
||||||
|
- Stream rate/overhead: data\processed\lab030\lab030_stream_rate_overhead.png
|
||||||
|
- Delay/queue: data\processed\lab030\lab030_delay_queue.png
|
||||||
|
- Mode comparison: data\processed\lab030\lab030_mode_comparison.png
|
||||||
|
- JPEG, внутренние/внешние packets и бинарные дампы не сохранялись.
|
||||||
17
data/processed/lab030/lab030_results.csv
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
mode,source_block_size,nominal_parity_count,mean_bad_duration_ms,mean_good_duration_ms,target_bad_time_fraction,actual_bad_time_fraction,monte_carlo_repetitions,seed,source_jpeg_bitrate_kbps,inner_packet_stream_bitrate_kbps,outer_fec_stream_bitrate_kbps,service_and_parity_percent,control_stream_bitrate_kbps,schedule_duration_seconds,mean_queue_length_packets,max_queue_length_packets,mean_publication_delay_seconds,p95_publication_delay_seconds,max_publication_delay_seconds,transmitted_source_packets,transmitted_parity_packets,lost_source_packets,lost_parity_packets,recovered_source_packets,fec_recovered_blocks,fec_unrecoverable_blocks,fec_affected_block_recovery_rate,base_objects_completed,roi_objects_completed,atomic_composite_frames_completed,composite_success_rate,base_only_frames,roi_only_frames,incomplete_frames,mean_no_new_image_duration_seconds,p95_no_new_image_duration_seconds,max_no_new_image_duration_seconds,mean_consecutive_incomplete_frames,p95_consecutive_incomplete_frames,max_consecutive_incomplete_frames,effective_delivered_video_bitrate_kbps
|
||||||
|
none,8,0,10,490,0.02,0.0202372337783,200,300300,157.76975923,168.396019262,168.396019262,6.3102798265,300,20.86968,13.716937355,15,0.184972089605,0.203013333333,0.20968,172400,0,8130,0,0,0,0,0,10778,9644,8437,0.669603174603,2341,1207,4163,0.813657881797,1.34557333333,3.0084,1.47624113475,3,8,105.090548585
|
||||||
|
8+1,8,1,10,490,0.02,0.0203834086527,200,300300,157.76975923,168.396019262,202.986837881,22.2758673043,300,20.92856,15.4515463918,18,0.2311155162,0.364053333333,0.451386666667,172400,21600,8457,1121,2390,2390,2725,0.467253176931,11409,10714,9938,0.78873015873,1471,776,2662,0.766680350008,1.31661333333,2.35997333333,1.31847449232,3,6,123.421642005
|
||||||
|
8+2,8,2,10,490,0.02,0.0205493425986,200,300300,157.76975923,168.396019262,226.951396469,30.4830189704,300,20.97464,17.2096474954,21,0.260180715238,0.394773333333,0.4656,172400,43200,8451,2229,5560,4070,1028,0.798352295018,12102,11797,11502,0.912857142857,600,295,1098,0.730752592593,1.01705733333,1.7976,1.19607843137,2,4,142.607264773
|
||||||
|
8+4,8,4,10,490,0.02,0.0199022658407,200,300300,157.76975923,168.396019262,274.658619583,42.55787076,300,21.05144,20.8592420727,26,0.308434444087,0.410133333333,0.49632,172400,86200,8364,4311,7797,4860,144,0.971223021583,12520,12472,12436,0.986984126984,84,36,164,0.709739906103,1.01696933333,1.06861333333,1.15492957746,2,2,153.619731477
|
||||||
|
none,8,0,50,2450,0.02,0.0191374257321,200,300301,157.76975923,168.396019262,168.396019262,6.3102798265,300,20.86968,13.716937355,15,0.185003224855,0.203013333333,0.20968,172400,0,4062,0,0,0,0,0,12052,11819,11523,0.914523809524,529,296,1077,0.69345654043,0.998314666667,1.68717333333,1.10235414534,2,4,143.552817293
|
||||||
|
8+1,8,1,50,2450,0.02,0.0192899572498,200,300301,157.76975923,168.396019262,202.986837881,22.2758673043,300,20.92856,15.4515463918,18,0.222813291818,0.244506666667,0.451386666667,172400,21600,4255,562,325,325,1216,0.210902011681,12104,11825,11562,0.917619047619,542,263,1038,0.709203642987,1.00418666667,1.99370666667,1.13442622951,2,5,143.614717878
|
||||||
|
8+2,8,2,50,2450,0.02,0.0199477213011,200,300301,157.76975923,168.396019262,226.951396469,30.4830189704,300,20.97464,17.2096474954,21,0.248295249433,0.275226666667,0.465306666667,172400,43200,4326,1104,971,658,905,0.420985284709,12183,11974,11760,0.933333333333,423,214,840,0.712576776557,1.009596,1.63154666667,1.15384615385,2,4,145.767170259
|
||||||
|
8+4,8,4,50,2450,0.02,0.0203533945389,200,300301,157.76975923,168.396019262,274.658619583,42.55787076,300,21.05144,20.8592420727,26,0.298285623771,0.338693333333,0.49544,172400,86200,4506,2275,2062,979,520,0.653102068045,12298,12178,12037,0.955317460317,261,141,563,0.749229398664,1.05712,1.40586666667,1.25389755011,2,3,148.638096016
|
||||||
|
none,8,0,200,9800,0.02,0.0211716551168,200,300302,157.76975923,168.396019262,168.396019262,6.3102798265,300,20.86968,13.716937355,15,0.18509811593,0.203013333333,0.20968,172400,0,3877,0,0,0,0,0,12251,12188,12105,0.960714285714,146,83,495,0.786258898226,1.325184,2.33330666667,1.38655462185,3,6,150.881316819
|
||||||
|
8+1,8,1,200,9800,0.02,0.0216871677039,200,300302,157.76975923,168.396019262,202.986837881,22.2758673043,300,20.92856,15.4515463918,18,0.221480990148,0.244346666667,0.448133333333,172400,21600,3983,513,74,74,734,0.0915841584158,12241,12170,12079,0.958650793651,162,91,521,0.809597474466,1.332496,2.33416,1.45125348189,3,6,150.12864908
|
||||||
|
8+2,8,2,200,9800,0.02,0.0194531290427,200,300302,157.76975923,168.396019262,226.951396469,30.4830189704,300,20.97464,17.2096474954,21,0.246329619252,0.275066666667,0.466746666667,172400,43200,3573,908,144,101,602,0.143669985775,12283,12214,12134,0.963015873016,149,80,466,0.837464218579,1.33874666667,2.33416,1.52786885246,3,6,150.482540821
|
||||||
|
8+4,8,4,200,9800,0.02,0.0194004010436,200,300302,157.76975923,168.396019262,274.658619583,42.55787076,300,21.05144,20.8592420727,26,0.295920402143,0.336666666667,0.465946666667,172400,86200,3550,1777,375,160,522,0.234604105572,12288,12225,12135,0.963095238095,153,90,465,0.899563467643,1.34797333333,2.33416,1.7032967033,3,6,149.943889824
|
||||||
|
none,8,0,1000,49000,0.02,0.0172219900037,200,300303,157.76975923,168.396019262,168.396019262,6.3102798265,300,20.86968,13.716937355,15,0.185021764277,0.203013333333,0.20968,172400,0,3014,0,0,0,0,0,12372,12355,12345,0.979761904762,27,10,255,1.40302564103,3.049944,4.32696,3.26923076923,8.15,12,153.808757968
|
||||||
|
8+1,8,1,1000,49000,0.02,0.0172016717987,200,300303,157.76975923,168.396019262,202.986837881,22.2758673043,300,20.92856,15.4515463918,18,0.221316092289,0.244346666667,0.250373333333,172400,21600,3003,374,13,13,423,0.0298165137615,12371,12351,12338,0.979206349206,33,13,262,1.43732205128,3.039692,4.31074666667,3.35897435897,8.15,12,153.287364252
|
||||||
|
8+2,8,2,1000,49000,0.02,0.0176312789901,200,300303,157.76975923,168.396019262,226.951396469,30.4830189704,300,20.97464,17.2096474954,21,0.24594955031,0.275066666667,0.449946666667,172400,43200,3079,781,25,16,427,0.0361173814898,12366,12342,12327,0.978333333333,39,15,273,1.46630616034,3.04793866667,4.29538666667,3.45569620253,8.1,12,152.806923027
|
||||||
|
8+4,8,4,1000,49000,0.02,0.0171897343344,200,300303,157.76975923,168.396019262,274.658619583,42.55787076,300,21.05144,20.8592420727,26,0.295510529817,0.336506666667,0.464693333333,172400,86200,3004,1509,64,27,400,0.0632318501171,12372,12346,12325,0.978174603175,47,21,275,1.53289614035,3.09500666667,4.27541333333,3.61842105263,8.25,12,152.233086193
|
||||||
|
BIN
data/processed/lab030/lab030_stream_rate_overhead.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
data/processed/lab031/lab031_block_recovery.png
Normal file
|
After Width: | Height: | Size: 158 KiB |
BIN
data/processed/lab031/lab031_composite_success.png
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
data/processed/lab031/lab031_depth_tradeoff.png
Normal file
|
After Width: | Height: | Size: 142 KiB |
BIN
data/processed/lab031/lab031_mode_comparison.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
data/processed/lab031/lab031_no_image_duration.png
Normal file
|
After Width: | Height: | Size: 165 KiB |
BIN
data/processed/lab031/lab031_publication_delay.png
Normal file
|
After Width: | Height: | Size: 75 KiB |
93
data/processed/lab031/lab031_report.txt
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
Lab031. Перемежение пакетов между FEC-блоками
|
||||||
|
|
||||||
|
Исходные данные и неизменные слои
|
||||||
|
- Видео: data\raw\lab026_rover_source.mp4
|
||||||
|
- 63 реальных синхронных пар BASE/ROI, 3 fps; длительность источника 20.766667 с.
|
||||||
|
- BASE 240x135 grayscale JPEG Q23; ROI 320x180 grayscale JPEG Q33.
|
||||||
|
- Внутренний транспорт Lab028: payload 512 байт, packet CRC32, object CRC32, атомарная публикация BASE+ROI.
|
||||||
|
- Внешний формат и GF(256) Lab030 используются без изменений; k=8, parity r=2 или r=4.
|
||||||
|
|
||||||
|
Точное правило перестановки
|
||||||
|
- Последовательные готовые FEC-блоки делятся на группы не более D блоков.
|
||||||
|
- Для symbol_index=0,1,2,... передаётся символ с этим индексом блока 0, затем блока 1, ... блока D-1.
|
||||||
|
- Если блок короче, отсутствующий symbol_index пропускается. Внутри блока сохраняется порядок systematic, затем parity.
|
||||||
|
- Перестановка не изменяет байты, block_id или symbol_index и не добавляет пакеты.
|
||||||
|
|
||||||
|
Формирование и буферизация групп
|
||||||
|
- Полная группа D>1 выпускается после готовности D-го последовательного блока; все её пакеты получают это время доступности перед FIFO-передатчиком.
|
||||||
|
- Неполная последняя группа выпускается в момент окончания видеопотока; синтетические блоки и символы не добавляются.
|
||||||
|
- D=1 сохраняет порядок и времена доступности Lab030 и имеет нулевую добавочную задержку ожидания группы.
|
||||||
|
- Размер группы формируется в порядке возрастания block_id; полные группы имеют D блоков, последняя — остаток.
|
||||||
|
- Средний буфер — среднее заполнение после каждого прихода готового блока (1..размер группы); максимум включает момент непосредственно перед выпуском группы.
|
||||||
|
|
||||||
|
Семь фиксированных режимов и статические метрики
|
||||||
|
mode | k+r | D | groups | final group | source/parity packets | outer kbit/s | overhead | wait mean/max s | buffer mean/max | queue mean/max | symbol gap/span ms
|
||||||
|
----:|----:|--:|-------:|------------:|----------------------:|-------------:|---------:|----------------:|----------------:|---------------:|-------------------:
|
||||||
|
Без FEC | none | 1 | 0 | 0 | 862/0 | 168.396 | 6.310% | 0.000000/0.000000 | 0.000/0 | 13.717/15 | 0.000/0.000
|
||||||
|
8+2, D=1 | 8+2 | 1 | 108 | 1 | 862/216 | 226.951 | 30.483% | 0.000000/0.000000 | 1.000/1 | 17.210/21 | 19.547/175.558
|
||||||
|
8+2, D=2 | 8+2 | 2 | 54 | 2 | 862/216 | 226.951 | 30.483% | 0.098765/0.333333 | 1.500/2 | 20.635/38 | 29.178/262.058
|
||||||
|
8+2, D=4 | 8+2 | 4 | 27 | 4 | 862/216 | 226.951 | 30.483% | 0.290123/0.666667 | 2.500/4 | 39.929/40 | 58.283/523.467
|
||||||
|
8+2, D=8 | 8+2 | 8 | 14 | 4 | 862/216 | 226.951 | 30.483% | 0.651852/1.666667 | 4.426/8 | 79.506/80 | 114.400/1027.482
|
||||||
|
8+4, D=1 | 8+4 | 1 | 108 | 1 | 862/431 | 274.659 | 42.558% | 0.000000/0.000000 | 1.000/1 | 20.859/26 | 16.379/179.710
|
||||||
|
8+4, D=4 | 8+4 | 4 | 27 | 4 | 862/431 | 274.659 | 42.558% | 0.290123/0.666667 | 2.500/4 | 51.026/57 | 58.817/645.351
|
||||||
|
|
||||||
|
Временная модель и статистика
|
||||||
|
- Непрерывные чередующиеся экспоненциальные Good/Bad интервалы Lab029B, средняя доля Bad около 2%.
|
||||||
|
- Средние Bad: 10, 50, 200, 1000 мс; 200 повторов на условие; seeds 310310...310313.
|
||||||
|
- Пакет теряется при любом пересечении интервала его передачи с Bad; скорость FIFO 300 кбит/с.
|
||||||
|
- Учитываются фактическая длина каждого внутреннего и внешнего пакета, ожидание группы и накопление очереди.
|
||||||
|
- Приёмник группирует внешние символы по block_id, декодирует после любых k принятых символов и передаёт восстановленные внутренние пакеты в CompositeReassembler.
|
||||||
|
- Соседние composite_frame_id не смешиваются; неполный BASE+ROI кадр не публикуется.
|
||||||
|
|
||||||
|
Результаты при средней Bad 200 мс
|
||||||
|
mode | composite | no-image mean/p95/max s | publication mean/p95/max s | affected blocks | all blocks | unrecoverable | delivered kbit/s | incomplete run mean/p95/max
|
||||||
|
----:|----------:|------------------------:|-------------------------:|----------------:|-----------:|--------------:|----------------:|------------------------:
|
||||||
|
Без FEC | 0.960079 | 0.780292/1.322480/2.001440 | 0.185041/0.203013/0.209680 | 0.000000 | 0.000000 | 0.000000 | 150.735 | 1.393/3.000/5
|
||||||
|
8+2, D=1 | 0.963095 | 0.827615/1.346867/2.032160 | 0.246248/0.275067/0.464720 | 0.152235 | 0.971898 | 0.028102 | 150.452 | 1.520/3.000/5
|
||||||
|
8+2, D=2 | 0.957143 | 1.026629/1.727381/2.670480 | 0.509783/0.670480/0.933093 | 0.225694 | 0.969028 | 0.030972 | 147.820 | 2.134/4.000/7
|
||||||
|
8+2, D=4 | 0.958333 | 1.387432/2.317012/3.306267 | 0.923445/1.134053/1.536720 | 0.408333 | 0.967130 | 0.032870 | 147.993 | 3.017/5.000/10
|
||||||
|
8+2, D=8 | 0.964921 | 2.088808/3.261775/4.919493 | 1.724311/2.252480/2.735360 | 0.644555 | 0.970231 | 0.029769 | 145.481 | 3.946/6.000/10
|
||||||
|
8+4, D=1 | 0.964048 | 0.875715/1.383067/2.062880 | 0.295702/0.336507/0.481920 | 0.247453 | 0.976065 | 0.023935 | 150.049 | 1.647/3.000/5
|
||||||
|
8+4, D=4 | 0.974841 | 1.338860/1.827840/2.774213 | 0.966677/1.152507/1.665707 | 0.669316 | 0.980741 | 0.019259 | 148.676 | 2.805/4.000/7
|
||||||
|
|
||||||
|
Когда 8+2 с перемежением превосходит 8+4 без него
|
||||||
|
- Критерий ниже: строго более высокая доля атомарно восстановленных составных кадров; задержки приведены рядом как цена перемежения.
|
||||||
|
- Bad 50 мс, 8+2, D=4: composite 0.972063 > 0.958175; P95 no-image 1.660629 с против 1.017307 с; P95 публикации 1.150264 с против 0.338693 с.
|
||||||
|
- Bad 50 мс, 8+2, D=8: composite 0.989603 > 0.958175; P95 no-image 2.456107 с против 1.017307 с; P95 публикации 2.271840 с против 0.338693 с.
|
||||||
|
- Bad 200 мс, 8+2, D=8: composite 0.964921 > 0.964048; P95 no-image 3.261775 с против 1.383067 с; P95 публикации 2.252480 с против 0.336507 с.
|
||||||
|
|
||||||
|
Функциональные проверки
|
||||||
|
- PASS d1_matches_lab030: D=1 wire order is byte-identical to Lab030
|
||||||
|
- PASS permutation_preserves_packets: all 1078 packets preserved
|
||||||
|
- PASS each_packet_once: every protected-mode packet appears exactly once
|
||||||
|
- PASS identifiers_preserved: block_id and symbol_index survived permutation
|
||||||
|
- PASS inverse_distribution: inverse grouping passed for D=[2, 4, 8]
|
||||||
|
- PASS decoded_inner_byte_exact: decoded inner packets are byte-exact
|
||||||
|
- PASS inner_outer_crc: outer and recovered Lab028 CRC32 checks passed
|
||||||
|
- PASS zero_bad_100_percent: all seven modes restored 100% of frames without Bad
|
||||||
|
- PASS fixed_seed_reproducibility: identical seed produced identical result fields
|
||||||
|
- PASS atomic_incomplete_composite: missing final ROI fragment prevented publication
|
||||||
|
- PASS depth_increases_symbol_distance: D=1/2/4/8 strictly increase intrablock symbol spacing
|
||||||
|
- PASS group_wait_in_publication_delay: D=4 group wait 0.290123 s is reflected in publication delay
|
||||||
|
- PASS final_partial_group: final 4-block group emitted 38 packets at end of stream
|
||||||
|
|
||||||
|
Допущения модели
|
||||||
|
- Видеопрофиль конечный и детерминированный; JPEG кодируются в памяти один раз перед Monte Carlo.
|
||||||
|
- Устройство знает конец потока и только тогда выпускает неполную последнюю группу D>1.
|
||||||
|
- Время готовности FEC-блока равно максимальному времени генерации его исходных пакетов; вычислительная задержка GF(256) считается нулевой.
|
||||||
|
- D=1 определён как точный режим Lab030; поэтому он не ждёт завершения блока перед отправкой уже готовых systematic symbols.
|
||||||
|
- Передатчик и канал общие FIFO; параллельные радиоканалы, ARQ, повторные передачи, команды, телеметрия, модуляция и реальный SDR не моделируются.
|
||||||
|
- Потеря является стиранием полного внешнего пакета; отдельные битовые ошибки не добавляются.
|
||||||
|
- Publication delay считается от frame_id/3 до конца пакета, завершившего атомарную сборку; no-image включает время до следующего опубликованного кадра или конца расписания.
|
||||||
|
- Intrablock symbol gap измеряется между временами конца последовательных symbol_index; span — от первого до последнего символа блока.
|
||||||
|
|
||||||
|
Артефакты
|
||||||
|
- CSV: data\processed\lab031\lab031_results.csv
|
||||||
|
- Отчёт: data\processed\lab031\lab031_report.txt
|
||||||
|
- Доля восстановленных кадров: data\processed\lab031\lab031_composite_success.png
|
||||||
|
- Отсутствие нового изображения: data\processed\lab031\lab031_no_image_duration.png
|
||||||
|
- Задержка публикации: data\processed\lab031\lab031_publication_delay.png
|
||||||
|
- Доля восстановленных блоков: data\processed\lab031\lab031_block_recovery.png
|
||||||
|
- Устойчивость/задержка от D: data\processed\lab031\lab031_depth_tradeoff.png
|
||||||
|
- Итоговое сравнение: data\processed\lab031\lab031_mode_comparison.png
|
||||||
|
- JPEG, внешние пакеты и бинарные дампы на диск не сохранялись.
|
||||||
29
data/processed/lab031/lab031_results.csv
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
mode,label,source_block_size,nominal_parity_count,interleaving_depth,mean_bad_duration_ms,mean_good_duration_ms,target_bad_time_fraction,actual_bad_time_fraction,monte_carlo_repetitions,seed,source_jpeg_bitrate_kbps,inner_packet_stream_bitrate_kbps,outer_fec_stream_bitrate_kbps,service_and_parity_percent,control_stream_bitrate_kbps,schedule_duration_seconds,interleaving_group_count,final_group_block_count,mean_group_wait_delay_seconds,p95_group_wait_delay_seconds,max_group_wait_delay_seconds,mean_queue_length_packets,max_queue_length_packets,mean_buffered_blocks,max_buffered_blocks,mean_intrablock_symbol_gap_seconds,mean_intrablock_symbol_span_seconds,max_intrablock_symbol_span_seconds,transmitted_source_packets,transmitted_parity_packets,lost_source_packets,lost_parity_packets,recovered_source_packets,fec_recovered_blocks,fec_unrecoverable_blocks,fec_affected_block_recovery_rate,fec_all_block_success_rate,fec_unrecoverable_block_rate,base_objects_completed,roi_objects_completed,atomic_composite_frames_completed,composite_success_rate,base_only_frames,roi_only_frames,incomplete_frames,effective_delivered_video_bitrate_kbps,mean_publication_delay_seconds,p95_publication_delay_seconds,max_publication_delay_seconds,mean_no_new_image_duration_seconds,p95_no_new_image_duration_seconds,max_no_new_image_duration_seconds,mean_consecutive_incomplete_frames,p95_consecutive_incomplete_frames,max_consecutive_incomplete_frames
|
||||||
|
none,Без FEC,8,0,1,10.0,490.0,0.02,0.019635234668464615,200,310310,157.76975922953451,168.39601926163724,168.39601926163724,6.3102798265039075,300.0,20.869679999999992,0,0,0.0,0.0,0.0,13.7169373549884,15,0.0,0,0.0,0.0,0.0,172400,0,7830,0,0,0,0,0.0,0.0,0.0,10803,9768,8554,0.6788888888888889,2249,1214,4046,106.50128607625994,0.184895562310024,0.20301333333332394,0.20967999999999998,0.8071357862085417,1.3423520000000007,2.6819999999999897,1.4481030780243378,3.0,7
|
||||||
|
8+2_D1,"8+2, D=1",8,2,1,10.0,490.0,0.02,0.01989276611622791,200,310310,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,20.974640000000022,108,1,0.0,0.0,0.0,17.209647495361782,21,1.0,1,0.0195466666666667,0.1755580246913583,0.2513600000000018,172400,43200,8234,2146,5581,4099,951,0.8116831683168317,0.9559722222222222,0.04402777777777778,12107,11879,11591,0.9199206349206349,516,288,1009,143.66791706556094,0.26030441549478167,0.3947733333333314,0.466560000000003,0.7235130475086914,1.0172773333333234,1.8285600000000155,1.1691772885283893,2.0,4
|
||||||
|
8+2_D2,"8+2, D=2",8,2,2,10.0,490.0,0.02,0.020419285815139677,200,310310,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,21.216053333333374,54,2,0.09876543209876544,0.3333333333333339,0.3333333333333357,20.634508348794064,38,1.5,2,0.029177621993127328,0.2620582716049399,0.27303999999999107,172400,43200,8513,2185,7407,6267,424,0.9366312957704379,0.9803703703703703,0.01962962962962963,12377,12258,12143,0.9637301587301588,234,115,457,148.79314028873705,0.5255043553213112,0.67048,0.9482399999999895,0.7850378666666681,1.1956960000000163,1.693359999999986,1.406153846153846,2.0,4
|
||||||
|
8+2_D4,"8+2, D=4",8,2,4,10.0,490.0,0.02,0.020419285815139677,200,310310,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,21.216053333333374,27,4,0.29012345679012347,0.666666666666667,0.6666666666666679,39.929499072356215,40,2.5,4,0.05828288659793857,0.5234666666666705,0.5352533333333276,172400,43200,8403,2263,7823,6862,242,0.9659346846846847,0.9887962962962963,0.011203703703703704,12453,12398,12316,0.9774603174603175,137,82,284,150.92200183006048,0.955103273790194,1.1987733333333424,1.5428266666666461,0.7946769333333339,1.3154093333333325,1.825786666666668,1.42,2.0,3
|
||||||
|
8+2_D8,"8+2, D=8",8,2,8,10.0,490.0,0.02,0.019783831729573317,200,310310,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,21.729893333333457,14,4,0.6518518518518518,1.333333333333334,1.666666666666666,79.50649350649351,80,4.425925925925926,8,0.11440010996563674,1.0274824691358113,1.0638933333334109,172400,43200,8326,2151,7778,6865,228,0.9678556323135485,0.9894444444444445,0.010555555555555556,12465,12402,12335,0.9789682539682539,130,67,265,147.5914653975897,1.7776782315903348,2.299730666666638,2.73535999999996,0.6972641975308679,1.7551626666666769,2.463786666666663,1.402116402116402,2.0,3
|
||||||
|
8+4_D1,"8+4, D=1",8,4,1,10.0,490.0,0.02,0.020272932566179635,200,310310,157.76975922953451,168.39601926163724,274.6586195826645,42.55787075997801,300.0,21.051440000000028,108,1,0.0,0.0,0.0,20.85924207269915,26,1.0,1,0.016378644163150546,0.17971012345679074,0.2513600000000018,172400,86200,8349,4418,7753,4836,157,0.9685559783697176,0.9927314814814815,0.007268518518518519,12505,12460,12416,0.9853968253968254,89,44,184,153.336186028129,0.3085311168384899,0.4101333333333308,0.4960266666666602,0.7172980645161281,1.0115039999999988,1.0841333333333387,1.1870967741935483,2.0,2
|
||||||
|
8+4_D4,"8+4, D=4",8,4,4,10.0,490.0,0.02,0.02028471209220386,200,310310,157.76975922953451,168.39601926163724,274.6586195826645,42.55787075997801,300.0,21.48064000000025,27,4,0.29012345679012347,0.666666666666667,0.6666666666666679,51.02552204176334,57,2.5,4,0.05881681012658274,0.6453511111111162,0.6581333333333261,172400,86200,8379,4498,8345,7029,9,0.9987212276214834,0.9995833333333334,0.0004166666666666667,12593,12593,12589,0.9991269841269841,4,4,11,152.39649470406664,0.9972173421240931,1.2425066666666575,1.6595999999999744,0.6450566666666556,1.2836946666666527,1.5891466666666396,1.375,2.6499999999999995,3
|
||||||
|
none,Без FEC,8,0,1,50.0,2450.0,0.02,0.01904752893886233,200,310311,157.76975922953451,168.39601926163724,168.39601926163724,6.3102798265039075,300.0,20.869679999999992,0,0,0.0,0.0,0.0,13.7169373549884,15,0.0,0,0.0,0.0,0.0,172400,0,4146,0,0,0,0,0.0,0.0,0.0,12068,11771,11478,0.910952380952381,590,293,1122,143.00240540343697,0.1850171179647958,0.20301333333332394,0.20967999999999998,0.695712680514342,1.0000266666666668,1.3480800000000013,1.1097922848664687,2.0,3
|
||||||
|
8+2_D1,"8+2, D=1",8,2,1,50.0,2450.0,0.02,0.019583724988700386,200,310311,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,20.974640000000022,108,1,0.0,0.0,0.0,17.209647495361782,21,1.0,1,0.0195466666666667,0.1755580246913583,0.2513600000000018,172400,43200,4350,1111,964,668,893,0.4279308135810378,0.9586574074074075,0.04134259259259259,12205,11976,11788,0.9355555555555556,417,188,812,146.1207896774389,0.24840877502545095,0.27522666666668627,0.45397333333333023,0.7019893258949336,1.0052693333333333,1.358746666666665,1.1324965132496514,2.0,3
|
||||||
|
8+2_D2,"8+2, D=2",8,2,2,50.0,2450.0,0.02,0.020611137780154415,200,310311,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,21.216053333333374,54,2,0.09876543209876544,0.3333333333333339,0.3333333333333357,20.634508348794064,38,1.5,2,0.029177621993127328,0.2620582716049399,0.27303999999999107,172400,43200,4525,1128,1855,1386,762,0.6452513966480447,0.9647222222222223,0.035277777777777776,12202,12084,11923,0.9462698412698413,279,161,677,146.11615606798344,0.5131737180239886,0.67048,0.9482399999999895,0.8504971698113227,1.2140000000000006,2.1241066666666635,1.596698113207547,2.0,4
|
||||||
|
8+2_D4,"8+2, D=4",8,2,4,50.0,2450.0,0.02,0.020611137780154415,200,310311,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,21.216053333333374,27,4,0.29012345679012347,0.666666666666667,0.6666666666666679,39.929499072356215,40,2.5,4,0.05828288659793857,0.5234666666666705,0.5352533333333276,172400,43200,4598,1155,3293,2645,445,0.8559870550161812,0.9793981481481482,0.02060185185185185,12377,12308,12248,0.9720634920634921,129,60,352,150.10497334094154,0.9336452906597018,1.1502639999999997,1.5428266666666461,1.0794554732510333,1.6606293333333362,3.3212533333333107,2.1728395061728394,3.0,8
|
||||||
|
8+2_D8,"8+2, D=8",8,2,8,50.0,2450.0,0.02,0.019261484934125217,200,310311,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,21.729893333333457,14,4,0.6518518518518518,1.333333333333334,1.666666666666666,79.50649350649351,80,4.425925925925926,8,0.11440010996563674,1.0274824691358113,1.0638933333334109,172400,43200,4342,1090,3932,3450,161,0.9554140127388535,0.9925462962962963,0.007453703703703704,12508,12491,12469,0.9896031746031746,39,22,131,149.20466429655653,1.7412040548560521,2.271839999999967,2.73535999999996,1.0850114553990724,2.4561066666666633,3.22338666666667,1.8450704225352113,5.0,6
|
||||||
|
8+4_D1,"8+4, D=1",8,4,1,50.0,2450.0,0.02,0.019588623960636035,200,310311,157.76975922953451,168.39601926163724,274.6586195826645,42.55787075997801,300.0,21.051440000000028,108,1,0.0,0.0,0.0,20.85924207269915,26,1.0,1,0.016378644163150546,0.17971012345679074,0.2513600000000018,172400,86200,4310,2179,2061,996,474,0.6775510204081633,0.9780555555555556,0.021944444444444444,12327,12214,12073,0.9581746031746031,254,141,527,149.08571005118867,0.29811151495071847,0.3386933333333566,0.49543999999999855,0.738907046714174,1.017306666666654,1.3934133333333296,1.2517814726840855,2.0,3
|
||||||
|
8+4_D4,"8+4, D=4",8,4,4,50.0,2450.0,0.02,0.018896970593780017,200,310311,157.76975922953451,168.39601926163724,274.6586195826645,42.55787075997801,300.0,21.48064000000025,27,4,0.29012345679012347,0.666666666666667,0.6666666666666679,51.02552204176334,57,2.5,4,0.05881681012658274,0.6453511111111162,0.6581333333333261,172400,86200,4201,2094,3982,2847,49,0.9830801104972375,0.9977314814814815,0.0022685185185185187,12572,12563,12555,0.9964285714285714,17,8,45,151.98650878185947,0.9761674020974541,1.2002133333333127,1.6510666666666776,1.098252631578969,1.6198666666666914,1.6359466666666824,2.3684210526315788,4.0,4
|
||||||
|
none,Без FEC,8,0,1,200.0,9800.0,0.02,0.021768052926612245,200,310312,157.76975922953451,168.39601926163724,168.39601926163724,6.3102798265039075,300.0,20.869679999999992,0,0,0.0,0.0,0.0,13.7169373549884,15,0.0,0,0.0,0.0,0.0,172400,0,3950,0,0,0,0,0.0,0.0,0.0,12258,12177,12097,0.9600793650793651,161,80,503,150.73476737544615,0.18504139318287638,0.20301333333332394,0.20967999999999998,0.7802921514312094,1.3224799999999997,2.001439999999989,1.3933518005540166,3.0,5
|
||||||
|
8+2_D1,"8+2, D=1",8,2,1,200.0,9800.0,0.02,0.019093901593380775,200,310312,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,20.974640000000022,108,1,0.0,0.0,0.0,17.209647495361782,21,1.0,1,0.0195466666666667,0.1755580246913583,0.2513600000000018,172400,43200,3550,907,161,109,607,0.15223463687150837,0.9718981481481481,0.028101851851851854,12292,12214,12135,0.9630952380952381,157,79,465,150.45183707563024,0.24624820546628343,0.27506666666666346,0.4647199999999989,0.8276151633986941,1.3468666666666853,2.0321599999999878,1.5196078431372548,3.0,5
|
||||||
|
8+2_D2,"8+2, D=2",8,2,2,200.0,9800.0,0.02,0.019876605364394936,200,310312,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,21.216053333333374,54,2,0.09876543209876544,0.3333333333333339,0.3333333333333357,20.634508348794064,38,1.5,2,0.029177621993127328,0.2620582716049399,0.27303999999999107,172400,43200,3716,939,289,195,669,0.22569444444444445,0.9690277777777778,0.030972222222222224,12233,12146,12060,0.9571428571428572,173,86,540,147.81991309725186,0.5097829695964634,0.67048,0.9330933333333231,1.0266287220026378,1.7273813333333339,2.67048,2.1343873517786562,4.0,7
|
||||||
|
8+2_D4,"8+2, D=4",8,2,4,200.0,9800.0,0.02,0.019876605364394936,200,310312,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,21.216053333333374,27,4,0.29012345679012347,0.666666666666667,0.6666666666666679,39.929499072356215,40,2.5,4,0.05828288659793857,0.5234666666666705,0.5352533333333276,172400,43200,3501,985,669,490,710,0.4083333333333333,0.9671296296296297,0.03287037037037037,12225,12144,12075,0.9583333333333334,150,69,525,147.99297450232626,0.9234452472049709,1.1340533333333287,1.5367199999999794,1.3874324904214599,2.3170120000000005,3.306266666666649,3.0172413793103448,5.0,10
|
||||||
|
8+2_D8,"8+2, D=8",8,2,8,200.0,9800.0,0.02,0.020349130050647177,200,310312,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,21.729893333333457,14,4,0.6518518518518518,1.333333333333334,1.666666666666666,79.50649350649351,80,4.425925925925926,8,0.11440010996563674,1.0274824691358113,1.0638933333334109,172400,43200,3769,942,1577,1166,643,0.6445550027639579,0.9702314814814815,0.029768518518518517,12263,12201,12158,0.964920634920635,105,43,442,145.48062208619442,1.7243108340187623,2.252479999999979,2.73535999999996,2.0888080952381114,3.261774666666647,4.919493333333319,3.9464285714285716,6.0,10
|
||||||
|
8+4_D1,"8+4, D=1",8,4,1,200.0,9800.0,0.02,0.019604503383780177,200,310312,157.76975922953451,168.39601926163724,274.6586195826645,42.55787075997801,300.0,21.051440000000028,108,1,0.0,0.0,0.0,20.85924207269915,26,1.0,1,0.016378644163150546,0.17971012345679074,0.2513600000000018,172400,86200,3604,1812,413,170,517,0.24745269286754004,0.9760648148148148,0.023935185185185184,12296,12229,12147,0.964047619047619,149,82,453,150.0487852612456,0.295702434071515,0.33650666666666273,0.48192000000000323,0.8757147151515156,1.3830666666666662,2.0628799999999847,1.6472727272727272,3.0,5
|
||||||
|
8+4_D4,"8+4, D=4",8,4,4,200.0,9800.0,0.02,0.02040848762305882,200,310312,157.76975922953451,168.39601926163724,274.6586195826645,42.55787075997801,300.0,21.48064000000025,27,4,0.29012345679012347,0.666666666666667,0.6666666666666679,51.02552204176334,57,2.5,4,0.05881681012658274,0.6453511111111162,0.6581333333333261,172400,86200,3708,1890,1660,842,416,0.6693163751987281,0.9807407407407407,0.01925925925925926,12361,12328,12283,0.9748412698412698,78,45,317,148.67567260565622,0.9666773524383458,1.1525066666667954,1.6657066666666411,1.3388604129793618,1.827840000000003,2.7742133333332575,2.8053097345132745,4.0,7
|
||||||
|
none,Без FEC,8,0,1,1000.0,49000.0,0.02,0.02189344857431169,200,310313,157.76975922953451,168.39601926163724,168.39601926163724,6.3102798265039075,300.0,20.869679999999992,0,0,0.0,0.0,0.0,13.7169373549884,15,0.0,0,0.0,0.0,0.0,172400,0,3802,0,0,0,0,0.0,0.0,0.0,12305,12289,12269,0.9737301587301588,36,20,331,152.87799908767172,0.18504089113483205,0.20301333333332394,0.20967999999999998,1.468867087719298,3.339362666666659,3.6820266666666566,3.4842105263157896,9.0,10
|
||||||
|
8+2_D1,"8+2, D=1",8,2,1,1000.0,49000.0,0.02,0.02188397349572346,200,310313,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,20.974640000000022,108,1,0.0,0.0,0.0,17.209647495361782,21,1.0,1,0.0195466666666667,0.1755580246913583,0.2513600000000018,172400,43200,3809,957,36,26,522,0.04744525547445255,0.9758333333333333,0.024166666666666666,12303,12284,12260,0.973015873015873,43,24,340,152.00213400563712,0.24599688961392194,0.27506666666666346,0.43664000000000414,1.5143336170212773,3.4397426666666786,4.036026666666666,3.617021276595745,9.349999999999994,11
|
||||||
|
8+2_D2,"8+2, D=2",8,2,2,1000.0,49000.0,0.02,0.022829618385024127,200,310313,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,21.216053333333374,54,2,0.09876543209876544,0.3333333333333339,0.3333333333333357,20.634508348794064,38,1.5,2,0.029177621993127328,0.2620582716049399,0.27303999999999107,172400,43200,3980,1016,69,46,557,0.07628524046434494,0.974212962962963,0.025787037037037035,12276,12253,12230,0.9706349206349206,46,23,370,149.90435921478297,0.5096241548105763,0.67048,0.9282666666666639,1.7479460606060633,3.630441333333325,4.003600000000002,4.204545454545454,10.0,11
|
||||||
|
8+2_D4,"8+2, D=4",8,2,4,1000.0,49000.0,0.02,0.022829618385024127,200,310313,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,21.216053333333374,27,4,0.29012345679012347,0.666666666666667,0.6666666666666679,39.929499072356215,40,2.5,4,0.05828288659793857,0.5234666666666705,0.5352533333333276,172400,43200,4007,1050,98,77,615,0.11127167630057803,0.9715277777777778,0.02847222222222222,12259,12218,12198,0.9680952380952381,61,20,402,149.49624183951244,0.9220254096299959,1.1219999999999963,1.4781066666666742,2.195163636363639,4.007194666666669,5.646800000000001,5.220779220779221,10.0,15
|
||||||
|
8+2_D8,"8+2, D=8",8,2,8,1000.0,49000.0,0.02,0.022771430179993328,200,310313,157.76975922953451,168.39601926163724,226.95139646869984,30.4830189704105,300.0,21.729893333333457,14,4,0.6518518518518518,1.333333333333334,1.666666666666666,79.50649350649351,80,4.425925925925926,8,0.11440010996563674,1.0274824691358113,1.0638933333334109,172400,43200,4017,1006,164,121,696,0.1481028151774786,0.9677777777777777,0.03222222222222222,12214,12171,12157,0.9648412698412698,57,14,443,145.4897597288397,1.7153148156069298,2.1772533333333026,2.73535999999996,3.137030303030318,4.9471199999999556,7.46471999999997,6.712121212121212,11.75,19
|
||||||
|
8+4_D1,"8+4, D=1",8,4,1,1000.0,49000.0,0.02,0.02223910448390382,200,310313,157.76975922953451,168.39601926163724,274.6586195826645,42.55787075997801,300.0,21.051440000000028,108,1,0.0,0.0,0.0,20.85924207269915,26,1.0,1,0.016378644163150546,0.17971012345679074,0.2513600000000018,172400,86200,3857,1938,68,29,507,0.054104477611940295,0.9765277777777778,0.02347222222222222,12299,12278,12246,0.9719047619047619,53,32,354,151.28060028197575,0.2955365735750469,0.33650666666666273,0.34253333333332137,1.566540709219859,3.4289906666666816,4.075946666666653,3.765957446808511,9.349999999999994,11
|
||||||
|
8+4_D4,"8+4, D=4",8,4,4,1000.0,49000.0,0.02,0.023171676201598494,200,310313,157.76975922953451,168.39601926163724,274.6586195826645,42.55787075997801,300.0,21.48064000000025,27,4,0.29012345679012347,0.666666666666667,0.6666666666666679,51.02552204176334,57,2.5,4,0.05881681012658274,0.6453511111111162,0.6581333333333261,172400,86200,4013,2044,279,134,568,0.1908831908831909,0.9737037037037037,0.026296296296296297,12272,12248,12223,0.9700793650793651,49,25,377,147.95045399019597,0.9617925004772583,1.1378933333333352,1.6425333333333096,2.2056548356807713,4.033480000000006,5.626773333333361,5.309859154929577,10.0,16
|
||||||
|
BIN
data/processed/lab032/lab032_block_size_effect.png
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
data/processed/lab032/lab032_composite_success.png
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
data/processed/lab032/lab032_no_image_duration.png
Normal file
|
After Width: | Height: | Size: 120 KiB |
BIN
data/processed/lab032/lab032_practical_frontier.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
BIN
data/processed/lab032/lab032_publication_delay.png
Normal file
|
After Width: | Height: | Size: 125 KiB |
101
data/processed/lab032/lab032_report.txt
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
Lab032. Подбор параметров блочного исправления потерь
|
||||||
|
|
||||||
|
Исходный профиль и неизменные слои
|
||||||
|
- Видео: data\raw\lab026_rover_source.mp4
|
||||||
|
- 63 реальных пар BASE/ROI, 3 fps; длительность 20.766667 с.
|
||||||
|
- BASE 240x135 grayscale JPEG Q23; ROI 320x180 grayscale JPEG Q33.
|
||||||
|
- Внутренний Lab028 packet: payload 512 байт; внешний формат и GF(256) Lab030 не изменены.
|
||||||
|
- Глубина D=1: systematic symbols блока передаются первыми, затем parity; перемежение отсутствует.
|
||||||
|
- Блоки формируются из непрерывного потока внутренних пакетов и могут пересекать composite_frame_id.
|
||||||
|
|
||||||
|
Последний неполный блок
|
||||||
|
- Используется единое правило:
|
||||||
|
r_last = max(1, ceil(k_last × r / k)).
|
||||||
|
- Нулевое дополнение существует только внутри математики GF(256); внешние пакеты синтетически не добавляются.
|
||||||
|
|
||||||
|
Сравнительная таблица восьми режимов
|
||||||
|
mode | rate | outer/margin kbit/s | composite 10/50/200/1000 ms | pub p95 200 ms s | no-image p95 200 ms s | block mean/max ms | decode mean ms | queue mean/max
|
||||||
|
----:|-----:|----------------------:|----------------------------:|-------------------:|------------------------:|------------------:|---------------:|---------------:
|
||||||
|
Без FEC | 1.000000 | 168.396/131.604 | 0.669603/0.914524/0.960714/0.979762 | 0.203013 | 1.325184 | 0.000/0.000 | 0.000 | 13.717/15
|
||||||
|
4+1 | 0.800000 | 226.951/73.049 | 0.791429/0.909048/0.959683/0.978175 | 0.274880 | 1.337167 | 92.966/189.840 | 77.606 | 17.171/20
|
||||||
|
8+2 | 0.800000 | 226.951/73.049 | 0.912857/0.933333/0.963016/0.978333 | 0.275067 | 1.338747 | 189.723/266.720 | 159.003 | 17.210/21
|
||||||
|
12+3 | 0.800000 | 226.951/73.049 | 0.951984/0.951190/0.965714/0.978492 | 0.288773 | 1.339135 | 288.795/337.173 | 242.715 | 17.219/21
|
||||||
|
6+2 | 0.750000 | 242.928/57.072 | 0.920873/0.930317/0.961270/0.978254 | 0.294080 | 1.333927 | 142.659/214.293 | 111.939 | 18.337/21
|
||||||
|
8+3 | 0.727273 | 250.916/49.084 | 0.963413/0.948810/0.962540/0.978175 | 0.305947 | 1.339067 | 191.857/266.720 | 145.777 | 18.985/24
|
||||||
|
4+2 | 0.666667 | 274.659/25.341 | 0.924762/0.924127/0.959048/0.977143 | 0.336320 | 1.349667 | 96.393/159.120 | 65.744 | 20.698/24
|
||||||
|
8+4 | 0.666667 | 274.659/25.341 | 0.986984/0.955317/0.963095/0.978175 | 0.336667 | 1.347973 | 193.876/266.720 | 132.578 | 20.859/26
|
||||||
|
|
||||||
|
Подробные результаты при средней Bad 200 мс
|
||||||
|
mode | BASE/ROI/composite | blocks ok/fail | restored packets | delivered kbit/s | publication mean/p95/max s | no-image mean/p95/max s | incomplete mean/p95/max
|
||||||
|
----:|-------------------:|---------------:|-----------------:|-----------------:|--------------------------:|-----------------------:|------------------------:
|
||||||
|
Без FEC | 0.972302/0.967302/0.960714 | 0.000000/0.000000 | 0 | 150.881 | 0.185098/0.203013/0.209680 | 0.786259/1.325184/2.333307 | 1.387/3.000/6
|
||||||
|
4+1 | 0.973175/0.966905/0.959683 | 0.975972/0.024028 | 92 | 150.067 | 0.246589/0.274880/0.394773 | 0.823033/1.337167/2.349520 | 1.494/3.000/6
|
||||||
|
8+2 | 0.974841/0.969365/0.963016 | 0.972130/0.027870 | 144 | 150.483 | 0.246330/0.275067/0.466747 | 0.837464/1.338747/2.334160 | 1.528/3.000/6
|
||||||
|
12+3 | 0.975794/0.971270/0.965714 | 0.968403/0.031597 | 260 | 150.899 | 0.246565/0.288773/0.522907 | 0.841596/1.339135/2.380240 | 1.543/3.000/6
|
||||||
|
6+2 | 0.973651/0.968571/0.961270 | 0.975243/0.024757 | 188 | 150.202 | 0.262330/0.294080/0.425493 | 0.839718/1.333927/2.364880 | 1.544/3.000/6
|
||||||
|
8+3 | 0.974603/0.969524/0.962540 | 0.973981/0.026019 | 249 | 150.081 | 0.271028/0.305947/0.466747 | 0.861515/1.339067/2.334160 | 1.589/3.000/6
|
||||||
|
4+2 | 0.973095/0.966429/0.959048 | 0.978287/0.021713 | 236 | 149.535 | 0.296583/0.336320/0.394773 | 0.865525/1.349667/2.364880 | 1.613/3.000/6
|
||||||
|
8+4 | 0.975238/0.970238/0.963095 | 0.975833/0.024167 | 375 | 149.944 | 0.295920/0.336667/0.465947 | 0.899563/1.347973/2.334160 | 1.703/3.000/6
|
||||||
|
|
||||||
|
Временная модель и очередь
|
||||||
|
- Непрерывные чередующиеся экспоненциальные Good/Bad интервалы Lab029B, средняя доля Bad около 2%.
|
||||||
|
- Средние Bad 10, 50, 200 и 1000 мс; 200 повторов; fixed seeds 300300...300303.
|
||||||
|
- Пакет теряется при любом пересечении передачи с Bad. FIFO учитывает фактическую длину каждого внешнего пакета и скорость 300 кбит/с.
|
||||||
|
- Все исследованные режимы остаются ниже 300 кбит/с; положительный запас показан в таблице. Отдельная функциональная проверка ускоряет поток 8+4 вдвое и подтверждает реальное накопление очереди при перегрузке.
|
||||||
|
- Block duration измеряется от начала первого до конца последнего символа. Decode-ready без потерь — от начала первого до конца k-го systematic symbol.
|
||||||
|
|
||||||
|
1. Одинаковая кодовая скорость 0.8: 4+1, 8+2 и 12+3
|
||||||
|
- 4+1: outer 226.951 кбит/с, block mean 92.966 мс, decode-ready 77.606 мс, composite@200 0.959683.
|
||||||
|
- 8+2: outer 226.951 кбит/с, block mean 189.723 мс, decode-ready 159.003 мс, composite@200 0.963016.
|
||||||
|
- 12+3: outer 226.951 кбит/с, block mean 288.795 мс, decode-ready 242.715 мс, composite@200 0.965714.
|
||||||
|
- При одинаковой номинальной code rate длина блока меняет временное окно, в котором одна помеха может собрать несколько стираний. Короткий блок раньше получает k systematic symbols и быстрее допускает декодирование.
|
||||||
|
- Длинный блок дольше остаётся открытым и может включить больше потерянных пакетов одной длительной помехи; при этом его больший абсолютный r иногда полезен для рассеянных стираний.
|
||||||
|
|
||||||
|
2. Одинаковая code rate 2/3: 4+2 и 8+4
|
||||||
|
- 4+2: outer 274.659 кбит/с, composite@200 0.959048, publication P95 0.336320 с, no-image P95 1.349667 с.
|
||||||
|
- 8+4: outer 274.659 кбит/с, composite@200 0.963095, publication P95 0.336667 с, no-image P95 1.347973 с.
|
||||||
|
- Сравнение изолирует влияние длины блока при одинаковой сильной избыточности: короткий 4+2 быстрее закрывается, длинный 8+4 имеет больше абсолютных parity symbols, но дольше накапливает стирания.
|
||||||
|
|
||||||
|
3. Влияние увеличения r
|
||||||
|
- Большее r позволяет исправить больше стираний, но увеличивает внешний поток, служебную долю, время передачи блока и публикационную задержку.
|
||||||
|
- 8+3: outer 250.916 кбит/с (8+2 226.951, 8+4 274.659); composite@200 0.962540 (8+2 0.963016, 8+4 0.963095); P95 delay 0.305947 с (8+2 0.275067, 8+4 0.336667).
|
||||||
|
- Поэтому 8+3 оценивается по фактическому положению между 8+2 и 8+4 сразу по скорости, устойчивости и задержке, без автоматического назначения рабочим режимом.
|
||||||
|
|
||||||
|
4. Практическая граница без автоматического выбора
|
||||||
|
- Минимальный поток: Без FEC, 168.396 кбит/с.
|
||||||
|
- Максимальная composite-устойчивость при Bad 200 мс: 12+3, 0.965714.
|
||||||
|
- Минимальная P95-задержка среди защищённых режимов: 4+1, 0.274880 с.
|
||||||
|
- Недоминируемые по outer bitrate↓, publication P95↓ и composite success↑ режимы при Bad 200 мс: Без FEC, 8+2, 12+3.
|
||||||
|
- Это набор компромиссов, а не автоматический выбор единственного режима.
|
||||||
|
|
||||||
|
Функциональные проверки
|
||||||
|
- PASS all_k_r_supported: GF(256) generated every requested k+r matrix
|
||||||
|
- PASS recover_any_r_erasures: recovered all 1208 exact-r erasure patterns
|
||||||
|
- PASS restored_inner_byte_exact: restored Lab028 packets are byte-exact
|
||||||
|
- PASS inner_outer_crc: outer and recovered Lab028 CRC32 checks passed
|
||||||
|
- PASS final_partial_block_scaling: final blocks: 4+1:2+1, 8+2:6+2, 12+3:10+3, 6+2:4+2, 8+3:6+3, 4+2:2+1, 8+4:6+3
|
||||||
|
- PASS zero_bad_100_percent: all eight modes restored 100% of frames without Bad
|
||||||
|
- PASS fixed_seed_reproducibility: identical seed produced identical result fields
|
||||||
|
- PASS queue_counts_parity: every parity packet is included in FIFO timing
|
||||||
|
- PASS overload_grows_queue: 549.317 kbit/s produced queue mean/max 301.733/589
|
||||||
|
- PASS atomic_incomplete_composite: missing final ROI fragment prevented publication
|
||||||
|
- PASS lab030_8_2_reproduction: 8+2 exactly reproduced Lab030 order and four rows
|
||||||
|
|
||||||
|
Допущения модели
|
||||||
|
- JPEG кодируются один раз в памяти; вычислительная задержка GF(256) считается нулевой.
|
||||||
|
- Стирается весь внешний пакет; отдельные битовые ошибки не моделируются, но оба уровня CRC проверяются.
|
||||||
|
- Publication delay считается от frame_id/3 до конца пакета, завершившего атомарную сборку BASE+ROI.
|
||||||
|
- No-image заканчивается публикацией следующего полного кадра или концом расписания; неполный кадр не публикуется.
|
||||||
|
- ARQ, повторы, глубокое перемежение, команды, телеметрия, модуляция и реальный SDR отсутствуют.
|
||||||
|
|
||||||
|
Артефакты
|
||||||
|
- Полный CSV: data\processed\lab032\lab032_results.csv
|
||||||
|
- Сводный CSV: data\processed\lab032\lab032_summary.csv
|
||||||
|
- Отчёт: data\processed\lab032\lab032_report.txt
|
||||||
|
- Доля восстановленных кадров: data\processed\lab032\lab032_composite_success.png
|
||||||
|
- Скорость и избыточность: data\processed\lab032\lab032_stream_overhead.png
|
||||||
|
- Задержка публикации: data\processed\lab032\lab032_publication_delay.png
|
||||||
|
- Отсутствие изображения: data\processed\lab032\lab032_no_image_duration.png
|
||||||
|
- Влияние размера блока: data\processed\lab032\lab032_block_size_effect.png
|
||||||
|
- Практическая граница: data\processed\lab032\lab032_practical_frontier.png
|
||||||
|
- JPEG, пакеты и бинарные дампы не сохранялись.
|
||||||
33
data/processed/lab032/lab032_results.csv
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
mode,label,source_block_size,nominal_parity_count,code_rate,mean_bad_duration_ms,mean_good_duration_ms,target_bad_time_fraction,actual_bad_time_fraction,monte_carlo_repetitions,seed,source_jpeg_bitrate_kbps,inner_packet_stream_bitrate_kbps,outer_fec_stream_bitrate_kbps,margin_to_control_bitrate_kbps,service_and_parity_percent,control_stream_bitrate_kbps,schedule_duration_seconds,fec_block_count,final_block_source_count,final_block_parity_count,mean_block_duration_seconds,max_block_duration_seconds,mean_decode_ready_duration_seconds,mean_queue_length_packets,max_queue_length_packets,transmitted_source_packets,transmitted_parity_packets,lost_source_packets,lost_parity_packets,recovered_source_packets,fec_recovered_blocks,fec_unrecoverable_blocks,fec_affected_block_recovery_rate,fec_all_block_success_rate,fec_unrecoverable_block_rate,base_objects_completed,base_success_rate,roi_objects_completed,roi_success_rate,atomic_composite_frames_completed,composite_success_rate,base_only_frames,roi_only_frames,incomplete_frames,effective_delivered_video_bitrate_kbps,mean_publication_delay_seconds,p95_publication_delay_seconds,max_publication_delay_seconds,mean_no_new_image_duration_seconds,p95_no_new_image_duration_seconds,max_no_new_image_duration_seconds,mean_consecutive_incomplete_frames,p95_consecutive_incomplete_frames,max_consecutive_incomplete_frames
|
||||||
|
none,Без FEC,0,0,1.0,10.0,490.0,0.02,0.020237233778310743,200,300300,157.76975922953451,168.39601926163724,168.39601926163724,131.60398073836276,6.3102798265039075,300.0,20.869679999999992,0,0,0,0.0,0.0,0.0,13.7169373549884,15,172400,0,8130,0,0,0,0,0.0,0.0,0.0,10778,0.8553968253968254,9644,0.7653968253968254,8437,0.6696031746031746,2341,1207,4163,105.09054858531616,0.18497208960530362,0.20301333333332394,0.20967999999999998,0.8136578817966899,1.3455733333333306,3.0084000000000004,1.476241134751773,3.0,8
|
||||||
|
4+1,4+1,4,1,0.8,10.0,490.0,0.02,0.020205583457443846,200,300300,157.76975922953451,168.39601926163724,226.95139646869984,73.04860353130016,30.4830189704105,300.0,20.95928000000002,216,2,1,0.09296604938271637,0.18984000000000556,0.07760604938271627,17.17068645640074,20,172400,43200,8454,2166,2948,2948,2885,0.5054003085890623,0.9332175925925926,0.0667824074074074,11517,0.914047619047619,10717,0.8505555555555555,9972,0.7914285714285715,1545,745,2628,123.60095384955959,0.25078923118064045,0.277253333333352,0.3947733333333403,0.7504291108955716,1.0431573333333346,2.687546666666666,1.274490785645005,2.0,7
|
||||||
|
8+2,8+2,8,2,0.8,10.0,490.0,0.02,0.02054934259858452,200,300300,157.76975922953451,168.39601926163724,226.95139646869984,73.04860353130016,30.4830189704105,300.0,20.974640000000022,108,6,2,0.18972345679012387,0.2667200000000012,0.15900345679012368,17.209647495361782,21,172400,43200,8451,2229,5560,4070,1028,0.798352295017654,0.9524074074074074,0.047592592592592596,12102,0.9604761904761905,11797,0.9362698412698413,11502,0.9128571428571428,600,295,1098,142.6072647730782,0.2601807152379309,0.39477333333332965,0.46559999999999846,0.7307525925925931,1.0170573333333313,1.7975999999999885,1.196078431372549,2.0,4
|
||||||
|
12+3,12+3,12,3,0.8,10.0,490.0,0.02,0.02054934259858452,200,300300,157.76975922953451,168.39601926163724,226.95139646869984,73.04860353130016,30.4830189704105,300.0,20.974640000000022,72,10,3,0.2887951851851859,0.33717333333333244,0.24271518518518562,17.21892393320965,21,172400,43200,8382,2249,6633,4195,481,0.8971343028229256,0.9665972222222222,0.03340277777777778,12298,0.976031746031746,12141,0.9635714285714285,11995,0.9519841269841269,303,146,605,148.739525445967,0.27203066166458373,0.43695999999999735,0.5433600000000043,0.7779739823008857,1.130100000000001,1.8652533333333245,1.3384955752212389,2.0,4
|
||||||
|
6+2,6+2,6,2,0.75,10.0,490.0,0.02,0.02054934259858452,200,300300,157.76975922953451,168.39601926163724,242.92776886035313,57.072231139646874,35.05486837932128,300.0,20.974640000000022,144,4,2,0.14265870370370404,0.21429333333333744,0.11193870370370387,18.337391304347825,21,172400,57600,8406,2992,5902,4396,959,0.8209150326797385,0.9667013888888889,0.03329861111111111,12165,0.9654761904761905,11882,0.943015873015873,11603,0.9208730158730158,562,279,997,143.8502954043548,0.27183035421873797,0.3794133333333327,0.4374400000000094,0.7170305679592641,1.015386666666668,1.4916266666666544,1.171562867215041,2.0,3
|
||||||
|
8+3,8+3,8,3,0.7272727272727273,10.0,490.0,0.02,0.020402467996494884,200,300300,157.76975922953451,168.39601926163724,250.91595505617977,49.08404494382023,37.12246828058022,300.0,21.020720000000026,108,6,3,0.19185679012345724,0.2667200000000012,0.145776790123457,18.984822934232714,24,172400,64800,8524,3269,7148,4741,412,0.9200465748107899,0.980925925925926,0.019074074074074073,12377,0.9823015873015873,12259,0.972936507936508,12139,0.9634126984126984,238,120,461,150.1392511769338,0.28472546338248755,0.410133333333329,0.48210666666667734,0.7119441206030163,1.0108000000000015,1.6533066666666691,1.1582914572864322,2.0,4
|
||||||
|
4+2,4+2,4,2,0.6666666666666666,10.0,490.0,0.02,0.020402467996494884,200,300300,157.76975922953451,168.39601926163724,274.6586195826645,25.341380417335472,42.55787075997801,300.0,21.020720000000026,216,2,1,0.09639320987654372,0.1591200000000068,0.06574432098765466,20.698375870069604,24,172400,86200,8475,4327,6317,4860,936,0.8385093167701864,0.9783333333333334,0.021666666666666667,12181,0.9667460317460318,11940,0.9476190476190476,11652,0.9247619047619048,529,288,948,144.11669438534915,0.30090820688866216,0.34253333333332137,0.41933333333331824,0.6944152068696341,1.0002666666666684,1.6533066666666691,1.1100702576112411,2.0,4
|
||||||
|
8+4,8+4,8,4,0.6666666666666666,10.0,490.0,0.02,0.019902265840707405,200,300300,157.76975922953451,168.39601926163724,274.6586195826645,25.341380417335472,42.55787075997801,300.0,21.051440000000028,108,6,3,0.1938755555555563,0.2667200000000012,0.13257777777777818,20.85924207269915,26,172400,86200,8364,4311,7797,4860,144,0.9712230215827338,0.9933333333333333,0.006666666666666667,12520,0.9936507936507937,12472,0.9898412698412699,12436,0.986984126984127,84,36,164,153.61973147680135,0.3084344440870609,0.4101333333333308,0.4963199999999981,0.7097399061032867,1.0169693333333332,1.0686133333333285,1.1549295774647887,2.0,2
|
||||||
|
none,Без FEC,0,0,1.0,50.0,2450.0,0.02,0.019137425732142044,200,300301,157.76975922953451,168.39601926163724,168.39601926163724,131.60398073836276,6.3102798265039075,300.0,20.869679999999992,0,0,0,0.0,0.0,0.0,13.7169373549884,15,172400,0,4062,0,0,0,0,0.0,0.0,0.0,12052,0.9565079365079365,11819,0.938015873015873,11523,0.9145238095238095,529,296,1077,143.55281729283826,0.18500322485463208,0.20301333333332394,0.20967999999999998,0.6934565404298871,0.9983146666666661,1.6871733333333334,1.1023541453428864,2.0,4
|
||||||
|
4+1,4+1,4,1,0.8,50.0,2450.0,0.02,0.020366888699952315,200,300301,157.76975922953451,168.39601926163724,226.95139646869984,73.04860353130016,30.4830189704105,300.0,20.95928000000002,216,2,1,0.09296604938271637,0.18984000000000556,0.07760604938271627,17.17068645640074,20,172400,43200,4404,1111,435,435,1555,0.2185929648241206,0.9640046296296296,0.03599537037037037,12072,0.9580952380952381,11759,0.9332539682539682,11454,0.909047619047619,618,305,1146,142.09415018073125,0.2470573493975917,0.27522666666668627,0.394773333333335,0.714345825703629,1.0041866666666657,1.993706666666668,1.165818921668362,2.0,5
|
||||||
|
8+2,8+2,8,2,0.8,50.0,2450.0,0.02,0.019947721301082785,200,300301,157.76975922953451,168.39601926163724,226.95139646869984,73.04860353130016,30.4830189704105,300.0,20.974640000000022,108,6,2,0.18972345679012387,0.2667200000000012,0.15900345679012368,17.209647495361782,21,172400,43200,4326,1104,971,658,905,0.4209852847088932,0.9581018518518518,0.04189814814814815,12183,0.9669047619047619,11974,0.9503174603174603,11760,0.9333333333333333,423,214,840,145.76717025894112,0.24829524943310788,0.27522666666668627,0.46530666666666143,0.7125767765567773,1.009596,1.6315466666666705,1.1538461538461537,2.0,4
|
||||||
|
12+3,12+3,12,3,0.8,50.0,2450.0,0.02,0.019947721301082785,200,300301,157.76975922953451,168.39601926163724,226.95139646869984,73.04860353130016,30.4830189704105,300.0,20.974640000000022,72,10,3,0.2887951851851859,0.33717333333333244,0.24271518518518562,17.21892393320965,21,172400,43200,4368,1082,1492,799,598,0.5719398711524696,0.9584722222222222,0.041527777777777775,12273,0.974047619047619,12114,0.9614285714285714,11985,0.9511904761904761,288,129,615,148.55436660653038,0.25108506744541914,0.2925866666666561,0.5421066666666583,0.7189982697201026,1.0041866666666657,1.993706666666668,1.1736641221374047,2.0,5
|
||||||
|
6+2,6+2,6,2,0.75,50.0,2450.0,0.02,0.019947721301082785,200,300301,157.76975922953451,168.39601926163724,242.92776886035313,57.072231139646874,35.05486837932128,300.0,20.974640000000022,144,4,2,0.14265870370370404,0.21429333333333744,0.11193870370370387,18.337391304347825,21,172400,57600,4368,1480,994,687,973,0.413855421686747,0.9662152777777778,0.03378472222222222,12172,0.966031746031746,11935,0.9472222222222222,11722,0.9303174603174603,450,213,878,145.30510368711916,0.2636889040550546,0.2962933333333524,0.4374400000000094,0.7177993752788941,1.0114399999999997,1.993706666666668,1.1753681392235609,2.0,5
|
||||||
|
8+3,8+3,8,3,0.7272727272727273,50.0,2450.0,0.02,0.019374042379375574,200,300301,157.76975922953451,168.39601926163724,250.91595505617977,49.08404494382023,37.12246828058022,300.0,21.020720000000026,108,6,3,0.19185679012345724,0.2667200000000012,0.145776790123457,18.984822934232714,24,172400,64800,4293,1651,1567,863,658,0.5673898750821827,0.9695370370370371,0.030462962962962963,12280,0.9746031746031746,12107,0.9608730158730159,11955,0.9488095238095238,325,152,645,147.8507529713538,0.2735714953297101,0.3079733333333543,0.4809599999999983,0.7145212903225816,1.0080079999999976,1.3905066666666706,1.1559139784946237,2.0,3
|
||||||
|
4+2,4+2,4,2,0.6666666666666666,50.0,2450.0,0.02,0.019374042379375574,200,300301,157.76975922953451,168.39601926163724,274.6586195826645,25.341380417335472,42.55787075997801,300.0,21.020720000000026,216,2,1,0.09639320987654372,0.1591200000000068,0.06574432098765466,20.698375870069604,24,172400,86200,4328,2165,1095,760,1111,0.4061998931052913,0.9742824074074075,0.025717592592592594,12133,0.962936507936508,11923,0.9462698412698413,11644,0.9241269841269841,489,279,956,144.01249053315,0.2971720302301636,0.3366666666666909,0.41933333333331824,0.7232546932006642,1.0119066666666576,1.7137333333333764,1.1890547263681592,2.0,4
|
||||||
|
8+4,8+4,8,4,0.6666666666666666,50.0,2450.0,0.02,0.0203533945388834,200,300301,157.76975922953451,168.39601926163724,274.6586195826645,25.341380417335472,42.55787075997801,300.0,21.051440000000028,108,6,3,0.1938755555555563,0.2667200000000012,0.13257777777777818,20.85924207269915,26,172400,86200,4506,2275,2062,979,520,0.6531020680453635,0.975925925925926,0.024074074074074074,12298,0.976031746031746,12178,0.9665079365079365,12037,0.9553174603174603,261,141,563,148.6380960162343,0.29828562377115203,0.3386933333333566,0.49543999999999855,0.7492293986636983,1.0571200000000047,1.4058666666666717,1.2538975501113585,2.0,3
|
||||||
|
none,Без FEC,0,0,1.0,200.0,9800.0,0.02,0.02117165511678711,200,300302,157.76975922953451,168.39601926163724,168.39601926163724,131.60398073836276,6.3102798265039075,300.0,20.869679999999992,0,0,0,0.0,0.0,0.0,13.7169373549884,15,172400,0,3877,0,0,0,0,0.0,0.0,0.0,12251,0.9723015873015873,12188,0.9673015873015873,12105,0.9607142857142857,146,83,495,150.88131681942423,0.18509811593005004,0.20301333333332394,0.20967999999999998,0.7862588982259566,1.3251839999999993,2.333306666666667,1.3865546218487395,3.0,6
|
||||||
|
4+1,4+1,4,1,0.8,200.0,9800.0,0.02,0.01946372101257088,200,300302,157.76975922953451,168.39601926163724,226.95139646869984,73.04860353130016,30.4830189704105,300.0,20.95928000000002,216,2,1,0.09296604938271637,0.18984000000000556,0.07760604938271627,17.17068645640074,20,172400,43200,3597,915,92,92,1038,0.08141592920353982,0.9759722222222222,0.024027777777777776,12262,0.9731746031746031,12183,0.9669047619047619,12092,0.9596825396825397,170,91,508,150.0674164379691,0.24658850369390367,0.27488000000001733,0.394773333333335,0.8230332549019609,1.3371666666666668,2.34952,1.4941176470588236,3.0,6
|
||||||
|
8+2,8+2,8,2,0.8,200.0,9800.0,0.02,0.01945312904270856,200,300302,157.76975922953451,168.39601926163724,226.95139646869984,73.04860353130016,30.4830189704105,300.0,20.974640000000022,108,6,2,0.18972345679012387,0.2667200000000012,0.15900345679012368,17.209647495361782,21,172400,43200,3573,908,144,101,602,0.14366998577524892,0.9721296296296297,0.027870370370370372,12283,0.9748412698412698,12214,0.9693650793650793,12134,0.963015873015873,149,80,466,150.4825408207243,0.2463296192516908,0.27506666666666346,0.4667466666666762,0.8374642185792353,1.3387466666666654,2.3341600000000007,1.5278688524590165,3.0,6
|
||||||
|
12+3,12+3,12,3,0.8,200.0,9800.0,0.02,0.01945312904270856,200,300302,157.76975922953451,168.39601926163724,226.95139646869984,73.04860353130016,30.4830189704105,300.0,20.974640000000022,72,10,3,0.2887951851851859,0.33717333333333244,0.24271518518518562,17.21892393320965,21,172400,43200,3579,903,260,131,455,0.2235494880546075,0.9684027777777777,0.03159722222222222,12295,0.9757936507936508,12238,0.9712698412698413,12168,0.9657142857142857,127,70,432,150.89903235526316,0.2465654372123616,0.2887733333333302,0.5229066666666595,0.8415958095238097,1.3391346666666688,2.380239999999999,1.542857142857143,3.0,6
|
||||||
|
6+2,6+2,6,2,0.75,200.0,9800.0,0.02,0.01945312904270856,200,300302,157.76975922953451,168.39601926163724,242.92776886035313,57.072231139646874,35.05486837932128,300.0,20.974640000000022,144,4,2,0.14265870370370404,0.21429333333333744,0.11193870370370387,18.337391304347825,21,172400,57600,3609,1180,188,127,713,0.15119047619047618,0.9752430555555556,0.024756944444444446,12268,0.9736507936507937,12204,0.9685714285714285,12112,0.9612698412698413,156,92,488,150.2020516204329,0.2623295794804066,0.29408000000000545,0.42549333333333905,0.8397175527426163,1.3339266666666698,2.3648799999999994,1.5443037974683544,3.0,6
|
||||||
|
8+3,8+3,8,3,0.7272727272727273,200.0,9800.0,0.02,0.01942144600871695,200,300302,157.76975922953451,168.39601926163724,250.91595505617977,49.08404494382023,37.12246828058022,300.0,21.020720000000026,108,6,3,0.19185679012345724,0.2667200000000012,0.145776790123457,18.984822934232714,24,172400,64800,3566,1346,249,130,562,0.18786127167630057,0.9739814814814814,0.026018518518518517,12280,0.9746031746031746,12216,0.9695238095238096,12128,0.9625396825396826,152,88,472,150.08097914819265,0.2710280233069496,0.30594666666668857,0.4667466666666762,0.8615145230078568,1.3390666666666675,2.3341600000000007,1.5892255892255893,3.0,6
|
||||||
|
4+2,4+2,4,2,0.6666666666666666,200.0,9800.0,0.02,0.01942144600871695,200,300302,157.76975922953451,168.39601926163724,274.6586195826645,25.341380417335472,42.55787075997801,300.0,21.020720000000026,216,2,1,0.09639320987654372,0.1591200000000068,0.06574432098765466,20.698375870069604,24,172400,86200,3572,1806,236,159,938,0.14494074749316319,0.978287037037037,0.02171296296296296,12261,0.9730952380952381,12177,0.9664285714285714,12084,0.959047619047619,177,93,516,149.53471051419723,0.29658307403729667,0.33632000000002193,0.39477333333332965,0.8655246666666663,1.349666666666665,2.3648799999999994,1.6125,3.0,6
|
||||||
|
8+4,8+4,8,4,0.6666666666666666,200.0,9800.0,0.02,0.019400401043555997,200,300302,157.76975922953451,168.39601926163724,274.6586195826645,25.341380417335472,42.55787075997801,300.0,21.051440000000028,108,6,3,0.1938755555555563,0.2667200000000012,0.13257777777777818,20.85924207269915,26,172400,86200,3550,1777,375,160,522,0.23460410557184752,0.9758333333333333,0.024166666666666666,12288,0.9752380952380952,12225,0.9702380952380952,12135,0.9630952380952381,153,90,465,149.94388982416385,0.2959204021425649,0.3366666666666909,0.46594666666666207,0.8995634676434676,1.347973333333331,2.3341600000000007,1.7032967032967032,3.0,6
|
||||||
|
none,Без FEC,0,0,1.0,1000.0,49000.0,0.02,0.017221990003688604,200,300303,157.76975922953451,168.39601926163724,168.39601926163724,131.60398073836276,6.3102798265039075,300.0,20.869679999999992,0,0,0,0.0,0.0,0.0,13.7169373549884,15,172400,0,3014,0,0,0,0,0.0,0.0,0.0,12372,0.981904761904762,12355,0.9805555555555555,12345,0.9797619047619047,27,10,255,153.8087579684979,0.1850217642770288,0.20301333333332394,0.20967999999999998,1.4030256410256405,3.0499439999999973,4.3269600000000015,3.269230769230769,8.149999999999991,12
|
||||||
|
4+1,4+1,4,1,0.8,1000.0,49000.0,0.02,0.01762954307387838,200,300303,157.76975922953451,168.39601926163724,226.95139646869984,73.04860353130016,30.4830189704105,300.0,20.95928000000002,216,2,1,0.09296604938271637,0.18984000000000556,0.07760604938271627,17.17068645640074,20,172400,43200,3089,774,18,18,806,0.021844660194174758,0.9813425925925926,0.018657407407407407,12362,0.9811111111111112,12340,0.9793650793650793,12325,0.9781746031746031,37,15,275,152.8935249684148,0.24643575388776331,0.27488000000001733,0.37941333333333027,1.444222551440331,3.016560000000001,4.3107466666666685,3.3950617283950617,8.0,12
|
||||||
|
8+2,8+2,8,2,0.8,1000.0,49000.0,0.02,0.017631278990127012,200,300303,157.76975922953451,168.39601926163724,226.95139646869984,73.04860353130016,30.4830189704105,300.0,20.974640000000022,108,6,2,0.18972345679012387,0.2667200000000012,0.15900345679012368,17.209647495361782,21,172400,43200,3079,781,25,16,427,0.03611738148984198,0.9802314814814815,0.01976851851851852,12366,0.9814285714285714,12342,0.9795238095238096,12327,0.9783333333333334,39,15,273,152.80692302704583,0.24594955030961974,0.27506666666666346,0.44994666666666205,1.466306160337555,3.0479386666666684,4.295386666666669,3.4556962025316458,8.099999999999994,12
|
||||||
|
12+3,12+3,12,3,0.8,1000.0,49000.0,0.02,0.017631278990127012,200,300303,157.76975922953451,168.39601926163724,226.95139646869984,73.04860353130016,30.4830189704105,300.0,20.974640000000022,72,10,3,0.2887951851851859,0.33717333333333244,0.24271518518518562,17.21892393320965,21,172400,43200,3090,775,34,18,304,0.055900621118012424,0.9788888888888889,0.021111111111111112,12367,0.9815079365079366,12343,0.9796031746031746,12329,0.9784920634920635,38,14,271,152.83293157832492,0.24574732095060553,0.2850666666666548,0.5122933333333357,1.5037301754385983,3.0950066666666745,4.3368533333333215,3.5657894736842106,8.25,12
|
||||||
|
6+2,6+2,6,2,0.75,1000.0,49000.0,0.02,0.017631278990127012,200,300303,157.76975922953451,168.39601926163724,242.92776886035313,57.072231139646874,35.05486837932128,300.0,20.974640000000022,144,4,2,0.14265870370370404,0.21429333333333744,0.11193870370370387,18.337391304347825,21,172400,57600,3092,1033,40,25,547,0.043706293706293704,0.9810069444444445,0.018993055555555555,12366,0.9814285714285714,12338,0.9792063492063492,12326,0.9782539682539683,40,12,274,152.79328179172546,0.26206411812429153,0.29408000000000545,0.4192266666666633,1.4673545991561199,3.047938666666669,4.336853333333321,3.4683544303797467,8.099999999999994,12
|
||||||
|
8+3,8+3,8,3,0.7272727272727273,1000.0,49000.0,0.02,0.017636471517506424,200,300303,157.76975922953451,168.39601926163724,250.91595505617977,49.08404494382023,37.12246828058022,300.0,21.020720000000026,108,6,3,0.19185679012345724,0.2667200000000012,0.145776790123457,18.984822934232714,24,172400,64800,3080,1165,48,25,418,0.056433408577878104,0.9806481481481482,0.019351851851851853,12368,0.9815873015873016,12340,0.9793650793650793,12325,0.9781746031746031,43,15,275,152.44826628203012,0.27059416362407174,0.3057866666666631,0.44994666666666205,1.508938181818184,3.079317333333341,4.290773333333321,3.5714285714285716,8.200000000000003,12
|
||||||
|
4+2,4+2,4,2,0.6666666666666666,1000.0,49000.0,0.02,0.017636471517506424,200,300303,157.76975922953451,168.39601926163724,274.6586195826645,25.341380417335472,42.55787075997801,300.0,21.020720000000026,216,2,1,0.09639320987654372,0.1591200000000068,0.06574432098765466,20.698375870069604,24,172400,86200,3094,1545,55,36,784,0.04390243902439024,0.9818518518518519,0.01814814814814815,12362,0.9811111111111112,12331,0.9786507936507937,12312,0.9771428571428571,50,19,288,152.2895466948799,0.2964339592809204,0.33632000000002193,0.39477333333333053,1.5150906666666693,3.0350866666667184,4.336853333333319,3.6,8.049999999999997,12
|
||||||
|
8+4,8+4,8,4,0.6666666666666666,1000.0,49000.0,0.02,0.017189734334432376,200,300303,157.76975922953451,168.39601926163724,274.6586195826645,25.341380417335472,42.55787075997801,300.0,21.051440000000028,108,6,3,0.1938755555555563,0.2667200000000012,0.13257777777777818,20.85924207269915,26,172400,86200,3004,1509,64,27,400,0.06323185011709602,0.9814814814814815,0.018518518518518517,12372,0.981904761904762,12346,0.9798412698412698,12325,0.9781746031746031,47,21,275,152.2330861926783,0.29551052981744624,0.33650666666666273,0.46469333333333185,1.5328961403508796,3.0950066666666753,4.2754133333333195,3.6184210526315788,8.25,12
|
||||||
|
BIN
data/processed/lab032/lab032_stream_overhead.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
9
data/processed/lab032/lab032_summary.csv
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
mode,label,source_block_size,nominal_parity_count,code_rate,outer_fec_stream_bitrate_kbps,margin_to_control_bitrate_kbps,service_and_parity_percent,fec_block_count,mean_block_duration_seconds,max_block_duration_seconds,mean_decode_ready_duration_seconds,mean_queue_length_packets,max_queue_length_packets,composite_success_10ms,p95_publication_delay_10ms_seconds,p95_no_new_image_10ms_seconds,composite_success_50ms,p95_publication_delay_50ms_seconds,p95_no_new_image_50ms_seconds,composite_success_200ms,p95_publication_delay_200ms_seconds,p95_no_new_image_200ms_seconds,composite_success_1000ms,p95_publication_delay_1000ms_seconds,p95_no_new_image_1000ms_seconds
|
||||||
|
none,Без FEC,0,0,1.0,168.39601926163724,131.60398073836276,6.3102798265039075,0,0.0,0.0,0.0,13.7169373549884,15,0.6696031746031746,0.20301333333332394,1.3455733333333306,0.9145238095238095,0.20301333333332394,0.9983146666666661,0.9607142857142857,0.20301333333332394,1.3251839999999993,0.9797619047619047,0.20301333333332394,3.0499439999999973
|
||||||
|
4+1,4+1,4,1,0.8,226.95139646869984,73.04860353130016,30.4830189704105,216,0.09296604938271637,0.18984000000000556,0.07760604938271627,17.17068645640074,20,0.7914285714285715,0.277253333333352,1.0431573333333346,0.909047619047619,0.27522666666668627,1.0041866666666657,0.9596825396825397,0.27488000000001733,1.3371666666666668,0.9781746031746031,0.27488000000001733,3.016560000000001
|
||||||
|
8+2,8+2,8,2,0.8,226.95139646869984,73.04860353130016,30.4830189704105,108,0.18972345679012387,0.2667200000000012,0.15900345679012368,17.209647495361782,21,0.9128571428571428,0.39477333333332965,1.0170573333333313,0.9333333333333333,0.27522666666668627,1.009596,0.963015873015873,0.27506666666666346,1.3387466666666654,0.9783333333333334,0.27506666666666346,3.0479386666666684
|
||||||
|
12+3,12+3,12,3,0.8,226.95139646869984,73.04860353130016,30.4830189704105,72,0.2887951851851859,0.33717333333333244,0.24271518518518562,17.21892393320965,21,0.9519841269841269,0.43695999999999735,1.130100000000001,0.9511904761904761,0.2925866666666561,1.0041866666666657,0.9657142857142857,0.2887733333333302,1.3391346666666688,0.9784920634920635,0.2850666666666548,3.0950066666666745
|
||||||
|
6+2,6+2,6,2,0.75,242.92776886035313,57.072231139646874,35.05486837932128,144,0.14265870370370404,0.21429333333333744,0.11193870370370387,18.337391304347825,21,0.9208730158730158,0.3794133333333327,1.015386666666668,0.9303174603174603,0.2962933333333524,1.0114399999999997,0.9612698412698413,0.29408000000000545,1.3339266666666698,0.9782539682539683,0.29408000000000545,3.047938666666669
|
||||||
|
8+3,8+3,8,3,0.7272727272727273,250.91595505617977,49.08404494382023,37.12246828058022,108,0.19185679012345724,0.2667200000000012,0.145776790123457,18.984822934232714,24,0.9634126984126984,0.410133333333329,1.0108000000000015,0.9488095238095238,0.3079733333333543,1.0080079999999976,0.9625396825396826,0.30594666666668857,1.3390666666666675,0.9781746031746031,0.3057866666666631,3.079317333333341
|
||||||
|
4+2,4+2,4,2,0.6666666666666666,274.6586195826645,25.341380417335472,42.55787075997801,216,0.09639320987654372,0.1591200000000068,0.06574432098765466,20.698375870069604,24,0.9247619047619048,0.34253333333332137,1.0002666666666684,0.9241269841269841,0.3366666666666909,1.0119066666666576,0.959047619047619,0.33632000000002193,1.349666666666665,0.9771428571428571,0.33632000000002193,3.0350866666667184
|
||||||
|
8+4,8+4,8,4,0.6666666666666666,274.6586195826645,25.341380417335472,42.55787075997801,108,0.1938755555555563,0.2667200000000012,0.13257777777777818,20.85924207269915,26,0.986984126984127,0.4101333333333308,1.0169693333333332,0.9553174603174603,0.3386933333333566,1.0571200000000047,0.9630952380952381,0.3366666666666909,1.347973333333331,0.9781746031746031,0.33650666666666273,3.0950066666666753
|
||||||
|
37
data/processed/lab033/lab033_class_metrics.csv
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
channel_kbps,scheduler,traffic_class,offered_load_kbps,created_packets,transmitted_packets,replaced_packets,remaining_at_source_end_packets,mean_start_delay_ms,p95_start_delay_ms,max_start_delay_ms,mean_total_delay_ms,p95_total_delay_ms,max_total_delay_ms,deadline_misses,deadline_miss_fraction,mean_blocking_delay_ms,max_blocking_delay_ms
|
||||||
|
300.0,fifo,emergency,0.02465489566613162,1,1,0,0,0.0,0.0,0.0,1.7066666666671892,1.7066666666671892,1.7066666666671892,0,0.0,0.0,0.0
|
||||||
|
300.0,fifo,control,10.256436597110755,416,416,0,2,104.3649927884586,236.92691666666235,294.47966666665957,106.0716594551255,238.6335833333294,296.1863333333259,203,0.4879807692307692,5.879864583331442,16.212999999996036
|
||||||
|
300.0,fifo,telemetry,7.692327447833066,208,208,0,1,98.47181249999751,231.12033333332866,294.26699999999425,101.03181249999754,233.68033333332914,296.8269999999933,0,0.0,5.797325320511048,16.212999999996036
|
||||||
|
300.0,fifo,video,240.24038523274479,1078,1078,0,15,128.3044211502762,254.33199999999601,309.6799999999931,143.7311125541102,264.7599999999962,325.89333333332604,0,0.0,0.0026771799628383768,0.16033333332998723
|
||||||
|
300.0,strict_priority,emergency,0.02465489566613162,1,1,0,0,0.0,0.0,0.0,1.7066666666671892,1.7066666666671892,1.7066666666671892,0,0.0,0.0,0.0
|
||||||
|
300.0,strict_priority,control,10.256436597110755,416,416,0,0,7.733262019229404,15.759666666666755,16.106333333334,9.439928685896334,17.46633333333346,17.813000000000745,0,0.0,7.7291594551268386,16.106333333334
|
||||||
|
300.0,strict_priority,telemetry,7.692327447833066,208,208,0,0,9.864120192306657,17.546883333334474,17.813000000000745,12.424120192306697,20.10688333333437,20.37300000000064,0,0.0,8.149248397434599,16.106333333334
|
||||||
|
300.0,strict_priority,video,240.24038523274479,1078,1078,0,15,135.37173098330103,269.12799999999464,323.36000000000143,150.79842238713505,279.70533333332844,333.4933333333332,0,0.0,0.0026771799628976987,0.16033333333353994
|
||||||
|
300.0,latest_state,emergency,0.02465489566613162,1,1,0,0,0.0,0.0,0.0,1.7066666666671892,1.7066666666671892,1.7066666666671892,0,0.0,0.0,0.0
|
||||||
|
300.0,latest_state,control,10.256436597110755,416,416,0,0,7.733262019229404,15.759666666666755,16.106333333334,9.439928685896334,17.46633333333346,17.813000000000745,0,0.0,7.7291594551268386,16.106333333334
|
||||||
|
300.0,latest_state,telemetry,7.692327447833066,208,208,0,0,9.864120192306657,17.546883333334474,17.813000000000745,12.424120192306697,20.10688333333437,20.37300000000064,0,0.0,8.149248397434599,16.106333333334
|
||||||
|
300.0,latest_state,video,240.24038523274479,1078,1078,0,15,135.37173098330103,269.12799999999464,323.36000000000143,150.79842238713505,279.70533333332844,333.4933333333332,0,0.0,0.0026771799628976987,0.16033333333353994
|
||||||
|
260.0,fifo,emergency,0.02465489566613162,1,1,0,0,0.0,0.0,0.0,1.969230769230279,1.969230769230279,1.969230769230279,0,0.0,0.0,0.0
|
||||||
|
260.0,fifo,control,10.256436597110755,416,416,0,7,167.10386353552764,331.0900769231244,458.97469230786925,169.07309430475814,333.0593076923547,460.9439230770995,298,0.7163461538461539,7.857339866886274,18.615384615390695
|
||||||
|
260.0,fifo,telemetry,7.692327447833066,208,208,0,4,160.36350517753885,328.8285384616073,460.9439230770995,163.31735133138503,331.7823846154539,463.8977692309467,0,0.0,7.732144230791379,18.615384615390695
|
||||||
|
260.0,fifo,video,240.24038523274479,1078,1078,0,21,175.94024482662746,343.1754384616482,473.6000000001752,193.74027336951343,357.6154384615683,492.3076923078682,0,0.0,3.3139568289080654,18.257076923131166
|
||||||
|
260.0,strict_priority,emergency,0.02465489566613162,1,1,0,0,0.0,0.0,0.0,1.969230769230279,1.969230769230279,1.969230769230279,0,0.0,0.0,0.0
|
||||||
|
260.0,strict_priority,control,10.256436597110755,416,416,0,0,8.313035133156095,16.784365384612144,18.69776923077815,10.282265902386632,18.753596153843198,20.66700000000843,0,0.0,8.308301405345444,18.69776923077815
|
||||||
|
260.0,strict_priority,telemetry,7.692327447833066,208,208,0,0,10.909659023688215,19.493946153856623,20.66700000000843,13.863505177534366,22.44779230770204,23.620846153853847,0,0.0,8.930960798836377,18.69776923077815
|
||||||
|
260.0,strict_priority,video,240.24038523274479,1078,1078,0,23,187.65972534610552,365.73226153856297,480.49230769247583,205.4597538889915,380.5630769230985,499.20000000016887,0,0.0,3.9965313971947523,18.25707692318801
|
||||||
|
260.0,latest_state,emergency,0.02465489566613162,1,1,0,0,0.0,0.0,0.0,1.969230769230279,1.969230769230279,1.969230769230279,0,0.0,0.0,0.0
|
||||||
|
260.0,latest_state,control,10.256436597110755,416,416,0,0,8.313035133156095,16.784365384612144,18.69776923077815,10.282265902386632,18.753596153843198,20.66700000000843,0,0.0,8.308301405345444,18.69776923077815
|
||||||
|
260.0,latest_state,telemetry,7.692327447833066,208,208,0,0,10.909659023688215,19.493946153856623,20.66700000000843,13.863505177534366,22.44779230770204,23.620846153853847,0,0.0,8.930960798836377,18.69776923077815
|
||||||
|
260.0,latest_state,video,240.24038523274479,1078,1078,0,23,187.65972534610552,365.73226153856297,480.49230769247583,205.4597538889915,380.5630769230985,499.20000000016887,0,0.0,3.9965313971947523,18.25707692318801
|
||||||
|
230.0,fifo,emergency,0.02465489566613162,1,1,0,0,878.8869565216775,878.8869565216775,878.8869565216775,881.1130434781998,881.1130434781998,881.1130434781998,1,1.0,0.4173913042819777,0.4173913042819777
|
||||||
|
230.0,fifo,control,10.256436597110755,416,416,0,42,1172.0617892976043,2238.3086956520533,2606.2956521737738,1174.2878762541263,2240.5347826085754,2608.5217391302963,414,0.9951923076923077,9.870735785906158,21.13043478255605
|
||||||
|
230.0,fifo,telemetry,7.692327447833066,208,208,0,21,1161.6391304347285,2222.267826086846,2608.5217391302963,1164.978260869511,2225.6069565216276,2611.860869565078,177,0.8509615384615384,9.380434782561796,21.043478260802218
|
||||||
|
230.0,fifo,video,240.24038523274479,1078,1078,0,118,1186.612664354224,2267.033969565095,2618.4808260868167,1206.7344357505297,2288.1817956520513,2639.628652173773,0,0.0,8.20556586266141,21.136565217338088
|
||||||
|
230.0,strict_priority,emergency,0.02465489566613162,1,1,0,0,9.32173913036749,9.32173913036749,9.32173913036749,11.547826086889756,11.547826086889756,11.547826086889756,0,0.0,9.32173913036749,9.32173913036749
|
||||||
|
230.0,strict_priority,control,10.256436597110755,416,416,0,1,10.02424749162144,19.62173913038057,21.113043478251825,12.250334448143445,21.84782608690261,23.33913043477409,0,0.0,10.018896321052877,21.113043478251825
|
||||||
|
230.0,strict_priority,telemetry,7.692327447833066,208,208,0,0,12.175083612023139,21.772173913030322,23.33913043477409,15.51421404680579,25.111304347813142,26.678260869555714,0,0.0,9.938294314364006,21.113043478251825
|
||||||
|
230.0,strict_priority,video,240.24038523274479,1078,1078,0,126,1273.2989271597767,2364.9321739130005,2626.272130434721,1293.4206985560818,2379.542608695629,2647.4199565216772,0,0.0,9.628813422585635,19.802565217331036
|
||||||
|
230.0,latest_state,emergency,0.02465489566613162,1,1,0,0,9.32173913036749,9.32173913036749,9.32173913036749,11.547826086889756,11.547826086889756,11.547826086889756,0,0.0,9.32173913036749,9.32173913036749
|
||||||
|
230.0,latest_state,control,10.256436597110755,416,416,0,1,10.02424749162144,19.62173913038057,21.113043478251825,12.250334448143445,21.84782608690261,23.33913043477409,0,0.0,10.018896321052877,21.113043478251825
|
||||||
|
230.0,latest_state,telemetry,7.692327447833066,208,208,0,0,12.175083612023139,21.772173913030322,23.33913043477409,15.51421404680579,25.111304347813142,26.678260869555714,0,0.0,9.938294314364006,21.113043478251825
|
||||||
|
230.0,latest_state,video,240.24038523274479,1078,1078,0,126,1273.2989271597767,2364.9321739130005,2626.272130434721,1293.4206985560818,2379.542608695629,2647.4199565216772,0,0.0,9.628813422585635,19.802565217331036
|
||||||
|
BIN
data/processed/lab033/lab033_control_delay.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
data/processed/lab033/lab033_deadline_misses.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
data/processed/lab033/lab033_emergency_delay.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
data/processed/lab033/lab033_queue_length.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
165
data/processed/lab033/lab033_report.txt
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
Lab033. Общий пакет канала и приоритетное обслуживание
|
||||||
|
|
||||||
|
1. Git и конфигурация
|
||||||
|
- Git-корень: C:/Users/user/Desktop/projects/SDR_Rover.
|
||||||
|
- Ветка: main; HEAD: 3dbb7afa8332b49535d867f1eabca7bdd2b7cdde.
|
||||||
|
- Исходное видео: 20.766667 с, 63 составных кадров, 3 кадра/с.
|
||||||
|
- BASE 240x135 grayscale JPEG Q23; ROI 320x180 grayscale JPEG Q33.
|
||||||
|
- Lab028: payload 512 байт; Lab030: FEC 12+3; Lab031: D=1.
|
||||||
|
- Фактический внешний видеопоток до Lab033: 226.951 кбит/с; с общим заголовком: 240.240 кбит/с.
|
||||||
|
- Аварийная команда: 0.024655; обычные команды: 10.256; телеметрия: 7.692 кбит/с.
|
||||||
|
- Общая предложенная нагрузка: 258.214 кбит/с; суммарная служебная доля: 34.923%.
|
||||||
|
|
||||||
|
2. Формат общего заголовка
|
||||||
|
- struct: !4sBBBBHIQHII; размер: 32 байта; network byte order, неявного padding нет.
|
||||||
|
- Смещения: magic[4]@0, version:u8@4, traffic_class:u8@5, direction:u8@6, flags:u8@7, stream_id:u16@8, sequence_number:u32@10, generation_time_us:u64@14, deadline_ms:u16@22, payload_length:u32@24, packet_crc32:u32@28.
|
||||||
|
- traffic_class: 1=EMERGENCY, 2=CONTROL, 3=TELEMETRY, 4=VIDEO; direction: 1=GROUND_TO_ROVER, 2=ROVER_TO_GROUND; flags в версии 1 равен нулю.
|
||||||
|
- CRC32 защищает заголовок с нулевым packet_crc32 и всю полезную нагрузку.
|
||||||
|
|
||||||
|
3. Девять сочетаний скорости и планировщика
|
||||||
|
speed | scheduler | offered/capacity | control P95 ms | emergency ms | telemetry P95 ms | video P95 ms | queue@end packets | drain extra s | final video
|
||||||
|
300 | FIFO | 0.8607 | 238.634 | 1.707 | 233.680 | 304.579 | 18 | 0.231867 | 1.000000
|
||||||
|
300 | Строгий приоритет | 0.8607 | 17.466 | 1.707 | 20.107 | 322.072 | 15 | 0.231867 | 1.000000
|
||||||
|
300 | Приоритет + замена | 0.8607 | 17.466 | 1.707 | 20.107 | 322.072 | 15 | 0.231867 | 1.000000
|
||||||
|
260 | FIFO | 0.9931 | 333.059 | 1.969 | 331.782 | 420.025 | 32 | 0.399200 | 1.000000
|
||||||
|
260 | Строгий приоритет | 0.9931 | 18.754 | 1.969 | 22.448 | 445.846 | 23 | 0.399200 | 1.000000
|
||||||
|
260 | Приоритет + замена | 0.9931 | 18.754 | 1.969 | 22.448 | 445.846 | 23 | 0.399200 | 1.000000
|
||||||
|
230 | FIFO | 1.1227 | 2240.535 | 881.113 | 2225.607 | 2417.731 | 181 | 2.547420 | 1.000000
|
||||||
|
230 | Строгий приоритет | 1.1227 | 21.848 | 11.548 | 25.111 | 2505.995 | 127 | 2.547420 | 1.000000
|
||||||
|
230 | Приоритет + замена | 1.1227 | 21.848 | 11.548 | 25.111 | 2505.995 | 127 | 2.547420 | 1.000000
|
||||||
|
|
||||||
|
4. Подробные показатели
|
||||||
|
[300 кбит/с; FIFO]
|
||||||
|
- Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 10.478/22 пакетов и 4452.4/12221 байт.
|
||||||
|
- На конце видео: 18 пакетов, 8695.0 байт; полное освобождение 20.998534 с, дополнительно 0.231867 с.
|
||||||
|
- Команды: mean/P95/max 106.072/238.634/296.186 мс; превышений 100 мс 203; промежутков >100 мс 63; max gap 344.480 мс; заменено 0.
|
||||||
|
- Аварийная команда: start/total 0.000/1.707 мс; deadline 50 мс соблюдён; блокировал none, 0 байт, seq=-1, ожидание 0.000 мс.
|
||||||
|
- Телеметрия: mean/P95/max 101.032/233.680/296.827 мс; превышений 500 мс 0 (0.000000); заменено 0.
|
||||||
|
- Видео: опубликовано к концу источника 0.984127, после drain 1.000000, итог 1.000000; delay mean/P95/max 261.559/304.579/311.146 мс.
|
||||||
|
- Возраст изображения mean/P95/max 423.846/580.000/643.333 мс; доля >1 с 0.000000; поздних кадров 0, max серия 0.
|
||||||
|
[300 кбит/с; Строгий приоритет]
|
||||||
|
- Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 8.050/22 пакетов и 4452.4/12221 байт.
|
||||||
|
- На конце видео: 15 пакетов, 8695.0 байт; полное освобождение 20.998534 с, дополнительно 0.231867 с.
|
||||||
|
- Команды: mean/P95/max 9.440/17.466/17.813 мс; превышений 100 мс 0; промежутков >100 мс 0; max gap 65.760 мс; заменено 0.
|
||||||
|
- Аварийная команда: start/total 0.000/1.707 мс; deadline 50 мс соблюдён; блокировал none, 0 байт, seq=-1, ожидание 0.000 мс.
|
||||||
|
- Телеметрия: mean/P95/max 12.424/20.107/20.373 мс; превышений 500 мс 0 (0.000000); заменено 0.
|
||||||
|
- Видео: опубликовано к концу источника 0.984127, после drain 1.000000, итог 1.000000; delay mean/P95/max 276.337/322.072/330.773 мс.
|
||||||
|
- Возраст изображения mean/P95/max 437.649/593.333/660.000 мс; доля >1 с 0.000000; поздних кадров 0, max серия 0.
|
||||||
|
[300 кбит/с; Приоритет + замена]
|
||||||
|
- Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 8.050/22 пакетов и 4452.4/12221 байт.
|
||||||
|
- На конце видео: 15 пакетов, 8695.0 байт; полное освобождение 20.998534 с, дополнительно 0.231867 с.
|
||||||
|
- Команды: mean/P95/max 9.440/17.466/17.813 мс; превышений 100 мс 0; промежутков >100 мс 0; max gap 65.760 мс; заменено 0.
|
||||||
|
- Аварийная команда: start/total 0.000/1.707 мс; deadline 50 мс соблюдён; блокировал none, 0 байт, seq=-1, ожидание 0.000 мс.
|
||||||
|
- Телеметрия: mean/P95/max 12.424/20.107/20.373 мс; превышений 500 мс 0 (0.000000); заменено 0.
|
||||||
|
- Видео: опубликовано к концу источника 0.984127, после drain 1.000000, итог 1.000000; delay mean/P95/max 276.337/322.072/330.773 мс.
|
||||||
|
- Возраст изображения mean/P95/max 437.649/593.333/660.000 мс; доля >1 с 0.000000; поздних кадров 0, max серия 0.
|
||||||
|
[260 кбит/с; FIFO]
|
||||||
|
- Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 14.800/37 пакетов и 6010.5/16512 байт.
|
||||||
|
- На конце видео: 32 пакетов, 12974.0 байт; полное освобождение 21.165867 с, дополнительно 0.399200 с.
|
||||||
|
- Команды: mean/P95/max 169.073/333.059/460.944 мс; превышений 100 мс 298; промежутков >100 мс 63; max gap 384.348 мс; заменено 0.
|
||||||
|
- Аварийная команда: start/total 0.000/1.969 мс; deadline 50 мс соблюдён; блокировал none, 0 байт, seq=-1, ожидание 0.000 мс.
|
||||||
|
- Телеметрия: mean/P95/max 163.317/331.782/463.898 мс; превышений 500 мс 0 (0.000000); заменено 0.
|
||||||
|
- Видео: опубликовано к концу источника 0.984127, после drain 1.000000, итог 1.000000; delay mean/P95/max 329.072/420.025/436.185 мс.
|
||||||
|
- Возраст изображения mean/P95/max 489.627/666.667/766.667 мс; доля >1 с 0.000000; поздних кадров 0, max серия 0.
|
||||||
|
[260 кбит/с; Строгий приоритет]
|
||||||
|
- Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 10.783/28 пакетов и 6010.2/16384 байт.
|
||||||
|
- На конце видео: 23 пакетов, 12974.0 байт; полное освобождение 21.165867 с, дополнительно 0.399200 с.
|
||||||
|
- Команды: mean/P95/max 10.282/18.754/20.667 мс; превышений 100 мс 0; промежутков >100 мс 0; max gap 63.477 мс; заменено 0.
|
||||||
|
- Аварийная команда: start/total 0.000/1.969 мс; deadline 50 мс соблюдён; блокировал none, 0 байт, seq=-1, ожидание 0.000 мс.
|
||||||
|
- Телеметрия: mean/P95/max 13.864/22.448/23.621 мс; превышений 500 мс 0 (0.000000); заменено 0.
|
||||||
|
- Видео: опубликовано к концу источника 0.968254, после drain 1.000000, итог 1.000000; delay mean/P95/max 351.218/445.846/459.559 мс.
|
||||||
|
- Возраст изображения mean/P95/max 511.188/693.333/783.333 мс; доля >1 с 0.000000; поздних кадров 0, max серия 0.
|
||||||
|
[260 кбит/с; Приоритет + замена]
|
||||||
|
- Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 10.783/28 пакетов и 6010.2/16384 байт.
|
||||||
|
- На конце видео: 23 пакетов, 12974.0 байт; полное освобождение 21.165867 с, дополнительно 0.399200 с.
|
||||||
|
- Команды: mean/P95/max 10.282/18.754/20.667 мс; превышений 100 мс 0; промежутков >100 мс 0; max gap 63.477 мс; заменено 0.
|
||||||
|
- Аварийная команда: start/total 0.000/1.969 мс; deadline 50 мс соблюдён; блокировал none, 0 байт, seq=-1, ожидание 0.000 мс.
|
||||||
|
- Телеметрия: mean/P95/max 13.864/22.448/23.621 мс; превышений 500 мс 0 (0.000000); заменено 0.
|
||||||
|
- Видео: опубликовано к концу источника 0.968254, после drain 1.000000, итог 1.000000; delay mean/P95/max 351.218/445.846/459.559 мс.
|
||||||
|
- Возраст изображения mean/P95/max 511.188/693.333/783.333 мс; доля >1 с 0.000000; поздних кадров 0, max серия 0.
|
||||||
|
[230 кбит/с; FIFO]
|
||||||
|
- Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 86.915/184 пакетов и 34309.1/76497 байт.
|
||||||
|
- На конце видео: 181 пакетов, 73238.3 байт; полное освобождение 23.314087 с, дополнительно 2.547420 с.
|
||||||
|
- Команды: mean/P95/max 1174.288/2240.535/2608.522 мс; превышений 100 мс 414; промежутков >100 мс 63; max gap 427.304 мс; заменено 0.
|
||||||
|
- Аварийная команда: start/total 878.887/881.113 мс; deadline 50 мс НАРУШЕН; блокировал video, 608 байт, seq=461, ожидание 0.417 мс.
|
||||||
|
- Телеметрия: mean/P95/max 1164.978/2225.607/2611.861 мс; превышений 500 мс 177 (0.850962); заменено 0.
|
||||||
|
- Видео: опубликовано к концу источника 0.888889, после drain 1.000000, итог 1.000000; delay mean/P95/max 1347.217/2417.731/2576.186 мс.
|
||||||
|
- Возраст изображения mean/P95/max 1506.487/2588.167/2906.667 мс; доля >1 с 0.771870; поздних кадров 42, max серия 42.
|
||||||
|
[230 кбит/с; Строгий приоритет]
|
||||||
|
- Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 59.750/132 пакетов и 34307.1/75969 байт.
|
||||||
|
- На конце видео: 127 пакетов, 73238.3 байт; полное освобождение 23.314087 с, дополнительно 2.547420 с.
|
||||||
|
- Команды: mean/P95/max 12.250/21.848/23.339 мс; превышений 100 мс 0; промежутков >100 мс 0; max gap 69.009 мс; заменено 0.
|
||||||
|
- Аварийная команда: start/total 9.322/11.548 мс; deadline 50 мс соблюдён; блокировал video, 608 байт, seq=458, ожидание 9.322 мс.
|
||||||
|
- Телеметрия: mean/P95/max 15.514/25.111/26.678 мс; превышений 500 мс 0 (0.000000); заменено 0.
|
||||||
|
- Видео: опубликовано к концу источника 0.888889, после drain 1.000000, итог 1.000000; delay mean/P95/max 1445.995/2505.995/2583.977 мс.
|
||||||
|
- Возраст изображения mean/P95/max 1594.537/2678.167/2916.667 мс; доля >1 с 0.804460; поздних кадров 47, max серия 47.
|
||||||
|
[230 кбит/с; Приоритет + замена]
|
||||||
|
- Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 59.750/132 пакетов и 34307.1/75969 байт.
|
||||||
|
- На конце видео: 127 пакетов, 73238.3 байт; полное освобождение 23.314087 с, дополнительно 2.547420 с.
|
||||||
|
- Команды: mean/P95/max 12.250/21.848/23.339 мс; превышений 100 мс 0; промежутков >100 мс 0; max gap 69.009 мс; заменено 0.
|
||||||
|
- Аварийная команда: start/total 9.322/11.548 мс; deadline 50 мс соблюдён; блокировал video, 608 байт, seq=458, ожидание 9.322 мс.
|
||||||
|
- Телеметрия: mean/P95/max 15.514/25.111/26.678 мс; превышений 500 мс 0 (0.000000); заменено 0.
|
||||||
|
- Видео: опубликовано к концу источника 0.888889, после drain 1.000000, итог 1.000000; delay mean/P95/max 1445.995/2505.995/2583.977 мс.
|
||||||
|
- Возраст изображения mean/P95/max 1594.537/2678.167/2916.667 мс; доля >1 с 0.804460; поздних кадров 47, max серия 47.
|
||||||
|
|
||||||
|
5. Интерпретация планировщиков
|
||||||
|
- FIFO задерживает команды, потому что все ранее поступившие внешние видеопакеты остаются перед ними независимо от срочности.
|
||||||
|
- Строгий приоритет после каждого окончания пакета выбирает управление раньше телеметрии и видео, поэтому сокращает очередь команд.
|
||||||
|
- Уже начатая передача не прерывается: модель сериализует целый пакет как атомарную единицу и не задаёт фрагментацию общего пакета или возобновление передачи.
|
||||||
|
- Поэтому нижняя граница задержки срочной команды включает остаток времени самого длинного пакета, уже занявшего ресурс.
|
||||||
|
- Замена старого состояния новым не тратит канал на запоздалую команду, которая к моменту приёма уже не отражает актуальное управление.
|
||||||
|
- Строгий приоритет перераспределяет порядок, но не уменьшает объём видео; при нагрузке выше пропускной способности видеопакеты продолжают накапливаться.
|
||||||
|
- Длинная очередь видео увеличивает возраст изображения даже без потерь: полные, но старые кадры публикуются позже времени формирования.
|
||||||
|
- Восстановление 100% кадров после drain подтверждает целостность, но не пригодность задержек канала для управления в реальном времени.
|
||||||
|
|
||||||
|
6. Допущения модели
|
||||||
|
- Один общий абстрактный ресурс и одна расчётная скорость для обоих направлений; переключение направления не задерживает передачу.
|
||||||
|
- Не выбран физический полудуплекс/дуплекс, TDD/FDD, модуляция, ретранслятор или физическое разделение восходящего и нисходящего каналов.
|
||||||
|
- Ошибки и помехи отсутствуют; полностью переданный пакет доставляется без повреждений; видеопакеты не отбрасываются по возрасту.
|
||||||
|
- После конца исходного видео новые данные не создаются, а очередь полностью освобождается.
|
||||||
|
- При совпадении времени FIFO использует traffic_class, stream_id и sequence_number как устойчивое правило разрешения совпадений.
|
||||||
|
- Средняя очередь рассчитана по времени на основном интервале и включает пакет, находящийся в передатчике; остаток байтов активного пакета учитывается пропорционально недопереданному времени.
|
||||||
|
|
||||||
|
7. Функциональные проверки
|
||||||
|
- PASS 01_header_roundtrip: PASS
|
||||||
|
- PASS 02_header_crc_detection: PASS
|
||||||
|
- PASS 03_payload_crc_detection: PASS
|
||||||
|
- PASS 04_video_wrapper_byte_exact: PASS
|
||||||
|
- PASS 05_lab030_crc: PASS
|
||||||
|
- PASS 06_lab028_crc: PASS
|
||||||
|
- PASS 07_fifo_global_order: PASS
|
||||||
|
- PASS 08_strict_priority: PASS
|
||||||
|
- PASS 09_non_preemptive: PASS
|
||||||
|
- PASS 10_intra_class_sequence: PASS
|
||||||
|
- PASS 11_latest_state_scope: PASS
|
||||||
|
- PASS 12_active_state_not_removed: PASS
|
||||||
|
- PASS 13_emergency_never_replaced: PASS
|
||||||
|
- PASS 14_300kbps_all_video: PASS
|
||||||
|
- PASS 15_overload_visible: PASS
|
||||||
|
- PASS 16_exact_transmission_duration: PASS
|
||||||
|
- PASS 17_total_bits_accounting: PASS
|
||||||
|
- PASS 18_reproducible_schedule: PASS
|
||||||
|
- PASS 19_no_video_control_isolated: PASS
|
||||||
|
- PASS 20_latest_state_reaches_receiver: PASS
|
||||||
|
|
||||||
|
8. Созданные файлы и итоговый Git status
|
||||||
|
- protocol/link_packet.py
|
||||||
|
- protocol/priority_scheduler.py
|
||||||
|
- tests/lab033_priority_channel_scheduler.py
|
||||||
|
- data/processed/lab033/lab033_summary.csv
|
||||||
|
- data/processed/lab033/lab033_class_metrics.csv
|
||||||
|
- data/processed/lab033/lab033_report.txt
|
||||||
|
- data/processed/lab033/lab033_control_delay.png
|
||||||
|
- data/processed/lab033/lab033_emergency_delay.png
|
||||||
|
- data/processed/lab033/lab033_video_delay.png
|
||||||
|
- data/processed/lab033/lab033_queue_length.png
|
||||||
|
- data/processed/lab033/lab033_deadline_misses.png
|
||||||
|
- data/processed/lab033/lab033_scheduler_comparison.png
|
||||||
|
- Lab028-Lab032 и их сохранённые результаты не изменены.
|
||||||
|
- Lab033 не добавлена в индекс и не закоммичена.
|
||||||
|
|
||||||
|
## main...origin/main
|
||||||
|
?? data/processed/lab033/
|
||||||
|
?? protocol/link_packet.py
|
||||||
|
?? protocol/priority_scheduler.py
|
||||||
|
?? tests/lab033_priority_channel_scheduler.py
|
||||||
BIN
data/processed/lab033/lab033_scheduler_comparison.png
Normal file
|
After Width: | Height: | Size: 81 KiB |
10
data/processed/lab033/lab033_summary.csv
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
channel_kbps,scheduler,offered_load_kbps,emergency_load_kbps,control_load_kbps,telemetry_load_kbps,video_load_kbps,service_share_percent,offered_to_capacity_ratio,transmitted_packets,transmitted_bytes,source_duration_seconds,drain_end_seconds,additional_drain_seconds,queue_at_source_end_packets,queue_at_source_end_bytes,mean_queue_packets,max_queue_packets,mean_queue_bytes,max_queue_bytes,control_mean_age_ms,control_p95_age_ms,control_max_age_ms,control_gaps_over_100ms,control_max_receive_gap_ms,control_replaced,emergency_start_delay_ms,emergency_total_delay_ms,emergency_deadline_met,emergency_blocker_class,emergency_blocker_size_bytes,emergency_blocker_sequence,emergency_blocking_delay_ms,telemetry_mean_age_ms,telemetry_p95_age_ms,telemetry_max_age_ms,telemetry_misses_500ms,telemetry_miss_fraction,telemetry_replaced,video_published_at_source_end_fraction,video_published_after_drain_fraction,video_final_recovery_fraction,video_mean_publication_delay_ms,video_p95_publication_delay_ms,video_max_publication_delay_ms,video_mean_display_age_ms,video_p95_display_age_ms,video_max_display_age_ms,video_age_over_1s_fraction,video_late_frame_count,video_max_late_run
|
||||||
|
300.0,fifo,258.21380417335473,0.02465489566613162,10.256436597110755,7.692327447833066,240.24038523274479,34.922718863758426,0.8607126805778491,1703,670280,20.766666666666666,20.99853366666666,0.23186699999999405,18,8695.012499999913,10.477643691813581,22,4452.409985633955,12221,106.0716594551255,238.6335833333294,296.1863333333259,63,344.4796666666594,0,0.0,1.7066666666671892,True,none,0,-1,0.0,101.03181249999754,233.68033333332914,296.8269999999933,0,0.0,0,0.9841269841269841,1.0,1.0,261.5593703703662,304.57866666666183,311.1463333333262,423.8457877201335,580.0,643.3333333333333,0.0,0,0
|
||||||
|
300.0,strict_priority,258.21380417335473,0.02465489566613162,10.256436597110755,7.692327447833066,240.24038523274479,34.922718863758426,0.8607126805778491,1703,670280,20.766666666666666,20.99853366666666,0.23186699999999405,15,8695.012499999915,8.05016637239154,22,4452.387224542477,12221,9.439928685896334,17.46633333333346,17.813000000000745,0,65.7596666666671,0,0.0,1.7066666666671892,True,none,0,-1,0.0,12.424120192306697,20.10688333333437,20.37300000000064,0,0.0,0,0.9841269841269841,1.0,1.0,276.3369365079338,322.0720000000001,330.77299999999,437.6487386958594,593.3333333333334,660.0000000000001,0.0,0,0
|
||||||
|
300.0,latest_state,258.21380417335473,0.02465489566613162,10.256436597110755,7.692327447833066,240.24038523274479,34.922718863758426,0.8607126805778491,1703,670280,20.766666666666666,20.99853366666666,0.23186699999999405,15,8695.012499999915,8.05016637239154,22,4452.387224542477,12221,9.439928685896334,17.46633333333346,17.813000000000745,0,65.7596666666671,0,0.0,1.7066666666671892,True,none,0,-1,0.0,12.424120192306697,20.10688333333437,20.37300000000064,0,0.0,0,0.9841269841269841,1.0,1.0,276.3369365079338,322.0720000000001,330.77299999999,437.6487386958594,593.3333333333334,660.0000000000001,0.0,0,0
|
||||||
|
260.0,fifo,258.21380417335473,0.02465489566613162,10.256436597110755,7.692327447833066,240.24038523274479,34.922718863758426,0.9931300160513643,1703,670280,20.766666666666666,21.165867000000176,0.39920033333351057,32,12974.010833338622,14.800483013954153,37,6010.5496338357525,16512,169.07309430475814,333.0593076923547,460.9439230770995,63,384.34838461538055,0,0.0,1.969230769230279,True,none,0,-1,0.0,163.31735133138503,331.7823846154539,463.8977692309467,0,0.0,0,0.9841269841269841,1.0,1.0,329.07164590967284,420.0249487180816,436.18494871812175,489.62700661000974,666.6666666666679,766.6666666666692,0.0,0,0
|
||||||
|
260.0,strict_priority,258.21380417335473,0.02465489566613162,10.256436597110755,7.692327447833066,240.24038523274479,34.922718863758426,0.9931300160513643,1703,670280,20.766666666666666,21.16586700000017,0.39920033333350347,23,12974.010833338338,10.783079034450305,28,6010.224630522928,16384,10.282265902386632,18.753596153843198,20.66700000000843,0,63.476923076922546,0,0.0,1.969230769230279,True,none,0,-1,0.0,13.863505177534366,22.44779230770204,23.620846153853847,0,0.0,0,0.9682539682539683,1.0,1.0,351.2176776557015,445.84648717956554,459.55930769245157,511.18822788794483,693.3333333333316,783.3333333333314,0.0,0,0
|
||||||
|
260.0,latest_state,258.21380417335473,0.02465489566613162,10.256436597110755,7.692327447833066,240.24038523274479,34.922718863758426,0.9931300160513643,1703,670280,20.766666666666666,21.16586700000017,0.39920033333350347,23,12974.010833338338,10.783079034450305,28,6010.224630522928,16384,10.282265902386632,18.753596153843198,20.66700000000843,0,63.476923076922546,0,0.0,1.969230769230279,True,none,0,-1,0.0,13.863505177534366,22.44779230770204,23.620846153853847,0,0.0,0,0.9682539682539683,1.0,1.0,351.2176776557015,445.84648717956554,459.55930769245157,511.18822788794483,693.3333333333316,783.3333333333314,0.0,0,0
|
||||||
|
230.0,fifo,258.21380417335473,0.02465489566613162,10.256436597110755,7.692327447833066,240.24038523274479,34.922718863758426,1.1226687137971945,1703,670280,20.766666666666666,23.3140869565216,2.5474202898549336,181,73238.33333333043,86.91502882266383,184,34309.08168164904,76497,1174.2878762541263,2240.5347826085754,2608.5217391302963,63,427.3043478260803,0,878.8869565216775,881.1130434781998,False,video,608,461,0.4173913042819777,1164.978260869511,2225.6069565216276,2611.860869565078,177,0.8509615384615384,0,0.8888888888888888,1.0,1.0,1347.216563146941,2417.731014492629,2576.1855072462367,1506.486563750715,2588.1666666666674,2906.6666666666697,0.7718696397941681,42,42
|
||||||
|
230.0,strict_priority,258.21380417335473,0.02465489566613162,10.256436597110755,7.692327447833066,240.24038523274479,34.922718863758426,1.1226687137971945,1703,670280,20.766666666666666,23.314086956521678,2.547420289855012,127,73238.33333333276,59.749842696627866,132,34307.118394888734,75969,12.250334448143445,21.84782608690261,23.33913043477409,0,69.00869565217427,0,9.32173913036749,11.547826086889756,True,video,608,458,9.32173913036749,15.51421404680579,25.111304347813142,26.678260869555714,0,0.0,0,0.8888888888888888,1.0,1.0,1445.9947550034299,2505.9953623187953,2583.976811594141,1594.536878216124,2678.1666666666674,2916.666666666668,0.8044596912521441,47,47
|
||||||
|
230.0,latest_state,258.21380417335473,0.02465489566613162,10.256436597110755,7.692327447833066,240.24038523274479,34.922718863758426,1.1226687137971945,1703,670280,20.766666666666666,23.314086956521678,2.547420289855012,127,73238.33333333276,59.749842696627866,132,34307.118394888734,75969,12.250334448143445,21.84782608690261,23.33913043477409,0,69.00869565217427,0,9.32173913036749,11.547826086889756,True,video,608,458,9.32173913036749,15.51421404680579,25.111304347813142,26.678260869555714,0,0.0,0,0.8888888888888888,1.0,1.0,1445.9947550034299,2505.9953623187953,2583.976811594141,1594.536878216124,2678.1666666666674,2916.666666666668,0.8044596912521441,47,47
|
||||||
|
BIN
data/processed/lab033/lab033_video_delay.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
data/processed/lab034/lab034_control_delay.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
16
data/processed/lab034/lab034_control_metrics.csv
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
channel_kbps,policy,control_mean_age_ms,control_p95_age_ms,control_max_age_ms,control_deadline_misses,control_max_receive_gap_ms,control_replaced,emergency_total_delay_ms,emergency_deadline_met,emergency_blocker_class,emergency_blocker_size_bytes,emergency_blocker_sequence,emergency_blocking_delay_ms,telemetry_mean_age_ms,telemetry_p95_age_ms,telemetry_max_age_ms,telemetry_deadline_misses,telemetry_replaced
|
||||||
|
300.0,continuous_no_drop,9.439928685896334,17.46633333333346,17.813000000000745,0,65.7596666666671,0,1.7066666666671892,True,none,0,-1,0.0,12.424120192306697,20.10688333333437,20.37300000000064,0,0
|
||||||
|
300.0,aligned_no_drop,10.09563301281934,17.46633333333314,17.78700000000022,0,65.7596666666671,0,1.7066666666671892,True,none,0,-1,0.0,12.858206730768112,19.573666666667933,20.160000000000622,0,0
|
||||||
|
300.0,aligned_1500ms,10.09563301281934,17.46633333333314,17.78700000000022,0,65.7596666666671,0,1.7066666666671892,True,none,0,-1,0.0,12.858206730768112,19.573666666667933,20.160000000000622,0,0
|
||||||
|
300.0,aligned_1000ms,10.09563301281934,17.46633333333314,17.78700000000022,0,65.7596666666671,0,1.7066666666671892,True,none,0,-1,0.0,12.858206730768112,19.573666666667933,20.160000000000622,0,0
|
||||||
|
300.0,aligned_500ms,10.09563301281934,17.46633333333314,17.78700000000022,0,65.7596666666671,0,1.7066666666671892,True,none,0,-1,0.0,12.858206730768112,19.573666666667933,20.160000000000622,0,0
|
||||||
|
260.0,continuous_no_drop,10.282265902386632,18.753596153843198,20.66700000000843,0,63.476923076922546,0,1.969230769230279,True,none,0,-1,0.0,13.863505177534366,22.44779230770204,23.620846153853847,0,0
|
||||||
|
260.0,aligned_no_drop,10.671617788489147,18.907692307691043,20.492307692309808,0,67.81538461538617,0,1.969230769230279,True,none,0,-1,0.0,13.490528846181197,21.89960384616611,23.323076923056796,0,0
|
||||||
|
260.0,aligned_1500ms,10.671617788489147,18.907692307691043,20.492307692309808,0,67.81538461538617,0,1.969230769230279,True,none,0,-1,0.0,13.490528846181197,21.89960384616611,23.323076923056796,0,0
|
||||||
|
260.0,aligned_1000ms,10.671617788489147,18.907692307691043,20.492307692309808,0,67.81538461538617,0,1.969230769230279,True,none,0,-1,0.0,13.490528846181197,21.89960384616611,23.323076923056796,0,0
|
||||||
|
260.0,aligned_500ms,10.71385151629976,18.907692307691043,20.492307692309808,0,67.81538461538617,0,1.969230769230279,True,none,0,-1,0.0,13.61641642014566,22.039999999996684,23.323076923056796,0,0
|
||||||
|
230.0,continuous_no_drop,12.250334448143445,21.84782608690261,23.33913043477409,0,69.00869565217427,0,11.547826086889756,True,video,608,458,9.32173913036749,15.51421404680579,25.111304347813142,26.678260869555714,0,0
|
||||||
|
230.0,aligned_no_drop,12.729598662164767,22.499999999942013,24.556521739064863,0,69.00869565217427,0,22.330434782542596,True,video,608,463,20.10434782602033,15.594983277549522,25.377391304327652,27.895652173848262,0,0
|
||||||
|
230.0,aligned_1500ms,12.613043478216982,22.460869565154475,24.556521739064863,0,69.00869565217427,0,22.330434782542596,True,video,608,463,20.10434782602033,15.613377926377664,25.426086956510073,27.895652173848262,0,0
|
||||||
|
230.0,aligned_1000ms,12.76596989961911,22.578260869525746,23.356521739078318,0,69.00869565217427,0,11.652173912974462,True,video,608,484,9.426086956452195,15.511371237411904,25.37739130434555,26.608695652086567,0,0
|
||||||
|
230.0,aligned_500ms,12.377759197289913,22.230434782573028,23.339130434790967,0,69.00869565217427,0,3.6869565216850475,True,video,608,511,1.4608695651627812,15.598996655484031,24.913043478221116,26.678260869573478,0,0
|
||||||
|
BIN
data/processed/lab034/lab034_fec_alignment_overhead.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
data/processed/lab034/lab034_frame_outcomes.png
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
data/processed/lab034/lab034_image_age.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
data/processed/lab034/lab034_policy_comparison.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
data/processed/lab034/lab034_queue_size.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
98
data/processed/lab034/lab034_report.txt
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
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
|
||||||
16
data/processed/lab034/lab034_summary.csv
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
channel_kbps,policy,layout,max_video_age_ms,offered_load_kbps,offered_to_capacity_ratio,transmitted_packets,transmitted_bytes,dropped_packets,dropped_bytes,wasted_transmitted_bytes,mean_queue_packets,max_queue_packets,mean_queue_bytes,max_queue_bytes,queue_at_source_end_packets,additional_drain_seconds,channel_utilization_fraction
|
||||||
|
300.0,continuous_no_drop,continuous,-1,258.21380417335473,0.8607126805778491,1703,670280,0,0,0,8.05016637239154,22,4452.387224542477,12221,15,0.23186699999999405,0.8512086423304386
|
||||||
|
300.0,aligned_no_drop,aligned,-1,264.62022471910115,0.8820674157303372,1738,686910,0,0,0,8.518393226324118,21,4685.69717834665,11415,13,0.1994403333333281,0.8724635473515175
|
||||||
|
300.0,aligned_1500ms,aligned,1500,264.62022471910115,0.8820674157303372,1738,686910,0,0,0,8.518393226324118,21,4685.69717834665,11415,13,0.1994403333333281,0.8724635473515175
|
||||||
|
300.0,aligned_1000ms,aligned,1000,264.62022471910115,0.8820674157303372,1738,686910,0,0,0,8.518393226324118,21,4685.69717834665,11415,13,0.1994403333333281,0.8724635473515175
|
||||||
|
300.0,aligned_500ms,aligned,500,264.62022471910115,0.8820674157303372,1738,686910,0,0,0,8.518393226324118,21,4685.69717834665,11415,13,0.1994403333333281,0.8724635473515175
|
||||||
|
260.0,continuous_no_drop,continuous,-1,258.21380417335473,0.9931300160513643,1703,670280,0,0,0,10.783079034450305,28,6010.224630522928,16384,23,0.39920033333350347,0.9743990170589202
|
||||||
|
260.0,aligned_no_drop,aligned,-1,264.62022471910115,1.017770095073466,1738,686910,0,0,0,13.695290291396285,37,7655.6639836816,21131,30,0.5392926410258561,0.991800947030499
|
||||||
|
260.0,aligned_1500ms,aligned,1500,264.62022471910115,1.017770095073466,1738,686910,0,0,0,13.695290291396285,37,7655.6639836816,21131,30,0.5392926410258561,0.991800947030499
|
||||||
|
260.0,aligned_1000ms,aligned,1000,264.62022471910115,1.017770095073466,1738,686910,0,0,0,13.695290291396285,37,7655.6639836816,21131,30,0.5392926410258561,0.991800947030499
|
||||||
|
260.0,aligned_500ms,aligned,500,264.62022471910115,1.017770095073466,1730,682511,8,4399,69597,13.261018996174682,31,7402.747049027978,16992,24,0.4039387948720048,0.991800947030499
|
||||||
|
230.0,continuous_no_drop,continuous,-1,258.21380417335473,1.1226687137971945,1703,670280,0,0,0,59.749842696627866,132,34307.118394888734,75969,127,2.547420289855012,1.0
|
||||||
|
230.0,aligned_no_drop,aligned,-1,264.62022471910115,1.1505227161700051,1738,686910,0,0,0,76.17493190801534,160,43586.68565075366,92568,155,3.1258550724636294,1.0
|
||||||
|
230.0,aligned_1500ms,aligned,1500,264.62022471910115,1.1505227161700051,1641,637811,97,49099,321929,59.44779896084508,87,33911.67327808277,50035,81,1.4180637681158217,1.0
|
||||||
|
230.0,aligned_1000ms,aligned,1000,264.62022471910115,1.1505227161700051,1609,623057,129,63853,434885,42.60156656500422,63,24223.970784957004,35495,53,0.9048811594201744,1.0
|
||||||
|
230.0,aligned_500ms,aligned,500,264.62022471910115,1.1505227161700051,1580,609090,158,77820,532167,20.03526158908224,32,11270.42233914812,18208,27,0.41907246376802476,0.9999999999999993
|
||||||
|
BIN
data/processed/lab034/lab034_update_rate.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
16
data/processed/lab034/lab034_video_metrics.csv
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
channel_kbps,policy,created_frames,published_frames,intentionally_dropped_frames,partially_transmitted_cancelled_frames,published_after_deadline_frames,published_fraction,actual_update_fps,mean_publication_delay_ms,p95_publication_delay_ms,max_publication_delay_ms,mean_display_age_ms,p95_display_age_ms,max_display_age_ms,display_age_over_500ms_fraction,display_age_over_1000ms_fraction,mean_no_update_duration_ms,p95_no_update_duration_ms,max_no_update_duration_ms,mean_missing_run_frames,p95_missing_run_frames,max_missing_run_frames,delivered_useful_video_kbps,wasted_transmitted_video_bytes,receiver_cleared_frames
|
||||||
|
300.0,continuous_no_drop,63,63,0,0,0,1.0,2.985553772070626,276.3369365079338,322.0720000000001,330.77299999999,437.2938723131218,593.3333333333333,660.0000000000001,0.3142444658325313,0.0,329.6296296296296,388.9899000000025,397.1729999999969,0.0,0.0,0,157.76975922953451,0,0
|
||||||
|
300.0,aligned_no_drop,63,63,0,0,0,1.0,2.985553772070626,272.2167195767169,293.13066666666225,301.84000000000003,433.2836060314408,589.9999999999999,623.3333333333348,0.30221366698748797,0.0,329.6296296296296,355.05666666666684,406.506333333331,0.0,0.0,0,157.76975922953451,0,0
|
||||||
|
300.0,aligned_1500ms,63,63,0,0,0,1.0,2.985553772070626,272.2167195767169,293.13066666666225,301.84000000000003,433.2836060314408,589.9999999999999,623.3333333333348,0.30221366698748797,0.0,329.6296296296296,355.05666666666684,406.506333333331,0.0,0.0,0,157.76975922953451,0,0
|
||||||
|
300.0,aligned_1000ms,63,63,0,0,0,1.0,2.985553772070626,272.2167195767169,293.13066666666225,301.84000000000003,433.2836060314408,589.9999999999999,623.3333333333348,0.30221366698748797,0.0,329.6296296296296,355.05666666666684,406.506333333331,0.0,0.0,0,157.76975922953451,0,0
|
||||||
|
300.0,aligned_500ms,63,63,0,0,0,1.0,2.985553772070626,272.2167195767169,293.13066666666225,301.84000000000003,433.2836060314408,589.9999999999999,623.3333333333348,0.30221366698748797,0.0,329.6296296296296,355.05666666666684,406.506333333331,0.0,0.0,0,157.76975922953451,0,0
|
||||||
|
260.0,continuous_no_drop,63,63,0,0,0,1.0,2.937399678972713,351.2176776557015,445.84648717956554,459.55930769245157,509.63907603464884,690.0000000000005,783.3333333333314,0.5312800769971127,0.0,334.9462365591397,401.4781615384583,411.91761538461515,0.0,0.0,0,157.76975922953451,0,0
|
||||||
|
260.0,aligned_no_drop,63,63,0,0,0,1.0,2.937399678972713,393.259570207603,579.4598205129968,620.584948718161,546.5335258261151,773.833333333333,943.3333333333316,0.62223291626564,0.0,334.9462365591397,363.58000000001095,417.7637692307723,0.0,0.0,0,157.76975922953451,0,0
|
||||||
|
260.0,aligned_1500ms,63,63,0,0,0,1.0,2.937399678972713,393.259570207603,579.4598205129968,620.584948718161,546.5335258261151,773.833333333333,943.3333333333316,0.62223291626564,0.0,334.9462365591397,363.58000000001095,417.7637692307723,0.0,0.0,0,157.76975922953451,0,0
|
||||||
|
260.0,aligned_1000ms,63,63,0,0,0,1.0,2.937399678972713,393.259570207603,579.4598205129968,620.584948718161,546.5335258261151,773.833333333333,943.3333333333316,0.62223291626564,0.0,334.9462365591397,363.58000000001095,417.7637692307723,0.0,0.0,0,157.76975922953451,0,0
|
||||||
|
260.0,aligned_500ms,63,56,7,7,0,0.8888888888888888,2.648475120385233,367.5917000915918,493.7670000001404,498.6567435899403,584.550850176452,1053.8333333333312,1769.9999999999995,0.6212704523580366,0.060153994225216556,370.8333333333333,664.0000000000219,1270.1227435895887,1.4,2.5999999999999996,3,139.5205136436597,69597,7
|
||||||
|
230.0,continuous_no_drop,63,63,0,0,0,1.0,2.696629213483146,1445.9947550034299,2505.9953623187953,2583.976811594141,1464.8845043310876,2443.8333333333317,2740.000000000002,0.9716073147256978,0.78055822906641,364.32748538011697,437.67652173912944,464.34782608695,0.0,0.0,0,157.76975922953451,0,0
|
||||||
|
230.0,aligned_no_drop,63,63,0,0,0,1.0,2.6003210272873196,1777.4951000689596,3067.511884057848,3204.707246376671,1723.7872954764196,2913.333333333334,3206.666666666667,0.9735322425409048,0.8267564966313763,377.57575757575756,412.5426086956473,424.00000000000125,0.0,0.0,0,157.76975922953451,0,0
|
||||||
|
230.0,aligned_1500ms,63,27,36,36,0,0.42857142857142855,1.3001605136436598,1010.3600644122084,1414.757101449207,1473.0202898550094,4028.4071222329167,11064.833333333332,12103.333333333334,0.9735322425409048,0.8267564966313763,741.6666666666666,416.659130434783,10626.97971014499,36.0,36.0,36,66.39987158908507,321929,36
|
||||||
|
230.0,aligned_1000ms,63,14,49,49,0,0.2222222222222222,0.6741573033707865,734.7155279503047,977.28927536231,995.617391304334,4667.483156881616,11731.499999999998,12770.0,0.9735322425409048,0.8233878729547642,1384.4444444444443,6308.219130434754,11828.788405797173,24.5,36.65,38,34.951781701444624,434885,49
|
||||||
|
230.0,aligned_500ms,63,3,60,60,0,0.047619047619047616,0.14446227929373998,429.5149758453909,457.5026086956464,460.9971014492756,5508.034969521976,11731.499999999998,12770.0,0.9696823869104908,0.9076034648700674,5191.666666666666,11634.280579710185,12340.614492753682,30.0,37.2,38,7.567126805778492,532167,60
|
||||||
|
BIN
data/processed/lab035/lab035_control_delay.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
19
data/processed/lab035/lab035_control_metrics.csv
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
channel_kbps,policy,control_p95_delay_ms,control_max_delay_ms,control_deadline_misses,control_max_receive_gap_ms,emergency_delay_ms,emergency_deadline_met,emergency_blocker_class,emergency_blocking_delay_ms,telemetry_deadline_misses
|
||||||
|
300.0,no_drop,17.46633333333314,17.78700000000022,0,65.7596666666671,1.7066666666671892,True,none,0.0,0
|
||||||
|
300.0,reactive_1500ms,17.46633333333314,17.78700000000022,0,65.7596666666671,1.7066666666671892,True,none,0.0,0
|
||||||
|
300.0,latest_only,17.46633333333314,17.78700000000022,0,65.7596666666671,1.7066666666671892,True,none,0.0,0
|
||||||
|
300.0,two_waiting,17.46633333333314,17.78700000000022,0,65.7596666666671,1.7066666666671892,True,none,0.0,0
|
||||||
|
300.0,predict_1000ms,17.46633333333314,17.78700000000022,0,65.7596666666671,1.7066666666671892,True,none,0.0,0
|
||||||
|
300.0,predict_500ms,17.46633333333314,17.78700000000022,0,65.7596666666671,1.7066666666671892,True,none,0.0,0
|
||||||
|
260.0,no_drop,18.907692307691043,20.492307692309808,0,67.81538461538617,1.969230769230279,True,none,0.0,0
|
||||||
|
260.0,reactive_1500ms,18.907692307691043,20.492307692309808,0,67.81538461538617,1.969230769230279,True,none,0.0,0
|
||||||
|
260.0,latest_only,18.907692307691043,20.492307692309808,0,67.81538461538617,1.969230769230279,True,none,0.0,0
|
||||||
|
260.0,two_waiting,18.907692307691043,20.492307692309808,0,67.81538461538617,1.969230769230279,True,none,0.0,0
|
||||||
|
260.0,predict_1000ms,18.907692307691043,20.492307692309808,0,67.81538461538617,1.969230769230279,True,none,0.0,0
|
||||||
|
260.0,predict_500ms,18.907692307691043,20.533000000078516,0,67.81538461538617,1.969230769230279,True,none,0.0,0
|
||||||
|
230.0,no_drop,22.499999999942013,24.556521739064863,0,69.00869565217427,22.330434782542596,True,video,20.10434782602033,0
|
||||||
|
230.0,reactive_1500ms,22.460869565154475,24.556521739064863,0,69.00869565217427,22.330434782542596,True,video,20.10434782602033,0
|
||||||
|
230.0,latest_only,22.043478260820315,23.339130434699484,0,69.00869565217427,6.2260869564561006,True,video,3.9999999999338343,0
|
||||||
|
230.0,two_waiting,22.53913043472089,23.33913043474567,0,69.00869565217427,6.991304347760519,True,video,4.765217391238252,0
|
||||||
|
230.0,predict_1000ms,22.317391304289558,23.35652173909253,0,69.00869565217427,2.365217391240293,True,video,0.13913043471802666,0
|
||||||
|
230.0,predict_500ms,22.211510869569295,23.304347826089256,0,69.00869565217427,5.739130434786688,True,video,3.5130434782644215,0
|
||||||
|
BIN
data/processed/lab035/lab035_frame_outcomes.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
data/processed/lab035/lab035_image_age.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
data/processed/lab035/lab035_policy_comparison.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
data/processed/lab035/lab035_prediction_accuracy.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
19
data/processed/lab035/lab035_prediction_metrics.csv
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
channel_kbps,policy,admitted_frames,prediction_rejected_frames,mean_absolute_error_ms,p95_absolute_error_ms,max_absolute_error_ms,published_after_deadline_frames,false_rejections
|
||||||
|
300.0,no_drop,0,0,0.0,0.0,0.0,0,0
|
||||||
|
300.0,reactive_1500ms,0,0,0.0,0.0,0.0,0,0
|
||||||
|
300.0,latest_only,0,0,0.0,0.0,0.0,0,0
|
||||||
|
300.0,two_waiting,0,0,0.0,0.0,0.0,0,0
|
||||||
|
300.0,predict_1000ms,63,0,0.0,0.0,0.0,0,0
|
||||||
|
300.0,predict_500ms,63,0,0.0,0.0,0.0,0,0
|
||||||
|
260.0,no_drop,0,0,0.0,0.0,0.0,0,0
|
||||||
|
260.0,reactive_1500ms,0,0,0.0,0.0,0.0,0,0
|
||||||
|
260.0,latest_only,0,0,0.0,0.0,0.0,0,0
|
||||||
|
260.0,two_waiting,0,0,0.0,0.0,0.0,0,0
|
||||||
|
260.0,predict_1000ms,63,0,0.0,0.0,0.0,0,0
|
||||||
|
260.0,predict_500ms,62,1,0.0,0.0,0.0,0,0
|
||||||
|
230.0,no_drop,0,0,0.0,0.0,0.0,0,0
|
||||||
|
230.0,reactive_1500ms,0,0,0.0,0.0,0.0,0,0
|
||||||
|
230.0,latest_only,0,0,0.0,0.0,0.0,0,0
|
||||||
|
230.0,two_waiting,0,0,0.0,0.0,0.0,0,0
|
||||||
|
230.0,predict_1000ms,56,7,0.0,0.0,0.0,0,0
|
||||||
|
230.0,predict_500ms,47,16,0.0,0.0,0.0,0,0
|
||||||
|
BIN
data/processed/lab035/lab035_publication_delay.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
data/processed/lab035/lab035_queue_size.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
99
data/processed/lab035/lab035_report.txt
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
Lab035. Упреждающий допуск видеокадров и обслуживание видео целыми кадрами
|
||||||
|
|
||||||
|
1. Исходное состояние
|
||||||
|
- Commit Lab034: b63e36abdb7031d642de8b8138b43cc29e94b759.
|
||||||
|
- Перед Lab035 рабочее дерево было чистым; main опережала origin/main на два commit.
|
||||||
|
|
||||||
|
2. Правило обслуживания
|
||||||
|
- После первого видеопакета кадр становится активным и не удаляется.
|
||||||
|
- При повторном выборе видео передаётся следующий пакет активного кадра; команды и телеметрия могут передаваться между пакетами.
|
||||||
|
- Новый видеокадр начинается только после полного завершения активного; видеопакеты разных кадров не чередуются; отдельный пакет не прерывается.
|
||||||
|
- Только неактивные кадры могут быть удалены до передачи первого пакета.
|
||||||
|
|
||||||
|
3. Теоретическая пропускная способность
|
||||||
|
speed | nonvideo kbps | remaining video kbps | remaining/aligned | minimum skip | maximum fps
|
||||||
|
300 | 17.973 | 282.027 | 1.143443 | 0.000000 | 3.000
|
||||||
|
260 | 17.973 | 242.027 | 0.981268 | 0.018732 | 2.944
|
||||||
|
230 | 17.973 | 212.027 | 0.859636 | 0.140364 | 2.579
|
||||||
|
|
||||||
|
4. Восемнадцать сочетаний
|
||||||
|
speed | policy | published/drop/partial | fps | age P95 ms | no-update max ms | queue max/waiting frames | waste bytes | prediction MAE/P95/max ms | control P95/max ms | emergency ms
|
||||||
|
300 | Без удаления | 63/0/0 | 2.986 | 590.000 | 406.506 | 21/1 | 0 | 0.000000/0.000000/0.000000 | 17.466/17.787 | 1.707
|
||||||
|
300 | Реактивная 1500 мс | 63/0/0 | 2.986 | 590.000 | 406.506 | 21/1 | 0 | 0.000000/0.000000/0.000000 | 17.466/17.787 | 1.707
|
||||||
|
300 | Самый свежий | 63/0/0 | 2.986 | 590.000 | 406.506 | 21/1 | 0 | 0.000000/0.000000/0.000000 | 17.466/17.787 | 1.707
|
||||||
|
300 | Два ожидающих | 63/0/0 | 2.986 | 590.000 | 406.506 | 21/1 | 0 | 0.000000/0.000000/0.000000 | 17.466/17.787 | 1.707
|
||||||
|
300 | Прогноз 1000 мс | 63/0/0 | 2.986 | 590.000 | 406.506 | 21/1 | 0 | 0.000000/0.000000/0.000000 | 17.466/17.787 | 1.707
|
||||||
|
300 | Прогноз 500 мс | 63/0/0 | 2.986 | 590.000 | 406.506 | 21/1 | 0 | 0.000000/0.000000/0.000000 | 17.466/17.787 | 1.707
|
||||||
|
260 | Без удаления | 63/0/0 | 2.937 | 773.833 | 417.764 | 37/1 | 0 | 0.000000/0.000000/0.000000 | 18.908/20.492 | 1.969
|
||||||
|
260 | Реактивная 1500 мс | 63/0/0 | 2.937 | 773.833 | 417.764 | 37/1 | 0 | 0.000000/0.000000/0.000000 | 18.908/20.492 | 1.969
|
||||||
|
260 | Самый свежий | 63/0/0 | 2.937 | 773.833 | 417.764 | 37/1 | 0 | 0.000000/0.000000/0.000000 | 18.908/20.492 | 1.969
|
||||||
|
260 | Два ожидающих | 63/0/0 | 2.937 | 773.833 | 417.764 | 37/1 | 0 | 0.000000/0.000000/0.000000 | 18.908/20.492 | 1.969
|
||||||
|
260 | Прогноз 1000 мс | 63/0/0 | 2.937 | 773.833 | 417.764 | 37/1 | 0 | 0.000000/0.000000/0.000000 | 18.908/20.492 | 1.969
|
||||||
|
260 | Прогноз 500 мс | 62/1/0 | 2.889 | 703.333 | 524.266 | 29/1 | 0 | 0.000000/0.000000/0.000000 | 18.908/20.533 | 1.969
|
||||||
|
230 | Без удаления | 63/0/0 | 2.600 | 2913.333 | 424.000 | 160/8 | 0 | 0.000000/0.000000/0.000000 | 22.500/24.557 | 22.330
|
||||||
|
230 | Реактивная 1500 мс | 27/0/36 | 1.300 | 11064.833 | 10626.980 | 87/4 | 321929 | 0.000000/0.000000/0.000000 | 22.461/24.557 | 22.330
|
||||||
|
230 | Самый свежий | 56/7/0 | 2.600 | 960.000 | 426.226 | 37/1 | 0 | 0.000000/0.000000/0.000000 | 22.043/23.339 | 6.226
|
||||||
|
230 | Два ожидающих | 57/6/0 | 2.600 | 1286.667 | 421.183 | 56/2 | 0 | 0.000000/0.000000/0.000000 | 22.539/23.339 | 6.991
|
||||||
|
230 | Прогноз 1000 мс | 56/7/0 | 2.600 | 1226.667 | 426.226 | 53/2 | 0 | 0.000000/0.000000/0.000000 | 22.317/23.357 | 2.365
|
||||||
|
230 | Прогноз 500 мс | 47/16/0 | 2.215 | 966.667 | 622.817 | 28/1 | 0 | 0.000000/0.000000/0.000000 | 22.212/23.304 | 5.739
|
||||||
|
|
||||||
|
5. Интерпретация
|
||||||
|
- Реактивная Lab034 начинает кадр без гарантии завершения, затем удаляет остаток: уже переданные байты становятся бесполезными, а обновление не публикуется.
|
||||||
|
- Удаление до первого пакета исключает бесполезную передачу; обслуживание целыми кадрами гарантирует, что начатый кадр будет опубликован.
|
||||||
|
- Политика самого свежего уменьшает задержку ожидающих данных, но удаляет больше промежуточных кадров; очередь из двух кадров сохраняет больше последовательных обновлений ценой возраста.
|
||||||
|
- Прогноз полного завершения учитывает весь размер кадра и будущую периодическую высокоприоритетную нагрузку, поэтому полезнее проверки только текущего возраста.
|
||||||
|
- В модели точно известны команды 20 Гц, телеметрия 10 Гц и аварийная команда 10,0 с; неизвестные будущие дискретные события не моделируются и в реальной системе потребовали бы запаса.
|
||||||
|
- При устойчивой перегрузке невозможно одновременно сохранить все кадры, исходное JPEG-качество и малую задержку; требуется уменьшить частоту, качество или заранее пропускать кадры.
|
||||||
|
- Частота обновления, возраст изображения и длительность отсутствия нового изображения оцениваются одновременно: оптимизация одного показателя может ухудшить остальные.
|
||||||
|
|
||||||
|
6. Допущения
|
||||||
|
- Ошибки и помехи отсутствуют; один общий абстрактный ресурс, форматы Lab028-Lab034 неизменны, активный пакет не прерывается.
|
||||||
|
- Прогноз не изменяет настоящую очередь; для допущенных кадров сохраняются только агрегированные ошибки, без подробного журнала.
|
||||||
|
- Политика автоматически не выбирается.
|
||||||
|
|
||||||
|
7. Функциональные проверки
|
||||||
|
- PASS 01_video_frames_do_not_interleave: PASS
|
||||||
|
- PASS 02_started_frame_never_dropped: PASS
|
||||||
|
- PASS 03_high_priority_between_frame_packets: PASS
|
||||||
|
- PASS 04_latest_drops_only_unstarted: PASS
|
||||||
|
- PASS 05_two_waiting_limit: PASS
|
||||||
|
- PASS 06_prediction_is_pure: PASS
|
||||||
|
- PASS 07_prediction_uses_actual_sizes: PASS
|
||||||
|
- PASS 08_prestart_drop_has_no_waste: PASS
|
||||||
|
- PASS 09_partial_only_reactive: PASS
|
||||||
|
- PASS 10_incomplete_not_published: PASS
|
||||||
|
- PASS 11_crc_layers_pass: PASS
|
||||||
|
- PASS 12_emergency_never_deleted: PASS
|
||||||
|
- PASS 13_priority_above_video: PASS
|
||||||
|
- PASS 14_300kbps_no_unnecessary_loss: PASS
|
||||||
|
- PASS 15_230kbps_bounded_queue: PASS
|
||||||
|
- PASS 16_frame_accounting: PASS
|
||||||
|
- PASS 17_byte_accounting: PASS
|
||||||
|
- PASS 18_reproducible: PASS
|
||||||
|
- PASS 19_predict_1000_never_known_late: PASS
|
||||||
|
- PASS 20_command_delay_bound: PASS
|
||||||
|
|
||||||
|
8. Созданные файлы
|
||||||
|
- protocol/video_frame_scheduler.py
|
||||||
|
- tests/lab035_video_frame_admission.py
|
||||||
|
- data/processed/lab035/lab035_summary.csv
|
||||||
|
- data/processed/lab035/lab035_video_metrics.csv
|
||||||
|
- data/processed/lab035/lab035_control_metrics.csv
|
||||||
|
- data/processed/lab035/lab035_prediction_metrics.csv
|
||||||
|
- data/processed/lab035/lab035_report.txt
|
||||||
|
- data/processed/lab035/lab035_update_rate.png
|
||||||
|
- data/processed/lab035/lab035_image_age.png
|
||||||
|
- data/processed/lab035/lab035_publication_delay.png
|
||||||
|
- data/processed/lab035/lab035_frame_outcomes.png
|
||||||
|
- data/processed/lab035/lab035_queue_size.png
|
||||||
|
- data/processed/lab035/lab035_prediction_accuracy.png
|
||||||
|
- data/processed/lab035/lab035_control_delay.png
|
||||||
|
- data/processed/lab035/lab035_policy_comparison.png
|
||||||
|
|
||||||
|
9. Итоговый Git status
|
||||||
|
- Lab035 не добавлена в индекс и не закоммичена.
|
||||||
|
|
||||||
|
## main...origin/main [ahead 2]
|
||||||
|
?? data/processed/lab035/
|
||||||
|
?? protocol/video_frame_scheduler.py
|
||||||
|
?? tests/lab035_video_frame_admission.py
|
||||||
19
data/processed/lab035/lab035_summary.csv
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
channel_kbps,policy,offered_load_kbps,offered_to_capacity_ratio,transmitted_packets,transmitted_bytes,dropped_before_start_packets,dropped_before_start_bytes,wasted_transmitted_bytes,mean_queue_packets,max_queue_packets,mean_queue_bytes,max_queue_bytes,mean_waiting_video_frames,max_waiting_video_frames,queue_at_source_end_packets,additional_drain_seconds,remaining_video_capacity_kbps,theoretical_minimum_skip_fraction,theoretical_maximum_update_fps
|
||||||
|
300.0,no_drop,264.62022471910115,0.8820674157303372,1738,686910,0,0,0,8.518393226324118,21,4685.69717834665,11415,0.0043967897271271275,1,13,0.1994403333333281,282.02658105939,0.0,3.0
|
||||||
|
300.0,reactive_1500ms,264.62022471910115,0.8820674157303372,1738,686910,0,0,0,8.518393226324118,21,4685.69717834665,11415,0.004397126805778977,1,13,0.1994403333333281,282.02658105939,0.0,3.0
|
||||||
|
300.0,latest_only,264.62022471910115,0.8820674157303372,1738,686910,0,0,0,8.518393226324118,21,4685.69717834665,11415,0.0043967897271271275,1,13,0.1994403333333281,282.02658105939,0.0,3.0
|
||||||
|
300.0,two_waiting,264.62022471910115,0.8820674157303372,1738,686910,0,0,0,8.518393226324118,21,4685.69717834665,11415,0.0043967897271271275,1,13,0.1994403333333281,282.02658105939,0.0,3.0
|
||||||
|
300.0,predict_1000ms,264.62022471910115,0.8820674157303372,1738,686910,0,0,0,8.518393226324118,21,4685.69717834665,11415,0.0043967897271271275,1,13,0.1994403333333281,282.02658105939,0.0,3.0
|
||||||
|
300.0,predict_500ms,264.62022471910115,0.8820674157303372,1738,686910,0,0,0,8.518393226324118,21,4685.69717834665,11415,0.0043967897271271275,1,13,0.1994403333333281,282.02658105939,0.0,3.0
|
||||||
|
260.0,no_drop,264.62022471910115,1.017770095073466,1738,686910,0,0,0,13.695290291396285,37,7655.6639836816,21131,0.22409427213244032,1,30,0.5392926410258561,242.02658105939005,0.0187321490116944,2.943803552964917
|
||||||
|
260.0,reactive_1500ms,264.62022471910115,1.017770095073466,1738,686910,0,0,0,13.695290291396285,37,7655.6639836816,21131,0.22409428818380472,1,30,0.5392926410258561,242.02658105939005,0.0187321490116944,2.943803552964917
|
||||||
|
260.0,latest_only,264.62022471910115,1.017770095073466,1738,686910,0,0,0,13.695290291396285,37,7655.6639836816,21131,0.22409427213244032,1,30,0.5392926410258561,242.02658105939005,0.0187321490116944,2.943803552964917
|
||||||
|
260.0,two_waiting,264.62022471910115,1.017770095073466,1738,686910,0,0,0,13.695290291396285,37,7655.6639836816,21131,0.22409427213244032,1,30,0.5392926410258561,242.02658105939005,0.0187321490116944,2.943803552964917
|
||||||
|
260.0,predict_1000ms,264.62022471910115,1.017770095073466,1738,686910,0,0,0,13.695290291396285,37,7655.6639836816,21131,0.22409427213244032,1,30,0.5392926410258561,242.02658105939005,0.0187321490116944,2.943803552964917
|
||||||
|
260.0,predict_500ms,264.62022471910115,1.017770095073466,1719,675994,19,10916,0,12.011204749970242,29,6682.897892161229,15804,0.13726051487841454,1,21,0.37186633333345753,242.02658105939005,0.0187321490116944,2.943803552964917
|
||||||
|
230.0,no_drop,264.62022471910115,1.1505227161700051,1738,686910,0,0,0,76.17493190801534,160,43586.68565075366,92568,3.7476585944586778,8,155,3.1258550724636294,212.02658105939005,0.14036356404385353,2.5789093078684395
|
||||||
|
230.0,reactive_1500ms,264.62022471910115,1.1505227161700051,1641,637811,0,0,321929,59.44779896084508,87,33911.67327808277,50035,2.785503524321179,4,81,1.4180637681158217,212.02658105939005,0.14036356404385353,2.5789093078684395
|
||||||
|
230.0,latest_only,264.62022471910115,1.1505227161700051,1614,615407,124,71503,0,19.887121174537647,37,11167.829372157905,21067,0.5720064205456188,1,33,0.6387942028984455,212.02658105939005,0.14036356404385353,2.5789093078684395
|
||||||
|
230.0,two_waiting,264.62022471910115,1.1505227161700051,1633,626345,105,60565,0,35.493155370922615,56,20128.047561843177,32209,1.456761532556227,2,52,1.0192463768114841,212.02658105939005,0.14036356404385353,2.5789093078684395
|
||||||
|
230.0,predict_1000ms,264.62022471910115,1.1505227161700051,1612,613851,126,73059,0,32.84338218367999,53,18617.01722113549,30172,1.3064353409168972,2,49,0.5846724637680119,212.02658105939005,0.14036356404385353,2.5789093078684395
|
||||||
|
230.0,predict_500ms,264.62022471910115,1.1505227161700051,1452,521373,286,165537,0,12.440944832856212,28,6904.035936733742,15168,0.22863162956241578,1,22,0.04693333333332461,212.02658105939005,0.14036356404385353,2.5789093078684395
|
||||||
|
BIN
data/processed/lab035/lab035_update_rate.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
19
data/processed/lab035/lab035_video_metrics.csv
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
channel_kbps,policy,created_frames,started_frames,published_frames,dropped_before_start_frames,partially_transmitted_cancelled_frames,published_fraction,actual_update_fps,mean_publication_delay_ms,p95_publication_delay_ms,max_publication_delay_ms,mean_display_age_ms,p95_display_age_ms,max_display_age_ms,display_age_over_500ms_fraction,display_age_over_1000ms_fraction,mean_no_update_duration_ms,p95_no_update_duration_ms,max_no_update_duration_ms,mean_missing_run_frames,p95_missing_run_frames,max_missing_run_frames,mean_publication_gap_ms,max_publication_gap_ms,transmitted_video_bytes,dropped_before_start_video_bytes,wasted_transmitted_video_bytes,delivered_useful_video_kbps
|
||||||
|
300.0,no_drop,63,63,63,0,0,1.0,2.985553772070626,272.2167195767169,293.13066666666225,301.84000000000003,433.2836060314408,589.9999999999999,623.3333333333348,0.30221366698748797,0.0,329.6296296296296,355.05666666666684,406.506333333331,0.0,0.0,0,333.07759016393436,406.506333333331,640254,0,0,157.76975922953451
|
||||||
|
300.0,reactive_1500ms,63,63,63,0,0,1.0,2.985553772070626,272.2167195767169,293.13066666666225,301.84000000000003,433.2836060314408,589.9999999999999,623.3333333333348,0.30221366698748797,0.0,329.6296296296296,355.05666666666684,406.506333333331,0.0,0.0,0,333.03312365591387,406.506333333331,640254,0,0,157.76975922953451
|
||||||
|
300.0,latest_only,63,63,63,0,0,1.0,2.985553772070626,272.2167195767169,293.13066666666225,301.84000000000003,433.2836060314408,589.9999999999999,623.3333333333348,0.30221366698748797,0.0,329.6296296296296,355.05666666666684,406.506333333331,0.0,0.0,0,333.07759016393436,406.506333333331,640254,0,0,157.76975922953451
|
||||||
|
300.0,two_waiting,63,63,63,0,0,1.0,2.985553772070626,272.2167195767169,293.13066666666225,301.84000000000003,433.2836060314408,589.9999999999999,623.3333333333348,0.30221366698748797,0.0,329.6296296296296,355.05666666666684,406.506333333331,0.0,0.0,0,333.07759016393436,406.506333333331,640254,0,0,157.76975922953451
|
||||||
|
300.0,predict_1000ms,63,63,63,0,0,1.0,2.985553772070626,272.2167195767169,293.13066666666225,301.84000000000003,433.2836060314408,589.9999999999999,623.3333333333348,0.30221366698748797,0.0,329.6296296296296,355.05666666666684,406.506333333331,0.0,0.0,0,333.07759016393436,406.506333333331,640254,0,0,157.76975922953451
|
||||||
|
300.0,predict_500ms,63,63,63,0,0,1.0,2.985553772070626,272.2167195767169,293.13066666666225,301.84000000000003,433.2836060314408,589.9999999999999,623.3333333333348,0.30221366698748797,0.0,329.6296296296296,355.05666666666684,406.506333333331,0.0,0.0,0,333.07759016393436,406.506333333331,640254,0,0,157.76975922953451
|
||||||
|
260.0,no_drop,63,63,63,0,0,1.0,2.937399678972713,393.259570207603,579.4598205129968,620.584948718161,546.5335258261151,773.833333333333,943.3333333333316,0.62223291626564,0.0,334.9462365591397,363.58000000001095,417.7637692307723,0.0,0.0,0,337.6377833333365,417.7637692307723,640254,0,0,157.76975922953451
|
||||||
|
260.0,reactive_1500ms,63,63,63,0,0,1.0,2.937399678972713,393.259570207603,579.4598205129968,620.584948718161,546.5335258261151,773.833333333333,943.3333333333316,0.62223291626564,0.0,334.9462365591397,363.58000000001095,417.7637692307723,0.0,0.0,0,337.64599379652947,417.7637692307723,640254,0,0,157.76975922953451
|
||||||
|
260.0,latest_only,63,63,63,0,0,1.0,2.937399678972713,393.259570207603,579.4598205129968,620.584948718161,546.5335258261151,773.833333333333,943.3333333333316,0.62223291626564,0.0,334.9462365591397,363.58000000001095,417.7637692307723,0.0,0.0,0,337.6377833333365,417.7637692307723,640254,0,0,157.76975922953451
|
||||||
|
260.0,two_waiting,63,63,63,0,0,1.0,2.937399678972713,393.259570207603,579.4598205129968,620.584948718161,546.5335258261151,773.833333333333,943.3333333333316,0.62223291626564,0.0,334.9462365591397,363.58000000001095,417.7637692307723,0.0,0.0,0,337.6377833333365,417.7637692307723,640254,0,0,157.76975922953451
|
||||||
|
260.0,predict_1000ms,63,63,63,0,0,1.0,2.937399678972713,393.259570207603,579.4598205129968,620.584948718161,546.5335258261151,773.833333333333,943.3333333333316,0.62223291626564,0.0,334.9462365591397,363.58000000001095,417.7637692307723,0.0,0.0,0,337.6377833333365,417.7637692307723,640254,0,0,157.76975922953451
|
||||||
|
260.0,predict_500ms,63,62,62,1,0,0.9841269841269841,2.8892455858747996,360.2011848635393,447.1807256411333,465.7234102564871,523.434392043632,703.3333333333336,983.3333333333343,0.5654475457170356,0.0,340.4371584699453,365.69230769231353,524.2659999999332,1.0,1.0,1,340.28908604954535,524.2659999999332,629338,10916,0,155.0561797752809
|
||||||
|
230.0,no_drop,63,63,63,0,0,1.0,2.6003210272873196,1777.4951000689596,3067.511884057848,3204.707246376671,1723.7872954764196,2913.333333333334,3206.666666666667,0.9735322425409048,0.8267564966313763,377.57575757575756,412.5426086956473,424.00000000000125,0.0,0.0,0,380.14569319113855,424.00000000000125,640254,0,0,157.76975922953451
|
||||||
|
230.0,reactive_1500ms,63,63,27,0,36,0.42857142857142855,1.3001605136436598,1010.3600644122084,1414.757101449207,1473.0202898550094,4028.4071222329167,11064.833333333332,12103.333333333334,0.9735322425409048,0.8267564966313763,741.6666666666666,416.659130434783,10626.97971014499,36.0,36.0,36,374.5458193979908,424.00000000000125,591155,0,321929,66.39987158908507
|
||||||
|
230.0,latest_only,63,56,56,7,0,0.8888888888888888,2.6003210272873196,536.8126293995401,685.881159420235,717.6463768114871,709.5107475136352,960.0000000000001,1076.6666666666679,0.9100096246390761,0.02165543792107796,377.5757575757575,416.6017391304294,426.22608695652355,1.0,1.0,1,381.4884331419178,426.22608695652355,568751,71503,0,140.1904333868379
|
||||||
|
230.0,two_waiting,63,57,57,6,0,0.9047619047619048,2.6003210272873196,838.9013984235485,1026.1286956521203,1098.0985507245257,998.5707410972092,1286.6666666666665,1440.0000000000014,0.9735322425409048,0.546679499518768,377.5757575757576,406.0417391304327,421.1826086956538,1.0,1.0,1,381.49433962263976,421.1826086956538,579689,60565,0,142.8577849117175
|
||||||
|
230.0,predict_1000ms,63,56,56,7,0,0.8888888888888888,2.6003210272873196,771.422153209065,952.4115942028234,971.5478260868871,943.7102983638115,1226.6666666666665,1359.9999999999995,0.9735322425409048,0.41193455245428295,377.57575757575756,405.373913043476,426.22608695652355,1.0,1.0,1,380.15028712058887,426.22608695652355,567195,73059,0,139.75743178170146
|
||||||
|
230.0,predict_500ms,63,47,47,16,0,0.746031746031746,2.215088282504013,412.55253931544405,466.07430289855006,482.2141594203,641.0153994225219,966.6666666666686,1056.6666666666683,0.7776708373435997,0.026467757459095284,441.84397163120565,614.827726086956,622.8173913043555,1.0,1.0,1,444.19246376811583,622.8173913043555,474717,165537,0,117.06375601926163
|
||||||
|
BIN
data/processed/lab036/lab036_control_delay.png
Normal file
|
After Width: | Height: | Size: 91 KiB |
16
data/processed/lab036/lab036_control_metrics.csv
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
scenario,policy,control_mean_delay_ms,control_p95_delay_ms,control_max_delay_ms,control_over_100ms,control_max_receive_gap_ms,emergency_delays_ms,emergency_max_delay_ms,all_emergency_under_50ms,telemetry_mean_delay_ms,telemetry_p95_delay_ms,telemetry_max_delay_ms,telemetry_over_500ms
|
||||||
|
constant_300,no_drop,10.082484055552035,17.466333333331363,17.787000000083708,0,65.75966666673594,1.706667;1.706667;1.706667;1.706667,1.7066666666778474,True,12.830822611113824,19.573666666701683,20.16000000007523,0
|
||||||
|
constant_300,latest_only,10.082484055552035,17.466333333331363,17.787000000083708,0,65.75966666673594,1.706667;1.706667;1.706667;1.706667,1.7066666666778474,True,12.830822611113824,19.573666666701683,20.16000000007523,0
|
||||||
|
constant_300,two_waiting,10.082484055552035,17.466333333331363,17.787000000083708,0,65.75966666673594,1.706667;1.706667;1.706667;1.706667,1.7066666666778474,True,12.830822611113824,19.573666666701683,20.16000000007523,0
|
||||||
|
constant_260,no_drop,11.072842185081562,19.651615385654253,20.66700023078738,0,68.4307692308721,18.420846;16.882385;4.974692;3.251616,18.420846156274706,True,14.047702896620706,22.63623076796577,23.62084638127726,0
|
||||||
|
constant_260,latest_only,10.616307327810727,19.04615384603403,20.667000017851933,0,67.99999999995521,7.528538;1.969231;10.513154;7.528538,10.513153850581602,True,13.756108911150676,22.143923060525594,23.590076939512983,0
|
||||||
|
constant_260,two_waiting,11.020678082480492,19.651615408761813,20.667000205151,0,68.4000000001106,18.420846;3.713154;11.620846;15.897769,18.420846156274706,True,13.98955930684015,22.63623076432637,23.62084635899464,0
|
||||||
|
constant_230,no_drop,12.447544944822914,22.156521740192048,23.3565218202898,0,70.12173913045672,14.295652;5.391304;15.895652;10.817391,15.895652187168707,True,15.792707263668593,25.49565216446439,26.678260933408637,0
|
||||||
|
constant_230,latest_only,12.496684077687183,22.156521750258662,23.356521818243436,0,69.60000000003674,6.852174;4.660870;9.808696;10.817391,10.817391378679986,True,15.7147652371126,25.426086964586148,26.678260937728737,0
|
||||||
|
constant_230,two_waiting,12.432011596181523,22.191304351743923,23.35652178805958,0,70.64347826093353,2.295652;4.556522;10.608696;12.765217,12.765217432615827,True,15.712892755606843,25.495652190528517,26.678260914195562,0
|
||||||
|
step_300_230_300,no_drop,10.645963064766441,19.408695629502404,23.6869565184179,0,69.00869565220091,1.706667;21.460870;5.680000;1.706667,21.460869561906293,True,13.517029441587948,22.678260879320078,27.026086953213735,0
|
||||||
|
step_300_230_300,latest_only,10.812854489366694,19.44434781658656,23.356521740737435,0,69.00869565220091,1.706667;3.791304;1.706667;1.706667,3.7913043232720156,True,13.695971329953036,22.54086954938544,26.678260865082848,0
|
||||||
|
step_300_230_300,two_waiting,10.76303822392693,19.33913042324491,23.35652172334335,0,70.64347826081985,1.706667;3.826087;1.706667;1.706667,3.826086949771934,True,13.677599522246727,22.749565219797326,26.67826085848901,0
|
||||||
|
variable_300_260_230,no_drop,11.053582892926142,20.403454847835434,23.369899646013437,0,69.80869565218484,7.528538;19.076923;8.359308;9.090724,19.076923066961626,True,14.018366272815697,23.467000011780215,26.679040185285885,0
|
||||||
|
variable_300_260_230,latest_only,11.040001685623347,20.19402340485995,23.373354529439894,0,69.00869565220091,7.528538;1.969231;10.513154;14.593065,14.593064683936063,True,14.14441419306391,23.375628775394834,26.704458198324232,0
|
||||||
|
variable_300_260_230,two_waiting,11.097355222802879,20.30926972252018,23.36989965402836,0,69.00869565220091,7.528538;19.076923;8.359308;10.482028,19.076923066961626,True,14.058443590060339,23.415384582420984,26.696989889956058,0
|
||||||
|
BIN
data/processed/lab036/lab036_frame_outcomes.png
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
data/processed/lab036/lab036_image_age_timeline.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
data/processed/lab036/lab036_minute_update_rate.png
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
data/processed/lab036/lab036_policy_comparison.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
data/processed/lab036/lab036_queue_growth_theory.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
data/processed/lab036/lab036_queue_timeline.png
Normal file
|
After Width: | Height: | Size: 79 KiB |
BIN
data/processed/lab036/lab036_recovery.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
16
data/processed/lab036/lab036_recovery_metrics.csv
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
scenario,policy,applicable,image_age_at_300s_ms,time_to_age_below_1000ms_seconds,time_to_age_below_500ms_seconds,excess_queue_clear_seconds,frames_dropped_after_recovery,old_frames_published_after_recovery
|
||||||
|
constant_300,no_drop,False,0.0,0.0,0.0,0.0,0,0
|
||||||
|
constant_300,latest_only,False,0.0,0.0,0.0,0.0,0,0
|
||||||
|
constant_300,two_waiting,False,0.0,0.0,0.0,0.0,0,0
|
||||||
|
constant_260,no_drop,False,0.0,0.0,0.0,0.0,0,0
|
||||||
|
constant_260,latest_only,False,0.0,0.0,0.0,0.0,0,0
|
||||||
|
constant_260,two_waiting,False,0.0,0.0,0.0,0.0,0,0
|
||||||
|
constant_230,no_drop,False,0.0,0.0,0.0,0.0,0,0
|
||||||
|
constant_230,latest_only,False,0.0,0.0,0.0,0.0,0,0
|
||||||
|
constant_230,two_waiting,False,0.0,0.0,0.0,0.0,0,0
|
||||||
|
step_300_230_300,no_drop,True,24333.333333333314,147.64077333334558,149.80178666667894,150.02250666667896,0,72
|
||||||
|
step_300_230_300,latest_only,True,666.6666666666856,0.0,0.07729391299602639,0.00844057966270384,0,1
|
||||||
|
step_300_230_300,two_waiting,True,1000.0,0.05866202900034523,1.1352486956670305,1.3550620290003508,0,2
|
||||||
|
variable_300_260_230,no_drop,False,0.0,0.0,0.0,0.0,0,0
|
||||||
|
variable_300_260_230,latest_only,False,0.0,0.0,0.0,0.0,0,0
|
||||||
|
variable_300_260_230,two_waiting,False,0.0,0.0,0.0,0.0,0,0
|
||||||
|
104
data/processed/lab036/lab036_report.txt
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
Lab036. Долговременная устойчивость видеопланировщика при изменении пропускной способности
|
||||||
|
|
||||||
|
1. Исходное состояние и конфигурация
|
||||||
|
- Commit Lab035: 22c2eeab8cc794e67378485f49c236a622f814a7.
|
||||||
|
- Рабочее дерево перед Lab036 было чистым; ветка main.
|
||||||
|
- Модель использует 600 с, 1800 кадров, повтор реальной последовательности размеров 63 кадров, BASE 240×135 Q23, ROI 320×180 Q33 и 3 составных кадра/с.
|
||||||
|
- Lab036 использует ровно 3 кадра/с в течение 600 с; короткий ролик Lab034 и предшествующих лабораторных давал немного отличающуюся фактическую частоту формирования кадров.
|
||||||
|
- Длинный опыт уменьшает влияние начального и конечного участков, поэтому значения общей предложенной нагрузки Lab034 и Lab036 не обязаны побайтно совпадать.
|
||||||
|
- Каждый повтор получает новые composite_frame_id, времена, заголовки и CRC; JPEG и пакеты на диск не записываются.
|
||||||
|
- Используются внутренний пакет Lab028 с payload 512 байт, FEC 12+3 с выравниванием по кадрам и общий пакет Lab033.
|
||||||
|
- Команды 20 Гц, телеметрия 10 Гц; аварийные команды создаются в 60, 180, 310 и 480 с.
|
||||||
|
- Ошибки радиоканала отсутствуют.
|
||||||
|
- Смена скорости не прерывает начатый пакет: новая скорость применяется только к следующему пакету после завершения текущего.
|
||||||
|
|
||||||
|
2. Пятнадцать сочетаний
|
||||||
|
scenario | policy | published/drop | fps | age P95 ms | queue max packets | queue at 600 packets | drain s | control P95 ms | emergency max ms
|
||||||
|
constant_300 | no_drop | 1800/0 | 3.000 | 600.000 | 22 | 0 | 0.000 | 17.466 | 1.707
|
||||||
|
constant_300 | latest_only | 1800/0 | 3.000 | 600.000 | 22 | 0 | 0.000 | 17.466 | 1.707
|
||||||
|
constant_300 | two_waiting | 1800/0 | 3.000 | 600.000 | 22 | 0 | 0.000 | 17.466 | 1.707
|
||||||
|
constant_260 | no_drop | 1800/0 | 2.977 | 4866.667 | 268 | 238 | 4.146 | 19.652 | 18.421
|
||||||
|
constant_260 | latest_only | 1772/28 | 2.953 | 833.333 | 40 | 0 | 0.000 | 19.046 | 10.513
|
||||||
|
constant_260 | two_waiting | 1787/13 | 2.977 | 1166.667 | 58 | 6 | 0.084 | 19.652 | 18.421
|
||||||
|
constant_230 | no_drop | 1800/0 | 2.608 | 74633.333 | 4155 | 4139 | 82.753 | 22.157 | 15.896
|
||||||
|
constant_230 | latest_only | 1570/230 | 2.615 | 1000.000 | 40 | 17 | 0.317 | 22.157 | 10.817
|
||||||
|
constant_230 | two_waiting | 1571/229 | 2.615 | 1333.333 | 57 | 26 | 0.486 | 22.191 | 12.765
|
||||||
|
step_300_230_300 | no_drop | 1800/0 | 3.000 | 21966.667 | 1279 | 0 | 0.000 | 19.409 | 21.461
|
||||||
|
step_300_230_300 | latest_only | 1730/70 | 2.883 | 900.000 | 40 | 0 | 0.000 | 19.444 | 3.791
|
||||||
|
step_300_230_300 | two_waiting | 1731/69 | 2.885 | 1233.333 | 58 | 0 | 0.000 | 19.339 | 3.826
|
||||||
|
variable_300_260_230 | no_drop | 1800/0 | 2.970 | 5666.667 | 326 | 295 | 5.804 | 20.403 | 19.077
|
||||||
|
variable_300_260_230 | latest_only | 1716/84 | 2.858 | 900.000 | 40 | 14 | 0.261 | 20.194 | 14.593
|
||||||
|
variable_300_260_230 | two_waiting | 1725/75 | 2.872 | 1233.333 | 56 | 29 | 0.562 | 20.309 | 19.077
|
||||||
|
|
||||||
|
3. Постоянные скорости: теория и модель
|
||||||
|
rate | policy | reserve kbps | theory growth B/s | model growth B/s | minimum skip | stable fps | minute queue packets
|
||||||
|
300 | no_drop | 38.278 | 0.000 | -11.601 | 0.000000 | 3.000 | 21;21;21;20;19;21;21;21;21;0
|
||||||
|
300 | latest_only | 38.278 | 0.000 | -11.601 | 0.000000 | 3.000 | 21;21;21;20;19;21;21;21;21;0
|
||||||
|
300 | two_waiting | 38.278 | 0.000 | -11.601 | 0.000000 | 3.000 | 21;21;21;20;19;21;21;21;21;0
|
||||||
|
260 | no_drop | -1.722 | 215.258 | 218.649 | 0.007063 | 2.979 | 48;65;90;117;149;176;197;214;233;238
|
||||||
|
260 | latest_only | -1.722 | 215.258 | -5.668 | 0.007063 | 2.979 | 32;24;21;20;21;24;39;32;24;0
|
||||||
|
260 | two_waiting | -1.722 | 215.258 | -12.199 | 0.007063 | 2.979 | 48;29;35;43;39;49;52;37;37;6
|
||||||
|
230 | no_drop | -31.722 | 3965.258 | 3967.819 | 0.130116 | 2.610 | 429;841;1255;1672;2093;2511;2924;3335;3745;4139
|
||||||
|
230 | latest_only | -31.722 | 3965.258 | -6.550 | 0.130116 | 2.610 | 37;33;38;26;34;26;28;37;38;17
|
||||||
|
230 | two_waiting | -31.722 | 3965.258 | -22.350 | 0.130116 | 2.610 | 42;56;52;53;44;55;55;47;43;26
|
||||||
|
|
||||||
|
4. Восстановление после ухудшения
|
||||||
|
policy | age at 300 ms | below 1000 s | below 500 s | excess queue clear s | dropped old | published old
|
||||||
|
no_drop | 24333.333 | 147.641 | 149.802 | 150.023 | 0 | 72
|
||||||
|
latest_only | 666.667 | 0.000 | 0.077 | 0.008 | 0 | 1
|
||||||
|
two_waiting | 1000.000 | 0.059 | 1.135 | 1.355 | 0 | 2
|
||||||
|
|
||||||
|
5. Видео, очередь, команды и телеметрия
|
||||||
|
- constant_300: fps=3.000, age P95=600.000 мс, queue max=22, waiting max=1, control P95/max=17.466/17.787 мс, emergency=1.706667;1.706667;1.706667;1.706667 мс, telemetry P95=19.574 мс.
|
||||||
|
- constant_260: fps=2.953, age P95=833.333 мс, queue max=40, waiting max=1, control P95/max=19.046/20.667 мс, emergency=7.528538;1.969231;10.513154;7.528538 мс, telemetry P95=22.144 мс.
|
||||||
|
- constant_230: fps=2.615, age P95=1000.000 мс, queue max=40, waiting max=1, control P95/max=22.157/23.357 мс, emergency=6.852174;4.660870;9.808696;10.817391 мс, telemetry P95=25.426 мс.
|
||||||
|
- step_300_230_300: fps=2.883, age P95=900.000 мс, queue max=40, waiting max=1, control P95/max=19.444/23.357 мс, emergency=1.706667;3.791304;1.706667;1.706667 мс, telemetry P95=22.541 мс.
|
||||||
|
- variable_300_260_230: fps=2.858, age P95=900.000 мс, queue max=40, waiting max=1, control P95/max=20.194/23.373 мс, emergency=7.528538;1.969231;10.513154;14.593065 мс, telemetry P95=23.376 мс.
|
||||||
|
- Политика самого свежего кадра ограничивает ожидающую видеоочередь одним кадром и не передаёт накопленную историю после восстановления.
|
||||||
|
- Политика двух ожидающих кадров ограничивает очередь двумя кадрами, но увеличивает возраст изображения относительно основной политики.
|
||||||
|
- Без удаления при дефиците скорости очередь растёт; при 300 кбит/с запас достаточен.
|
||||||
|
- У упреждающих политик нет бесполезно переданных видеобайтов: начатый кадр всегда завершается.
|
||||||
|
|
||||||
|
6. Функциональные проверки
|
||||||
|
- PASS 01_unique_repeated_frames_and_crc: PASS
|
||||||
|
- PASS 02_300kbps_latest_has_no_unnecessary_drop: PASS
|
||||||
|
- PASS 03_260kbps_no_drop_matches_small_deficit: PASS
|
||||||
|
- PASS 04_230kbps_no_drop_grows_faster: PASS
|
||||||
|
- PASS 05_latest_waiting_limit: PASS
|
||||||
|
- PASS 06_two_waiting_limit: PASS
|
||||||
|
- PASS 07_started_frame_never_dropped: PASS
|
||||||
|
- PASS 08_active_video_frames_do_not_interleave: PASS
|
||||||
|
- PASS 09_priority_between_video_packets: PASS
|
||||||
|
- PASS 10_emergency_never_deleted: PASS
|
||||||
|
- PASS 11_speed_change_bit_accounting: PASS
|
||||||
|
- PASS 12_latest_does_not_replay_full_history: PASS
|
||||||
|
- PASS 13_proactive_policies_have_no_waste: PASS
|
||||||
|
- PASS 14_incomplete_frame_not_published: PASS
|
||||||
|
- PASS 15_all_three_crc_layers_pass: PASS
|
||||||
|
- PASS 16_frame_accounting: PASS
|
||||||
|
- PASS 17_packet_and_byte_accounting: PASS
|
||||||
|
- PASS 18_reproducible: PASS
|
||||||
|
- CRC-проверено общих пакетов: 49794; FEC-блоков: 3571.
|
||||||
|
|
||||||
|
7. Созданные файлы
|
||||||
|
- tests/lab036_long_duration_scheduler.py
|
||||||
|
- data/processed/lab036/lab036_summary.csv
|
||||||
|
- data/processed/lab036/lab036_video_metrics.csv
|
||||||
|
- data/processed/lab036/lab036_control_metrics.csv
|
||||||
|
- data/processed/lab036/lab036_recovery_metrics.csv
|
||||||
|
- data/processed/lab036/lab036_report.txt
|
||||||
|
- data/processed/lab036/lab036_image_age_timeline.png
|
||||||
|
- data/processed/lab036/lab036_queue_timeline.png
|
||||||
|
- data/processed/lab036/lab036_minute_update_rate.png
|
||||||
|
- data/processed/lab036/lab036_recovery.png
|
||||||
|
- data/processed/lab036/lab036_control_delay.png
|
||||||
|
- data/processed/lab036/lab036_frame_outcomes.png
|
||||||
|
- data/processed/lab036/lab036_queue_growth_theory.png
|
||||||
|
- data/processed/lab036/lab036_policy_comparison.png
|
||||||
|
|
||||||
|
8. Итоговый Git status
|
||||||
|
- Lab036 не добавлена в индекс и не закоммичена.
|
||||||
|
|
||||||
|
## main...origin/main
|
||||||
|
?? data/processed/lab036/
|
||||||
|
?? tests/lab036_long_duration_scheduler.py
|
||||||
16
data/processed/lab036/lab036_summary.csv
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
scenario,policy,duration_seconds,mean_channel_kbps,offered_load_kbps,speed_reserve_kbps,theoretical_queue_growth_bytes_per_second,theoretical_minimum_skip_fraction,theoretical_sustainable_fps,actual_queue_growth_bytes_per_second,actual_queue_growth_bytes_per_minute,unbounded_queue_growth,mean_queue_packets,max_queue_packets,mean_queue_bytes,max_queue_bytes,mean_waiting_video_frames,max_waiting_video_frames,queue_packets_each_minute,queue_bytes_each_minute,queue_at_600s_packets,queue_at_600s_bytes,frames_remaining_at_600s,additional_drain_seconds,transmitted_packets,transmitted_bytes,replaced_state_packets
|
||||||
|
constant_300,no_drop,600.0,300.0,261.7220666666667,38.277933333333294,0.0,0.0,3.0,-11.600833333333322,-696.0499999999993,False,8.492667996111212,22,4669.600783430745,11415,0.004278044444460347,1,21;21;21;20;19;21;21;21;21;0,10503;11309;10462;10676;10137;11083;11415;10503;11309;0,0,0,0,0.0,49794,19629155,0
|
||||||
|
constant_300,latest_only,600.0,300.0,261.7220666666667,38.277933333333294,0.0,0.0,3.0,-11.600833333333322,-696.0499999999993,False,8.492667996111212,22,4669.600783430745,11415,0.004278044444460347,1,21;21;21;20;19;21;21;21;21;0,10503;11309;10462;10676;10137;11083;11415;10503;11309;0,0,0,0,0.0,49794,19629155,0
|
||||||
|
constant_300,two_waiting,600.0,300.0,261.7220666666667,38.277933333333294,0.0,0.0,3.0,-11.600833333333322,-696.0499999999993,False,8.492667996111212,22,4669.600783430745,11415,0.004278044444460347,1,21;21;21;20;19;21;21;21;21;0,10503;11309;10462;10676;10137;11083;11415;10503;11309;0,0,0,0,0.0,49794,19629155,0
|
||||||
|
constant_260,no_drop,600.0,260.0,261.7220666666667,-1.7220666666667057,215.25833333333821,0.007063478994333017,2.978809563017001,218.64944444444447,13118.966666666669,True,133.31816348352757,268,76437.33087055078,153293,6.995598665791334,15,48;65;90;117;149;176;197;214;233;238,26336;36685;49266;66106;84626;100392;113622;122901;132742;135216,238,135216,14,4.146236230854015,49794,19629155,0
|
||||||
|
constant_260,latest_only,600.0,260.0,261.7220666666667,-1.7220666666667057,215.25833333333821,0.007063478994333017,2.978809563017001,-5.668055555555536,-340.0833333333321,False,13.60260795417588,40,7605.446317388057,22420,0.2193330062846088,1,32;24;21;20;21;24;39;32;24;0,17102;12852;10462;10676;10831;12075;21812;17102;12852;0,0,0,0,0.0,49262,19314015,0
|
||||||
|
constant_260,two_waiting,600.0,260.0,261.7220666666667,-1.7220666666667057,215.25833333333821,0.007063478994333017,2.978809563017001,-12.19888888888884,-731.9333333333304,False,28.79937767032035,58,16327.143562298448,33090,1.0761970065603674,2,48;29;35;43;39;49;52;37;37;6,26336;15892;18207;24279;21038;26530;29623;19832;20554;3230,6,3230,1,0.0844823847068028,49565,19497148,0
|
||||||
|
constant_230,no_drop,600.0,230.0,261.7220666666667,-31.722066666666706,3965.258333333338,0.13011584039922786,2.6096524788023165,3967.8194444444443,238069.16666666666,True,2079.4202965547893,4155,1195926.0317054717,2388166,117.14617014497261,235,429;841;1255;1672;2093;2511;2924;3335;3745;4139,245926;481391;719062;960442;1204374;1444453;1683007;1917098;2152265;2379540,4139,2379540,235,82.75321739112997,49794,19629155,0
|
||||||
|
constant_230,latest_only,600.0,230.0,261.7220666666667,-31.722066666666706,3965.258333333338,0.13011584039922786,2.6096524788023165,-6.549722222222197,-392.9833333333318,False,19.634379733025998,40,11027.21948478135,22420,0.5571525326601725,1,37;33;38;26;34;26;28;37;38;17,19832;18324;20031;14224;18420;13291;15252;19832;21162;9569,17,9569,1,0.3167652173551687,45694,17259107,0
|
||||||
|
constant_230,two_waiting,600.0,230.0,261.7220666666667,-31.722066666666706,3965.258333333338,0.13011584039922786,2.6096524788023165,-22.350277777777745,-1341.0166666666646,False,37.376577605014,57,21232.67400510985,32658,1.5629541073964863,2,42;56;52;53;44;55;55;47;43;26,22495;31370;27643;30124;24078;29921;31266;25728;23820;14523,26,14523,2,0.4859478260450487,45709,17263971,0
|
||||||
|
step_300_230_300,no_drop,600.0,279.0,261.7220666666667,17.277933333333294,0.0,0.0,3.0,-636.2352777777767,-38174.1166666666,False,356.1464225450075,1279,204638.53781412638,734558,19.64118583244118,72,21;21;440;854;1279;781;283;21;21;0,10503;11309;248843;491202;734558;449558;163347;10503;11309;0,0,0,0,0.0,49794,19629155,0
|
||||||
|
step_300_230_300,latest_only,600.0,279.0,261.7220666666667,17.277933333333294,0.0,0.0,3.0,-16.11861111111109,-967.1166666666654,False,11.838952278707378,40,6580.107300552987,22420,0.17015513173553526,1,21;21;25;26;25;21;21;21;21;0,10503;11309;12476;14224;13263;11083;11415;10503;11309;0,0,0,0,0.0,48547,18907911,0
|
||||||
|
step_300_230_300,two_waiting,600.0,279.0,261.7220666666667,17.277933333333294,0.0,0.0,3.0,-36.86027777777775,-2211.616666666665,False,17.155767414441645,58,9639.972938771809,33090,0.47114729028487184,2,21;21;46;52;40;21;21;21;21;0,10503;11309;24377;29516;21646;11083;11415;10503;11309;0,0,0,0,0.0,48563,18916663,0
|
||||||
|
variable_300_260_230,no_drop,600.0,263.3333333333333,261.7220666666667,1.6112666666666087,0.0,0.0,3.0,-11.902777777777905,-714.1666666666742,False,103.59885527746508,326,59342.94770940146,187430,5.320544485386984,18,32;311;30;321;41;326;39;315;28;295,17102;177237;15516;182330;22254;187430;21812;181426;15284;167261,295,167261,18,5.803705685504838,49794,19629155,0
|
||||||
|
variable_300_260_230,latest_only,600.0,263.3333333333333,261.7220666666667,1.6112666666666087,0.0,0.0,3.0,-9.321944444444432,-559.3166666666659,False,14.017274428919372,40,7830.931831177453,22420,0.2651953377439788,1,32;38;21;35;21;24;39;38;24;14,17102;21162;10462;19461;10831;12463;21812;20440;12852;7745,14,7745,1,0.2608542909119933,48300,18769207,0
|
||||||
|
variable_300_260_230,two_waiting,600.0,263.3333333333333,261.7220666666667,1.6112666666666087,0.0,0.0,3.0,-18.437222222222193,-1106.2333333333315,False,23.386572906900973,56,13214.022895715687,32658,0.7951346653714808,2,32;56;30;50;41;42;39;47;28;29,17102;31370;15516;28300;22254;22274;21812;25728;15284;16347,29,16347,2,0.5623143811660611,48458,18857145,0
|
||||||
|
16
data/processed/lab036/lab036_video_metrics.csv
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
scenario,policy,created_frames,started_frames,published_frames,published_by_600s_frames,dropped_before_start_frames,published_fraction,actual_update_fps,update_fps_each_minute,mean_publication_delay_ms,p95_publication_delay_ms,max_publication_delay_ms,mean_display_age_ms,p95_display_age_ms,max_display_age_ms,display_age_over_500ms_fraction,display_age_over_1000ms_fraction,mean_no_update_duration_ms,p95_no_update_duration_ms,max_no_update_duration_ms,max_consecutive_missing_frames,mean_publication_gap_ms,max_publication_gap_ms,transmitted_video_bytes,wasted_transmitted_video_bytes,delivered_useful_video_kbps
|
||||||
|
constant_300,no_drop,1800,1800,1800,1800,0,1.0,3.0,3.000000;3.000000;3.000000;3.000000;3.000000;3.000000;3.000000;3.000000;3.000000;3.000000,287.5610518518373,311.3870000000247,322.3200000001043,459.1456979392323,600.0000000000227,633.3333333333542,0.3277787035494084,0.0,333.1482509716824,359.040666666667,380.9063333333427,0,333.30502149342215,380.9063333333427,18284899,0,155.94405333333336
|
||||||
|
constant_300,latest_only,1800,1800,1800,1800,0,1.0,3.0,3.000000;3.000000;3.000000;3.000000;3.000000;3.000000;3.000000;3.000000;3.000000;3.000000,287.5610518518373,311.3870000000247,322.3200000001043,459.1456979392323,600.0000000000227,633.3333333333542,0.3277787035494084,0.0,333.1482509716824,359.040666666667,380.9063333333427,0,333.30502149342215,380.9063333333427,18284899,0,155.94405333333336
|
||||||
|
constant_300,two_waiting,1800,1800,1800,1800,0,1.0,3.0,3.000000;3.000000;3.000000;3.000000;3.000000;3.000000;3.000000;3.000000;3.000000;3.000000,287.5610518518373,311.3870000000247,322.3200000001043,459.1456979392323,600.0000000000227,633.3333333333542,0.3277787035494084,0.0,333.1482509716824,359.040666666667,380.9063333333427,0,333.30502149342215,380.9063333333427,18284899,0,155.94405333333336
|
||||||
|
constant_260,no_drop,1800,1800,1800,1786,0,1.0,2.9766666666666666,2.966667;2.983333;2.983333;2.966667;2.966667;2.983333;2.983333;2.983333;2.966667;2.983333,2680.896184452496,4704.89366684435,5049.795205226246,2829.13958784647,4866.666666666674,5366.666666666674,0.9866688885185803,0.9030161639726713,335.75825405707894,364.2153846158749,377.67146153846375,0,335.90542861457425,377.67146153846375,18284899,0,154.79058666666668
|
||||||
|
constant_260,latest_only,1800,1772,1772,1772,28,0.9844444444444445,2.953333333333333,2.950000;2.950000;2.966667;2.950000;2.933333;2.950000;2.966667;2.950000;2.950000;2.966667,402.5770375508439,599.6618718049831,680.6464871910407,571.0159417874798,833.3333333333428,966.666666666697,0.6213964339276787,0.0,338.40947546531305,365.6923076928251,377.6714615384691,1,338.57024154106733,377.6714615384691,17969759,0,153.18773333333334
|
||||||
|
constant_260,two_waiting,1800,1787,1787,1786,13,0.9927777777777778,2.9766666666666666,2.966667;2.983333;2.983333;2.966667;2.966667;2.983333;2.983333;2.983333;2.983333;2.966667,690.9434287448678,934.1911025966964,1036.8823846180817,858.9124034883074,1166.6666666666288,1366.6666666666458,0.9716713881019831,0.19513414430928178,335.75825405707894,364.2153846153668,377.67146153846375,1,335.799658306451,377.67146153846375,18152892,0,154.73507999999998
|
||||||
|
constant_230,no_drop,1800,1800,1800,1565,0,1.0,2.6083333333333334,2.616667;2.600000;2.616667;2.600000;2.616667;2.600000;2.616667;2.600000;2.600000;2.616667,44808.52197101605,81595.11768103977,83092.17391287029,39545.96456146199,74633.33333333327,78799.99999999996,0.9990001666388936,0.9938343609398433,383.1417624521073,416.486956521112,428.2086956523017,0,383.23811853661965,428.2086956523017,18284899,0,135.61342666666667
|
||||||
|
constant_230,latest_only,1800,1570,1570,1569,230,0.8722222222222222,2.615,2.616667;2.616667;2.616667;2.600000;2.616667;2.600000;2.616667;2.633333;2.616667;2.616667,544.8765660678318,697.5368116767044,748.5217391683818,736.8216408376383,1000.0,1100.0000000000227,0.9208465255790702,0.03166138976837194,382.1656050955414,416.486956521112,428.2086956523017,1,382.3697204968717,428.2086956523017,15914851,0,135.62884
|
||||||
|
constant_230,two_waiting,1800,1571,1571,1569,229,0.8727777777777778,2.615,2.600000;2.633333;2.616667;2.616667;2.600000;2.616667;2.616667;2.616667;2.616667;2.616667,880.3126375723886,1028.5507246275927,1075.6637681217853,1076.042881741932,1333.3333333333144,1466.666666666697,0.9990001666388936,0.648891851358107,382.1656050955414,416.4869565213465,428.2086956523017,1,382.2583629103555,428.2086956523017,15919715,0,135.59438666666665
|
||||||
|
step_300_230_300,no_drop,1800,1800,1800,1800,0,1.0,3.0,3.000000;3.000000;2.583333;2.616667;2.600000;3.483333;3.466667;3.250000;3.000000;3.000000,6858.4316214417395,21791.709275375164,24108.666666679823,7025.662389601733,21966.666666666697,24433.333333333336,0.6963839360106648,0.5420763206132311,333.1482509716824,399.7217391305412,457.1161884057773,0,333.30502149342215,457.1161884057773,18284899,0,155.94405333333336
|
||||||
|
step_300_230_300,latest_only,1800,1730,1730,1730,70,0.9611111111111111,2.8833333333333333,3.000000;3.000000;2.600000;2.616667;2.600000;3.016667;3.000000;3.000000;3.000000;3.000000,357.42493844221974,650.9101448891982,741.3565216782843,542.1318669110703,900.0000000000057,1099.9999999999943,0.5044159306782203,0.009498416930511582,346.6204506065858,399.82608695632393,457.1161884057773,1,346.7991519182571,457.1161884057773,17563655,0,149.78249333333335
|
||||||
|
step_300_230_300,two_waiting,1800,1731,1731,1731,69,0.9616666666666667,2.885,3.000000;3.000000;2.600000;2.616667;2.600000;3.033333;3.000000;3.000000;3.000000;3.000000,448.4849129664068,983.2637681128205,1075.8724637457817,644.6147864244849,1233.3333333333485,1466.6666666666686,0.5299116813864356,0.1948008665222463,346.4203233256351,400.1234782608647,457.1161884057773,1,346.5986899807321,457.1161884057773,17572407,0,149.85798666666668
|
||||||
|
variable_300_260_230,no_drop,1800,1800,1800,1782,0,1.0,2.97,2.983333;2.733333;3.266667;2.716667;3.266667;2.750000;3.266667;2.733333;3.266667;2.716667,2130.1320615592713,5594.812172849652,6163.147290942874,2266.28895184136,5666.6666666666715,6433.333333333338,0.8961839693384436,0.5707382102982836,336.51149747616375,400.4869565215188,428.2086956523017,0,336.53952764120913,428.2086956523017,18284899,0,154.45788000000002
|
||||||
|
variable_300_260_230,latest_only,1800,1716,1716,1715,84,0.9533333333333334,2.8583333333333334,2.983333;2.733333;3.000000;2.716667;2.983333;2.716667;3.000000;2.733333;2.983333;2.733333,408.07981144593083,663.8076912153963,740.7304347776176,589.1795811809143,900.0000000000057,1100.0000000000227,0.6287285452424596,0.010998166972171305,349.65034965034965,400.48695652183494,428.2086956523017,1,349.8269973286741,428.2086956523017,17424951,0,148.50604
|
||||||
|
variable_300_260_230,two_waiting,1800,1725,1725,1723,75,0.9583333333333334,2.8716666666666666,2.983333;2.750000;3.016667;2.733333;3.000000;2.733333;3.016667;2.733333;3.016667;2.733333,579.2497507600725,989.023923120439,1070.3080256992052,767.0943731600289,1233.3333333333344,1433.3333333333371,0.7512081319780036,0.2422929511748042,348.0278422273782,400.48695652188826,424.8695652167953,1,348.18301951135805,424.8695652167953,17512889,0,149.19149333333334
|
||||||
|
BIN
data/processed/lab037/lab037_command_age.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
data/processed/lab037/lab037_command_gap.png
Normal file
|
After Width: | Height: | Size: 91 KiB |
37
data/processed/lab037/lab037_command_metrics.csv
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
channel_kbps,mean_bad_duration_ms,protection_mode,original_commands,repeat_copies_created,delivered_unique_states_mean,states_with_all_copies_lost_mean,undelivered_state_fraction,mean_age_ms,p95_age_ms,max_age_ms,max_gap_without_fresh_command_ms,gaps_over_100ms_mean,maximum_consecutive_undelivered_states,cancelled_pending_repeats,suppressed_duplicates_mean,repetition_overhead_kbps
|
||||||
|
300.0,10.0,none,2400,0,2342.91,57.09,0.0237875,10.064207370338313,17.46633333333314,17.787000000083708,212.45300000001066,30.9,3,0,0.0,0.0
|
||||||
|
300.0,10.0,emergency_only,2400,0,2342.96,57.04,0.023766666666666665,10.053455724115054,17.46633333333314,17.787000000083708,212.45300000001066,30.9,3,0,0.0,0.0
|
||||||
|
300.0,10.0,emergency_and_control,2400,2400,2392.61,7.39,0.0030791666666666667,8.45785116812213,17.492999999987546,40.39966666671546,156.93333333337023,4.31,2,0,2294.1,10.24
|
||||||
|
300.0,50.0,none,2400,0,2350.09,49.91,0.020795833333333333,10.06390907158428,17.46633333333314,17.787000000083708,463.83999999999935,23.36,8,0,0.0,0.0
|
||||||
|
300.0,50.0,emergency_only,2400,0,2350.12,49.88,0.020783333333333334,10.053007932945025,17.46633333333314,17.787000000083708,463.83999999999935,23.34,8,0,0.0,0.0
|
||||||
|
300.0,50.0,emergency_and_control,2400,2400,2368.81,31.19,0.012995833333333333,8.149776716309221,17.466333333345574,40.39966666671546,437.49366666666134,16.52,7,0,2331.59,10.24
|
||||||
|
300.0,200.0,none,2400,0,2352.94,47.06,0.019608333333333332,10.065125598912898,17.46633333333314,17.787000000083708,1314.5596666666534,9.69,25,0,0.0,0.0
|
||||||
|
300.0,200.0,emergency_only,2400,0,2352.93,47.07,0.0196125,10.054171590331793,17.46633333333314,17.787000000083708,1314.5596666666534,9.68,25,0,0.0,0.0
|
||||||
|
300.0,200.0,emergency_and_control,2400,2400,2358.25,41.75,0.017395833333333333,8.011422829086634,17.466333333345574,40.39966666671546,1263.7329999999736,8.96,24,0,2347.22,10.24
|
||||||
|
300.0,1000.0,none,2400,0,2356.0,44.0,0.018333333333333333,10.063361721861758,17.46633333333314,17.787000000083708,8264.347000000002,2.08,164,0,0.0,0.0
|
||||||
|
300.0,1000.0,emergency_only,2400,0,2356.0,44.0,0.018333333333333333,10.052216956723077,17.46633333333314,17.787000000083708,8264.347000000002,2.08,164,0,0.0,0.0
|
||||||
|
300.0,1000.0,emergency_and_control,2400,2400,2357.05,42.95,0.017895833333333333,7.961249001941846,17.466333333345574,40.39966666671546,8256.667000000003,2.04,164,0,2355.06,10.24
|
||||||
|
260.0,10.0,none,2400,0,2342.33,57.67,0.024029166666666667,10.587096251572822,19.00546153706273,20.66700000090549,212.89230769232148,38.14,3,0,0.0,0.0
|
||||||
|
260.0,10.0,emergency_only,2400,0,2342.54,57.46,0.023941666666666667,10.55155836426941,18.943923074033364,20.66700000090549,212.89230769232148,37.99,3,0,0.0,0.0
|
||||||
|
260.0,10.0,emergency_and_control,2400,2400,2391.93,8.07,0.0033625,11.524501787594767,20.071461539679092,43.08684615433833,208.5538461538441,4.86,3,0,2294.69,10.24
|
||||||
|
260.0,50.0,none,2400,0,2351.04,48.96,0.0204,10.589026132078255,19.00546153706273,20.66700000090549,593.5692307692477,24.94,11,0,0.0,0.0
|
||||||
|
260.0,50.0,emergency_only,2400,0,2351.03,48.97,0.020404166666666668,10.554321727015681,18.943923074033364,20.66700000090549,593.5692307692477,24.95,11,0,0.0,0.0
|
||||||
|
260.0,50.0,emergency_and_control,2400,2400,2368.11,31.89,0.0132875,11.22534996686765,19.856076923090882,43.086846153229885,607.0461538461665,16.8,11,0,2331.95,10.24
|
||||||
|
260.0,200.0,none,2400,0,2352.39,47.61,0.0198375,10.590370607315748,19.00546153706273,20.66700000090549,1208.7692307691782,10.14,23,0,0.0,0.0
|
||||||
|
260.0,200.0,emergency_only,2400,0,2352.37,47.63,0.019845833333333333,10.555450779041617,18.943923074033364,20.66700000090549,1208.7692307691782,10.14,23,0,0.0,0.0
|
||||||
|
260.0,200.0,emergency_and_control,2400,2400,2357.54,42.46,0.017691666666666668,11.102944502795141,19.794538462733158,43.086846151908276,1183.5076923075007,9.08,22,0,2346.99,10.24
|
||||||
|
260.0,1000.0,none,2400,0,2349.53,50.47,0.021029166666666668,10.59190909829356,19.00546153706273,20.66700000090549,5591.600000002416,2.45,111,0,0.0,0.0
|
||||||
|
260.0,1000.0,emergency_only,2400,0,2349.51,50.49,0.0210375,10.554948885192662,18.943923074033364,20.66700000090549,5591.600000002416,2.45,111,0,0.0,0.0
|
||||||
|
260.0,1000.0,emergency_and_control,2400,2400,2350.67,49.33,0.020554166666666665,11.063445548931949,19.763769232241657,42.93300000071554,5596.553846152844,2.43,111,0,2348.37,10.24
|
||||||
|
230.0,10.0,none,2400,0,2341.62,58.38,0.024325,12.548624274642515,22.260869572619413,23.26956522753676,220.06956521742893,30.19,3,0,0.0,0.0
|
||||||
|
230.0,10.0,emergency_only,2400,0,2342.24,57.76,0.024066666666666667,12.466533563436789,22.10434782596593,26.608695653614234,205.9130434783043,29.82,3,0,0.0,0.0
|
||||||
|
230.0,10.0,emergency_and_control,2400,2400,2389.52,10.48,0.004366666666666666,13.105058396153792,22.747826096122026,45.86086956628321,180.52173913048364,5.72,2,0,2292.76,10.24
|
||||||
|
230.0,50.0,none,2400,0,2351.4,48.6,0.02025,12.546836559947174,22.278260869718736,23.26956522753676,504.00000000009015,22.11,9,0,0.0,0.0
|
||||||
|
230.0,50.0,emergency_only,2400,0,2350.83,49.17,0.0204875,12.46013047739179,22.086956522841206,26.608695653614234,513.2521739130347,22.12,9,0,0.0,0.0
|
||||||
|
230.0,50.0,emergency_and_control,2400,2400,2368.33,31.67,0.013195833333333334,12.812162453675606,22.48695652279764,45.86086956510371,509.7043478262151,15.51,9,0,2333.53,10.24
|
||||||
|
230.0,200.0,none,2400,0,2351.31,48.69,0.0202875,12.546997135592148,22.260869572619413,23.26956522753676,1650.226086956607,9.84,32,0,0.0,0.0
|
||||||
|
230.0,200.0,emergency_only,2400,0,2351.29,48.71,0.020295833333333332,12.460327072890104,22.086956522841206,26.608695653614234,1651.200000000088,9.76,32,0,0.0,0.0
|
||||||
|
230.0,200.0,emergency_and_control,2400,2400,2356.73,43.27,0.018029166666666666,12.69135986301433,22.40000000105624,45.86086956523161,1655.9999999999775,8.94,32,0,2346.14,10.24
|
||||||
|
230.0,1000.0,none,2400,0,2350.23,49.77,0.0207375,12.54769093279944,22.260869572619413,23.26956522753676,4894.226086956465,2.34,97,0,0.0,0.0
|
||||||
|
230.0,1000.0,emergency_only,2400,0,2350.23,49.77,0.0207375,12.464516020436964,22.10434782596593,26.608695653614234,4894.226086956465,2.29,97,0,0.0,0.0
|
||||||
|
230.0,1000.0,emergency_and_control,2400,2400,2351.43,48.57,0.0202375,12.650200538271994,22.382608697000705,45.75652174048628,4875.8956521739165,2.28,96,0,2349.19,10.24
|
||||||
|
109
data/processed/lab037/lab037_emergency_metrics.csv
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
channel_kbps,mean_bad_duration_ms,protection_mode,event_time_seconds,delivered_fraction,mean_first_delivery_ms,p95_first_delivery_ms,deadline_50ms_fraction,lost_copies_mean,duplicate_copies_mean
|
||||||
|
300.0,10.0,none,30.0,0.96,1.7066666666671892,1.7066666666671892,0.96,0.04,0.0
|
||||||
|
300.0,10.0,none,60.0,0.98,1.7066666666636365,1.7066666666636365,0.98,0.02,0.0
|
||||||
|
300.0,10.0,none,90.0,0.98,1.7066666666636365,1.7066666666636365,0.98,0.02,0.0
|
||||||
|
300.0,10.0,emergency_only,30.0,1.0,2.5941333333338434,1.7066666666671892,1.0,0.12,1.88
|
||||||
|
300.0,10.0,emergency_only,60.0,0.99,1.9307744107713416,1.7066666666636365,0.99,0.06,1.95
|
||||||
|
300.0,10.0,emergency_only,90.0,1.0,2.1503999999970347,1.7066666666636365,1.0,0.06,1.94
|
||||||
|
300.0,10.0,emergency_and_control,30.0,1.0,2.5941333333338434,1.7066666666671892,1.0,0.12,1.88
|
||||||
|
300.0,10.0,emergency_and_control,60.0,1.0,2.346666666663495,1.7066666666636365,1.0,0.05,1.95
|
||||||
|
300.0,10.0,emergency_and_control,90.0,1.0,2.1503999999970347,1.7066666666636365,1.0,0.06,1.94
|
||||||
|
300.0,50.0,none,30.0,0.98,1.7066666666671892,1.7066666666671892,0.98,0.02,0.0
|
||||||
|
300.0,50.0,none,60.0,0.97,1.7066666666636365,1.7066666666636365,0.97,0.03,0.0
|
||||||
|
300.0,50.0,none,90.0,0.98,1.7066666666636365,1.7066666666636365,0.98,0.02,0.0
|
||||||
|
300.0,50.0,emergency_only,30.0,0.99,1.9307744107749303,1.7066666666671892,0.99,0.05,1.96
|
||||||
|
300.0,50.0,emergency_only,60.0,0.98,1.9330612244867265,1.7066666666636365,0.98,0.13,1.89
|
||||||
|
300.0,50.0,emergency_only,90.0,0.99,1.9307744107714133,1.7066666666636365,0.99,0.06,1.95
|
||||||
|
300.0,50.0,emergency_and_control,30.0,0.99,1.9307744107749303,1.7066666666671892,0.99,0.05,1.96
|
||||||
|
300.0,50.0,emergency_and_control,60.0,0.98,1.9330612244867265,1.7066666666636365,0.98,0.13,1.89
|
||||||
|
300.0,50.0,emergency_and_control,90.0,0.99,1.9307744107714133,1.7066666666636365,0.99,0.06,1.95
|
||||||
|
300.0,200.0,none,30.0,0.97,1.7066666666671892,1.7066666666671892,0.97,0.03,0.0
|
||||||
|
300.0,200.0,none,60.0,0.99,1.7066666666636365,1.7066666666636365,0.99,0.01,0.0
|
||||||
|
300.0,200.0,none,90.0,0.98,1.7066666666636365,1.7066666666636365,0.98,0.02,0.0
|
||||||
|
300.0,200.0,emergency_only,30.0,0.97,1.7066666666671892,1.7066666666671892,0.97,0.12,1.91
|
||||||
|
300.0,200.0,emergency_only,60.0,0.99,1.7066666666636365,1.7066666666636365,0.99,0.03,1.98
|
||||||
|
300.0,200.0,emergency_only,90.0,0.98,1.7066666666636365,1.7066666666636365,0.98,0.08,1.94
|
||||||
|
300.0,200.0,emergency_and_control,30.0,0.97,1.7066666666671892,1.7066666666671892,0.97,0.12,1.91
|
||||||
|
300.0,200.0,emergency_and_control,60.0,0.99,1.7066666666636365,1.7066666666636365,0.99,0.03,1.98
|
||||||
|
300.0,200.0,emergency_and_control,90.0,0.98,1.7066666666636365,1.7066666666636365,0.98,0.08,1.94
|
||||||
|
300.0,1000.0,none,30.0,0.96,1.7066666666671892,1.7066666666671892,0.96,0.04,0.0
|
||||||
|
300.0,1000.0,none,60.0,0.97,1.7066666666636365,1.7066666666636365,0.97,0.03,0.0
|
||||||
|
300.0,1000.0,none,90.0,1.0,1.7066666666636365,1.7066666666636365,1.0,0.0,0.0
|
||||||
|
300.0,1000.0,emergency_only,30.0,0.96,1.7066666666671892,1.7066666666671892,0.96,0.12,1.92
|
||||||
|
300.0,1000.0,emergency_only,60.0,0.98,2.1159183673438346,1.7066666666636365,0.98,0.08,1.94
|
||||||
|
300.0,1000.0,emergency_only,90.0,1.0,1.7066666666636365,1.7066666666636365,1.0,0.0,2.0
|
||||||
|
300.0,1000.0,emergency_and_control,30.0,0.96,1.7066666666671892,1.7066666666671892,0.96,0.12,1.92
|
||||||
|
300.0,1000.0,emergency_and_control,60.0,0.98,2.133333333330198,1.7066666666636365,0.98,0.08,1.94
|
||||||
|
300.0,1000.0,emergency_and_control,90.0,1.0,1.7066666666636365,1.7066666666636365,1.0,0.0,2.0
|
||||||
|
260.0,10.0,none,30.0,0.99,1.969230769230279,1.969230769230279,0.99,0.01,0.0
|
||||||
|
260.0,10.0,none,60.0,1.0,7.52853846189083,7.528538461890832,1.0,0.0,0.0
|
||||||
|
260.0,10.0,none,90.0,0.98,7.651615380964927,7.651615380964927,0.98,0.02,0.0
|
||||||
|
260.0,10.0,emergency_only,30.0,1.0,2.2252307692302864,1.969230769230279,1.0,0.09,1.91
|
||||||
|
260.0,10.0,emergency_only,60.0,1.0,7.52853846189083,7.528538461890832,1.0,0.08,1.92
|
||||||
|
260.0,10.0,emergency_only,90.0,1.0,8.209769227118926,7.651615380964927,1.0,0.07,1.93
|
||||||
|
260.0,10.0,emergency_and_control,30.0,0.99,4.689643356656431,4.1637692307823215,0.99,0.08,1.93
|
||||||
|
260.0,10.0,emergency_and_control,60.0,1.0,20.50961538584481,20.194538462767753,1.0,0.07,1.93
|
||||||
|
260.0,10.0,emergency_and_control,90.0,1.0,4.93146153515454,4.102230765923309,1.0,0.09,1.91
|
||||||
|
260.0,50.0,none,30.0,1.0,1.969230769230279,1.969230769230279,1.0,0.0,0.0
|
||||||
|
260.0,50.0,none,60.0,0.99,7.528538461890831,7.528538461890832,0.99,0.01,0.0
|
||||||
|
260.0,50.0,none,90.0,0.99,7.651615380964927,7.651615380964927,0.99,0.01,0.0
|
||||||
|
260.0,50.0,emergency_only,30.0,1.0,1.969230769230279,1.969230769230279,1.0,0.01,1.99
|
||||||
|
260.0,50.0,emergency_only,60.0,0.99,7.528538461890831,7.528538461890832,0.99,0.03,1.98
|
||||||
|
260.0,50.0,emergency_only,90.0,1.0,7.827307688657328,7.651615380964927,1.0,0.01,1.99
|
||||||
|
260.0,50.0,emergency_and_control,30.0,1.0,4.163769230782322,4.1637692307823215,1.0,0.0,2.0
|
||||||
|
260.0,50.0,emergency_and_control,60.0,0.99,20.194538462767753,20.194538462767753,0.99,0.04,1.97
|
||||||
|
260.0,50.0,emergency_and_control,90.0,1.0,4.27792307361571,4.102230765923309,1.0,0.01,1.99
|
||||||
|
260.0,200.0,none,30.0,1.0,1.969230769230279,1.969230769230279,1.0,0.0,0.0
|
||||||
|
260.0,200.0,none,60.0,0.96,7.528538461890832,7.528538461890832,0.96,0.04,0.0
|
||||||
|
260.0,200.0,none,90.0,0.99,7.651615380964927,7.651615380964927,0.99,0.01,0.0
|
||||||
|
260.0,200.0,emergency_only,30.0,1.0,1.969230769230279,1.969230769230279,1.0,0.0,2.0
|
||||||
|
260.0,200.0,emergency_only,60.0,0.96,7.528538461890832,7.528538461890832,0.96,0.12,1.92
|
||||||
|
260.0,200.0,emergency_only,90.0,0.99,7.651615380964927,7.651615380964927,0.99,0.03,1.98
|
||||||
|
260.0,200.0,emergency_and_control,30.0,1.0,4.163769230782322,4.1637692307823215,1.0,0.0,2.0
|
||||||
|
260.0,200.0,emergency_and_control,60.0,0.96,20.194538462767753,20.194538462767753,0.96,0.12,1.92
|
||||||
|
260.0,200.0,emergency_and_control,90.0,0.99,4.279697743390381,4.102230765923309,0.99,0.04,1.97
|
||||||
|
260.0,1000.0,none,30.0,1.0,1.969230769230279,1.969230769230279,1.0,0.0,0.0
|
||||||
|
260.0,1000.0,none,60.0,0.98,7.5285384618908315,7.528538461890832,0.98,0.02,0.0
|
||||||
|
260.0,1000.0,none,90.0,0.97,7.651615380964927,7.651615380964927,0.97,0.03,0.0
|
||||||
|
260.0,1000.0,emergency_only,30.0,1.0,1.969230769230279,1.969230769230279,1.0,0.01,1.99
|
||||||
|
260.0,1000.0,emergency_only,60.0,0.98,7.5285384618908315,7.528538461890832,0.98,0.06,1.96
|
||||||
|
260.0,1000.0,emergency_only,90.0,0.97,7.651615380964927,7.651615380964927,0.97,0.09,1.94
|
||||||
|
260.0,1000.0,emergency_and_control,30.0,1.0,4.163769230782322,4.1637692307823215,1.0,0.0,2.0
|
||||||
|
260.0,1000.0,emergency_and_control,60.0,0.98,20.194538462767753,20.194538462767753,0.98,0.06,1.96
|
||||||
|
260.0,1000.0,emergency_and_control,90.0,0.97,4.102230765923309,4.102230765923309,0.97,0.09,1.94
|
||||||
|
230.0,10.0,none,30.0,0.96,7.686956521535393,7.686956521535393,0.96,0.04,0.0
|
||||||
|
230.0,10.0,none,60.0,0.98,9.07826087122743,9.078260871227428,0.98,0.02,0.0
|
||||||
|
230.0,10.0,none,90.0,0.97,5.913043485378466,5.913043485378466,0.97,0.03,0.0
|
||||||
|
230.0,10.0,emergency_only,30.0,0.99,8.563899868043949,7.686956521535393,0.99,0.07,1.94
|
||||||
|
230.0,10.0,emergency_only,60.0,1.0,22.77982608840276,22.156521740576807,0.98,0.05,1.95
|
||||||
|
230.0,10.0,emergency_only,90.0,0.99,15.07632850934894,14.08695652867209,0.99,0.17,1.84
|
||||||
|
230.0,10.0,emergency_and_control,30.0,1.0,20.47582608698004,20.208695652197406,1.0,0.1,1.9
|
||||||
|
230.0,10.0,emergency_and_control,60.0,1.0,9.865739130259215,9.286956521563638,1.0,0.06,1.94
|
||||||
|
230.0,10.0,emergency_and_control,90.0,0.99,10.02828283526469,9.634782615677295,0.99,0.16,1.85
|
||||||
|
230.0,50.0,none,30.0,0.98,7.686956521535394,7.686956521535393,0.98,0.02,0.0
|
||||||
|
230.0,50.0,none,60.0,0.98,9.07826087122743,9.078260871227428,0.98,0.02,0.0
|
||||||
|
230.0,50.0,none,90.0,0.95,5.913043485378466,5.913043485378466,0.95,0.05,0.0
|
||||||
|
230.0,50.0,emergency_only,30.0,0.99,7.979270970371579,7.686956521535393,0.99,0.06,1.95
|
||||||
|
230.0,50.0,emergency_only,60.0,0.98,22.474534162936987,22.156521740576807,0.97,0.08,1.94
|
||||||
|
230.0,50.0,emergency_only,90.0,1.0,15.645217398238033,15.645217398237943,1.0,0.1,1.9
|
||||||
|
230.0,50.0,emergency_and_control,30.0,0.98,20.208695652197406,20.208695652197406,0.98,0.06,1.96
|
||||||
|
230.0,50.0,emergency_and_control,60.0,0.98,9.286956521563638,9.286956521563638,0.98,0.08,1.94
|
||||||
|
230.0,50.0,emergency_and_control,90.0,0.98,10.588819882758486,9.634782615677295,0.98,0.12,1.9
|
||||||
|
230.0,200.0,none,30.0,1.0,7.686956521535394,7.686956521535393,1.0,0.0,0.0
|
||||||
|
230.0,200.0,none,60.0,0.98,9.07826087122743,9.078260871227428,0.98,0.02,0.0
|
||||||
|
230.0,200.0,none,90.0,0.98,5.913043485378466,5.913043485378466,0.98,0.02,0.0
|
||||||
|
230.0,200.0,emergency_only,30.0,1.0,7.686956521535394,7.686956521535393,1.0,0.0,2.0
|
||||||
|
230.0,200.0,emergency_only,60.0,0.99,22.156521740576807,22.156521740576807,0.99,0.04,1.97
|
||||||
|
230.0,200.0,emergency_only,90.0,0.98,14.08695652867209,14.08695652867209,0.98,0.06,1.96
|
||||||
|
230.0,200.0,emergency_and_control,30.0,1.0,20.208695652197402,20.208695652197406,1.0,0.0,2.0
|
||||||
|
230.0,200.0,emergency_and_control,60.0,0.99,9.579270970399788,9.286956521563638,0.99,0.04,1.97
|
||||||
|
230.0,200.0,emergency_and_control,90.0,0.98,9.634782615677295,9.634782615677295,0.98,0.06,1.96
|
||||||
|
230.0,1000.0,none,30.0,0.97,7.686956521535393,7.686956521535393,0.97,0.03,0.0
|
||||||
|
230.0,1000.0,none,60.0,1.0,9.07826087122743,9.078260871227428,1.0,0.0,0.0
|
||||||
|
230.0,1000.0,none,90.0,0.98,5.913043485378466,5.913043485378466,0.98,0.02,0.0
|
||||||
|
230.0,1000.0,emergency_only,30.0,0.97,7.686956521535393,7.686956521535393,0.97,0.09,1.94
|
||||||
|
230.0,1000.0,emergency_only,60.0,1.0,22.15652174057681,22.156521740576807,1.0,0.0,2.0
|
||||||
|
230.0,1000.0,emergency_only,90.0,0.98,14.08695652867209,14.08695652867209,0.98,0.06,1.96
|
||||||
|
230.0,1000.0,emergency_and_control,30.0,0.97,20.208695652197406,20.208695652197406,0.97,0.09,1.94
|
||||||
|
230.0,1000.0,emergency_and_control,60.0,1.0,9.286956521563638,9.286956521563638,1.0,0.0,2.0
|
||||||
|
230.0,1000.0,emergency_and_control,90.0,0.98,9.634782615677295,9.634782615677295,0.98,0.06,1.96
|
||||||
|
BIN
data/processed/lab037/lab037_emergency_timeliness.png
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
data/processed/lab037/lab037_image_age.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
data/processed/lab037/lab037_load_queue.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
data/processed/lab037/lab037_protection_comparison.png
Normal file
|
After Width: | Height: | Size: 51 KiB |