44 lines
2.9 KiB
Markdown
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` до вызова планирования и исполнения
|
|
|