ADCS - Attitude Determination and Control System
# Функциональная схема

Из SwissCube: [[S3-B-C-ADCS-1-3-ADCS_HW_and_System.pdf]]
![[Лелеков Вестник Ed1.pdf]]

(убрать TLE, пропагатор, модель магнитного поля Земли - не нужны для B-dot)
# Уровень 1 (контекст, границы)
Система имеет 2 основные функции
### Функция определения ориентации 
- Принимает данные датчиков о состоянии аппарата во внешней среде
- Выдает измеренное состояние аппарата
### Функция управления ориентацией
- Принимает требуемое состояние
- Принимает измеренное состояние
- Выдает управляющие сигналы на активные элементы
# Уровень 2 (принцип построения)
### Активные элементы
Магнитные катушки (по 3 осям)
- Принимают управляющий сигнал
- Выдают момент вращения
### Набор датчиков
- Магнитометр (3-осный)
	измеряет вектор магнитного поля Земли
- Гироскоп (3-осный)
	измеряет вектор угловой скорости 
- Акселерометр (3-осный)
	измеряет вектор углового ускорения
- Солнечные датчики (фотодиоды, 6 граней)
	позволяют вычислить вектор направления на Солнце
- Датчики температуры (сколько?)
	позволяют компенсировать дрейф других датчиков
# Уровень 3 (декомпозиция)
### Определение ориентации
- (расширенный?) Фильтр Калмана (устранение шума) 
### Управление ориентацией
- B-dot (демпфирование)
### Датчики
- Калибровка (алгоритм?)
- Температурная компенсация (модели, алгоритм?)
- Вычисление вектора на Солнце (алгоритм?)



# Перечисление функций
Измерение
- Калибровка датчика
- Опросить датчик
- Отфильтровать шумы
- Агрегировать разные датчики
- Получить измеренную ориентацию
- Компенсировать температурный дрейф
Управление
- Вычислить вектор B-dot
- Сформировать управляющий сигнал
- Вычислить текущую ошибку
Взаимодействие с подсистемами
- Сохранить данные в общую память
- Сформировать объект телеметрии
- Регулировать катушки через СЭП?
- Выполнить команду от БС

# Режимы

| Режим         | Выполняемые функции                                                               |
| ------------- | --------------------------------------------------------------------------------- |
| Выключена     | Нет                                                                               |
| Ожидание      | Ожидание команд                                                                   |
| Измерение     | ~<br>Опрос датчиков, фильтрация, сохранение<br>Формирование телеметрии            |
| Демпфирование | ~<br>Вычисление B-dot<br>Формирование вектора для катушек<br>Управление катушками |





Из [[S3-B-ADCS-1-4-ADCS_Hardware.pdf]]
![[attachments/Pasted image 20260420231042.png]]


![[Pasted image 20260420231401.png]]

![[Pasted image 20260420231548.png]]


Из [[S3-B-C-ADCS-1-0-Sytem_Engineering before delta-PDR.pdf]]
![[Pasted image 20260420232949.png]]

![[Pasted image 20260420233430.png]]


Из [[S3-B-C-SET-1-2-Delta-PDR Mission_System_Overview.pdf]] (обновленная)
![[Pasted image 20260420234221.png]]














Диаграмма через D2:
```d2
#direction: right

outer: Внешняя среда {
	field: Магнитное поле Земли
	sun: Солнце
}

adcs: Система ориентации {
	control: Алгоритмы управления
	determ: Алгоритмы определения ориентации
	actuators: Актуаторы (катушки)
	sensors: Датчики {
		mag: Магнитометр (3d)
		gyro: Гироскоп (3d)
		accel: Акселерометр (3d)
		sun: Солнечные датчики (x6)
	}
}

cubesat: Кубсат

desired: Требуемое состояние

estimated: Вычисленное состояние

noise: Шум

sum: + {
	width: 30
	height: 30
	shape: circle
}

adcs.control -> adcs.actuators -> cubesat: управляющий момент
adcs.sensors -> adcs.determ
noise -> adcs.determ

desired -> sum 
sum -> adcs.control
adcs.determ -> estimated -> sum

outer -> cubesat: возмущающие моменты
outer -> adcs.sensors: измеряемое воздействие
cubesat -> adcs.sensors


```

```mermaid
flowchart LR

    subgraph outer["Внешняя среда"]

        field["Магнитное поле Земли"]

        sun["Солнце"]

    end

  

    subgraph adcs["Система ориентации"]

        control["Алгоритмы управления"]

        determ["Алгоритмы определения ориентации"]

        actuators["Актуаторы (катушки)"]

        subgraph sensors["Датчики"]

            mag["Магнитометр (3d)"]

            gyro["Гироскоп (3d)"]

            accel["Акселерометр (3d)"]

            suns["Солнечные датчики (x6)"]

        end

    end

  

    cubesat["Кубсат"]

    desired["Требуемое состояние"]

    estimated["Вычисленное состояние"]

    noise["Шум"]

    sum((+))

  

    %% Основные связи

    control --> actuators

    actuators -->|управляющий момент| cubesat

    sensors --> determ

    noise --> determ

  

    desired --> sum

    sum --> control

    determ --> estimated

    estimated --> sum

  

    %% Внешние воздействия

    outer -->|возмущающие моменты| cubesat

    outer -->|измеряемое воздействие| sensors

    cubesat --> sensors
```