### Основные функции
##### Функция определения ориентации
Вход
- данные датчиков о внешней среде и об аппарате
Выход
- измеренное состояние аппарата
##### Функция управления ориентацией
Вход
- требуемое состояние
- измеренное состояние
Выход
- управляющие сигналы на активные элементы

### Определение ориентации - декомпозиция

#### Основные функции
###### Измерение вектора магнитного поля Земли
Вход
- воздействие магнитного поля на магнитометр
- шум
Выход
- трехмерный вектор магнитного поля Земли (в СК аппарата?)
###### Измерение угловой скорости вращения аппарата
Вход
- воздействие центробежной силы на гироскоп
- шум
Выход
- трехмерный вектор угловой скорости аппарата (в СК аппарата?)

#### Сервисные (внутренние) функции ?
###### Калибровка магнитометра
Вход
- температура магнитометра
- данные магнитометра, собранные во время вращения аппарата
Выход
- калибровочные коэффициенты
- смещение показателей магнитометра
###### Закручивание аппарата
см. Демпфирование угловой скорости вращения аппарата

#### Дополнительные функции
###### Измерение вектора направления на Солнце
Вход
- угол падения светового потока на солнечный датчик Х <кол-во датчиков>
Выход
- трехмерный вектор направления на Солнце (в СК аппарата?)

### Управление ориентацией - декомпозиция
#### Основные функции
###### Демпфирование угловой скорости вращения аппарата
Вход
- измеренная угловая скорость вращения аппарата
- требуемая угловая скорость вращения аппарата
- максимальная ошибка
Выход
- вращение аппарата с требуемой угловой скоростью в пределах заданной ошибки 
#### Дополнительные функции
###### Поворот аппарата в заданное положение
Вход
- измеренное положение аппарата в пространстве (кватернион/углы Эйлера)
- требуемое положение аппарата в пространстве (кватернион/углы Эйлера)
- максимальная ошибка
Выход
- поворот аппарата в требуемое положение в пределах заданной ошибкой 



```mermaid
flowchart TB
    subgraph SENSORS[Датчики]
        M[Магнитометр]
        G[Гироскоп]
        SD[Солнечный датчик]
    end

    subgraph DET[Определение ориентации]
        direction TB
        F1[Измерение вектора МПЗ]
        F2[Измерение угловой скорости]
        F3[Измерение направления на Солнце]
        CAL[Калибровка магнитометра]
        SPIN[Закручивание аппарата]
    end

    subgraph STATE[Оценка состояния]
        EST[Измеренное состояние]
    end

    subgraph CTRL[Управление ориентацией]
        direction TB
        F4[Демпфирование угловой скорости]
        F5[Поворот в заданное положение]
    end

    subgraph ACT[Исполнительные элементы]
        COIL[Магнитные катушки]
        RW[Двигатели-маховики]
    end

    M -- "Bсырое" --> F1
    F1 -- "Bкалибр" --> CAL
    CAL -- "коэффициенты, смещение" --> F1
    G -- "ωсырое" --> F2
    SD -- "освещённость" --> F3

    F1 -- "вектор B" --> EST
    F2 -- "вектор ω" --> EST
    F3 -- "вектор S" --> EST

    EST -- "состояние" --> F4
    EST -- "состояние" --> F5

    REQ[Требуемое состояние] --> F4
    REQ --> F5

    F4 -- "ШИМ" --> COIL
    F5 -- "управляющий момент" --> RW
    SPIN -.-> F4
```



```mermaid
flowchart LR
    r(["Требуемая угловая скорость<br>ω_req = 0"]) --> SUM((Σ))
    SUM -->|"e = ω_req - ω_изм"| REG[Регулятор B-dot<br>m = -k * dB/dt]
    REG -->|m_cmd| COIL[Драйвер катушек + катушки]
    COIL -->|M_маг| SAT[Динамика спутника<br>J·ω̇ = M_маг + M_внеш]
    SAT -->|ω_факт| GYRO[Гироскоп]
    GYRO -->|ω_изм| SUM
    MAG[Магнитометр] -.->|B_изм для dB/dt| REG

```