Урок 20 • 7 класс STEM • 45 минут
Создать робота, который учится адаптироваться!
Вдохновение из природы:
STEM-интеграция:
Простой робот:
1Алгоритм движения по линии:
21. Считать значение с датчика
32. ЕСЛИ значение > 50 ТО поворот влево
43. ИНАЧЕ поворот вправо
54. Повторить
Проблема: что если освещение изменилось?
Адаптивный робот:
1Алгоритм с адаптацией:
21. Измерить контрастность линии
32. Подстроить пороговое значение
43. Использовать новый порог для движения
54. Оценить качество движения
65. При необходимости скорректировать порог
Робот сам учится работать в новых условиях!
Арктическая лиса:
Перелетные птицы:
Дельфины:
1Безусловный рефлекс (врожденный):
2Громкий звук → Вздрагивание
3
4Условный рефлекс (приобретенный):
5Звук консервной банки → Слюноотделение у собаки
1Процесс обучения птенца летать:
21. Попытка полета
32. Анализ результата (успех/неудача)
43. Корректировка движений крыльев
54. Повторение до успеха
Шимпанзе учатся использовать инструменты:
1. Гомеостаз - поддержание стабильности
1У животных: Температура тела 36.6°C
2У роботов: Поддержание скорости движения
2. Обратная связь - коррекция по результату
1У животных: Коррекция движения при ходьбе
2У роботов: Коррекция траектории при отклонении
3. Обучение с подкреплением - награда за успех
1У животных: Удовольствие от получения пищи
2У роботов: "Награда" за выполнение задачи
4. Фильтрация информации - выделение важного
1У животных: Внимание к опасности, игнорирование фона
2У роботов: Фильтрация шумов датчиков
Восприятие интенсивности стимула: $$S = k \cdot \log\left(\frac{I}{I_0}\right)$$
где:
Применение в робототехнике: Логарифмическая шкала для датчиков позволяет роботу лучше различать слабые сигналы при высоком фоне
Экспоненциальная функция обучения: $$P(t) = P_{max}(1 - e^{-\lambda t})$$
где:
Чем больше практики, тем лучше результат, но прирост замедляется
1 1. ВОСПРИЯТИЕ
2 ↓
3 Сбор данных о среде
4 через датчики
5 ↓
6
7 2. АНАЛИЗ
8 ↓
9 Обработка данных,
10 выявление закономерностей
11 ↓
12
13 3. РЕШЕНИЕ
14 ↓
15 Выбор оптимального
16 действия
17 ↓
18
19 4. ДЕЙСТВИЕ
20 ↓
21 Выполнение выбранного
22 действия
23 ↓
24
25 5. ОЦЕНКА
26 ↓
27 Анализ результата,
28 обновление знаний
29 ↓
30 (возврат к этапу 1)
Сглаживание колебаний датчиков: $$\bar{x}n = \frac{1}{w} \sum{i=n-w+1}^{n} x_i$$
где $w$ - размер окна усреднения
Пример: Измерения расстояния: [25, 27, 85, 26, 24]
Правило 3-сигм: $$|x_i - \bar{x}| > 3\sigma$$
Если измерение отклоняется более чем на 3 стандартных отклонения от среднего, то оно считается выбросом и игнорируется.
Практический алгоритм:
11. Собрать 5-10 измерений
22. Вычислить среднее и стандартное отклонение
33. Отбросить выбросы
44. Пересчитать среднее по "чистым" данным
1Алгоритм подстройки скорости:
21. Измерить фактическую скорость
32. Сравнить с целевой скоростью
43. ЕСЛИ скорость < целевой ТО
5 увеличить мощность на 5%
6 ИНАЧЕ
7 уменьшить мощность на 3%
84. Повторить через 100 мс
Преимущества: быстрая реакция, простота Недостатки: может быть нестабильной
1Алгоритм адаптации к поверхности:
21. Создать таблицу "Тип поверхности → Оптимальная мощность"
32. При попадании на новую поверхность:
4 - Определить её тип (по цвету/текстуре)
5 - Найти в таблице оптимальную мощность
6 - ЕСЛИ поверхность новая ТО
7 начать с базовой мощности и адаптироваться
83. Запомнить результат в таблице
Преимущества: накапливает опыт, становится умнее Недостатки: требует больше памяти и вычислений
1Алгоритм калибровки датчика цвета:
21. Измерить цвет белого эталона
32. Вычислить коэффициент освещения:
4 K = эталонное_значение / измеренное_значение
53. Скорректировать все измерения:
6 цвет_скорректированный = цвет_измеренный × K
74. Обновлять коэффициент каждые 30 секунд
1Алгоритм выбора стратегии объезда:
21. Измерить размер препятствия
32. Оценить доступное пространство слева и справа
43. Выбрать стратегию:
5 ЕСЛИ препятствие < 20 см ТО объехать справа
6 ИНАЧЕ ЕСЛИ свободно_слева > свободно_справа ТО
7 объехать слева
8 ИНАЧЕ
9 объехать справа
104. Запомнить успешность выбранной стратегии
115. При встрече похожего препятствия учесть опыт
$$u(t) = K_p e(t) + K_i \int_0^t e(\tau) d\tau + K_d \frac{de(t)}{dt}$$
где:
Адаптивный PID:
$$S_t = \alpha \times X_t + (1-\alpha) \times S_{t-1}$$
где:
Адаптивное сглаживание:
Ситуация: Робот должен доставлять грузы по зданию, перемещаясь по разным поверхностям (плитка, ковер, пороги)
Цель: Поддерживать стабильную скорость 30 см/с независимо от типа поверхности
Необходимые датчики:
Алгоритм адаптации:
11. Измерить тип поверхности по цвету
22. Установить начальную мощность по таблице:
3 - Гладкая поверхность: 40%
4 - Ковер: 70%
5 - Неизвестная: 50%
63. Каждые 200 мс:
7 - Измерить фактическую скорость
8 - ЕСЛИ скорость < 25 см/с ТО увеличить мощность на 5%
9 - ЕСЛИ скорость > 35 см/с ТО уменьшить мощность на 3%
104. Запомнить оптимальную мощность для данного типа поверхности
Ситуация: Робот исследует неизвестную территорию с различными препятствиями
Цель: Эффективно обходить препятствия, выбирая оптимальную стратегию
Необходимые датчики:
Стратегии объезда:
1Анализ препятствия:
21. Измерить ширину препятствия сканированием
32. Оценить свободное пространство слева и справа
43. Выбрать стратегию:
5 - Узкое препятствие (< 30 см): объезд по кратчайшему пути
6 - Широкое препятствие: объезд с большим отступом
7 - Стена: движение вдоль стены до прохода
84. Оценить эффективность:
9 - Время объезда
10 - Пройденное расстояние
11 - Количество столкновений
125. Обновить предпочтения для похожих препятствий
Ситуация: Робот сортирует объекты по цветам в помещении с изменяющимся освещением
Цель: Поддерживать точность сортировки > 90% при любом освещении
Необходимые датчики:
Алгоритм калибровки:
1Адаптивная калибровка цветов:
21. При старте калибровка по эталонным цветам:
3 - Поместить красный, зеленый, синий эталоны
4 - Записать RGB значения при текущем освещении
52. Каждые 60 секунд:
6 - Измерить освещенность
7 - ЕСЛИ изменение > 20% ТО
8 провести быструю рекалибровку
93. Адаптивные пороги:
10 - Красный: R > 1.5×(G+B) × К_освещения
11 - Зеленый: G > 1.5×(R+B) × К_освещения
12 - Синий: B > 1.5×(R+G) × К_освещения
134. При ошибке сортировки:
14 - Скорректировать пороги на ±10%
15 - Запомнить новые значения
Ситуация: Робот патрулирует территорию и должен работать максимально долго на одном заряде
Цель: Оптимизировать энергопотребление в зависимости от задач
Необходимые датчики:
Режимы энергосбережения:
1Адаптивное управление энергией:
21. Мониторинг энергопотребления:
3 - Измерять ток каждые 10 секунд
4 - Вести журнал потребления по задачам
52. Динамическая оптимизация:
6 - При заряде > 70%: полная мощность
7 - При заряде 30-70%: экономичный режим
8 - При заряде < 30%: минимальное потребление
93. Адаптация алгоритмов:
10 - Снижение скорости движения
11 - Увеличение интервалов измерений
12 - Отключение неприоритетных функций
134. Прогнозирование:
14 - Оценка времени работы до разряда
15 - Планирование возврата к зарядной станции
1// Глобальные переменные для адаптации
2float адаптивный_параметр = базовое_значение
3float[] история_измерений = новый_массив(10)
4int индекс_измерения = 0
5bool режим_обучения = истина
6
7основная_программа():
8 инициализация_датчиков()
9
10 ПОКА работаем:
11 // 1. Восприятие
12 данные = считать_датчики()
13
14 // 2. Анализ
15 обработанные_данные = фильтрация(данные)
16
17 // 3. Адаптация
18 ЕСЛИ режим_обучения ТО
19 адаптивный_параметр = обучение(обработанные_данные)
20
21 // 4. Действие
22 выполнить_действие(адаптивный_параметр)
23
24 // 5. Оценка
25 результат = оценить_эффективность()
26 обновить_опыт(результат)
27
28 пауза(100) // мс
1функция скользящее_среднее(новое_значение):
2 // Добавляем новое значение в массив
3 история_измерений[индекс_измерения] = новое_значение
4 индекс_измерения = (индекс_измерения + 1) % размер_массива
5
6 // Вычисляем среднее
7 сумма = 0
8 ДЛЯ i = 0 ДО размер_массива:
9 сумма = сумма + история_измерений[i]
10
11 ВЕРНУТЬ сумма / размер_массива
1функция фильтр_выбросов(новое_значение):
2 // Вычисляем текущее среднее
3 среднее = скользящее_среднее(новое_значение)
4
5 // Проверяем на выброс
6 отклонение = абсолютное_значение(новое_значение - среднее)
7 ЕСЛИ отклонение > порог_выброса ТО
8 // Используем предыдущее значение
9 ВЕРНУТЬ история_измерений[индекс_измерения - 1]
10 ИНАЧЕ
11 ВЕРНУТЬ новое_значение
1функция адаптивное_сглаживание(новое_значение):
2 статическая переменная сглаженное_значение = 0
3
4 // Определяем коэффициент сглаживания
5 ЕСЛИ первый_запуск ТО
6 коэффициент = 1.0
7 ИНАЧЕ ЕСЛИ изменения_быстрые ТО
8 коэффициент = 0.7 // Быстрая адаптация
9 ИНАЧЕ
10 коэффициент = 0.2 // Медленная адаптация
11
12 // Экспоненциальное сглаживание
13 сглаженное_значение = коэффициент × новое_значение +
14 (1 - коэффициент) × сглаженное_значение
15
16 ВЕРНУТЬ сглаженное_значение
1функция адаптация_мощности(целевая_скорость, фактическая_скорость):
2 ошибка = целевая_скорость - фактическая_скорость
3
4 ЕСЛИ ошибка > 5 ТО
5 // Слишком медленно - увеличиваем мощность
6 мощность = мощность + 5
7 ИНАЧЕ ЕСЛИ ошибка < -5 ТО
8 // Слишком быстро - уменьшаем мощность
9 мощность = мощность - 3
10
11 // Ограничиваем мощность
12 ЕСЛИ мощность > 100 ТО мощность = 100
13 ЕСЛИ мощность < 20 ТО мощность = 20
14
15 ВЕРНУТЬ мощность
1структура опыт_поверхности:
2 тип_поверхности
3 оптимальная_мощность
4 количество_использований
5 средняя_эффективность
6
7функция обучение_поверхностям(тип_поверхности, результат):
8 // Найти запись о данном типе поверхности
9 опыт = найти_в_базе(тип_поверхности)
10
11 ЕСЛИ опыт НЕ найден ТО
12 // Создать новую запись
13 опыт = новый опыт_поверхности()
14 опыт.тип_поверхности = тип_поверхности
15 опыт.оптимальная_мощность = текущая_мощность
16
17 // Обновить статистику
18 опыт.количество_использований++
19
20 ЕСЛИ результат = "успех" ТО
21 // Результат хороший, слегка скорректировать в сторону текущих настроек
22 опыт.оптимальная_мощность = 0.9 × опыт.оптимальная_мощность +
23 0.1 × текущая_мощность
24 ИНАЧЕ
25 // Результат плохой, попробовать другие настройки
26 опыт.оптимальная_мощность = опыт.оптимальная_мощность ± случайное_изменение
27
28 сохранить_в_базе(опыт)
1функция оценить_эффективность():
2 // Собираем данные за последние N секунд
3 данные = собрать_данные_за_период(10) // секунд
4
5 // Вычисляем метрики
6 точность = вычислить_точность_выполнения_задачи(данные)
7 скорость = вычислить_среднюю_скорость(данные)
8 стабильность = вычислить_стабильность(данные)
9 энергоэффективность = вычислить_расход_энергии(данные)
10
11 // Комплексная оценка
12 итоговая_оценка = 0.4 × точность +
13 0.3 × скорость +
14 0.2 × стабильность +
15 0.1 × энергоэффективность
16
17 ВЕРНУТЬ итоговая_оценка
1функция записать_в_журнал(событие, данные):
2 время = получить_текущее_время()
3 запись = время + ": " + событие + " - " + данные
4 добавить_в_файл("адаптация.log", запись)
5
6 // Примеры записей:
7 // "10:35:22: Поверхность изменилась - Ковер -> Плитка"
8 // "10:35:23: Мощность адаптирована - 70% -> 45%"
9 // "10:35:25: Эффективность - 85%"
Этап 1: Базовое тестирование (без адаптации)
11. Настроить робота с фиксированными параметрами
22. Протестировать на 5 различных поверхностях
33. Записать результаты:
4 - Время выполнения задачи
5 - Количество ошибок
6 - Энергопотребление
7 - Стабильность движения
Этап 2: Тестирование с адаптацией
11. Включить адаптивные алгоритмы
22. Провести те же тесты на тех же поверхностях
33. Записать, как изменяются параметры во время адаптации
44. Измерить время, необходимое для адаптации
Этап 3: Тестирование обучения
11. Повторить тесты несколько раз подряд
22. Проверить, улучшается ли производительность
33. Протестировать на новых, незнакомых поверхностях
1ПРОТОКОЛ ТЕСТИРОВАНИЯ АДАПТИВНОГО ПОВЕДЕНИЯ
2
3Группа: _________ Дата: _______ Вариант задания: _________
4
5╔══════════════════════════════════════════════════════════════╗
6║ ТЕСТ 1: Поверхность - Гладкая плитка ║
7╠══════════════════════════════════════════════════════════════╣
8║ Без адаптации: ║
9║ Мощность: ____% Скорость: ____см/с Ошибки: ____ Время: ____с ║
10║ ║
11║ С адаптацией: ║
12║ Начальная мощность: ____% Конечная мощность: ____% ║
13║ Время адаптации: ____с Итоговая скорость: ____см/с ║
14║ Ошибки: ____ Общее время: ____с ║
15╚══════════════════════════════════════════════════════════════╝
16
17╔══════════════════════════════════════════════════════════════╗
18║ ТЕСТ 2: Поверхность - Ковровое покрытие ║
19╠══════════════════════════════════════════════════════════════╣
20║ [Аналогичная структура для каждого теста] ║
21╚══════════════════════════════════════════════════════════════╝
22
23ВЫВОДЫ:
241. На какой поверхности адаптация была наиболее эффективной?
25 ________________________________________________
26
272. Сколько времени в среднем требуется для адаптации?
28 ________________________________________________
29
303. Насколько улучшилась производительность с адаптацией (в %)?
31 ________________________________________________
1. Скорость адаптации $$T_{адаптации} = \text{время до достижения 90% оптимальной производительности}$$
2. Качество адаптации $$K_{адаптации} = \frac{P_{после_адаптации}}{P_{оптимальная}} \times 100%$$
где $P$ - производительность системы
3. Стабильность после адаптации $$\sigma_{стабильность} = \sqrt{\frac{1}{n}\sum_{i=1}^n (P_i - \bar{P})^2}$$
4. Улучшение по сравнению с базовой версией $$\Delta P = \frac{P_{адаптивная} - P_{базовая}}{P_{базовая}} \times 100%$$
1График адаптации (пример):
2
3Производительность (%)
4 100 | ******************
5 90 | ****
6 80 | **
7 70 |*
8 60 |
9 50 |
10 40 |
11 +--+--+--+--+--+--+--+--+-- Время (сек)
12 0 10 20 30 40 50 60 70 80
13
14Фазы:
151. Начальная (0-20с): Низкая производительность
162. Адаптация (20-50с): Быстрое улучшение
173. Стабилизация (50-80с): Оптимальная работа
Проблема 1: Медленная адаптация
1Симптомы:
2- Робот долго не может найти оптимальные параметры
3- Производительность улучшается очень медленно
4
5Возможные причины:
6- Слишком маленький шаг изменения параметров
7- Недостаточно данных для принятия решения
8- Слишком консервативный алгоритм
9
10Решения:
11- Увеличить шаг адаптации на начальном этапе
12- Уменьшить размер окна усреднения
13- Добавить "режим быстрого обучения"
Проблема 2: Нестабильность после адаптации
1Симптомы:
2- Параметры постоянно "дрожат"
3- Производительность колеблется
4
5Возможные причины:
6- Слишком большой шаг адаптации
7- Недостаточная фильтрация шумов датчиков
8- Конфликт между разными критериями оптимизации
9
10Решения:
11- Уменьшить шаг адаптации после достижения стабильности
12- Улучшить фильтрацию данных датчиков
13- Ввести "зону нечувствительности" для малых изменений
Проблема 3: Плохая адаптация к новым условиям
1Симптомы:
2- Робот хорошо работает в знакомых условиях
3- Плохо адаптируется к новым поверхностям/препятствиям
4
5Возможные причины:
6- Переобучение на ограниченном наборе данных
7- Недостаточное разнообразие в обучающих примерах
8
9Решения:
10- Добавить элемент случайности в алгоритм
11- Периодически "забывать" старый опыт
12- Увеличить разнообразие тестовых условий
1 минута - Описание решения:
1 минута - Демонстрация работы:
1 минута - Анализ результатов:
1Вопросы жюри и других групп:
21. "Почему вы выбрали именно такой алгоритм адаптации?"
32. "Как робот определяет, что адаптация прошла успешно?"
43. "Что произойдет, если датчик даст неверные данные?"
54. "Можно ли применить ваш алгоритм для других задач?"
65. "Какие улучшения можно внести в алгоритм?"
Конструкция робота (10%):
Алгоритм адаптации (20%):
Качество программирования (10%):
Скорость адаптации (15%):
Качество адаптации (15%):
Экспериментальная работа (10%):
Анализ результатов (10%):
Демонстрация (5%):
Защита проекта (5%):
“Самая быстрая адаптация”
“Самый стабильный алгоритм”
“Лучший биомиметический подход”
“Самое элегантное решение”
“Инновационный подход”
“Лучший научный анализ”
1Каждая группа оценивает проекты других групп:
2- Техническая сложность (1-5 баллов)
3- Эффективность адаптации (1-5 баллов)
4- Оригинальность решения (1-5 баллов)
5- Качество презентации (1-5 баллов)
6
7Победитель определяется по сумме баллов от всех групп
Группа | Тип адаптации | Время адаптации (с) | Улучшение (%) | Стабильность | Оценка жюри |
---|---|---|---|---|---|
1 | Поверхности | 25 | +35% | ⭐⭐⭐⭐ | 8.2/10 |
2 | Препятствия | 18 | +42% | ⭐⭐⭐ | 7.8/10 |
3 | Освещение | 12 | +28% | ⭐⭐⭐⭐⭐ | 8.5/10 |
4 | Энергопотребление | 30 | +25% | ⭐⭐⭐⭐ | 7.5/10 |
5 | Комбинированная | 22 | +38% | ⭐⭐⭐ | 8.7/10 |
Выводы общего обсуждения:
Технические достижения:
Понимание принципов:
STEM-навыки:
S - Situation (Ситуация): Какую задачу адаптивного поведения решала ваша группа?
T - Task (Задача): Какие конкретные цели вы ставили для своего робота?
A - Action (Действие): Какие алгоритмы и подходы вы использовали?
R - Result (Результат): Чего удалось достичь? Что не получилось?
1Карта рефлексии группы:
2
3Наши главные достижения:
41. _________________________________
52. _________________________________
63. _________________________________
7
8Самые интересные находки:
91. _________________________________
102. _________________________________
11
12Что оказалось сложнее, чем ожидали:
131. _________________________________
142. _________________________________
15
16Чему новому научились:
171. _________________________________
182. _________________________________
19
20Что хотели бы улучшить:
211. _________________________________
222. _________________________________
1. Более сложные алгоритмы адаптации
2. Расширение сенсорных возможностей
3. Биомиметические подходы
Школьные проекты:
Профессиональные перспективы:
Отчет о практической работе:
1Структура отчета:
21. Цель и задачи адаптации
32. Описание алгоритма адаптации
43. Результаты экспериментов с таблицами и графиками
54. Анализ эффективности адаптации
65. Выводы и предложения по улучшению
Исследовательское задание: Изучить один из биологических механизмов адаптации (на выбор):
Написать эссе на тему: “Как этот механизм можно применить в робототехнике?”
Проект будущего: Спроектировать робота будущего с продвинутыми адаптивными способностями:
“Адаптивный робот-исследователь океана”
“Робот-реабилитолог”
“Сельскохозяйственный адаптивный робот”
Помните: Каждый из вас сегодня стал частью революции в робототехнике, создавая системы, способные обучаться и адаптироваться, как живые существа!
Практические навыки:
Понимание концепций:
STEM-интеграция:
Ключевая мысль урока: Лучшие инженерные решения часто подсказывает нам природа. Создавая адаптивных роботов, мы учимся у миллионов лет эволюции!
Следующий урок: