Files
SDR-Rover/docs/LABS_INDEX.md
2026-09-03 14:42:02 +03:00

209 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Указатель лабораторных работ
Этот файл показывает, где находятся код, проверки, документы и данные
лабораторных работ. Он не заменяет отчёты и не дублирует большие IQ-записи.
Пути к внешним аппаратным данным приведены только там, где они уже зафиксированы
в документации проекта и существуют на текущем компьютере.
## Lab043
- **Цель:** воспроизводимый BPSK-канал HackRF -> HackRF с общей опорой,
независимой кадровой синхронизацией и измерением параметров радиотракта.
- **Статус:** рабочая точка BPSK и общий опорный генератор подтверждены;
дополнительные аппаратные ветви использовались для диагностики усиления,
непрерывности и асимметрии сигнала.
- **Основной эксперимент:**
[`experiments/lab043_hackrf_bpsk.py`](../experiments/lab043_hackrf_bpsk.py).
- **Основные проверки:**
[`tests/test_lab043_hackrf_bpsk.py`](../tests/test_lab043_hackrf_bpsk.py).
Дополнительные проверки находятся в файлах `tests/test_lab043_*.py`.
- **Документ состояния:**
[`docs/lab043_current_state.md`](lab043_current_state.md).
- **Обработанные данные:** каталоги
[`data/processed/lab043_diagnostics`](../data/processed/lab043_diagnostics),
[`lab043_hackrf_compare`](../data/processed/lab043_hackrf_compare),
[`lab043_hackrf_continuity`](../data/processed/lab043_hackrf_continuity),
[`lab043_hackrf_counter`](../data/processed/lab043_hackrf_counter) и
[`lab043_hackrf_gain_ladder`](../data/processed/lab043_hackrf_gain_ladder).
- **Внешние аппаратные данные:**
`C:\Users\user\Documents\SDR_Rover_Lab043_raw\`.
- **Журнал:** отдельной записи с темой Lab043 нет. Переход к Lab043 указан в
записи 020, а подтверждённая рабочая точка Lab043 используется и упоминается
в записях 021-024
([`PROJECT_LOG.md`](../PROJECT_LOG.md)).
## Lab044
- **Цель:** передача произвольного протокольного пакета через реальный
BPSK-канал HackRF с независимым решением CRC.
- **Статус:** один аппаратный запуск, `RESULT C`; преамбула и PHY sync
восстановлены, пакет не дошёл до проверки CRC.
- **Основной эксперимент:**
[`experiments/lab044_hackrf_bpsk_packet.py`](../experiments/lab044_hackrf_bpsk_packet.py).
- **Основные проверки:**
[`tests/test_lab044_hackrf_bpsk_packet.py`](../tests/test_lab044_hackrf_bpsk_packet.py).
- **Документ состояния:**
[`docs/lab044_current_state.md`](lab044_current_state.md).
- **Обработанные данные:** отдельные результаты не сохранялись; каталог
[`data/processed/lab044`](../data/processed/lab044) содержит только
навигационный README.
- **Внешние аппаратные данные:**
`C:\Users\user\Documents\SDR_Rover_Lab044_raw\20260831_140142_bpsk_packet\`.
- **Журнал:** подготовка в записи 021, аппаратный результат в записи 022
([`PROJECT_LOG.md`](../PROJECT_LOG.md)).
## Lab045
- **Цель:** защищённый BPSK-кадр со свёрточным FEC R=1/2, K=7, перемежением,
мягким декодером Витерби, защищённым PHY-заголовком и CRC.
- **Статус:** аппаратный `RESULT A`; исправление реальных ошибок FEC доказано,
CRC пройден, полезная нагрузка восстановлена без ошибок.
- **Основной эксперимент:**
[`experiments/lab045_hackrf_bpsk_fec.py`](../experiments/lab045_hackrf_bpsk_fec.py).
- **Основные проверки:**
[`tests/test_lab045_hackrf_bpsk_fec.py`](../tests/test_lab045_hackrf_bpsk_fec.py).
- **Документ состояния:**
[`docs/lab045_current_state.md`](lab045_current_state.md).
- **Обработанные данные:** отдельные результаты не сохранялись; каталог
[`data/processed/lab045`](../data/processed/lab045) содержит только
навигационный README.
- **Внешние аппаратные данные:**
`C:\Users\user\Documents\SDR_Rover_Lab045_raw\20260901_103434_bpsk_fec\`.
- **Журнал:** программная подготовка в записи 023, аппаратный результат в
записи 024 ([`PROJECT_LOG.md`](../PROJECT_LOG.md)).
## Lab046
- **Цель:** фрагментация произвольного бинарного объекта, передача его
несколькими независимо защищёнными кадрами Lab045 и аварийно-безопасная
сборка объекта.
- **Статус:** программная проверка завершена успешно; RF не запускался.
- **Основной эксперимент:**
[`experiments/lab046_bpsk_object_transport.py`](../experiments/lab046_bpsk_object_transport.py).
- **Основные проверки:**
[`tests/test_lab046_bpsk_object_transport.py`](../tests/test_lab046_bpsk_object_transport.py).
- **Документ состояния:**
[`docs/lab046_current_state.md`](lab046_current_state.md).
- **Обработанные данные:** отдельного каталога в `data/processed` нет.
- **Внешние аппаратные данные:** отсутствуют, поскольку этап программный.
- **Журнал:** запись 025 ([`PROJECT_LOG.md`](../PROJECT_LOG.md)).
## Lab046A
- **Цель:** независимый поиск и приём нескольких кадров объекта в одном
непрерывном нормированном потоке мягких BPSK-значений.
- **Статус:** программная проверка завершена успешно; работа с IQ и
аппаратная проверка на этом этапе не выполнялись.
- **Основной эксперимент:** отдельного `lab046a_*.py` нет; реализация находится
в [`experiments/lab046_bpsk_object_transport.py`](../experiments/lab046_bpsk_object_transport.py).
- **Основные проверки:** отдельного `test_lab046a_*.py` нет; сценарии находятся
в [`tests/test_lab046_bpsk_object_transport.py`](../tests/test_lab046_bpsk_object_transport.py).
- **Документ состояния:**
[`docs/lab046_current_state.md`](lab046_current_state.md).
- **Обработанные данные:** отдельного каталога в `data/processed` нет.
- **Внешние аппаратные данные:** отсутствуют, поскольку этап программный.
- **Журнал:** запись 026 ([`PROJECT_LOG.md`](../PROJECT_LOG.md)).
## Lab046B
- **Цель:** поиск и приём нескольких полных кадров Lab045 в одном непрерывном
сыром IQ-потоке без использования границ кадров передатчика.
- **Статус:** программная проверка завершена успешно; RF не запускался.
- **Основной эксперимент:**
[`experiments/lab046b_continuous_iq.py`](../experiments/lab046b_continuous_iq.py).
- **Основные проверки:**
[`tests/test_lab046b_continuous_iq.py`](../tests/test_lab046b_continuous_iq.py).
- **Документ состояния:**
[`docs/lab046_current_state.md`](lab046_current_state.md).
- **Обработанные данные:** отдельного каталога в `data/processed` нет.
- **Внешние аппаратные данные:** отсутствуют, поскольку этап программный.
- **Журнал:** запись 027 ([`PROJECT_LOG.md`](../PROJECT_LOG.md)).
## Lab046C
- **Цель:** непрерывная аппаратная передача объекта 16 КиБ последовательностью
защищённых BPSK-кадров и независимое восстановление объекта из IQ-записи.
- **Статус:** полный аппаратный результат на 1400 МГц равен `RESULT A`:
принято 68/68 кадров, объект восстановлен без ошибок. Первый полный опыт на
1080 МГц сохраняется отдельно как исторический `RESULT C`.
- **Основной аппаратный эксперимент:**
[`experiments/lab046c_hackrf_bpsk_object.py`](../experiments/lab046c_hackrf_bpsk_object.py).
- **Автономная обработка сохранённых записей:**
[`experiments/lab046c_offline_recovery.py`](../experiments/lab046c_offline_recovery.py).
- **Основные проверки:**
[`tests/test_lab046c_hackrf_bpsk_object.py`](../tests/test_lab046c_hackrf_bpsk_object.py)
и
[`tests/test_lab046c_offline_recovery.py`](../tests/test_lab046c_offline_recovery.py).
- **Документы состояния:**
[`docs/lab046_current_state.md`](lab046_current_state.md) и отдельный отчёт
о короткой записи 1400 МГц
[`docs/lab046c_1400mhz_offline_reprocessing.md`](lab046c_1400mhz_offline_reprocessing.md).
- **Обработанные данные:** локально присутствуют каталоги
`data/processed/lab046c_offline_recovery` и
`data/processed/lab046c_1400mhz_offline`; в текущем состоянии Git их файлы
не отслеживаются.
- **Внешние аппаратные данные:**
`C:\Users\user\Documents\SDR_Rover_Lab046_raw\20260901_145339_bpsk_object\`,
`C:\Users\user\Documents\SDR_Rover_RF_Check\20260901_172749_1400MHz\` и
`C:\Users\user\Documents\SDR_Rover_Lab046_raw\20260902_151819_1400MHz_full\`.
- **Журнал:** записи 028-032 ([`PROJECT_LOG.md`](../PROJECT_LOG.md)).
## Lab047
- **Цель:** передача настоящего JPEG как обычного двоичного объекта через уже
проверенный транспорт Lab046 и восстановление файла с проверкой SHA-256 и
декодирования изображения.
- **Статус:** завершена успешно. В одном непрерывном аппаратном сеансе при
1400 МГц передан настоящий JPEG: 36/36 кадров, 19 ошибок кодированных бит до
FEC, 0 ошибок после FEC, CRC PASS/FAIL 36/0. Объект собран полностью,
SHA-256 совпал, Pillow декодирует JPEG RGB 320 x 240, ошибок байтов и битов
нет. `REAL RF JPEG TRANSPORT = PASS`.
- **Основной эксперимент:**
[`experiments/lab047_jpeg_object_transport.py`](../experiments/lab047_jpeg_object_transport.py).
- **Основные проверки:**
[`tests/test_lab047_jpeg_object_transport.py`](../tests/test_lab047_jpeg_object_transport.py).
- **Документ состояния:**
[`docs/lab047_current_state.md`](lab047_current_state.md).
- **Обработанные данные:** малые демонстрационные JPEG и отчёты находятся в
[`data/processed/lab047`](../data/processed/lab047). Большие потоки `cs8` и
сырые IQ там не хранятся.
- **Внешние аппаратные данные:** исходная RX-запись и результаты находятся в
`C:\Users\user\Documents\SDR_Rover_Lab047_raw\20260903_115747`; большие
потоки `cs8` и сырые IQ в Git не добавляются.
- **История приёма:** первоначальная обработка остановилась до PHY/FEC/CRC по
`MAX_CANDIDATES_REACHED`. После исправления последовательной обработки один
полный автономный анализ исходной записи восстановил JPEG точно; порог
`0.030964473262429237` не менялся, второй RF-сеанс не выполнялся.
- **Журнал:** записи 033-034 ([`PROJECT_LOG.md`](../PROJECT_LOG.md)).
## Lab048
- **Цель:** профилирование и ускорение доказанного автономного BPSK-приёмника
без изменения детектора, PHY, FEC, CRC и порога.
- **Статус:** завершена успешно только на сохранённой RX-записи Lab047;
обработка ускорена с 37,423910 до 13,966058 с, в 2,679633 раза. Для 15,0 с
эфира отношение времени обработки равно 0,931071:
`REAL-TIME CAPABLE = YES`.
- **Результат:** сохранены 36/36 кадров, FEC PASS 36/36, CRC PASS/FAIL 36/0,
полный JPEG, точный SHA-256, 0 ошибочных байтов и битов. Порог
`0.030964473262429237` не изменён.
- **Ограничение:** приблизительный пик памяти остаётся около 1,44 ГиБ из-за
16-миллионного блока грубого поиска; запас реального времени около 1,03 с.
- **Основной эксперимент:**
[`experiments/lab048_receiver_performance.py`](../experiments/lab048_receiver_performance.py).
- **Проверки:**
[`tests/test_lab048_receiver_performance.py`](../tests/test_lab048_receiver_performance.py).
- **Документ состояния:**
[`docs/lab048_current_state.md`](lab048_current_state.md).
- **Обработанные данные:** машинный результат и восстановленный JPEG находятся
в [`data/processed/lab048`](../data/processed/lab048).
- **RF:** новый радиосеанс не выполнялся, `RF TX = 0`.
- **Журнал:** запись 035 ([`PROJECT_LOG.md`](../PROJECT_LOG.md)).
## Правило хранения данных
Большие записи IQ, потоки `cs8`, бинарные объекты и другие аппаратные исходные
данные остаются во внешних каталогах. В `data/processed` хранятся только
небольшие обработанные результаты или навигационные README. Пустые и
фиктивные файлы результатов не создаются.