Урок 1 из 3

🤖 Алгоритмы в робототехнике

Интерактивный урок информатики для 10-11 классов. Узнаем, как алгоритмы помогают роботам и спасают планету

📚 Информатика | Робототехника

1. Что такое алгоритм?

Алгоритм — это конечная последовательность чётких и понятных инструкций (шагов), которая преобразует входные данные в результат за конечное число действий.

Робототехника: алгоритм — «мозги» робота

В робототехнике алгоритм — это программа, которая управляет действиями робота: чтение данных с датчиков, принятие решений, управление моторами и сервоприводами. Без алгоритма робот — просто набор деталей.

Экология: алгоритм — инструмент спасения планеты

В экологии алгоритмы помогают прогнозировать изменения климата, оптимизировать переработку отходов, управлять умными системами полива и мониторить состояние лесов и водоёмов.

Примеры из жизни:

2. Свойства алгоритмов

📋 Дискретность

Алгоритм разбит на отдельные, чётко определённые шаги — как команды для робота

🎯 Точность

Каждый шаг однозначен: датчик измеряет конкретное значение, робот выполняет точное действие

🔚 Конечность

Алгоритм обязан завершиться за конечное число шагов — иначе робот зависнет

📥 Входные данные

Показания датчиков температуры, влажности, расстояния, изображения с камеры

📤 Результат

Действие: поворот колеса, включение помпы, отправка данных на сервер

🔄 Массовость

Один алгоритм сортировки работает для любого объёма мусора на конвейере

💡 Факт: Современный робот может выполнять до 1000 алгоритмических решений в секунду, обрабатывая данные с десятков датчиков одновременно.

3. Способы записи алгоритмов

На естественном языке

Задача: Экологический робот должен найти и собрать весь мусор на территории, а затем вернуться на базу.

Алгоритм (пошагово):

Шаг 1 — Старт: Робот 🤖 находится на базе (начальная позиция). Запоминаем его координаты как текущие.

Шаг 2 — Поиск ближайшего мусора: С помощью алгоритма BFS (поиск в ширину) робот определяет расстояние до каждого объекта мусора 🗑️ на карте. Выбирает тот, до которого меньше всего шагов.

Шаг 3 — Движение к мусору: Робот проходит по найденному кратчайшему пути, помечая пройденные клетки звёздами ⭐. По пути проверяет каждую клетку.

Шаг 4 — Сбор мусора: Когда робот оказывается в клетке с мусором, он подбирает его (мусор превращается в ✨). Счётчик собранного мусора увеличивается на 1.

Шаг 5 — Проверка: Если на карте остались несобранные участки мусора — возвращаемся к шагу 2. Если весь мусор собран — переходим к шагу 6.

Шаг 6 — Возвращение на базу: Робот снова использует BFS, чтобы найти кратчайший путь от текущей позиции до базы 🏁 и возвращается обратно.

Шаг 7 — Завершение: Робот прибыл на базу со всем собранным мусором. Задание выполнено!

Псевдокод

Формальная запись алгоритма сбора мусора:

АЛГОРИТМ СборМусора() текущая_позиция ← (0, 0) // старт на базе мусор_собран ← 0 // Пока есть несобранный мусор ПОКА есть_мусор() цель ← НАЙТИ_БЛИЖАЙШИЙ(мусор, текущая_позиция) путь ← BFS(текущая_позиция, цель) ИДТИ_ПО_ПУТИ(путь) СОБРАТЬ_МУСОР(цель) текущая_позиция ← цель мусор_собран ← мусор_собран + 1 КОНЕЦ ПОКА // Возвращаемся на базу путь_домой ← BFS(текущая_позиция, база) ИДТИ_ПО_ПУТИ(путь_домой) ВЫВОД("Задание выполнено! Мусор:", мусор_собран) КОНЕЦ АЛГОРИТМА

Код на Arduino (C++)

Упрощённый код для робота-сборщика мусора:

1// Экологический робот: сбор мусора 2int trashCount = 0; 3int collected = 0; 4 5void setup() { 6 Serial.begin(9600); 7 scanArea(); // карта территории 8} 9 10void loop() { 11 while (collected < trashCount) { 12 Point nearest = findNearestTrash(); 13 goTo(nearest); 14 collectTrash(); 15 collected++; 16 } 17 goToBase(); // возврат на базу 18}

