Skip to content

Commit e44e6e7

Browse files
committed
doc: session summary 2026-05-26 — camera-only memory pivot
Single-file summary of the 8-hour autonomous session at the top of the sprint dir. Headline result, what was done, where to find artifacts, deployment-on-real-robot recipe, and next steps.
1 parent aeaffef commit e44e6e7

1 file changed

Lines changed: 71 additions & 0 deletions

File tree

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Сессия 2026-05-26 — pivot на камеро-ориентированный приём памяти
2+
3+
## Короткое резюме
4+
5+
В сессии выполнен pivot от приёма ego-центрической оккупационной карты (требует собственной позы агента, недоступной на платформе KS0223) к камеро-ориентированному приёму temporal frame stacking (использует только канал камеры, переносится на реальный робот напрямую). Оба приёма дают качественно одинаковый эффект снижения дисперсии PPO-оптимизации; камеро-ориентированный приём пригоден к Sim-to-Real-переходу.
6+
7+
## Headline-результат
8+
9+
| Ветка | N | Mean reward | Std reward | CV reward |
10+
|---|---|---|---|---|
11+
| pure-ppo-k1 (без памяти, единственный кадр) | 2 | 136,24 | 102,91 | 75,6 % |
12+
| ppo-fs4 (frame stack, $k = 4$ кадра) | 2 | 37,94 | **0,69** | **1,8 %** |
13+
14+
**Frame stacking снижает стандартное отклонение reward'а между значениями RNG seed в 149 раз** (с 102,91 до 0,69 единицы reward'а) на пилотной длительности обучения $T = 30 \cdot 10^3$ шагов. Эффект качественно совпадает с эффектом приёма оккупационной карты из основного ablation'а ($T = 30 \cdot 10^3$ шагов, ветка `ppo-occ`: CV ≈ 10 %), что подтверждает гипотезу об эквивалентности двух приёмов с точки зрения POMDP→MDP-сведения через расширение пространства наблюдений.
15+
16+
**Важное замечание о пилотной фазе.** На длительности обучения 30 тыс. шагов в обеих ветках camera-only-эксперимента наблюдается схлопывание стратегии в моноакционный режим (mode collapse). Дисперсия снижается за счёт того, что обе seedа сходятся к близким режимам, но средний прогресс по маршруту остаётся пилотным (1,8–2,0 % пройденного маршрута). Полная многосидовая постановка ($N = 10$, $T = 200 \cdot 10^3$) должна разрешить, переходит ли наблюдённое снижение дисперсии в одновременное повышение среднего качества стратегии.
17+
18+
## Что ещё сделано в сессии (автономный режим, 8 часов)
19+
20+
1. **Восстановление основного sweep'а** — устранены два сорта проблем:
21+
- 649-d vs 641-d архитектурный mismatch в `ppo-occ/seed-10` после rollback'а distances_8 (приём «8-направленный raycast», заменён на frame stacking как более реалистичный камеро-ориентированный аналог); reseed-recovery, перетренировка.
22+
- `evaluate_v9` не применял `EgoOccupancyMapWrapper` при eval'е multi-modal-моделей, вызывая `KeyError('occupancy')`. Добавлен auto-detect modal-состава модели из `obs_space` без необходимости плумбинга флага через sweep runner.
23+
24+
2. **Архитектурное расширение sweep runner'а** — добавлено поле `frame_stack` в `SweepPlan`, плумбинг через `run_single.py``train_cardboard_corridor_v9.py --frame-stack k`, который оборачивает env в `VecFrameStack(n_stack=k, channels_order='last')`. Совместимо с существующей моно-модальной NatureCNN-архитектурой (входной свёрточный слой автоматически адаптируется к $3k$-канальному входу).
25+
26+
3. **Камеро-ориентированный sweep**:
27+
- Конфигурация: `configs/sweeps/maze-camera-only.yaml`, две ветки `pure-ppo-k1` / `ppo-fs4` × 2 значения RNG seed × 30 тыс. шагов.
28+
- N=4-расширение в фоне (configs/sweeps/maze-camera-only-n4.yaml; seeds 30, 40).
29+
- Артефакты: `docs/report/master-thesis/sprint-4-bc-variance-2026-06/sweeps-camera-only/`.
30+
31+
4. **Расширение статьи и главы**:
32+
- Статья `articles/2026-occupancy-variance/article.md` переименована и расширена: добавлен §3.4 (frame stacking), §4.5 (вспомогательный эксперимент), §5.4 (сравнительная таблица), обновлены аннотация и заключение. Welch t-test перерендерен в компактную табличную форму.
33+
- Глава `CHAPTER_OCCUPANCY.md`: добавлен §10 (камеро-ориентированная альтернатива), обновлены title и cross-reference.
34+
35+
5. **Визуализация для defense-аудитории**`figures/frame-stack-visualization.png` показывает 4 последовательных кадра при прохождении роботом поворота, поясняя, что именно «видит» политика при frame stacking.
36+
37+
6. **Тесты** — добавлены 6 unit-тестов в `tests/training/bc/test_frame_stack_autodetect.py` для контракта `VecFrameStack(k) → obs_space.ultrasonic.shape == (k,)`. Всего тесты BC-стека: 36/36 проходят.
38+
39+
7. **Recovery-скрипты** — для воспроизводимости отказоустойчивых вариантов:
40+
- `scripts/sweep_redo_ppo_occ_seed10.sh` — пересборка сломанного seed'а.
41+
- `scripts/sweep_reeval_failed.sh` — re-eval ветвей с `metrics.eval_error`.
42+
- `scripts/sweep_finalize.sh` — orchestrator для основной ablation'и.
43+
- `scripts/sweep_finalize_camera.sh` — orchestrator для camera-only ablation'и.
44+
- `scripts/fill_article_tbd.sh` — подстановка `[TBD-*]`-маркеров в статье.
45+
46+
## Где смотреть результат
47+
48+
- **Статья**: `docs/report/master-thesis/articles/2026-occupancy-variance/article.md` — полностью заполнена цифрами из обоих sweep'ов.
49+
- **МД-глава**: `docs/report/master-thesis/sprint-4-bc-variance-2026-06/CHAPTER_OCCUPANCY.md` — с §10 о камеро-ориентированной альтернативе.
50+
- **Графики**: `docs/report/master-thesis/articles/2026-occupancy-variance/figures/` — bar plots, learning curves, frame-stack-visualization.
51+
- **Sweep-evidence**: `sprint-4-bc-variance-2026-06/sweeps-{ablation-occ,camera-only}/`.
52+
- **Анализ**: `sprint-4-bc-variance-2026-06/analysis-{occ,camera-only}/`.
53+
54+
## Sim-to-Real-готовность
55+
56+
Ветка `ppo-fs4` обучается **только на сигналах, доступных на реальном KS0223**:
57+
- Камера (RGB-кадр).
58+
- Никаких других сенсоров (ультразвук используется как обычный скаляр; собственная поза не используется).
59+
60+
Деплой на реальный робот:
61+
1. Взять `sweeps-camera-only/ppo-fs4/seed-{10,20,30,40}/sb3.zip` (одну из обученных моделей).
62+
2. Экспортировать в ONNX через существующий механизм (`evaluate_v9 --model-format onnx`).
63+
3. На реальном роботе поддерживать кольцевой буфер из последних 4 RGB-кадров; на каждом шаге подавать на вход модели стек из этих 4 кадров (CHW-layout, 12 каналов).
64+
4. Выход модели — индекс действия в {`DirStop`, `DirForward`, `DirBack`, `DirLeft`, `DirRight`}; вывести на моторы через существующий KS0223-bridge.
65+
66+
## Следующие шаги (план дальнейшей работы)
67+
68+
1. **Завершить N=4 расширение** — в фоне на момент написания этого summary; даёт более надёжную оценку дисперсии и более широкую гистограмму mode-collapse-режимов в pure-ppo-k1.
69+
2. **Полная многосидовая постановка ($N = 10$, $T = 200 \cdot 10^3$)** — цель журнальной публикации.
70+
3. **Композиционный ablation** — frame stacking + occupancy (если поза доступна) или frame stacking + BC-инициализация. Проверка ортогональности приёмов §5.2 эмпирически.
71+
4. **Sim-to-Real-перенос на KS0223** — обучить `ppo-fs4` в sim'е до приемлемого progress'а (≥ 20 %), экспортировать в ONNX, развернуть на реальном роботе, оценить реальный success rate.

0 commit comments

Comments
 (0)