Files

52 lines
3.9 KiB
Markdown
Raw Permalink 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.
# FRI Control
## Purpose
Описывает контракт управления физическим iiwa 7 через Sunrise FRI 1.16 и `ros2_control`, включая синхронизацию циклов, допустимые команды и отказ при потере надёжной связи.
## Requirements
### Requirement: Разделение циклов
FRI-клиент SHALL выполнять отдельный циклический обмен с Sunrise и синхронизировать его с блокирующим циклом `controller_manager`.
#### Scenario: Согласованный период
- **WHEN** аппаратный режим запускается с `robot.fri_cycle_ms=10`
- **THEN** частота `controller_manager` задаётся равной 100 Гц
#### Scenario: Несовпадение периода
- **WHEN** Sunrise сообщает период, отличный от настроенного FRI-периода
- **THEN** обмен фиксирует ошибку вместо продолжения движения
### Requirement: Позиционный интерфейс
Аппаратный интерфейс SHALL предоставлять команду положения для семи суставов и публиковать измеренные положение, скорость, усилие и внешний момент там, где доступны данные FRI.
#### Scenario: Активное позиционное управление
- **WHEN** FRI находится в `COMMANDING_ACTIVE` с `POSITION` и `JOINT` overlay
- **THEN** клиент передаёт полный массив семи суставных положений в радианах
### Requirement: Проверка режима и телеметрии
Система MUST отвергать командование при неверном режиме, недостаточном качестве связи, нарушении safety-состояния, неактивных приводах или нечисловой телеметрии.
#### Scenario: Неверный FRI-режим
- **WHEN** Sunrise сообщает командный режим, отличный от `POSITION` с `JOINT` overlay
- **THEN** цикл командования завершается ошибкой и не принимает новую цель приложения
### Requirement: Ограничение команды
Клиент MUST проверять конечность каждого целевого угла и допустимый диапазон до отправки; между циклами он SHALL ограничивать шаг по настроенной скорости и применять настроенное сглаживание положения.
#### Scenario: Цель за пределом
- **WHEN** получена суставная цель вне настроенных пределов
- **THEN** команда отвергается до вызова FRI `setJointPosition`
### Requirement: Остановка при нарушении цикла
Система MUST считать пропуск FRI-пакета, отсутствие продвижения временной метки, истечение watchdog и выход из `COMMANDING_ACTIVE` отказом, требующим явного восстановления.
#### Scenario: Застывший цикл ros2_control
- **WHEN** FRI-цикл не завершён `ros2_control` за 100 мс
- **THEN** FRI worker отмечает отказ и прекращает дальнейшую нормальную выдачу целей
#### Scenario: Нет готовой сессии
- **WHEN** сессия не достигла `MONITORING_READY` за 15 секунд после начала обмена
- **THEN** инициализация завершается ошибкой