4. Типы алгоритмов в робототехнике

⚠️ Важно: Все алгоритмы сводятся к трём базовым структурам: следование, ветвление и повторение. В робототехнике каждая из них имеет конкретное применение.

4.1. Линейный (следование) — последовательность действий

// Робот проезжает 100 см прямо ВКЛЮЧИТЬ(левое_колесо, 255) ВКЛЮЧИТЬ(правое_колесо, 255) ЖДАТЬ(2000 мс) ОСТАНОВИТЬ()

4.2. Ветвление (выбор) — реакция на среду

// Робот обходит препятствие расстояние ← СЧИТАТЬ(ультразвук) ЕСЛИ расстояние < 20 ТОГДА ПОВЕРНУТЬ(лево, 90°) ЕХАТЬ(30 см) ПОВЕРНУТЬ(право, 90°) ИНАЧЕ ЕХАТЬ(вперёд) КОНЕЦ ЕСЛИ

4.3. Повторение (цикл) — повторяющиеся действия

// Робот сканирует комнату 360° угол ← 0 ПОКА угол < 360 ПОВЕРНУТЬ(серво, угол) расстояние[угол] ← СЧИТАТЬ(ультразвук) угол ← угол + 10 КОНЕЦ ПОКА НАРИСОВАТЬ(карта, расстояние[])
🌿 Пример в экологии: Алгоритм «повторение» используется в системе мониторинга — датчик измеряет температуру воздуха каждые 5 минут и отправляет данные на сервер для построения графиков изменения климата.

🤖 Интерактивное задание: Сортировка отходов роботом

Задание: Выступите в роли робота-сортировщика! Нажимайте на контейнеры в правильном порядке — от самого лёгкого к самому тяжёлому. Робот должен разложить отходы по весу для оптимальной переработки.
📦 340г
🥤 120г
🧴 560г
📄 85г
🥫 450г
🍶 210г
Разложено: 0 / 6
Алгоритм сортировки пузырьком:
На каждом шаге сравниваем два соседних элемента. Если они стоят в неправильном порядке — меняем их местами. «Пузырьки» (большие элементы) всплывают в конец массива. Сложность: O(n²).

🌿 Интерактивное задание: Навигация экологического робота

Задание: Экологический робот 🤖 должен найти и собрать весь мусор 🗑️ на карте, а затем вернуться на базу 🏁. Стены — непроходимы. Нажмите «Автопоиск» для демонстрации жадного алгоритма на основе BFS.
Ходов: 0
Жадный алгоритм + BFS:
1. Робот 🤖 стартует с базы
2. BFS находит ближайший мусор 🗑️ — робот идёт к нему
3. Собирает мусор, ищет следующий ближайший
4. Когда весь мусор собран — возвращается на базу 🏁
Это жадная стратегия: на каждом шаге выбираем локально лучший вариант!
🤖 Алгоритм робота (Python)
1def collect_trash(robot, grid):
2 # Пока есть мусор на карте
3 while has_trash(grid):
4
5 # Шаг 1: Найти ближайший мусор
6 nearest = find_nearest(
7 robot.pos, grid.trash
8 )
9
10 # Шаг 2: Построить путь (BFS)
11 path = bfs(
12 robot.pos, nearest
13 )
14
15 # Шаг 3: Идти по пути
16 for step in path:
17 robot.move(step)
18
19 # Шаг 4: Собрать мусор
20 if grid.is_trash(step):
21 grid.collect(step)
22 print(f"Собрано: {collected}/{total}")
23
24 # Шаг 5: Вернуться на базу
25 home = bfs(robot.pos, BASE)
26 robot.move_along(home)
27 print("Задание выполнено!")
🔍 Функция BFS
1def bfs(start, goal):
2 queue = [start]
3 visited = {start}
4 parent = {start: None}
5
6 while queue:
7 cell = queue.pop(0)
8
9 if cell == goal:
10 return reconstruct(parent, goal)
11
12 for neighbor in get_neighbors(cell):
13 if (neighbor not in visited
14 and not is_wall(neighbor)):
15 visited.add(neighbor)
16 parent[neighbor] = cell
17 queue.append(neighbor)
18
19 return None # путь не найден

👁️ Визуализация: Сортировка данных с датчиков

Нажмите «Запустить» и наблюдайте, как алгоритм сортирует массив показаний температуры с экологических датчиков.
Нажмите «Запустить» для начала сортировки

5. Датчики роботов: викторина

Проверьте знания о датчиках — выберите правильный ответ на каждый вопрос:

1. Какой датчик измеряет расстояние до объекта (2–400 см)?

🌡️ Датчик температуры
📷 Камера
📡 Ультразвуковой датчик
💡 Фотодатчик

2. Какой датчик определяет влажность почвы для умного полива?

🧭 Гироскоп
💧 Датчик влажности
📡 Ультразвук
📷 Камера

3. Датчик с диапазоном –55°С до +125°С — это:

🌡️ Датчик температуры
💧 Датчик влажности
💡 Фотодатчик
🧭 Гироскоп

4. Какой датчик нужен роботу, чтобы поворачивать и не падать?

📡 Ультразвук
📷 Камера
🧭 Гироскоп / Акселерометр
🌡️ Температура

5. Какой датчик распознаёт объекты и лица?

📡 Ультразвук
📷 Камера
💧 Влажность
🧭 Гироскоп

6. Какой датчик измеряет уровень освещённости?

💡 Фотодатчик
🌡️ Температура
📡 Ультразвук
📷 Камера
Правильных ответов: 0 / 6
🔧 Факт: Современный робот может содержать более 20 различных датчиков, а данные с них обрабатываются алгоритмами фильтрации (например, фильтр Калмана) для повышения точности.

6. Алгоритм Евклида: классика эффективности

Алгоритм Евклида — один из древнейших (около 300 г. до н.э.) и наиболее эффективных способов найти НОД (наибольший общий делитель) двух чисел. Используется в криптографии и оптимизации.
// Найти НОД чисел A и B ПОКА B ≠ 0 R ← A mod B // остаток от деления A ← B B ← R КОНЕЦ ПОКА ВЫВОД A // Это НОД

Пример: НОД(48, 18)

Шаг A B R = A mod B
1 48 18 12
2 18 12 6
3 12 6 0
Результат 6 0 —

Ответ: НОД(48, 18) = 6

🌿 Применение в экологии: Алгоритм Евклида используется для оптимизации маршрутов сбора мусора — нахождение общих интервалов для нескольких маршрутов.

7. Сложность алгоритмов: зачем это знать?

Сложность показывает, как время работы зависит от объёма данных. Критически важно для роботов с ограниченными ресурсами!

Обозначение Название Пример в робототехнике
O(1) Константная Включить мотор — одно действие, независимо от размера комнаты
O(log n) Логарифмическая Бинарный поиск в отсортированном списке waypoints
O(n) Линейная Проход по массиву показаний 100 датчиков
O(n²) Квадратичная Сравнение каждого датчика со всеми (сортировка пузырьком)
O(2ⁿ) Экспоненциальная Перебор всех возможных маршрутов (задача коммивояжёра)
Время работы Arduino
16 МГц
Ограниченные ресурсы!
Оперативная память
2 КБ
Нужны эффективные алгоритмы
Датчиков в современном роботе
20+
Данные обрабатываются в реальном времени
⚠️ Вывод: Выбор эффективного алгоритма — не абстрактная теория, а необходимость. На Arduino с 2 КБ памяти неправильный алгоритм может привести к зависанию робота!

8. Проверь себя

1. Что такое алгоритм?

Язык программирования Arduino
Электронная плата робота
Конечная последовательность точных шагов для решения задачи
Математическая формула

2. Какое свойство алгоритма означает, что он обязательно завершится?

Дискретность
Конечность
Точность
Массовость

3. Какая структура алгоритма позволяет роботу реагировать на препятствие?

Ветвление (выбор)
Следование
Повторение (цикл)
Ввод/вывод

4. Чему равен НОД(48, 18)?

3
8
6
24

5. Какая сложность у сортировки пузырьком?

O(n)
O(n²)
O(log n)
O(1)

6. Какой алгоритм гарантирует нахождение кратчайшего пути?

Пузырьковая сортировка
Алгоритм Евклида
Бинарный поиск
Поиск в ширину (BFS)

9. Итоги урока

🌍 Задание для дома: Придумайте алгоритм для экологического робота, который патрулирует лес и определяет наличие лесных пожаров по температуре и дыму. Запишите его псевдокодом и нарисуйте блок-схему.

📚 Другие уроки

Урок 2

Продолжение изучения алгоритмов

Урок 3

Урок 3