Files

44 lines
2.9 KiB
Markdown

# Observability
## Purpose
Определяет доступные оператору средства наблюдения за состоянием робота и симуляции и требования к диагностике отказов без сокрытия ошибок связи или движения.
## Requirements
### Requirement: Суставная телеметрия
Активный контроллер SHALL публиковать измеренное состояние семи суставов через `joint_state_broadcaster` для планирования и внешнего чтения.
#### Scenario: Работа контроллера
- **WHEN** аппаратный или симуляционный контроллер активен
- **THEN** `/joint_states` доступен серверу движения, веб-мосту и визуализации
### Requirement: RViz по запросу
Основной launch SHALL поддерживать отдельный аргумент `rviz` для визуализации модели и планирования.
#### Scenario: RViz включён
- **WHEN** launch получает `rviz:=true`
- **THEN** запускаются RViz-узлы с конфигурацией из `digital_twin.rviz.config`
### Requirement: Foxglove bridge по настройке
При `foxglove.enabled=true` система SHALL запускать `foxglove_bridge` с настроенными портом, адресом, TLS и списками разрешённых топиков, сервисов и параметров.
#### Scenario: Foxglove отключён
- **WHEN** `foxglove.enabled=false`
- **THEN** bridge не запускается основным launch
### Requirement: Явное сообщение об отказе FRI
Аппаратная подсистема MUST сообщать диагностическую причину ошибки FRI, включая ошибки SDK, тайм-аут цикла, неверный период и потерю сессии.
#### Scenario: Ошибка FRI step
- **WHEN** FRI `step()` завершается неуспешно
- **THEN** worker отмечает отказ, прекращает нормальный обмен и выводит сообщение об ошибке
### Requirement: Различение состояний движения
Action движения SHALL публиковать обратную связь `planning` и `executing`, а окончательный результат SHALL содержать сообщение, пригодное для диагностики.
#### Scenario: Планирование цели
- **WHEN** сервер начал обработку action-цели
- **THEN** клиент получает стадию `planning`, затем `executing` до вызова планирования и исполнения