Минимальные требования:
💡 Примечание: Большинство функций работают без дополнительных工具箱, но для полной функциональности рекомендуется установить указанные пакеты.
Изучение базовых принципов системного подхода для проектирования и анализа робототехнических систем
Система — совокупность взаимосвязанных элементов, образующих целостность и выполняющих определённую функцию.
| Свойство | Определение | Пример LFR |
|---|---|---|
| Целостность | Система работает как единое целое | Робот движется согласованно |
| Эмерджентность | Свойства ≠ сумме свойств элементов | Датчики по отдельности не следят за линией |
| Иерархичность | Подсистемы и надсистемы | Датчик → блок управления → робот |
Методология исследования и проектирования, основанная на представлении объекта как системы.
Декомпозиция — разбиение сложной задачи на подзадачи.
| Критерий | Определение |
|---|---|
| Быстродействие | Время реакции |
| Точность | Отклонение от требуемого |
| Надёжность | Время безотказной работы |
Минимальный набор переменных, описывающих "память" системы.
| Группа | Варианты | Характеристики | Критические параметры | Целевые показатели | Особенности |
|---|---|---|---|---|---|
| Группа 1: Эконом | 1: Складской эконом | m=1.2±0.1 кг, μ=0.28, бюджет ≤4500 руб | Стоимость | v≥0.8 м/с, перерегулирование ≤20% | Работа 16 ч/сут |
| 8: Офисный логист | m=2.1±0.2 кг, μ=0.32 | Энергоэффективность | v=0.5-0.7 м/с, КПД≥85% | USB-C зарядка | |
| Группа 2: Точные | 2: Лабораторный точник | m=0.25±0.05 кг, μ=0.55 | Точность ±2 мм | v=0.3-0.4 м/с, перерегулирование ≤5% | Чистая комната |
| 5: Медицинский курьер | m=1.8±0.2 кг, μ=0.42 | Шум ≤40 дБ | v=0.7-0.9 м/с, вибрации ≤0.1g | Стерильность | |
| 9: Учебный тренажёр | m=0.9±0.1 кг, μ=0.48, бюджет ≤8000 руб | Наглядность | Изменение параметров "на лету" | Открытый API | |
| Группа 3: Промышленные | 3: Промышленный тяжеловес | m=7.5±1.0 кг, μ=0.18 | Наработка ≥2000 ч | v≥0.6 м/с, тяга ≥50 Н | IP54, -40..+40°C |
| 6: Библиотечный помощник | m=3.2±0.3 кг, μ=0.35 | Безопасность | v=0.4-0.6 м/с, тормозной путь ≤0.5 м | Мягкий бампер | |
| 7: Строительный инспектор | m=4.5±0.5 кг, μ=0.25-0.65 | Всепогодность -20..+50°C | v≥0.8 м/с, запас хода ≥4 ч | Стабилизация | |
| Группа 4: Экстремальные | 4: Соревновательный гонщик | m≤0.8 кг, μ=0.72 | v≥2.5 м/с | Время круга ≤8 с, перегрузки до 3g | Аэродинамика |
| 10: Аэропортный гид | m=5.8±0.4 кг, μ=0.38 | Наработка ≥5000 ч | v=0.4-1.2 м/с, 24/7 | Crowd avoidance | |
| 11: Сельскохозяйственный | m=2.8±0.3 кг, μ=0.22-0.80 | Влажность 100% | v=0.2-0.5 м/с, автономность ≥12 ч | Мойка давлением |
Масса: 1.2 кг, μ: 0.28, v≥0.8 м/с, бюджет ≤4500 руб.
Сила трения: F_тр = μ·m·g = 0.28·1.2·9.81 ≈ 3.3 Н.
Необходимая мощность: P = F·v = 3.3·0.8 ≈ 2.6 Вт.
Центростремительное ускорение на повороте: a = v²/R. При v=2.5 м/с, R=0.5 м: a≈12.5 м/с² ≈1.3g.
Создайте папку проекта со следующими файлами:
Учёт энергопотребления, шумов, тепла, препятствий и других требований ТЗ
| Символ | Величина | Единица измерения |
|---|---|---|
| $t$ | Время | с |
| $v$ | Линейная скорость робота | м/с |
| $\omega$ | Угловая скорость колеса | рад/с |
| $\theta$ | Угол поворота колеса | рад |
| $x$ | Пройденный путь | м |
| $i$ | Ток двигателя | А |
| $U$ | Напряжение на двигателе | В |
| $T_m$ | Температура двигателя | °C |
| $P_{el}$ | Электрическая мощность | Вт |
| $P_{mech}$ | Механическая мощность | Вт |
| $F_x$ | Сила тяги на колёсах | Н |
| $F_r$ | Сила сопротивления качению | Н |
| $F_a$ | Сила аэродинамического сопротивления | Н |
| $F_g$ | Сила сопротивления уклону | Н |
| $F_{step}$ | Сила преодоления препятствия | Н |
| $F_{obs}$ | Сила от бампера/препятствия | Н |
| $F_b$ | Тормозная сила | Н |
| $F_{ext}$ | Внешняя нагрузка (обобщённая) | Н |
| $N$ | Нормальная реакция опоры | Н |
| Символ | Величина | Единица измерения |
|---|---|---|
| $m$ | Масса робота | кг |
| $m_{load}$ | Масса груза | кг |
| $J$ | Момент инерции ротора + колеса | кг·м² |
| $r$ | Радиус колеса | м |
| $n$ | Передаточное число редуктора | — |
| $\eta$ | КПД редуктора | — |
| $k_m$ | Постоянная момента двигателя | Н·м/А |
| $k_e$ | Постоянная противо-ЭДС | В·с/рад |
| $R$ | Сопротивление обмотки | Ом |
| $c_r$ | Коэффициент сопротивления качению | — |
| $\mu$ | Коэффициент сцепления | — |
| $C_x$ | Коэффициент аэродинамического сопротивления | — |
| $A$ | Лобовая площадь | м² |
| $\rho$ | Плотность воздуха | кг/м³ |
| $g$ | Ускорение свободного падения | м/с² |
| $\alpha$ | Угол уклона | рад |
| $h$ | Высота препятствия | м |
| Символ | Величина | Единица измерения |
|---|---|---|
| $v_{max}$ | Максимальная скорость | м/с |
| $v_{min}$ | Минимальная скорость | м/с |
| $a_{max}$ | Максимальное ускорение | м/с² |
| $s_{brake}$ | Тормозной путь | м |
| $\sigma_{pos}$ | Точность позиционирования | мм |
| $OS$ | Перерегулирование | % |
| $t_s$ | Время установления | с |
| $L_p$ | Уровень звукового давления | дБ |
| $a_{vib}$ | Уровень вибраций | $g$ |
| $P_{max}$ | Максимальная потребляемая мощность | Вт |
| $\eta_{min}$ | Минимальный КПД | % |
| $T_{max}$ | Максимальная температура | °C |
| $MTBF$ | Наработка на отказ | ч |
| $t_{op}$ | Время автономной работы | ч |
| $t_{charge}$ | Время зарядки | мин |
| $IP$ | Степень пылевлагозащиты | — |
| $C_{max}$ | Максимальная стоимость | руб |
Инженерное правило: задаём номинальные обороты двигателя $\omega_{nom} \approx 300$ рад/с (≈3000 об/мин) и подбираем $n$ и $r$:
Пример для гонщика (вар.4, v=2.5 м/с):
Для горизонтали без аэродинамики:
Время разгона $t_{acc}$ если не задано — принимаем 1–2 с.
Пример для тяжеловеса (вар.3, m=7.5+20=27.5 кг, v=0.6 м/с):
Пример: $F_x = 50$ Н, $r = 0.1$ м → $\tau_{wheel} = 5$ Н·м
При n=30, η=0.7: $\tau_{motor} = 5/(30·0.7) \approx 0.24$ Н·м — реалистично для коллекторного мотора.
$k_m$ берём из каталога моторов (0.01–0.05 для малых, 0.1–0.3 для мощных).
Подбираем напряжение питания (12В, 24В, 48В) под доступные драйверы.
| Параметр | Откуда берём |
|---|---|
| $m$ | ТЗ |
| $r$ | Рассчитали из оборотов и редуктора |
| $c_r$ | Таблица по покрытию |
| $k_m, k_e, R$ | Каталог моторов (подобран под $F_x$, $\tau$) |
| $n$, $\eta$ | Подобраны под $\omega_{motor}$ |
| $U$ | Стандарт (12/24/48 В) |
ТЗ: m = 1.2 кг, v = 0.8 м/с, μ = 0.28, бюджет моторов ≤ 1500 руб
Берём мотор N20: $k_m = 0.012$ Н·м/А, $k_e = 0.012$ В·с/рад, $R = 5$ Ом, $U = 12$ В
Моделирование датчиков, помех, механических люфтов и введение в П-регулятор
ИК-излучение отражается от поверхности. Чёрная линия поглощает свет, белый фон отражает. Напряжение на выходе пропорционально отражающей способности.
Энкодер выдаёт импульсы, соответствующие углу поворота. В Simulink моделируется как квантователь с шагом $\Delta \theta = 2\pi / N$, где $N$ — число импульсов на оборот.
Измеряет угловую скорость. Основные погрешности: шум, дрейф нуля, температурная зависимость.
| Тип шума | Модель | Блок Simulink |
|---|---|---|
| Гауссовский белый шум | $n(t) \sim \mathcal{N}(0, \sigma^2)$ | Random Number |
| Импульсные помехи | $p(t) = A \cdot \delta(t-t_k)$ | Poisson + Pulse Generator |
| Дрейф нуля | $b(t) = b_0 + \beta \cdot t$ | Ramp + Constant |
| Температурный дрейф | $b(T) = \alpha_T (T - T_0)$ | Gain (с входом T) |
| Битые пиксели | $U_{out} = 0$ при $x \in [x_1, x_2]$ | Switch + Dead Zone |
Для высокоточных вариантов (2,5,9) требования к шуму жёсткие. Рекомендуемые значения:
| Вариант | Допустимый шум | $\sigma$ (ИК-датчик) |
|---|---|---|
| 2 (Лабораторный точник) | ±2 мм | 0.02 от макс. сигнала |
| 5 (Медицинский курьер) | шум ≤40 дБ | 0.03 от макс. сигнала |
| 9 (Учебный) | наглядность | 0.05 (можно больше) |
x ──►[f(x)]──► идеальный сигнал ──►(∑)──► U_out
▲
│
[Random Number] σ=0.02
│
[Poisson] (импульсы)
Зазор между зубьями передач, при котором изменение направления движения не сразу передаётся на выходной вал.
Блок Simulink: Backlash (Simulink/Discontinuities). Параметры:
Для вариантов с высокими требованиями к точности (2,5,6) люфт критичен. Рекомендуемые значения по типу редуктора:
| Тип редуктора | Люфт (угловые минуты) | Люфт (рад) |
|---|---|---|
| Планетарный прецизионный | 5-10' | 0.0015-0.003 |
| Прямозубый | 30-60' | 0.009-0.017 |
| Червячный | 10-20' | 0.003-0.006 |
| Косозубый | 15-30' | 0.004-0.009 |
Моделируется как пружина с жёсткостью $k$ и демпфером $c$:
Влияет на колебания при резких ускорениях и торможениях.
Удерживать робота на линии, управляя разностью скоростей левого и правого колеса.
Ошибка e(t) = сигнал с датчиков (отклонение)
│
▼
[Kp] ──► Разность скоростей Δu
│
▼
u_left = u0 + Δu/2
u_right = u0 - Δu/2
Kp выбирается из условия устойчивости и желаемой скорости реакции.
Более точный подбор — методом проб в Simulink:
| Группа | Критичные эффекты | Что моделировать |
|---|---|---|
| 1. Эконом | Низкая стоимость | Простые датчики (2-3 шт), большой шум, люфт |
| 2. Высокоточные | Точность, шум | Много датчиков (8-12), малый шум, малый люфт, калибровка |
| 3. Промышленные | Надёжность, препятствия | Датчики препятствий, люфт, упругость |
| 4. Экстремальные | Скорость, сцепление | Быстрые датчики, срыв сцепления, аэродинамика |
Объединение всех усложнений в единую модель и верификация по ТЗ
| Неделя | Лекция | Практика | Что добавили в модель |
|---|---|---|---|
| 1 | Основы системного анализа | Знакомство с вариантом | Базовые параметры, IPO-модель |
| 2 | Расширенные модели динамики | Расчёт недостающих параметров, сборка расширенной модели | Энергопотребление, шум, тепло, препятствия, аэродинамика и т.д. |
| 3 | Сенсоры, шумы, люфты, П-регулятор | Моделирование датчиков, реализация П-регулятора | ИК-датчики с шумами, энкодеры, люфт, обратная связь |
┌─────────────────────────────────────────────────────────────┐
│ Входное воздействие │
│ (желаемая траектория / ступенчатый сигнал) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Блок регулятора (П) │
│ e = U_ref - U_IR │
│ Δu = Kp * e │
│ u_left = u0 + Δu/2, u_right = u0 - Δu/2 │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Модель динамики (с усложнениями) │
│ • Два мотора с электромеханикой │
│ • Силы: Fr, Fa, Fg, F_step, F_obs (по варианту) │
│ • Тепловая модель (по варианту) │
│ • Люфт в редукторе (Backlash) │
│ • Расчёт тока, мощности │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Модели датчиков │
│ • ИК-датчики (с шумами, выбросами) │
│ • Энкодеры (с квантованием) │
│ • Гироскоп (с дрейфом) (опционально) │
└─────────────────────────────────────────────────────────────┘
│
└──────────► U_IR (обратная связь)
Все дополнительные блоки должны быть параметризованы и включаться/отключаться без изменения структуры модели. Это позволит исследовать влияние каждого эффекта отдельно.
FINAL_MODEL/
├── init_script.m (загружает все параметры)
├── Reference (Constant / Signal Builder)
├── P_Controller (Subsystem)
├── Robot_Dynamics (Subsystem)
│ ├── Motors
│ ├── Forces (Fr, Fa, F_step...)
│ ├── Thermal (если есть)
│ └── Backlash
├── Sensors (Subsystem)
│ ├── IR_Array
│ ├── Encoders
│ └── Gyro
└── Scopes & To Workspace
| Показатель | Обозначение | Формула | Ед. изм. |
|---|---|---|---|
| Время разгона до 90% скорости | $t_{90}$ | $v(t_{90}) = 0.9 v_{max}$ | с |
| Время установления (5% коридор) | $t_s$ | $|v(t) - v_{уст}| < 0.05 v_{уст}$ для $t > t_s$ | с |
| Перерегулирование | $OS$ | $\frac{v_{max} - v_{уст}}{v_{уст}} \cdot 100\%$ | % |
| Установившаяся скорость | $v_{уст}$ | $\lim_{t \to \infty} v(t)$ | м/с |
| Максимальное ускорение | $a_{max}$ | $\max(\frac{dv}{dt})$ | м/с² |
v(t)
│ ┌──────────────────── v_уст
│ ╱│
│ ╱ │
│╱ │
│ │
└───┴──────────────── t
t90 ts
Рис. 1. Характерные точки переходного процесса
| Группа | Требование ТЗ | Как проверить | Критерий |
|---|---|---|---|
| 1. Эконом | v ≥ 0.8 м/с (вар.1) | v_уст из анализа | ≥0.8 |
| OS ≤ 20% (вар.1) | OS из анализа | ≤20% | |
| P_el ≤ 15 Вт (вар.8) | Макс. мощность | ≤15 | |
| 2. Высокоточные | Точность ±2 мм (вар.2) | max|e(t)| при слежении | ≤2 мм |
| L_p ≤ 40 дБ (вар.5) | Расчёт шума | ≤40 | |
| ts ≤ 1.5 с (вар.2) | ts из анализа | ≤1.5 | |
| 3. Промышленные | F_x ≥ 50 Н (вар.3) | Сила тяги | ≥50 |
| s_brake ≤ 0.5 м (вар.6) | Тормозной путь | ≤0.5 | |
| h_step ≤ 0.05 м (вар.7) | Преодоление препятствия | Успех | |
| 4. Экстремальные | v ≥ 2.5 м/с (вар.4) | v_уст | ≥2.5 |
| MTBF ≥ 5000 ч (вар.10) | Тепловая модель | T ≤ T_max | |
| μ = 0.22..0.80 (вар.11) | Проверка сцепления | Нет пробуксовки |
Режим разгона: v_уст = 0.38 м/с (требование 0.3-0.4) ✓
ts = 1.2 с (требование ≤1.5) ✓
OS = 4% (требование ≤5%) ✓
Режим слежения: max ошибка = 1.8 мм (требование ±2 мм) ✓
Вывод: ТЗ выполняется.
| Тип данных | Режим симуляции | Что сохранять |
|---|---|---|
| Разгон | Ступенчатое задание скорости | v(t), a(t), i(t), T(t) (если есть) |
| Движение по прямой | Постоянная заданная скорость | v(t), ошибка слежения |
| Поворот | Задание траектории с изгибом | Траектория x(t), y(t), ошибка |
| Торможение | Ступенчатое снижение задания | v(t), s_brake |
| Препятствие (если есть) | Внешнее воздействие | v(t), F_step, факт преодоления |
После симуляции данные будут доступны в workspace как структура:
Как оценить качество робототехнической системы? Метрики, шкалы, интегральные критерии, многокритериальность
Как понять, хороший ли робот получился? Быстрый, но сбивается с маршрута — успех? Точный, но медленный — успех? Как сравнить два разных робота?
Ключевая идея: Чтобы оценить систему, нужно сначала определить критерии оценки — измеримые показатели, которые отражают, насколько хорошо система выполняет свою задачу.
Количественная характеристика, позволяющая сравнить различные варианты системы или оценить её соответствие требованиям.
Прежде чем измерять, нужно понять, как измерять. В системном анализе используются четыре типа шкал:
| Шкала | Что измеряет | Пример в робототехнике | Операции |
|---|---|---|---|
| Номинальная | Принадлежность к классу | Тип двигателя: коллекторный / бесколлекторный | =, ≠ |
| Порядковая | Сравнение "лучше-хуже" | Рейтинг надёжности: 1, 2, 3 место | >, < |
| Интервальная | Разность значений | Температура двигателя: 20°C, 40°C, 60°C | +, − |
| Отношений | Пропорции | Скорость: 2 м/с в 2 раза быстрее 1 м/с | ×, ÷ |
| Метрика | Определение | Формула |
|---|---|---|
| Время разгона $t_{rise}$ | Время достижения 95% установившейся скорости | $v(t_{rise}) = 0.95 \cdot v_{steady}$ |
| Время установления $t_s$ | Время входа в 2% коридор | $|v(t) - v_{steady}| \le 0.02 \cdot v_{steady}$ |
| Постоянная времени $\tau$ | Время достижения 63.2% от $v_{steady}$ | $v(\tau) = 0.632 \cdot v_{steady}$ |
| Метрика | Определение | Формула |
|---|---|---|
| Статическая ошибка $e_{steady}$ | Разность между заданным и фактическим значением | $e_{steady} = |v_{target} - v_{steady}|$ |
| Перерегулирование $OS$ | Максимальное превышение над $v_{steady}$ | $OS = \frac{v_{max} - v_{steady}}{v_{steady}} \cdot 100\%$ |
v(t)
│ ┌──────────────────── v_steady
│ ╱│
│ ╱ │ OS = (v_max - v_steady)/v_steady * 100%
│╱ │
│ │
└───┴──────────────────── t
t_rise t_settling
Рис. 1. Характерные точки переходного процесса
Оценивают поведение системы на всём интервале времени:
Система описывается:
Критерии качества — это функционалы от выходных сигналов:
Например:
Часто нужно одновременно улучшить несколько критериев, но они конфликтуют.
Пример: Чтобы робот ехал быстрее, нужно увеличить напряжение → растёт ток и нагрев двигателя.
Решение называется Парето-оптимальным, если нельзя улучшить один критерий, не ухудшив хотя бы один другой.
v_steady ↑
│
│ ● A (быстро, но много энергии)
│ ●
│ ● ● B (компромисс)
│ ●
│● C (медленно, но мало энергии)
└────────────────────→ Энергия
Рис. 2. Парето-фронт — линия компромиссных решений
| Группа | Варианты | Ключевые критерии | Особенности измерения |
|---|---|---|---|
| 1. Эконом | 1, 8 | Скорость, бюджет, энергопотребление | $P_{el} = U \cdot i + P_{const}$ |
| 2. Точные | 2, 5, 9 | Точность позиционирования, шум, вибрации | $\sigma_{pos} \le \pm 2$ мм, $L_p \le 40$ дБ |
| 3. Промышленные | 3, 6, 7 | Надёжность, тепловой режим, тормозной путь | $MTBF$, $T_m \le T_{max}$, $s_{brake} \le 0.5$ м |
| 4. Экстремальные | 4, 10, 11 | Скорость, аэродинамика, сцепление | $v \ge 2.5$ м/с, $\mu = \mu_0 + k_\mu \cdot RH$ |
To Workspace и выполнив постобработку в MATLAB.
Как оценить надёжность робота при случайных вариациях параметров? Метод Монте-Карло, анализ отказов, риск-менеджмент
В реальности параметры — это не точные числа, а случайные величины с определёнными распределениями.
Ключевая идея: Задача системного аналитика — оценить вероятность успеха при всех возможных вариациях.
| Тип | Плотность | Пример в робототехнике |
|---|---|---|
| Нормальное | $f(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}$ | Масса робота, коэффициент трения |
| Равномерное | $f(x)=\frac{1}{b-a},\ x\in[a,b]$ | Допуски на изготовление |
| Экспоненциальное | $f(t)=\lambda e^{-\lambda t},\ t\ge 0$ | Время до отказа |
Нормальное: Равномерное: Экспоненциальное:
┌─────┐ ┌─────┐ ┌─────┐
│ █ │ │█████│ │█ │
│ ███ │ │█████│ │ █ │
│█████│ │█████│ │ █ │
└─────┘ └─────┘ └─────┘
Численный метод, использующий случайные выборки для оценки характеристик сложных систем.
Параметры: Симуляция: Результаты:
m ~ N(2, 0.05) ┌─────────┐ v_steady = [1.2, 1.1, 0.9, ...]
μ ~ N(0.02, 0.002) → │ Модель │ → t_rise = [2.3, 2.5, 2.8, ...]
U ~ U(11.5, 12.5) └─────────┘ OS = [5, 6, 4, ...]
Пусть $Y$ — выходной параметр (например, $v_{steady}$). Требование ТЗ: $Y \ge Y_{target}$.
где $\hat{p}$ — оценка вероятности, $z = 1.96$ для 95% доверительного интервала.
| Термин | Обозначение | Определение | Единица |
|---|---|---|---|
| Интенсивность отказов | $\lambda$ | Вероятность отказа в единицу времени | 1/ч |
| Вероятность безотказной работы | $R(t)$ | $R(t) = e^{-\lambda t}$ | — |
| Средняя наработка на отказ | $MTBF$ | $MTBF = 1/\lambda$ | ч |
| Компонент | $\lambda$ (1/ч) | MTBF (ч) |
|---|---|---|
| Двигатель (щёточный) | $1 \times 10^{-4}$ | 10 000 |
| Двигатель (бесколлекторный) | $5 \times 10^{-5}$ | 20 000 |
| Редуктор | $2 \times 10^{-4}$ | 5 000 |
| Датчик (оптический) | $1 \times 10^{-5}$ | 100 000 |
| Контроллер | $1 \times 10^{-5}$ | 100 000 |
Если отказ любого компонента приводит к отказу всей системы:
| Вероятность \ Последствия | Незначительные | Умеренные | Критические | Катастрофические |
|---|---|---|---|---|
| Высокая (>0.1) | Средний | Высокий | Критический | Недопустимый |
| Средняя (0.01-0.1) | Низкий | Средний | Высокий | Критический |
| Низкая (<0.01) | Приемлемый | Низкий | Средний | Высокий |
| Группа | Варианты | Требования к надёжности | Особенности |
|---|---|---|---|
| 1. Эконом | 1, 8 | $t_{op} \ge 16$ ч | Ограниченный бюджет, простые компоненты |
| 2. Точные | 2, 5, 9 | $t_{op} \ge 6$ ч (вар.5) | Высокая точность, низкий уровень отказов |
| 3. Промышленные | 3, 6, 7 | $MTBF \ge 2000$ ч (вар.3) | Длительная работа, тепловые режимы |
| 4. Экстремальные | 4, 10, 11 | $MTBF \ge 5000$ ч (вар.10) | Экстремальные условия, высокая надёжность |
Как формализовать выбор лучшей альтернативы? Дерево целей, метод анализа иерархий (AHP), шкала Саати
Представьте, что вы разрабатываете робота. У вас есть несколько альтернатив для каждого компонента:
Вопрос: Как выбрать оптимальную комбинацию?
Критерии: цена, производительность, камера, время работы.
Проблема: один вариант может быть дешёвым, но с плохой камерой; другой — дорогим, но с отличной камерой. Как сравнить?
Системный подход:
| Двигатель | Стоимость, руб | Момент, Н·м | MTBF, ч |
|---|---|---|---|
| MY1016 | 3000 | 0.18 | 800 |
| Maxon EC | 12000 | 0.12 | 5000 |
| Pololu | 5000 | 0.08 | 2000 |
Вопрос: какой выбрать? Если нужна надёжность — Maxon, если экономия — MY1016, если баланс — Pololu. Но как учесть все критерии одновременно?
Декомпозиция — разбиение сложной задачи (цели) на более простые подзадачи (подцели). Это как собирать пазл: сначала отделяем края, потом группируем по цветам, потом собираем.
Создать LFR, соответствующий ТЗ
|
---------------------------------------------------------
| | |
Функциональность Надёжность Экономичность
| | |
----------- --------------- -------------
| | | | | |
Скорость Точность MTBF Безотказность Стоимость Энергопотребление
(v ≥ target) (OS ≤ limit) (≥2000 ч) (R(t) ≥ 0.95) (≤ budget) (P ≤ limit)
LFR складской/офисный (вар.1,8)
|
-------------------------------------------------
| | |
Стоимость Энергопотребление Скорость
| | |
Бюджет ≤4500 руб P_el ≤15 Вт v ≥ 0.8 м/с (вар.1)
Стоимость мотора КПД ≥85% 0.5-0.7 м/с (вар.8)
Стоимость редуктора Потери в редукторе Перерегулирование ≤20%
LFR лабораторный/медицинский (вар.2,5,9)
|
-------------------------------------------------
| | |
Точность Шум Скорость
| | |
±2 мм (вар.2) ≤40 дБ (вар.5) 0.3-0.4 м/с (вар.2)
OS ≤5% (вар.2) вибрации ≤0.1g 0.7-0.9 м/с (вар.5)
Статическая ошибка акустический комфорт плавность разгона
LFR промышленный (вар.3,6,7)
|
-------------------------------------------------
| | |
Надёжность Тяга Тепловой режим
| | |
MTBF ≥2000 ч (вар.3) F_x ≥50 Н (вар.3) T_max ≤80°C (вар.3)
R(t) ≥0.95 за 1000 ч запас сцепления время нагрева
Ремонтопригодность тяга на подъём эффективность охлаждения
LFR гонщик/аэропортный/сельхоз (вар.4,10,11)
|
-------------------------------------------------
| | |
Аэродинамика Сцепление Проходимость
| | |
Cx ≤0.4 μ ≥0.7 h ≤0.05 м
A ≤0.015 м² срыв сцепления клиренс ≥0.03 м
прижимная сила адаптивность угол въезда/съезда
decision/goal_tree.m строит дерево целей автоматически для вашего варианта.
AHP (Analytic Hierarchy Process) — метод, который:
| Значение | Описание | Пример |
|---|---|---|
| 1 | Одинаковая важность | "Скорость так же важна, как точность" |
| 3 | Умеренное превосходство | "Скорость немного важнее точности" |
| 5 | Существенное превосходство | "Скорость значительно важнее точности" |
| 7 | Очень сильное превосходство | "Скорость намного важнее точности" |
| 9 | Абсолютное превосходство | "Скорость критически важнее точности" |
| 2,4,6,8 | Промежуточные значения | Когда нужно что-то между |
Сравним три критерия: Надёжность (Н), Тяга (Т), Стоимость (С).
| Н | Т | С | |
|---|---|---|---|
| Н | 1 | 3 | 5 |
| Т | 1/3 | 1 | 3 |
| С | 1/5 | 1/3 | 1 |
Обоснование: Надёжность важнее тяги в 3 раза, важнее стоимости в 5 раз; тяга важнее стоимости в 3 раза.
где $RI$ — случайный индекс (табличное значение).
| Альтернатива | Надёжность (MTBF) | Тяга (момент) | Стоимость |
|---|---|---|---|
| A1: MY1016 | 800 ч | 0.18 Н·м | 3000 руб |
| A2: Maxon EC | 5000 ч | 0.12 Н·м | 12000 руб |
| A3: Pololu | 2000 ч | 0.08 Н·м | 5000 руб |
| A1 | A2 | A3 | |
|---|---|---|---|
| A1 | 1 | 1/6 | 1/3 |
| A2 | 6 | 1 | 2 |
| A3 | 3 | 1/2 | 1 |
| Альтернатива | Надёжность (0.633) | Тяга (0.260) | Стоимость (0.106) | ИТОГО |
|---|---|---|---|---|
| A1: MY1016 | 0.095×0.633=0.060 | 0.539×0.260=0.140 | 0.571×0.106=0.061 | 0.261 |
| A2: Maxon EC | 0.615×0.633=0.389 | 0.297×0.260=0.077 | 0.143×0.106=0.015 | 0.481 |
| A3: Pololu | 0.290×0.633=0.184 | 0.164×0.260=0.043 | 0.286×0.106=0.030 | 0.257 |
П, ПИ, ПИД-регуляторы для слежения за линией. Математические модели, настройка, критерии качества
Робот должен двигаться по заданной траектории (линии). Но есть возмущения:
Решение: замкнутая система управления (обратная связь).
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
───►│ Задание│────►│ Ошибка │────►│Регулятор│────►│ Робот │────►
│ (U_ref) │ │ e = r-y │ │ (Kp) │ │ (объект)│
└─────────┘ └─────────┘ └─────────┘ └─────────┘
▲ │
│ │
└───────────────────y(t)───────────────────────┘
Основные элементы:
где $K_p$ — коэффициент усиления (настраиваемый параметр).
| Достоинства | Недостатки |
|---|---|
| ✅ Простая реализация | ❌ Есть статическая ошибка (e ≠ 0 при установившемся режиме) |
| ✅ Быстрый отклик | ❌ При большом Kp — колебания и потеря устойчивости |
| ✅ Легко настраивается | ❌ Не подавляет возмущения полностью |
где $K_i$ — коэффициент интегральной составляющей.
где $T_s$ — шаг дискретизации (dt).
| Достоинства | Недостатки |
|---|---|
| ✅ Устраняет статическую ошибку | ❌ Может вызвать перерегулирование |
| ✅ Лучше подавляет возмущения | ❌ Интегральное насыщение (windup) |
| ✅ Более точное слежение | ❌ Сложнее настройка (2 параметра) |
| Достоинства | Недостатки |
|---|---|
| ✅ Наилучшая точность | ❌ Сложная настройка (3 параметра) |
| ✅ Минимальное перерегулирование | ❌ Чувствительность к шумам |
| ✅ Быстрый отклик и устойчивость | ❌ Может вызвать высокочастотные колебания |
| Критерий | П-регулятор | ПИ-регулятор | ПИД-регулятор |
|---|---|---|---|
| Статическая ошибка | Есть | Нет | Нет |
| Время разгона | Быстрое | Среднее | Быстрое |
| Перерегулирование | Среднее | Высокое | Низкое |
| Устойчивость к шумам | Высокая | Высокая | Низкая |
| Сложность настройки | Простая (1 параметр) | Средняя (2 параметра) | Сложная (3 параметра) |
| Устойчивость к люфту | Высокая | Средняя | Низкая |
| Показатель | Обозначение | Определение | Что лучше |
|---|---|---|---|
| Время разгона (0→95%) | $t_{95\%}$ | Время, за которое скорость/положение достигает 95% от установившегося значения | Меньше → быстрее |
| Время установления (±2%) | $t_s$ | Время, после которого ошибка не выходит из коридора ±2% | Меньше → стабильнее |
| Перерегулирование | $OS$ | Максимальное превышение над установившимся значением, % | Меньше → мягче |
| Статическая ошибка | $e_{ss}$ | Ошибка в установившемся режиме | 0 - идеал |
| Частота колебаний | $\omega_c$ | Частота затухающих колебаний | Ниже - устойчивее |
| Регулятор | t95%, с | OS, % | ess, мм |
|---|---|---|---|
| П-регулятор | 1.2 | 15% | 5 мм |
| ПИ-регулятор | 1.5 | 25% | 0 мм |
| ПИД-регулятор | 0.8 | 5% | 0 мм |
Целевые функции, многокритериальная оптимизация, фронт Парето, интеграция всех модулей в итоговую модель
Мы выбрали регулятор (например, ПИД), но как подобрать оптимальные коэффициенты Kp, Ki, Kd?
Оптимизация поможет найти лучший баланс автоматически!
Это математическое выражение, которое оценивает качество решения. Чем меньше значение целевой функции — тем лучше.
где $w_1, w_2, w_3$ — веса, отражающие важность каждого критерия.
| Метод | Принцип работы | Когда использовать | MATLAB функция |
|---|---|---|---|
| Сеточный перебор | Перебор всех комбинаций параметров в заданном диапазоне | Малая размерность (1-2 параметра) | собственная реализация |
| Метод градиента | Движение в направлении наискорейшего спуска | Гладкая целевая функция | fminunc |
| Симплекс-метод | Поиск минимума через деформацию симплекса | Ограниченное число параметров | fminsearch |
| Генетический алгоритм | Имитация эволюции: отбор, скрещивание, мутация | Многомерная оптимизация, негладкие функции | ga |
Ситуация, когда нужно оптимизировать несколько противоречивых критериев одновременно.
OS, %
↑
20│ ●
│ ● ●
15│● ●
│ ●
10│ ●
│ ● ← Парето-фронт
5│ ●
│ ●
0└───────────────────→ t_95%, с
0 1 2 3 4 5
Решения, которые нельзя улучшить по одному критерию без ухудшения другого, называются Парето-оптимальными. Множество таких решений — фронт Парето.
Для оптимизации и построения фронта Парето необходимо запускать симуляцию множество раз с разными параметрами.
┌─────────────────────────────────────────────────────────────────┐
│ ИТОГОВАЯ СИМУЛЯЦИЯ │
├─────────────────────────────────────────────────────────────────┤
│ main.mlx │
│ └── simulate_robot.m (ядро) │
│ ├── dynamics/ (усложнения) │
│ ├── actuators/ (люфт, тепло) │
│ ├── sensors/ (датчики) │
│ ├── disturbances/ (шум) │
│ └── control/ (регулятор) │
├─────────────────────────────────────────────────────────────────┤
│ optimization/ (оптимизация) │
│ analysis/ (анализ результатов) │
│ reports/ (отчёты) │
└─────────────────────────────────────────────────────────────────┘
Анализ технического задания и формализация параметров
Создайте файл параметров для вашего варианта.
Определяем тепловые, акустические, механические и другие параметры, которых нет в ТЗ
В Практике 2 мы научились рассчитывать базовые параметры:
| Группа | Эффект | Недостающий параметр | Обозначение | Ед. изм. |
|---|---|---|---|---|
| 1. Эконом | Энергопотребление | Постоянная мощность (электроника) | $P_{const}$ | Вт |
| КПД | КПД двигателя в рабочей точке | $\eta_{motor}$ | — | |
| 2. Высокоточные | Акустический шум | Коэффициент шума от di/dt | $\beta_{noise}$ | дБ/(А/с) |
| Амплитуда когинга (зубцовых пульсаций) | $A_{cogging}$ | — | ||
| Вибрации | Коэффициент вибраций от ускорения | $k_{vib}$ | $g/(м/с²)$ | |
| Нестационарность | Диапазон изменения массы | $\Delta m$ | кг | |
| 3. Промышленные | Тепловая модель | Тепловое сопротивление | $R_{th}$ | °C/Вт |
| Теплоёмкость двигателя | $C_{th}$ | Дж/°C | ||
| Торможение | Установившееся замедление | $a_{brake}$ | м/с² | |
| Препятствия | Коэффициент упругости подвески | $k_{susp}$ | Н/м | |
| Запас устойчивости | Высота центра масс | $h_{cg}$ | м | |
| 4. Экстремальные | Аэродинамика | Коэффициент аэродинамического сопротивления | $C_x$ | — |
| Лобовая площадь | $A$ | м² | ||
| Crowd avoidance | Жёсткость "мягкого" бампера | $k_{soft}$ | Н/м | |
| Переменное сцепление | Коэффициент влияния влажности | $k_{\mu}$ | 1/% | |
| Recovery | Порог срыва сцепления | $\varepsilon$ | — |
Эти параметры не даны в ТЗ! Их нужно оценить по справочникам, аналогиям или разумным предположениям.
Рекомендация: принять $P_{const} = 3$ Вт для первого приближения.
Для микродвигателей (N20) $\eta_{motor} \approx 0.6..0.75$ в рабочей точке.
Коэффициент $\beta_{noise}$: показывает, на сколько дБ растёт шум при увеличении di/dt на 1 А/с.
Для бесшумных двигателей (Faulhaber) $\beta_{noise} \approx 2..3$ дБ/(А/с). Для обычных коллекторных — до 10 дБ/(А/с).
Для серводвигателей с косозубым редуктором $A_{cogging} \approx 0.05..0.1$ от среднего момента. Для обычных — 0.2..0.3.
Коэффициент вибраций: для прецизионных двигателей $k_{vib} \approx 0.05..0.1$ $g/(м/с²)$.
Тепловое сопротивление $R_{th}$: для двигателей с естественным охлаждением $R_{th} \approx 2..5$ °C/Вт. С принудительным — 0.5..1 °C/Вт.
Теплоёмкость $C_{th}$: определяет скорость нагрева. $C_{th} \approx 50..200$ Дж/°C в зависимости от массы двигателя.
Из этого можно найти требуемое замедление $a_{brake} \geq \frac{v^2}{2 \cdot 0.5}$.
Для v = 0.6 м/с: $a_{brake} \geq 0.36$ м/с². Реально достижимо 0.5..1 м/с² рекуперативным торможением.
Здесь неизвестен только коэффициент упругости подвески $k_{susp}$, если нужно считать динамику наезда. Для первого приближения считаем подвеску жёсткой.
Высота центра масс $h_{cg}$: для колёсных роботов $h_{cg} \approx 0.3..0.5$ от высоты корпуса. Принимаем $h_{cg} = 0.1$ м для низких платформ, до 0.3 м для высоких.
Коэффициент аэродинамического сопротивления $C_x$: для обтекаемого корпуса 0.3..0.4, для плоского — 0.8..1.0.
Лобовая площадь $A$: ширина × высота робота. Для гонщика $A \approx 0.1 \times 0.1 = 0.01$ м².
Плотность воздуха $\rho = 1.2$ кг/м³ (при 20°C).
Порог $\varepsilon$: при $F_x > \mu N (1 + \varepsilon)$ считаем, что началось буксование. Обычно $\varepsilon = 0.05..0.1$ (запас 5-10%).
Жёсткость "мягкого" бампера $k_{soft}$: выбирается так, чтобы на расстоянии $d_0$ сила была достаточной для остановки.
Для m=5.8 кг, $a_{max}=1$ м/с², $d_0=0.5$ м → $k_{soft} \approx 11.6$ Н/м.
Коэффициент влияния влажности $k_{\mu}$: из диапазона μ=0.22 при RH=20% до μ=0.80 при RH=100%:
| Параметр | Рекомендуемое значение | Для каких вариантов |
|---|---|---|
| $P_{const}$ | 3 Вт | 8 |
| $\eta_{motor}$ | 0.7 | 1, 8 |
| $\beta_{noise}$ | 3 дБ/(А/с) | 5 |
| $A_{cogging}$ | 0.1 (отн.) | 5 |
| $k_{vib}$ | 0.08 g/(м/с²) | 5 |
| $\Delta m$ | ±0.3 кг | 9 |
| $R_{th}$ | 3 °C/Вт | 3 |
| $C_{th}$ | 100 Дж/°C | 3 |
| $a_{brake}$ | 0.5 м/с² | 6 |
| $h_{cg}$ | 0.15 м | 3, 6, 7 |
| $C_x$ | 0.35 | 4 |
| $A$ | 0.01..0.02 м² | 4 |
| $k_{soft}$ | 10..20 Н/м | 10 |
| $k_{\mu}$ | 0.00725 1/% | 11 |
| $\varepsilon$ (срыв) | 0.1 | 4 |
Эти значения можно использовать, если нет более точных данных. В реальном проекте они уточняются экспериментально.
Требование ТЗ: шум ≤40 дБ, вибрации ≤0.1g
Недостающие параметры:
- beta_noise = 3 дБ/(А/с)
- A_cogging = 0.1
- k_vib = 0.08 g/(м/с²)
- Допустимая производная тока: |di/dt| ≤ (40 - 20)/3 ≈ 6.7 А/с
Добавьте в этот шаблон параметры, соответствующие вашей группе.
init_variant_X_extended.m со всеми параметрами.Добавляем в модель сенсоры, шумы, люфты и анализируем их влияние
Добавить в существующую модель динамики (из Практики 4) блоки, моделирующие:
Исследовать, как шумы и люфты влияют на сигналы датчиков и точность системы.
x ──►[Fcn: Umax/(1+(x/x0)^2)]──► идеальный сигнал ──►(∑)──► U_out
▲ ▲
│ │
[Noise] [Impulse]
Параметры для настройки:
θ ──►[Gain: N/(2π)]──►[Round]──►[Gain: 2π/N]──► θ_meas
Параметры: $N$ — число импульсов на оборот (типовые значения 12, 24, 48, 360, 1024)
ω_true ──►(∑)──► ω_meas
▲ ▲
│ │
[b0+βt] [Noise]
Используйте готовый блок Backlash из библиотеки Simulink/Discontinuities.
θ_motor ──►[Backlash]──► θ_wheel
Параметр: Deadband width = $2\delta$ (полный размах люфта в радианах).
| Вариант | Число ИК-датчиков | $\sigma$ шума (отн.) | Импульсные помехи | Люфт $\delta$ (рад) | N энкодера |
|---|---|---|---|---|---|
| 1 (Эконом) | 3-5 | 0.05 | 0.03 | 0.01 | 12 |
| 2 (Точник) | 8-12 | 0.01 | 0.005 | 0.0015 | 360 |
| 3 (Тяжеловес) | 4-6 | 0.03 | 0.02 | 0.005 | 48 |
| 4 (Гонщик) | 6-8 | 0.02 | 0.01 | 0.008 | 1024 |
| 5 (Мед. курьер) | 8-10 | 0.01 | 0.002 | 0.003 | 512 |
| 6 (Библиотечный) | 8-12 | 0.02 | 0.01 | 0.004 | 256 |
| 7 (Строительный) | 4-6 + ToF | 0.04 | 0.05 | 0.006 | 48 |
| 8 (Офисный) | 4-6 | 0.03 | 0.02 | 0.008 | 24 |
| 9 (Учебный) | 4-8 | 0.05 | 0.05 | 0.01 | 12 |
| 10 (Аэропорт) | 12+ ToF | 0.02 | 0.01 | 0.003 | 512 |
| 11 (Сельхоз) | 6-8 | 0.03 | 0.02 | 0.005 | 256 |
Используйте эти значения как отправную точку. При необходимости корректируйте.
Синус 0.01 рад ──►[Backlash]──► Scope
variant_X_extended.slx).Для варианта 5 (медицинский): Добавьте модель шума с ограничением по дисперсии так, чтобы результирующая ошибка позиционирования не превышала 2 мм.
Для варианта 9 (учебный): Сделайте параметры шума и люфта изменяемыми извне (через константы или слайдеры).
Для варианта 11 (сельхоз): Добавьте зависимость уровня шума от влажности (внешний сигнал RH).
variant_X_sensors.slx.Объединяем все компоненты, проводим финальные симуляции и верификацию
Объединить все ранее разработанные компоненты в единую финальную модель, провести комплексный анализ динамики разгона и проверить соответствие требованиям технического задания.
| Компонент | Откуда | Статус |
|---|---|---|
| Параметры варианта (базовые) | Практика 2 | ☐ |
| Расширенные параметры (тепло, шум, ...) | Практика 3 | ☐ |
| Модель динамики с усложнениями | Практика 4 | ☐ |
| Модели датчиков с шумами и люфтом | Практика 5 | ☐ |
| П-регулятор с настроенным Kp | Практика 6 | ☐ |
| Скрипт инициализации (все параметры) | Практика 3-6 | ☐ |
variant_X_final.slx.
┌────────────────────────────────────────────────────┐
│ FINAL MODEL │
├────────────────────────────────────────────────────┤
│ │
│ [Reference] ──► [P_Controller] ──► [Dynamics] ──┐ │
│ ▲ │ │ │
│ │ ▼ │ │
│ └─────── [Sensors] ◄───────┘ │
│ │
│ [To Workspace] ◄──────────────────────────────────┘ │
└────────────────────────────────────────────────────┘
Для каждого требования из вашего ТЗ проведите соответствующий тест:
| Требование | Тест | Критерий |
|---|---|---|
| Максимальная скорость | Разгон до упора | v_уст ≥ v_target |
| Перерегулирование | Разгон | OS ≤ OS_max |
| Время установления | Разгон | ts ≤ ts_max |
| Точность слежения | Движение по трассе | max|e| ≤ ε_max |
| Тяговое усилие | Разгон с грузом | F_x ≥ F_req |
| Тормозной путь | Экстренное торможение | s_brake ≤ s_max |
| Потребляемая мощность | Разгон | P_max ≤ P_limit |
| Температура | Длительный прогон | T_max ≤ T_limit |
| Шум | Разгон | L_p ≤ L_limit |
Для каждого теста запишите полученное значение и вывод (соответствует / не соответствует).
ВЫДЕЛИТЬ → НАЗНАЧИТЬ → СОБРАТЬ. Полный цикл от ТЗ до Simulink-модели.
| Тип | Материал / μ | Диаметр, мм | Назначение |
|---|---|---|---|
| Миниатюрное | Полиуретан (0.25–0.30) | 20–30 | Склад, офис |
| Прецизионное | Резина мед. (0.50–0.60) | 18–25 | Лаборатории |
| Грузовое | Полиамид (0.15–0.20) | 90–120 | Промышленность |
| Высокоскоростное | Силикон (0.70–0.75) | 70–90 | Соревнования |
| Бесшумное | Резина мягкая (0.40–0.45) | 35–50 | Медицина |
| Мягкое | Термоэластопласт (0.30–0.40) | 50–70 | Библиотеки |
| Внедорожное | Пневматика (0.25–0.70) | 120–150 | Стройка |
| Высокий КПД | Полиуретан тв. (0.30–0.35) | 45–60 | Энергоэффективность |
| Учебное | Резина (0.45–0.50) | 30–40 | Образование |
| Авиационное | Резина спец. (0.35–0.40) | 70–90 | Аэропорты |
| Агрохимстойкое | Резина агро (0.20–0.80) | 110–130 | Теплицы |
| Тип | Передаточное $n$ | КПД $\eta$ | Люфт | Применение |
|---|---|---|---|---|
| Прямозубый пластик | 5:1–20:1 | 0.65–0.75 | Высокий | Эконом |
| Планетарный | 10:1–50:1 | 0.70–0.80 | Очень низкий | Точные |
| Червячный | 30:1–80:1 | 0.50–0.65 | Низкий | Тяговые |
| Косозубый | 15:1–30:1 | 0.75–0.85 | Низкий | Бесшумные |
| Тип | Модель | $k_m$, Н·м/А | $k_e$, В·с/рад | $R$, Ом | $U$, В | $P$, Вт | Цена, руб |
|---|---|---|---|---|---|---|---|
| Микродвигатель | N20 | 0.010–0.015 | 0.010–0.015 | 3–8 | 6–12 | 1–3 | 200–400 |
| Серво прециз. | Maxon DCX | 0.020–0.030 | 0.020–0.030 | 2–4 | 18–24 | 8–15 | 4000–6000 |
| Щёточный тяг. | MY1016 | 0.12–0.18 | 0.12–0.18 | 0.3–0.6 | 24 | 200–300 | 3000–4500 |
| Бесколлекторный | Turnigy | 0.030–0.040 | 0.030–0.040 | 0.1–0.3 | 12 | 25–40 | 2500–3500 |
| Серво низкошум. | Faulhaber | 0.025–0.035 | 0.025–0.035 | 1.5–2.5 | 18 | 15–25 | 5000–7000 |
| Колл. с энкодером | Pololu | 0.060–0.080 | 0.060–0.080 | 1.0–1.5 | 12 | 20–30 | 1800–2500 |
| Герметичный | AMETEK | 0.20–0.25 | 0.20–0.25 | 0.2–0.3 | 36 | 350–450 | 5500–7000 |
| Высокоэфф. | Maxon EC | 0.040–0.050 | 0.040–0.050 | 0.5–0.8 | 24 | 12–18 | 4800–6000 |
| Учебный | IG32 | 0.015–0.020 | 0.015–0.020 | 2.5–4.0 | 12 | 5–8 | 800–1200 |
| Сдвоенный резерв. | Dunkermotoren | 0.090–0.110 | 0.090–0.110 | 0.4–0.6 | 48 | 120–180 | 11000–14000 |
| Химстойкий BLDC | EC-i 40 | 0.070–0.090 | 0.070–0.090 | 0.3–0.5 | 48 | 100–150 | 13000–16000 |
| Тип | Ток, А | Напряжение, В | Интерфейс | Цена, руб |
|---|---|---|---|---|
| Эконом | 2×2 | 6–12 | ШИМ | 150–300 |
| Прецизионный | 2 | 12–24 | USB/CAN | 8500–11000 |
| Тяговый | 2×25 | 12–24 | RC/PWM | 11000–14000 |
| Гоночный BLDC | 40 | 12 | DShot | 1500–2200 |
| Бесшумный | 1.5 | 12–24 | RS232 | 16000–20000 |
| С рекуперацией | 2×15 | 12 | USB/I2C | 8000–10000 |
| Герметичный | 100 | 36–48 | CAN | 25000–32000 |
| USB-драйвер | 2×3.6 | 6–24 | ШИМ | 400–600 |
| Учебный | 2 | 12 | ШИМ | 1000–1500 |
| Резервированный | 2×30 | 48 | EtherCAT | 29000–35000 |
| Влагозащищённый | 15 | 48 | CAN | 9000–11000 |
| Шаг | Действие |
|---|---|
| 1.1 | Записать массу $m$ (кг) |
| 1.2 | Записать $v_{\max}$ (м/с) |
| 1.3 | Записать $\mu$ (коэф. сцепления) |
| 1.4 | Определить $c_r$ по покрытию |
| 1.5 | Выписать особые ограничения |
| Шаг | Действие | Формула |
|---|---|---|
| 2.1 | Задать время разгона $t_{\text{acc}}$ | 1–2 с |
| 2.2 | Выбрать $n$ (редуктор) | 5,10,15,20,30,50 |
| 2.3 | Рассчитать $r$ | $r = \frac{v_{\max}}{314/n}$ |
| 2.4 | $F_x$ (сила тяги) | $F_x = 1.2(c_r m g + m v_{\max}/t_{\text{acc}})$ |
| 2.5 | Момент на колесе $\tau_{\text{wheel}}$ | $\tau_{\text{wheel}} = F_x r$ |
| 2.6 | Момент двигателя $\tau_{\text{motor}}$ | $\tau_{\text{motor}} = \tau_{\text{wheel}}/(n \eta)$ |
| 2.7 | Выбрать двигатель (табл.2) | $\tau_{\text{motor}} \le \tau_{\text{ном}}$ |
| 2.8 | Выписать $k_m, k_e, R, U$ | из паспорта |
| 2.9 | Выбрать редуктор (табл.1.1) | $n, \eta$ |
| 2.10 | Выбрать драйвер (табл.3) | $I_{\max} \ge \tau_{\text{motor}}/k_m$ |
| 2.11 | Рассчитать $k_1, k_2$ | $k_1 = \eta n k_m / R$, $k_2 = \eta n^2 k_e k_m / R$ |
| 2.12 | Проверить сцепление | $F_x \le \mu m g$ |
| Шаг | Действие |
|---|---|
| 3.1 | Создать Simulink-модель: Constant, Gain, Add, Integrator, Scope |
| 3.2 | Задать $k_1, k_2, m, F_r, U$ |
| 3.3 | Собрать $m\dot{v} = k_1U - k_2v - F_r$ |
| 3.4 | Получить $v(t)$, $a(t)$, $x(t)$ |
Реализуем тепловые модели, шумы, препятствия и другие эффекты из Лекции 2
В Практике 2 мы собрали базовую модель динамики:
В Лекции 2 мы рассмотрели дополнительные эффекты для разных групп вариантов:
U ──►[ k1 ]──►(∑)──►[1/m]──►[∫]──► v
▲ │ │
│ ▼ │
└────[ k2 ]◄──────────────────┘
│
└────[ Fr ]──────────────────►(∑)
Добавлены также блоки для тока и мощности:
v ──►[ n/r ]──► ω ──►[ ke ]──►(∑)──►[ 1/R ]──► i
▲ │
│ │
U ─────────────────────┘ └──►[×U]──► P_el
Добавляемые блоки:
i ──►[×U]──► P_el ──►(∑)──► P_total ──►[≤15]──► Stop
▲
│
[P_const]
Добавляемые блоки:
i ──►[d/dt]──►| |──►[β]──►[log]──►(∑)──► L_p
▲
│
[A_cogging]
Для вибраций: $a_{vib} = k_{vib} \cdot a$
a ──►[k_vib]──► a_vib ──►[≤0.1]──► (проверка)
i ──►[u²]──►[×R]──► P_loss ──►[÷C_th]──►[∫]──► T_m
▲ │
│ │
└──[ - ]─┘
(T - T_amb)/R_th
v ──►[u²]──►[÷(2·a_brake)]──► s_brake ──►[≤0.5]──► проверка
h ──►[1 - h/r]──►[u²]──►[1 - ...]──►[sqrt]──►[×mg]──► F_step ──►(∑ сил)
v ──►[u²]──►[× 0.5·ρ·Cx·A ]──► F_a ──►(∑ сил) с минусом
F_x ──►[> μmg(1+ε)]──► Switch ──► recovery_mode
d ──►[d <= d0]──► Switch ──►[×k_soft]──► F_obs ──►(∑ сил)
│ ▲
└──(d0 - d)─────────────┘
RH ──►[×k_μ]──►(∑)──► μ ──► в блок проверки сцепления
▲
│
[μ0]
Общий принцип: все дополнительные силы (аэродинамика, препятствия, crowd avoidance) добавляются в сумматор сил со знаком минус. Тепловые и шумовые модели — параллельно, они не влияют на движение, только на ограничения.
┌── F_a
│
├── F_step
U──►...──►(∑)──► движение
│
└── F_obs
Дополнительные проверки (температура, шум, мощность) подключаются к соответствующим сигналам и могут останавливать симуляцию при нарушении.
Параметры (из Практики 3):
Структура модели:
Ожидаемые результаты: при разгоне с максимальным ускорением di/dt может превысить лимит → симуляция остановится, нужно будет уменьшить ускорение (увеличить время разгона).
| Компонент | Есть? |
|---|---|
| Базовая динамика: v, a, x | ☐ |
| Расчёт тока i(t) | ☐ |
| Расчёт мощности P_el(t) | ☐ |
| Специфические блоки для вашей группы | ☐ |
| Проверка ограничений из ТЗ (с остановкой или предупреждением) | ☐ |
| Графики всех ключевых сигналов | ☐ |
variant_X_extended.slx.Замыкаем обратную связь, настраиваем Kp, исследуем влияние шумов и люфтов
Реализовать П-регулятор для слежения за линией, исследовать влияние коэффициента Kp на качество управления, а также влияние шумов и люфтов на устойчивость системы.
Заданная траектория (линия)
│
▼
[Сумматор ошибки]◄─── сигнал с датчиков
│
▼
[П-регулятор: Δu = Kp·e]
│
▼
[Преобразование в u_left, u_right]
│
▼
[Модель динамики с датчиками]
│
└───► сигналы датчиков
где $U_{ref}$ — напряжение, соответствующее положению точно над линией (обычно $U_{max}/2$).
variant_X_sensors.slx).
U_ref ──►(∑)──► e ──►[Kp]──► Δu ──►[0.5]──► Δu/2 ──►(∑)──► u_left
▲ │ ▲
│ │ │
U_IR ┘ └──►(∑)──► u_right
│ ▲
└────┘
u0 (constant)
| Kp | Перерегулирование | Время установления, с | Примечание |
|---|---|---|---|
| 0.05 | 0% | 3.2 | Медленно |
| 0.1 | 5% | 1.8 | Хорошо |
| 0.2 | 18% | 1.2 | Колебания |
| 0.5 | 35% | 1.0 | Сильные колебания |
| 1.0 | — | — | Неустойчиво |
Kp_крит ≈ 0.8, оптимальный Kp = 0.4.
Желаемая траектория (x_ref(t)) ──►[модель датчика]──► U_ref
(идеальный датчик)
│
▼
[сравнение с реальным]
Для создания трассы можно использовать Signal Builder или MATLAB-функцию.
По итогам работы необходимо сделать выводы по следующим пунктам:
variant_X_control.slx.Максимум 40 баллов: по 10 за каждый цикл + 10 за оформление
| Критерий | Макс. балл |
|---|---|
| Цикл 1: Анализ ТЗ и расчёт параметров - Корректно выписаны все исходные данные из ТЗ - Рассчитаны недостающие параметры (r, n, km, ke, R, k1, k2) - Выбраны компоненты (колёса, редуктор, двигатель, драйвер) - Проверены ограничения (сцепление, бюджет) | 10 |
| Цикл 2: Моделирование динамики и усложнения - Собрана базовая модель в Simulink - Добавлены усложнения по группе варианта (тепло, шум, аэродинамика и т.д.) - Добавлены датчики с шумами и люфт - Модель работает, выдаёт осмысленные результаты | 10 |
| Цикл 3: Регулятор и анализ разгона - Реализован П-регулятор, подобран оптимальный Kp - Проведён анализ разгона (t90, ts, OS, v_уст) - Проверено соответствие всем требованиям ТЗ - Проведён анализ влияния шумов/люфтов | 10 |
| Оформление отчёта - Структура отчёта соответствует требованиям - Все графики подписаны, имеют легенды, оси - Численные результаты сведены в таблицу - Сделаны чёткие выводы о соответствии ТЗ - Приложены все файлы (модель, скрипты, графики) | 10 |
| ИТОГО: | 40 |
| Требование ТЗ | Значение | Получено | Статус |
|---|---|---|---|
| Масса, кг | 1.2 ± 0.1 | 1.2 | ✅ |
| Скорость, м/с | ≥ 0.8 | 0.82 | ✅ |
| Перерегулирование, % | ≤ 20 | 15 | ✅ |
| Бюджет моторов, руб | ≤ 1500 | 1200 | ✅ |
Все файлы должны быть упакованы в один архив Фамилия_ИО_Вариант_X.zip со следующей структурой:
| ✓ | Пункт |
|---|---|
| ☐ | В отчёте указаны ФИО, группа, номер варианта |
| ☐ | Все исходные данные из ТЗ выписаны в таблицу |
| ☐ | Приведены расчёты недостающих параметров с формулами |
| ☐ | Есть скриншот модели Simulink |
| ☐ | Есть графики v(t), i(t), P(t) (минимум 3 графика) |
| ☐ | Графики подписаны, есть легенда, единицы измерения |
| ☐ | Показан процесс подбора Kp (таблица с разными значениями) |
| ☐ | Рассчитаны t90, ts, OS для выбранного Kp |
| ☐ | Составлена таблица соответствия всем пунктам ТЗ |
| ☐ | Сделаны выводы (соответствует / не соответствует) |
| ☐ | Все файлы (модель, скрипты, графики) приложены к архиву |
| ☐ | Архив назван по шаблону: Фамилия_ИО_Вариант_X.zip |
Аэродинамика, уклон, переменная масса, препятствия, тепловая модель, переменное сцепление
Научиться добавлять в модель дополнительные физические эффекты, учитывающие специфику варианта:
где $\rho = 1.225$ кг/м³ — плотность воздуха, $C_x$ — коэффициент лобового сопротивления, $A$ — лобовая площадь.
где $\alpha$ — угол наклона поверхности.
где $H(t)$ — функция Хевисайда (ступенька).
где $h$ — высота препятствия, $r$ — радиус колеса.
где $R_{th}$ — тепловое сопротивление, $C_{th}$ — теплоёмкость.
где $RH$ — относительная влажность, $k_\mu$ — коэффициент влияния.
| Группа | Варианты | Включаемые усложнения |
|---|---|---|
| 1. Эконом | 1, 8 | люфт, шум |
| 2. Точные | 2, 5, 9 | люфт (малый), шум (малый) |
| 3. Промышленные | 3, 6, 7 | переменная масса, люфт; для вар.3 + тепловая модель; для вар.7 + препятствия |
| 4. Экстремальные | 4, 10, 11 | аэродинамика, люфт, шум; для вар.11 + переменное трение, уклон; для вар.10 + препятствия |
report_template_block5.mlx усложнения включаются автоматически при указании номера варианта.
Требование: энергопотребление ≤15 Вт, КПД ≥85%
Вопрос для размышления: Как изменится энергопотребление при движении по уклону?
Требование: шум ≤40 дБ, вибрации ≤0.1g
Вопрос для размышления: Как снизить шум без потери производительности?
Требование: работа с грузом, наработка ≥2000 ч
Вопрос для размышления: Как загрузка влияет на время разгона и нагрев двигателя?
Требование: MTBF ≥5000 ч, безопасность, crowd avoidance
Вопрос для размышления: При какой скорости аэродинамика становится критичной?
main.mlx установите соответствующие флаги:
v ──► [Math Function: u²] ──► [Gain: 0.5·ρ·Cx·A] ──► [Sign] ──► F_air
u^20.5 * rho * Cx * A
t ──► [Step: t_load] ──► [Gain: m_load] ──► [Add] ──► m_total
│
m0
t_loadm_loadm0 через сумматорm_total в блоке 1/m для расчёта ускоренияmain.mlx или в report_template_block5.mlxВыявление критических параметров, обоснование допусков на изготовление
Определить, как изменение параметров системы влияет на её выходные характеристики. Это позволяет:
Чувствительность — это отношение относительного изменения выхода к относительному изменению параметра.
Чувствительность: $S = -1$. При увеличении массы на 1%, скорость падает на 1%.
Вывод: Масса — критический параметр. Допуск на массу должен быть жёстким.
Чувствительность: $S = 1$. При увеличении люфта на 1%, ошибка позиционирования растёт на 1%.
Вывод: Для точности ±2 мм максимальный люфт: $\delta_{max} = \frac{0.002}{r \cdot n}$.
Чувствительность: $S = 1$. При увеличении массы груза на 10%, время разгона увеличивается на 10%.
Вывод: Нужен запас по мощности для работы с максимальной нагрузкой.
При $v_{max}=2.5$ м/с чувствительность $S \approx -0.15$.
Вывод: На низких скоростях аэродинамика малочувствительна. На высоких (>10 м/с) чувствительность растёт.
| Группа | Второй параметр | Обозначение |
|---|---|---|
| 1. Эконом | Масса | $m$ |
| 2. Точные | Люфт | $\delta$ |
| 3. Промышленные | Масса груза / Теплосопротивление | $m_{load}$ / $R_{th}$ |
| 4. Экстремальные | Аэродинамика / Коэф. влажности | $C_x$ / $k_\mu$ |
1. Параметризация модели:
- Использовать переменные MATLAB в блоках Gain, Constant
- Например, в блоке Gain записать `k1`, а в Workspace задать `k1 = 0.0168`
2. Создать скрипт для перебора параметров:
To Workspace для сохранения сигналов. В параметрах блока выберите Save format: Structure With Time для удобной постобработки.
Simulink.SimulationInput и parfor для параллельного запуска.
| Критерий | Баллы |
|---|---|
| Понимание критериев оценки (из ТЗ) | 2 |
| Обоснование выбора усложнений (связь с группой) | 2 |
| Анализ влияния усложнений (сравнение графиков) | 2 |
| Анализ чувствительности (графики, расчёт S) | 2 |
| Выводы и обоснования (критические параметры, допуски) | 2 |
| ИТОГО за блок 5 | 10 |
Все результаты практик 9 и 10 автоматически собираются в report_template_block5.mlx:
reports/report_template_block5.mlxОценка вероятности успеха при случайном разбросе параметров
Научиться применять метод Монте-Карло для оценки вероятности успеха робота при случайном разбросе параметров.
| Группа | Параметры с разбросом | Распределение | Разброс |
|---|---|---|---|
| 1. Эконом | μ, m, U, k1 | Нормальное / Равномерное | σ=5-10% |
| 2. Точные | μ, m, U, k1, δ | Нормальное (малый разброс) | σ=3-5% |
| 3. Промышленные | μ, m, U, k1, m_load | Нормальное / Равномерное | σ=5-10% |
| 4. Экстремальные | μ, m, U, k1, Cx, RH | Нормальное / Равномерное | σ=5-15% |
Входные параметры:
config — базовая конфигурацияext_params — расширенные параметры (для люфта)flags — флаги усложненийsim_params — параметры симуляцииcontrol_mode — режим управленияparams_* — параметры усложненийN — количество итерацийv_target — целевая скорость из ТЗos_limit — допустимое перерегулированиеВыходные данные:
results.P_success — вероятность успехаresults.CI_lower, CI_upper — доверительный интервалresults.v_steady_mean, v_steady_std — статистика скоростиresults.overshoot_mean, overshoot_std — статистика перерегулированияТребование: v ≥ 0.8 м/с, OS ≤ 20%
Разброс параметров: μ ±10%, m ±5%, U ±5%
Ожидаемый результат: P_success ≈ 85-95%
Требование: v = 0.3-0.4 м/с, OS ≤ 5%
Разброс параметров: μ ±3%, m ±2%, δ ±5%
Ожидаемый результат: P_success ≈ 90-98% (жёсткие допуски)
Требование: v ≥ 0.6 м/с, работа с грузом
Разброс параметров: μ ±10%, m ±5%, m_load ±10%
Ожидаемый результат: P_success ≈ 80-90% (влияние нагрузки)
Требование: v = 0.4-1.2 м/с, MTBF ≥ 5000 ч
Разброс параметров: μ ±10%, Cx ±10%, U ±5%
Ожидаемый результат: P_success ≈ 85-95%
1. Параметризация модели (переменные в Workspace)
2. Скрипт с циклом for и sim()
3. Сбор результатов и постобработка
Simulink.SimulationInput для ускорения:
Расчёт MTBF, вероятности безотказной работы, риск-менеджмент
Научиться оценивать надёжность робота на основе моделей отказов компонентов.
| Компонент | Базовое λ (1/ч) | Гр.1 (эконом) | Гр.2 (точные) | Гр.3 (пром) | Гр.4 (экстр) |
|---|---|---|---|---|---|
| Двигатель (щёточный) | 1×10⁻⁴ | 2×10⁻⁴ | 5×10⁻⁵ | 8×10⁻⁵ | 5×10⁻⁵ |
| Двигатель (бесколлекторный) | 5×10⁻⁵ | — | 3×10⁻⁵ | 4×10⁻⁵ | 3×10⁻⁵ |
| Редуктор | 2×10⁻⁴ | 3×10⁻⁴ | 1×10⁻⁴ | 1.5×10⁻⁴ | 1×10⁻⁴ |
| Датчики (оптические) | 1×10⁻⁵ | 2×10⁻⁵ | 5×10⁻⁶ | 1×10⁻⁵ | 5×10⁻⁶ |
| Контроллер | 1×10⁻⁵ | 2×10⁻⁵ | 5×10⁻⁶ | 1×10⁻⁵ | 5×10⁻⁶ |
| Аккумулятор | 1×10⁻⁵ | 2×10⁻⁵ | 1×10⁻⁵ | 1×10⁻⁵ | 5×10⁻⁶ |
Требование: работа 16 ч/сутки, бюджет ограничен
Вывод: Надёжность достаточна для работы в течение смены.
Требование: работа 6 ч/сутки, низкий уровень отказов
Вывод: Высокая надёжность, соответствует медицинским требованиям.
Требование: MTBF ≥ 2000 ч, работа с нагрузкой
Вывод: Требование по MTBF выполняется.
Требование: MTBF ≥ 5000 ч, круглосуточная работа
Вывод: Требование выполняется, надёжность высокая.
1. Добавить блоки контроля температуры (если есть тепловая модель)
2. Добавить логику остановки при превышении лимитов
3. Внести данные об отказах в скрипт анализа
Пример модели отказоустойчивости:
┌─────────────────────────────────────────────────────────────┐
│ [Random Number] ──► [Math: -ln(1-u)/λ] ──► t_fail │
│ │ │
│ ▼ │
│ [Hit Crossing] ──► [Stop Simulation] │
└─────────────────────────────────────────────────────────────┘
| Критерий | Баллы |
|---|---|
| Понимание метода Монте-Карло (выбор распределений, N) | 2 |
| Корректная реализация Монте-Карло (генерация выборок, запуск) | 2 |
| Анализ результатов Монте-Карло (гистограммы, P_success, доверительный интервал) | 2 |
| Расчёт надёжности (λ, MTBF, R(t)) | 2 |
| Выводы и рекомендации по повышению надёжности | 2 |
| ИТОГО за блок 6 | 10 |
Все результаты практик 11 и 12 автоматически собираются в report_template_block6.mlx:
Построение иерархической структуры целей для вашего варианта LFR
Научиться строить дерево целей — иерархическую структуру, которая раскрывает главную цель через подцели и критерии качества. Дерево целей является основой для последующего применения метода анализа иерархий (AHP).
| Группа | Варианты | Ключевые особенности | Целевые показатели |
|---|---|---|---|
| 1. Эконом | 1, 8 | Стоимость, энергопотребление, скорость | ≤4500 руб (вар.1), ≤15 Вт (вар.8) |
| 2. Точные | 2, 5, 9 | Точность, шум, вибрации | ±2 мм (вар.2), ≤40 дБ (вар.5) |
| 3. Промышленные | 3, 6, 7 | Надёжность (MTBF), тяга, тепло | ≥2000 ч (вар.3), ≥50 Н (вар.3) |
| 4. Экстремальные | 4, 10, 11 | Аэродинамика, сцепление, проходимость | Cx ≤0.4, μ ≥0.7 (вар.4) |
get_variant_group(variant_number) автоматически определяет группу.
Уровень 1: Главная цель
│
├── Уровень 2: Основные критерии (3-4 шт.)
│ │
│ ├── Уровень 3: Подкритерии (2-3 на каждый критерий)
│ │
│ └── Целевые показатели (из ТЗ)
│
└── ...
Уровень 1: Создание LFR вариант 3: Промышленный тяжеловес
│
├── Уровень 2: Надёжность и долговечность
│ ├── Уровень 3: MTBF (наработка на отказ)
│ ├── Уровень 3: Вероятность безотказной работы
│ └── Цель: MTBF ≥2000 ч / R(t)≥0.95 за 1000 ч
│
├── Уровень 2: Тяговые характеристики
│ ├── Уровень 3: Максимальная тяга
│ ├── Уровень 3: Запас по сцеплению
│ └── Цель: F_x ≥50 Н / запас сцепления ≥20%
│
└── Уровень 2: Тепловой режим
├── Уровень 3: Максимальная температура
├── Уровень 3: Время нагрева
└── Цель: T_max ≤80°C / τ_heat ≥300 с
LFR складской эконом (вар.1)
|
-------------------------------------------------
| | |
Стоимость Энергопотребление Скорость
| | |
Бюджет ≤4500 руб P_el ≤15 Вт v ≥ 0.8 м/с
Стоимость мотора КПД ≥85% OS ≤ 20%
Стоимость редуктора Потери в редукторе
LFR медицинский курьер (вар.5)
|
-------------------------------------------------
| | |
Точность Шум Скорость
| | |
OS ≤ 10% ≤40 дБ v ≥ 0.7 м/с
Статическая ошибка вибрации ≤0.1g плавность разгона
Повторяемость акустический комфорт
LFR промышленный тяжеловес (вар.3)
|
-------------------------------------------------
| | |
Надёжность Тяга Тепловой режим
| | |
MTBF ≥2000 ч F_x ≥50 Н T_max ≤80°C
R(t) ≥0.95 за 1000 ч запас сцепления время нагрева
Ремонтопригодность тяга на подъём охлаждение
LFR соревновательный гонщик (вар.4)
|
-------------------------------------------------
| | |
Аэродинамика Сцепление Скорость
| | |
Cx ≤0.4 μ ≥0.7 v ≥ 2.5 м/с
A ≤0.015 м² срыв сцепления время круга
прижимная сила устойчивость разгон
decision/goal_tree.m — основная функция построения дереваreport_template_block7.m — скрипт, который использует goal_treegoal_tree(variant_number)| Раздел | Содержание |
|---|---|
| 1. Группа варианта | Номер группы (1-4) и обоснование |
| 2. Дерево целей | Рисунок из goal_tree.m с подписями |
| 3. Анализ дерева | Пояснение выбора критериев и подкритериев |
| 4. Таблица критериев | Критерии, подкритерии, целевые показатели |
Формальный подход к сравнению альтернатив: матрицы парных сравнений, веса критериев, проверка согласованности
Применить метод анализа иерархий (AHP) для выбора лучшей альтернативы компонентов (двигателей, колёс, редукторов) для вашего варианта LFR.
Обоснование: Надёжность важнее тяги в 3 раза, важнее стоимости в 5 раз; тяга важнее стоимости в 3 раза.
Матрица по стоимости (чем ниже, тем лучше):
[1, 1.5, 0.8; 0.67, 1, 0.5; 1.25, 2, 1]
Матрица по энергопотреблению:
[1, 1.25, 0.875; 0.8, 1, 0.7; 1.14, 1.43, 1]
Матрица по скорости:
[1, 0.94, 1.13; 1.06, 1, 1.2; 0.88, 0.83, 1]
Матрица по точности (чем меньше люфт, тем лучше):
[1, 2.5, 6; 0.4, 1, 2.5; 0.167, 0.4, 1]
Матрица по шуму:
[1, 2, 4; 0.5, 1, 2; 0.25, 0.5, 1]
Матрица по скорости:
[1, 0.89, 0.8; 1.12, 1, 0.9; 1.25, 1.11, 1]
Матрица по надёжности:
[1, 1/6, 1/3; 6, 1, 2; 3, 1/2, 1]
Матрица по тяге:
[1, 2, 3; 1/2, 1, 2; 1/3, 1/2, 1]
Матрица по стоимости:
[1, 4, 2; 1/4, 1, 1/2; 1/2, 2, 1]
Матрица по аэродинамике (чем меньше Cx, тем лучше):
[1, 2, 1.5; 0.5, 1, 0.75; 0.67, 1.33, 1]
Матрица по сцеплению:
[1, 1.5, 4; 0.67, 1, 2.5; 0.25, 0.4, 1]
Матрица по проходимости:
[1, 0.5, 2; 2, 1, 4; 0.5, 0.25, 1]
decision/ahp_matrix.m — расчёт весов и CRdecision/evaluate_alternatives.m — оценка альтернативreport_template_block7.m — полный скрипт отчётаРеализация ПИ и ПИД-регуляторов в MATLAB и Simulink для слежения за линией
Реализовать ПИ и ПИД-регуляторы для управления движением LFR по линии, изучить их математические модели и научиться настраивать коэффициенты.
control/pi_controller.m| Шаг | Действие |
|---|---|
| 1 | Настроить Kp методом проб (как для П-регулятора) |
| 2 | Запомнить критический Kp (Kp_crit), при котором начинаются колебания |
| 3 | Установить Kp = 0.45·Kp_crit (для ПИ-регулятора) |
| 4 | Установить Ki = 0.54·Kp_crit / T_crit (T_crit — период колебаний) |
control/pid_controller.m| Шаг | Действие |
|---|---|
| 1 | Настроить Kp методом проб (как для П-регулятора) |
| 2 | Запомнить критический Kp (Kp_crit) и период колебаний T_crit |
| 3 | Установить параметры по Зиглеру-Никольсу: |
| Kp = 0.6·Kp_crit | |
| Ki = 1.2·Kp_crit / T_crit | |
| Kd = 0.075·Kp_crit·T_crit |
e(t) ──►[Kp]───┐
│
┌────┴────┐
│ │
│ 1/s │
│(Integrator)│
└────┬────┘
│
[Ki]──┘────►[Sum]──► u(t)
e(t) ──►[Kp]───┐
│
┌────┴────┐
│ │
│ 1/s │
└────┬────┘
│
[Ki]──┘
│
┌────┴────┐
│ │
│ du/dt │
│Derivative│
└────┬────┘
│
[Kd]──┘────►[Sum]──► u(t)
pi_controller.mpid_controller.m| Раздел | Содержание |
|---|---|
| 1. Математические модели | Формулы П, ПИ, ПИД-регуляторов |
| 2. Реализация регуляторов | Код функций, схема в Simulink |
| 3. Настройка коэффициентов | Таблица с Kp, Ki, Kd для вашего варианта |
| 4. Графики переходных процессов | Сравнение П и ПИ и ПИД на одном графике |
| 5. Выводы | Какие коэффициенты оптимальны, почему |
Сравнение П, ПИ, ПИД-регуляторов по критериям качества, выбор оптимального регулятора для вашего варианта
Провести сравнительный анализ П, ПИ и ПИД-регуляторов для управления LFR, оценить их эффективность по критериям качества и выбрать оптимальный регулятор для вашего варианта.
optimization/compare_controllers.m| Группа | Рекомендуемый регулятор | Пример Kp | Пример Ki | Пример Kd |
|---|---|---|---|---|
| 1. Эконом | П | 0.3-0.5 | — | — |
| 2. Точные | ПИ | 0.2-0.4 | 0.02-0.06 | — |
| 3. Промышленные | ПИД | 0.3-0.5 | 0.05-0.10 | 0.01-0.03 |
| 4. Экстремальные | ПИД с фильтром | 0.4-0.6 | 0.08-0.15 | 0.02-0.04 |
Рекомендуется П-регулятор.
Рекомендуется ПИ-регулятор.
Рекомендуется ПИД-регулятор.
Рекомендуется ПИД-регулятор с фильтром.
После выполнения симуляций заполните таблицу для своего варианта:
| Регулятор | Kp | Ki | Kd | t95%, с | OS, % | ess, % | Оценка |
|---|---|---|---|---|---|---|---|
| П | — | — | □ | ||||
| ПИ | — | □ | |||||
| ПИД | □ |
| Регулятор | Без шума/люфта | С шумом (σ=0.03) | С люфтом (δ=0.005 рад) | С шумом + люфтом |
|---|---|---|---|---|
| П | ✓ устойчив | ✓ слабое влияние | ✓ слабое влияние | ✓ устойчив |
| ПИ | ✓ устойчив | ○ влияние на интегратор | ○ небольшое перерегулирование | ○ требуется уменьшить Ki |
| ПИД | ✓ устойчив | ⚠️ сильное влияние | ⚠️ автоколебания | ⚠️ может быть неустойчив |
| Раздел | Содержание |
|---|---|
| 1. Параметры регуляторов | Таблица с подобранными Kp, Ki, Kd |
| 2. Сравнительные графики | Скорость, ошибка, управление для П, ПИ, ПИД |
| 3. Сравнительная таблица метрик | t95%, OS, ess для всех регуляторов |
| 4. Анализ устойчивости | Влияние шумов и люфта на работу регуляторов |
| 5. Выбор оптимального регулятора | Обоснование выбора для вашего варианта |
| 6. Выводы | Краткие итоги работы |
| Критерий | Баллы | Описание |
|---|---|---|
| 1. Реализация ПИ-регулятора | 1.5 | Правильная работа, anti-windup |
| 2. Реализация ПИД-регулятора | 1.5 | Правильная работа, фильтр производной |
| 3. Подбор коэффициентов | 1.5 | Kp, Ki, Kd обоснованы, метод настройки описан |
| 4. Сравнительная таблица | 1.5 | t95%, OS, ess для всех регуляторов |
| 5. Анализ влияния шумов/люфта | 1 | Оценка устойчивости, рекомендации |
| 6. Выбор оптимального регулятора | 1.5 | Обоснованный выбор для своего варианта |
| 7. Выводы и оформление | 1.5 | Чёткие выводы, аккуратные графики |
| ИТОГО | 10 |
Целевая функция, оптимизация Kp, Ki, Kd для выбранного регулятора
Научиться настраивать коэффициенты регулятора с помощью методов оптимизации для достижения наилучших показателей качества.
optimization/objective_function.m| Группа | w1 (t_rise) | w2 (OS) | w3 (e_ss) |
|---|---|---|---|
| 1. Эконом | 0.3 | 0.3 | 0.4 |
| 2. Точные | 0.2 | 0.4 | 0.4 |
| 3. Промышленные | 0.4 | 0.3 | 0.3 |
| 4. Экстремальные | 0.5 | 0.3 | 0.2 |
optimization/optimize_kp.moptimization/optimize_params.m| Метод | Kp | Ki | Kd | t_95%, с | OS, % | J |
|---|---|---|---|---|---|---|
| Зиглер-Никольс (П) | 0.30 | — | — | 2.1 | 12 | 0.45 |
| Зиглер-Никольс (ПИД) | 0.36 | 0.07 | 0.018 | 1.5 | 8 | 0.32 |
| Оптимизация (П) | 0.42 | — | — | 1.8 | 15 | 0.38 |
| Оптимизация (ПИД) | 0.38 | 0.09 | 0.022 | 1.2 | 5 | 0.25 |
objective_function.m с подходящими весами для вашей группыoptimize_kp.m| Раздел | Содержание |
|---|---|
| 1. Целевая функция | Формула, веса, ограничения |
| 2. Оптимизация Kp | График J(Kp), оптимальное значение |
| 3. Оптимизация Kp, Ki, Kd | Итерации оптимизации, конечные значения |
| 4. Сравнительная таблица | Зиглер-Никольс vs Оптимизация |
| 5. Выводы | Насколько улучшилось качество регулирования |
Построение фронта Парето, интеграция всех модулей, формирование итогового отчёта по проекту
Провести многокритериальный анализ, построить фронт Парето для компромиссных решений, интегрировать все модули и сформировать итоговый отчёт по проекту.
analysis/pareto_front.mutils/export_figures.mutils/save_report.m
┌─────────────────────────────────────────────────────────────────────┐
│ ИТОГОВЫЙ СКРИПТ (final_integration.m) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 1. ЗАГРУЗКА КОНФИГУРАЦИИ │
│ └── variant_config, params_extended │
│ │
│ 2. БЛОК 5: РАСШИРЕННЫЕ МОДЕЛИ │
│ └── add_aerodynamics, add_slope, add_variable_mass... │
│ │
│ 3. БЛОК 6: ВЕРОЯТНОСТНЫЕ МЕТОДЫ │
│ └── monte_carlo, reliability_analysis │
│ │
│ 4. БЛОК 7: ПРИНЯТИЕ РЕШЕНИЙ │
│ └── goal_tree, ahp_matrix, evaluate_alternatives │
│ │
│ 5. БЛОК 8: СРАВНЕНИЕ РЕГУЛЯТОРОВ │
│ └── compare_controllers │
│ │
│ 6. БЛОК 9: ОПТИМИЗАЦИЯ │
│ └── optimize_kp, optimize_params, pareto_front │
│ │
│ 7. ФОРМИРОВАНИЕ ОТЧЁТА │
│ └── export_figures, save_report │
│ │
└─────────────────────────────────────────────────────────────────────┘
figures/| Блок | Содержание |
|---|---|
| Блок 5 | Расширенные модели, анализ чувствительности |
| Блок 6 | Монте-Карло, надёжность (графики R(t), гистограммы) |
| Блок 7 | Дерево целей, AHP, выбор альтернативы |
| Блок 8 | Сравнение регуляторов, выбор оптимального |
| Блок 9 | Оптимизация, Парето-фронт, итоговые параметры |
| Приложения | Код, графики, результаты симуляций |
| Критерий | Баллы | Описание |
|---|---|---|
| 1. Фронт Парето | 1.5 | Построен корректно, точки на графике, пояснения |
| 2. Компромиссное решение | 1 | Выбрано, обосновано, отмечено на графике |
| 3. Экспорт графиков | 0.5 | Все графики сохранены, подписаны |
| 4. Итоговый отчёт | 1.5 | Структурирован, полнота, оформление |
| 5. Презентация | 1 | 5-7 слайдов, наглядность, ключевые результаты |
| 6. Интеграция всех блоков | 1.5 | Все 9 лекций отражены в работе |
| 7. Выводы и рекомендации | 1 | Чёткие выводы, инженерные рекомендации |
| 8. Защита | 2 | Ответы на вопросы, понимание работы | ИТОГО | 10 |
Полное описание файловой структуры LFR Simulator — модульная организация кода, функции по лекциям, шаблоны отчётов
Библиотека функций MATLAB для системного анализа LFR (без Simulink)
💡 Примечание: Большинство функций работают без дополнительных工具箱, но для полной функциональности рекомендуется установить указанные пакеты.
LFR_Simulator/
│
├── main.mlx # ГЛАВНЫЙ (точка входа)
│
├── config/ # КОНФИГУРАЦИЯ
│ ├── default_config.m # Базовые параметры
│ ├── variant_config.m # Параметры по варианту (1-11)
│ └── params_extended.m # Расширенные параметры (шум, люфт)
│
├── core/ # ЯДРО СИМУЛЯЦИИ
│ ├── simulate_robot.m # Основная симуляция (с поддержкой регуляторов)
│ └── base_dynamics.m # Базовая динамика
│
├── dynamics/ # УСЛОЖНЕНИЯ ДИНАМИКИ
│ ├── add_aerodynamics.m # Сопротивление воздуха
│ ├── add_slope.m # Гравитация на уклоне
│ ├── add_variable_mass.m # Переменная масса
│ ├── add_variable_friction.m # Переменное сцепление (влажность)
│ └── add_obstacle.m # Препятствия
│
├── actuators/ # АКТУАТОРЫ
│ ├── heating_model.m # Тепловая модель двигателя
│ └── backlash_model.m # Люфт в редукторе
│
├── sensors/ # ДАТЧИКИ
│ ├── ir_sensor.m # ИК-датчик линии
│ ├── encoder.m # Энкодер с квантованием
│ └── gyro.m # Гироскоп с дрейфом
│
├── disturbances/ # ВОЗМУЩЕНИЯ
│ └── add_noise.m # Добавление шума
│
├── control/ # РЕГУЛЯТОРЫ ✅ Блок 8
│ ├── p_controller.m # П-регулятор
│ ├── pi_controller.m # ПИ-регулятор
│ ├── pid_controller.m # ПИД-регулятор
│ └── trajectory_generator.m # Генератор трассы
│
├── analysis/ # АНАЛИЗ РЕЗУЛЬТАТОВ
│ ├── analyze_transient.m # Переходные процессы
│ ├── analyze_sensitivity.m # Анализ чувствительности (Блок 5)
│ ├── monte_carlo.m # Метод Монте-Карло (Блок 6)
│ ├── reliability_analysis.m # Анализ надёжности (Блок 6)
│ ├── pareto_front.m # Фронт Парето (Блок 9)
│ ├── plot_results_simple.m # Визуализация
│ └── save_results.m # Сохранение результатов
│
├── decision/ # ПРИНЯТИЕ РЕШЕНИЙ ✅ Блок 7
│ ├── goal_tree.m # Дерево целей
│ ├── ahp_matrix.m # Метод AHP (веса критериев)
│ └── evaluate_alternatives.m # Оценка альтернатив
│
├── optimization/ # ОПТИМИЗАЦИЯ ✅ Блок 9
│ ├── objective_function.m # Целевая функция
│ ├── optimize_kp.m # Оптимизация Kp
│ ├── optimize_params.m # Многопараметрическая оптимизация
│ └── compare_controllers.m # Сравнение регуляторов (Блок 8)
│
├── utils/ # ВСПОМОГАТЕЛЬНЫЕ
│ ├── check_limits.m # Проверка ограничений
│ ├── generate_variants.m # Генерация случайных выборок
│ ├── run_simulation_batch.m # Пакетный запуск
│ ├── save_report.m # Сохранение отчёта (HTML/TXT/MAT)
│ └── export_figures.m # Экспорт графиков
│
└── reports/ # ШАБЛОНЫ ОТЧЁТОВ
├── report_template_block5.mlx # Блок 5 (Лекция 5) — ✅
├── report_template_block6.mlx # Блок 6 (Лекция 6) — ✅
├── report_template_block7.mlx # Блок 7 (Лекция 7) — ✅
├── report_template_block8.mlx # Блок 8 (Лекция 8) — ✅
└── report_template_block9.mlx # Блок 9 (Лекция 9) — ✅
| Группа | Номера вариантов | Характеристика | Ключевые усложнения | Файлы |
|---|---|---|---|---|
| 1. Эконом | 1, 8 | Низкая стоимость, энергоэффективность | Энергопотребление, люфт, шум | variant_config.m, params_extended.m |
| 2. Высокоточные | 2, 5, 9 | Точность позиционирования, низкий шум | Люфт (малый), шум, вибрации, гироскоп | variant_config.m, params_extended.m, ir_sensor.m |
| 3. Промышленные | 3, 6, 7 | Надёжность, работа с нагрузкой, тепло | Переменная масса, тепловая модель, препятствия | add_variable_mass.m, heating_model.m, add_obstacle.m |
| 4. Экстремальные | 4, 10, 11 | Высокая скорость, сложные условия | Аэродинамика, переменное сцепление, crowd avoidance | add_aerodynamics.m, add_variable_friction.m |
variant_config.m и params_extended.m задаются индивидуальные параметры.
| Блок | Лекция | Практики | Файл отчёта | Содержание | Статус |
|---|---|---|---|---|---|
| Блок 5 | Лекция 5 | 9, 10 | report_template_block5.mlx | Расширенные модели, анализ чувствительности | ✅ Готов |
| Блок 6 | Лекция 6 | 11, 12 | report_template_block6.mlx | Метод Монте-Карло, анализ надёжности | ✅ Готов |
| Блок 7 | Лекция 7 | 13, 14 | report_template_block7.mlx | Дерево целей, метод AHP | ✅ Готов |
| Блок 8 | Лекция 8 | 15, 16 | report_template_block8.mlx | Сравнение регуляторов (П, ПИ, ПИД) | ✅ Готов |
| Блок 9 | Лекция 9 | 17, 18 | report_template_block9.mlx | Оптимизация, Парето, итоговый отчёт | ✅ Готов |
main.mlx, задать variant_number. Запустить — проверить, что скорость соответствует ТЗ.
report_template_block5.mlx. Включить усложнения по группе, проанализировать чувствительность.
report_template_block6.mlx. Выполнить метод Монте-Карло, анализ надёжности.
report_template_block7.mlx. Построить дерево целей, выполнить AHP, выбрать лучшую альтернативу.
report_template_block8.mlx. Сравнить П, ПИ, ПИД регуляторы, выбрать оптимальный.
report_template_block9.mlx. Оптимизировать параметры, построить фронт Парето, сформировать итоговый отчёт.
Базовая динамика: m·dv/dt = Fx - Fr
Сила тяги: Fx = (η·n·km/R)·U - (η·n²·ke·km/R)·v
Ток двигателя: i = (U - ke·ω)/R, ω = n·v/r
Аэродинамика: Fair = 0.5·ρ·Cx·A·v²
Тепловая модель: dT/dt = (i²·R - (T - Tamb)/Rth)/Cth
П-регулятор: u(t) = Kp·e(t)
ПИ-регулятор: u(t) = Kp·e(t) + Ki·∫e(t)dt
ПИД-регулятор: u(t) = Kp·e(t) + Ki·∫e(t)dt + Kd·de/dt
Метод AHP: w_i = (1/n)·Σ(aij/Σakj), CR = CI/RI < 0.1
Надёжность: R(t) = e-λt, MTBF = 1/λ
Монте-Карло: Psuccess = Nsuccess/N, CI = p̂ ± z·√(p̂(1-p̂)/N)
Целевая функция: J = w₁·t95% + w₂·OS + w₃·ess
| Компонент | Файлы | Назначение | Блок |
|---|---|---|---|
| Конфигурация | variant_config.m, params_extended.m | Параметры по варианту | — |
| Симуляция | simulate_robot.m, base_dynamics.m | Основной цикл симуляции | — |
| Усложнения | dynamics/*, actuators/* | Аэродинамика, уклон, масса, тепло, люфт | Блок 5 |
| Анализ чувствительности | analyze_sensitivity.m | Чувствительность v_steady к параметрам | Блок 5 |
| Монте-Карло | monte_carlo.m | Вероятность успеха, доверительные интервалы | Блок 6 |
| Надёжность | reliability_analysis.m | MTBF, интенсивность отказов, R(t) | Блок 6 |
| Дерево целей / AHP | decision/* | Декомпозиция, выбор альтернатив | Блок 7 |
| Регуляторы | control/* | П, ПИ, ПИД регуляторы | Блок 8 |
| Оптимизация | optimization/* | Целевая функция, оптимизация Kp, Парето | Блок 9 |
| Отчёты | reports/* | Шаблоны для всех блоков | — |
📅 Актуальная версия: Апрель 2026
🔧 MATLAB R2020a или новее
📧 По вопросам: обратитесь к преподавателю