Skip to content

refactor(firmware): make control tick data flow explicit (LOS-166) - #310

Merged
LostPointer merged 1 commit into
developfrom
lostpointmeister/los-166-control-tick
Jul 28, 2026
Merged

refactor(firmware): make control tick data flow explicit (LOS-166)#310
LostPointer merged 1 commit into
developfrom
lostpointmeister/los-166-control-tick

Conversation

@LostPointer

Copy link
Copy Markdown
Contributor

Описание

Второй этап LOS-166: делает data flow одного 500 Hz control tick явным и оставляет в ControlLoopProcessor только намеренно межтиковое состояние. Математика стабилизации, порядок safety-стадий и внешние контракты не меняются.

Тип изменений

  • Новая функциональность (feat)
  • Исправление бага (fix)
  • Рефакторинг (refactor)
  • Документация (docs)
  • Тесты (test)
  • CI/CD (chore)
  • Performance оптимизация

Что было сделано

  • Добавлены value-контракты ControlSetpoint, ControlTickInput и ControlTickState.
  • Per-tick config, sensors, estimate и команды перенесены из полей процессора в snapshots; в PersistentState оставлены только данные, реально живущие между тиками.
  • Стадии config → components → estimation → calibration → control → stabilization → failsafe → PWM → telemetry получают явные входы и состояние.
  • CalibrationEffects явно сообщает о смене reference frame и сбросе EKF; cached estimate синхронизируется до auto-drive.
  • Сохранены Kids counterfactual motor-model path, failsafe edge resets, profiler boundaries и единственный GetConfig() на тик.

Как тестировать

  1. Собрать host targets через CMake.
  2. Запустить unit_tests --gtest_brief=1 — 998 тестов должны пройти.
  3. Собрать sim_host.
  4. Собрать с RC_PROFILE_LOOP=ON и запустить Processor/Estimator/Calibration suites.
  5. Запустить changed-lines проверку clang-format-20.

Checklist

  • Код соответствует Code Style Guide
  • Добавлены/обновлены unit тесты
  • Существующие integration тесты проходят
  • Все доступные локальные тесты проходят
  • Линтер changed-lines проходит
  • Код отформатирован
  • Проведен self-review
  • Нет закомментированного кода
  • Нет debug prints/логов
  • Проверены edge cases
  • Обработка reset effects добавлена
  • ESP-IDF target build

Breaking Changes

  • Да
  • Нет

Performance Impact

  • Улучшает
  • Ухудшает
  • Не влияет
  • Не измерялось

На host подтверждена профильная сборка; измерение 2 ms budget на ESP32-S3 не выполнялось, поскольку idf.py недоступен.

Связанные задачи

Related to LOS-166.
Follow-up to #309.

Для reviewer

  • Проверьте эквивалентность порядка стадий и сохранение previous-tick command для estimator.
  • Проверьте ownership PersistentState, calibration reset synchronization и Kids motor-model path.

Автор: @LostPointer

@LostPointer
LostPointer marked this pull request as ready for review July 28, 2026 11:52
@LostPointer
LostPointer merged commit f9ebdc3 into develop Jul 28, 2026
8 checks passed
@LostPointer
LostPointer deleted the lostpointmeister/los-166-control-tick branch July 28, 2026 11:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant