🤚🤚 Программирование робота с двумя датчиками
Практическая работа: умное поведение
🧠 Логическое мышление • 💻 Алгоритмы • 🤖 Интеллект • 🏆 Соревнования
5 класс • Технология • 90 минут
👨🏫 Учитель: Ахметов Рустам
🏫 Школа: ГБОУ № 1362
📅 Дата: 2025-06-11
🎯 Миссия: Создать действительно умного робота!
🎯 План практической работы
🚀 Наша большая миссия:
- 📊 Составить таблицы истинности - математическая основа
- 🧠 Спроектировать поведение - логика умного робота
- 💻 Программировать алгоритмы - воплощение идей в код
- 🔧 Тестировать и отлаживать - поиск и исправление ошибок
- 🏆 Участвовать в соревновании - проверка в деле
🎯 Результат работы:
- Робот с интеллектуальным поведением
- Программа, учитывающая все комбинации датчиков
- Понимание принципов создания умных систем
👥 Работаем в парах:
- 💻 Программист - создает алгоритмы и код
- 🔧 Тестировщик - проверяет и отлаживает
🔄 Актуализация знаний
Повторяем логические операции
❓ Быстрая проверка знаний
1. Логические операции:
- Когда операция И дает результат ИСТИНА?
- Когда операция ИЛИ дает результат ЛОЖЬ?
- Что делает операция НЕ?
2. Комбинации датчиков:
- Сколько различных состояний у двух датчиков?
- Как записать “левый датчик нажат И правый не нажат”?
- Что означает комбинация (1, 1)?
3. Применение в программах:
- Как проверить нажатие любого датчика?
- Как проверить нажатие всех датчиков сразу?
- Как инвертировать условие?
🎯 Постановка задачи
🤖 Техническое задание:
Создать робота, который демонстрирует четыре разных типа поведения в зависимости от комбинации сигналов от двух датчиков нажатия.
📋 Требования:
- ✅ Обработка всех 4 возможных комбинаций
- ✅ Логичность каждой реакции
- ✅ Стабильность работы программы
- ✅ Возможность тестирования всех режимов
🏆 Критерии успеха:
- 🥇 Отлично - все комбинации работают правильно
- 🥈 Хорошо - 3 из 4 комбинаций работают
- 🥉 Удовлетворительно - 2 из 4 комбинаций работают
🎮 Варианты заданий
🚗 Вариант А: “Умный автомобиль”
- (0,0) → Движение вперед
- (0,1) → Поворот налево (препятствие справа)
- (1,0) → Поворот направо (препятствие слева)
- (1,1) → Движение назад (тупик)
🏠 Вариант Б: “Робот-уборщик”
- (0,0) → Движение по прямой
- (0,1) → Движение вдоль правой стены
- (1,0) → Движение вдоль левой стены
- (1,1) → Разворот и поиск выхода
🎮 Вариант В: “Игровой робот”
- (0,0) → Ожидание команд
- (0,1) → Танец вправо
- (1,0) → Танец влево
- (1,1) → Специальное движение
🔍 Вариант Г: “Робот-исследователь”
- (0,0) → Поиск (случайное движение)
- (0,1) → Исследование правой зоны
- (1,0) → Исследование левой зоны
- (1,1) → Анализ объекта (остановка и сканирование)
📊 Этап 1: Составление таблиц истинности
Математическая основа поведения
📋 Общая таблица состояний
🧮 Математическая основа:
Для n
датчиков существует 2^n
различных комбинаций.
Для 2 датчиков: 2^2 = 4
комбинации.
📊 Базовая таблица истинности:
Комбинация |
Левый датчик (L) |
Правый датчик (R) |
Двоичный код |
Десятичное |
1 |
0 (НЕ НАЖАТ) |
0 (НЕ НАЖАТ) |
00 |
0 |
2 |
0 (НЕ НАЖАТ) |
1 (НАЖАТ) |
01 |
1 |
3 |
1 (НАЖАТ) |
0 (НЕ НАЖАТ) |
10 |
2 |
4 |
1 (НАЖАТ) |
1 (НАЖАТ) |
11 |
3 |
🎯 Задача: Для каждой комбинации определить действие робота.
🚗 Пример: Таблица для “Умного автомобиля”
📊 Детальная таблица поведения:
L |
R |
Ситуация |
Действие робота |
Логическое условие |
Продолжительность |
0 |
0 |
Путь свободен |
Движение вперед (скорость 200) |
НЕ L И НЕ R |
Постоянно |
0 |
1 |
Препятствие справа |
Поворот налево |
НЕ L И R |
800 мс |
1 |
0 |
Препятствие слева |
Поворот направо |
L И НЕ R |
800 мс |
1 |
1 |
Тупик впереди |
Отъезд назад + разворот |
L И R |
2000 мс |
🧠 Логические выражения:
1Движение_вперед = НЕ(L) И НЕ(R)
2Поворот_налево = НЕ(L) И R
3Поворот_направо = L И НЕ(R)
4Маневр_тупик = L И R
📝 Практическое задание
🎯 Составьте таблицу для вашего варианта:
Вариант: ________________
L |
R |
Описание ситуации |
Действие робота |
Время выполнения |
0 |
0 |
_________________ |
_______________ |
_________ |
0 |
1 |
_________________ |
_______________ |
_________ |
1 |
0 |
_________________ |
_______________ |
_________ |
1 |
1 |
_________________ |
_______________ |
_________ |
🔍 Проверочные вопросы:
- Все ли комбинации имеют смысл?
- Нет ли противоречий в логике?
- Можно ли легко протестировать каждое поведение?
- Безопасны ли все действия робота?
🧮 Математическая проверка
🔬 Проверка полноты покрытия:
Условие 1: Объединение всех условий должно покрывать все возможные состояния:
1(НЕ L И НЕ R) ИЛИ (НЕ L И R) ИЛИ (L И НЕ R) ИЛИ (L И R) = ИСТИНА
Условие 2: Условия не должны пересекаться:
1Любые два условия в паре дают ЛОЖЬ при операции И
Условие 3: Каждое условие должно быть достижимо:
1Для каждого условия существует реальная ситуация
🎯 Практическая проверка:
Убедитесь, что ваша таблица удовлетворяет всем трем условиям!
📊 Расширение до трех датчиков
🧠 Для понимания сложности:
При добавлении третьего датчика (например, заднего):
- Количество комбинаций:
2^3 = 8
- Логических условий: 8
- Вариантов поведения: 8
📋 Краткая таблица (L-левый, R-правый, B-задний):
L |
R |
B |
Ситуация |
Действие |
0 |
0 |
0 |
Полная свобода |
Быстро вперед |
0 |
0 |
1 |
Препятствие сзади |
Медленно вперед |
0 |
1 |
0 |
Препятствие справа |
Поворот налево |
… |
… |
… |
… |
… |
🎯 Вывод: Чем больше датчиков, тем сложнее, но умнее поведение!
🧠 Этап 2: Разработка алгоритма
От таблицы к программе
📊 Блок-схема общего алгоритма
🔄 Структура основного цикла:
1 ⭕ НАЧАЛО
2 ↓
3 📦 Инициализация датчиков и моторов
4 ↓
5 🔄 ГЛАВНЫЙ ЦИКЛ (бесконечный)
6 ↓
7 📥 Чтение состояния левого датчика → L
8 ↓
9 📥 Чтение состояния правого датчика → R
10 ↓
11 🔷 Определение комбинации (L, R)
12 ↙ ↓ ↓ ↘
13 (0,0) (0,1) (1,0) (1,1)
14 ↓ ↓ ↓ ↓
15 📦 📦 📦 📦
16Действие Действие Действие Действие
17 1 2 3 4
18 ↓ ↓ ↓ ↓
19 ↑←←←←←↑←←←←←↑←←←←←↑
💻 Псевдокод базового алгоритма
🎯 Основная структура программы:
1ПРОГРАММА "Умный робот с двумя датчиками"
2
3КОНСТАНТЫ:
4 ПИН_ЛЕВЫЙ_ДАТЧИК = 2
5 ПИН_ПРАВЫЙ_ДАТЧИК = 3
6 ПИН_МОТОР_ЛЕВЫЙ = 9
7 ПИН_МОТОР_ПРАВЫЙ = 10
8 СКОРОСТЬ_НОРМАЛЬНАЯ = 200
9 СКОРОСТЬ_ПОВОРОТА = 150
10
11НАЧАЛО
12 Инициализировать_пины()
13 Показать_приветствие()
14
15 ГЛАВНЫЙ_ЦИКЛ:
16 ПОКА ИСТИНА:
17 // Чтение датчиков
18 левый_нажат = Прочитать_датчик(ПИН_ЛЕВЫЙ_ДАТЧИК)
19 правый_нажат = Прочитать_датчик(ПИН_ПРАВЫЙ_ДАТЧИК)
20
21 // Определение действия
22 ВЫБОР (левый_нажат, правый_нажат):
23 СЛУЧАЙ (ЛОЖЬ, ЛОЖЬ):
24 Выполнить_действие_00()
25 СЛУЧАЙ (ЛОЖЬ, ИСТИНА):
26 Выполнить_действие_01()
27 СЛУЧАЙ (ИСТИНА, ЛОЖЬ):
28 Выполнить_действие_10()
29 СЛУЧАЙ (ИСТИНА, ИСТИНА):
30 Выполнить_действие_11()
31 КОНЕЦ_ВЫБОРА
32
33 Ждать(50) // Небольшая задержка
34 КОНЕЦ_ПОКА
35КОНЕЦ
36
37ФУНКЦИЯ Инициализировать_пины():
38 Настроить_пин(ПИН_ЛЕВЫЙ_ДАТЧИК, ВХОД_С_ПОДТЯЖКОЙ)
39 Настроить_пин(ПИН_ПРАВЫЙ_ДАТЧИК, ВХОД_С_ПОДТЯЖКОЙ)
40 Настроить_пин(ПИН_МОТОР_ЛЕВЫЙ, ВЫХОД)
41 Настроить_пин(ПИН_МОТОР_ПРАВЫЙ, ВЫХОД)
42 Вывести("Датчики и моторы инициализированы")
43КОНЕЦ_ФУНКЦИИ
🚗 Конкретные действия для “Умного автомобиля”
📝 Реализация каждого поведения:
1ФУНКЦИЯ Выполнить_действие_00():
2 // Комбинация (0,0) - путь свободен
3 Вывести("Движение вперед - путь свободен")
4 Установить_скорость_моторов(СКОРОСТЬ_НОРМАЛЬНАЯ, СКОРОСТЬ_НОРМАЛЬНАЯ)
5КОНЕЦ_ФУНКЦИИ
6
7ФУНКЦИЯ Выполнить_действие_01():
8 // Комбинация (0,1) - препятствие справа
9 Вывести("Препятствие справа - поворот налево")
10 Остановить_моторы()
11 Ждать(300)
12
13 // Поворот налево: правый мотор быстрее левого
14 Установить_скорость_моторов(СКОРОСТЬ_ПОВОРОТА / 2, СКОРОСТЬ_ПОВОРОТА)
15 Ждать(800)
16
17 Остановить_моторы()
18 Ждать(200)
19КОНЕЦ_ФУНКЦИИ
20
21ФУНКЦИЯ Выполнить_действие_10():
22 // Комбинация (1,0) - препятствие слева
23 Вывести("Препятствие слева - поворот направо")
24 Остановить_моторы()
25 Ждать(300)
26
27 // Поворот направо: левый мотор быстрее правого
28 Установить_скорость_моторов(СКОРОСТЬ_ПОВОРОТА, СКОРОСТЬ_ПОВОРОТА / 2)
29 Ждать(800)
30
31 Остановить_моторы()
32 Ждать(200)
33КОНЕЦ_ФУНКЦИИ
34
35ФУНКЦИЯ Выполнить_действие_11():
36 // Комбинация (1,1) - тупик
37 Вывести("Тупик - маневр разворота")
38 Остановить_моторы()
39 Ждать(500)
40
41 // Отъезд назад
42 Установить_скорость_моторов(-СКОРОСТЬ_НОРМАЛЬНАЯ, -СКОРОСТЬ_НОРМАЛЬНАЯ)
43 Ждать(1000)
44
45 // Разворот на 180 градусов
46 Установить_скорость_моторов(СКОРОСТЬ_ПОВОРОТА, -СКОРОСТЬ_ПОВОРОТА)
47 Ждать(1500)
48
49 Остановить_моторы()
50 Ждать(300)
51КОНЕЦ_ФУНКЦИИ
🔧 Вспомогательные функции
⚙️ Основные функции управления:
1ФУНКЦИЯ Установить_скорость_моторов(скорость_левого, скорость_правого):
2 // Ограничение скорости в диапазоне -255...255
3 скорость_левого = Ограничить(скорость_левого, -255, 255)
4 скорость_правого = Ограничить(скорость_правого, -255, 255)
5
6 // Установка скорости с учетом направления
7 ЕСЛИ скорость_левого >= 0 ТО
8 Установить_ШИМ(ПИН_МОТОР_ЛЕВЫЙ, скорость_левого)
9 ИНАЧЕ
10 Установить_ШИМ(ПИН_МОТОР_ЛЕВЫЙ, -скорость_левого)
11 // Дополнительно: инвертировать направление
12 КОНЕЦ_ЕСЛИ
13
14 ЕСЛИ скорость_правого >= 0 ТО
15 Установить_ШИМ(ПИН_МОТОР_ПРАВЫЙ, скорость_правого)
16 ИНАЧЕ
17 Установить_ШИМ(ПИН_МОТОР_ПРАВЫЙ, -скорость_правого)
18 // Дополнительно: инвертировать направление
19 КОНЕЦ_ЕСЛИ
20КОНЕЦ_ФУНКЦИИ
21
22ФУНКЦИЯ Остановить_моторы():
23 Установить_скорость_моторов(0, 0)
24КОНЕЦ_ФУНКЦИИ
25
26ФУНКЦИЯ Прочитать_датчик(пин):
27 значение = Прочитать_цифровой_пин(пин)
28 // Для датчика с подтяжкой: LOW = нажат, HIGH = не нажат
29 ВОЗВРАТ (значение = LOW)
30КОНЕЦ_ФУНКЦИИ
31
32ФУНКЦИЯ Ограничить(значение, минимум, максимум):
33 ЕСЛИ значение < минимум ТО
34 ВОЗВРАТ минимум
35 ИНАЧЕ_ЕСЛИ значение > максимум ТО
36 ВОЗВРАТ максимум
37 ИНАЧЕ
38 ВОЗВРАТ значение
39 КОНЕЦ_ЕСЛИ
40КОНЕЦ_ФУНКЦИИ
🎯 Оптимизация алгоритма
📈 Улучшения для более умного поведения:
1ПЕРЕМЕННЫЕ:
2 счетчик_столкновений = 0
3 время_последней_комбинации = 0
4 предыдущая_комбинация = (ЛОЖЬ, ЛОЖЬ)
5
6ФУНКЦИЯ Анализ_поведения(текущая_комбинация):
7 // Подсчет частоты столкновений
8 ЕСЛИ текущая_комбинация ≠ (ЛОЖЬ, ЛОЖЬ) ТО
9 счетчик_столкновений = счетчик_столкновений + 1
10 Вывести("Столкновение номер:", счетчик_столкновений)
11 КОНЕЦ_ЕСЛИ
12
13 // Адаптация скорости в зависимости от частоты столкновений
14 ЕСЛИ счетчик_столкновений > 10 ТО
15 СКОРОСТЬ_НОРМАЛЬНАЯ = СКОРОСТЬ_НОРМАЛЬНАЯ * 0.8 // Снизить скорость
16 Вывести("Снижаю скорость из-за частых столкновений")
17 счетчик_столкновений = 0 // Сброс счетчика
18 КОНЕЦ_ЕСЛИ
19
20 // Запоминание предыдущего состояния
21 предыдущая_комбинация = текущая_комбинация
22 время_последней_комбинации = Получить_время()
23КОНЕЦ_ФУНКЦИИ
🔧 Этап 3: Тестирование и отладка
Поиск и исправление ошибок
📋 План тестирования
🎯 Систематическая проверка всех комбинаций:
Тест 1: Проверка чтения датчиков
1ПРОЦЕДУРА Тест_датчиков():
2 Вывести("=== ТЕСТ ДАТЧИКОВ ===")
3
4 ДЛЯ i = 1 ДО 20:
5 левый = Прочитать_датчик(ПИН_ЛЕВЫЙ_ДАТЧИК)
6 правый = Прочитать_датчик(ПИН_ПРАВЫЙ_ДАТЧИК)
7
8 Вывести("L:", левый, " R:", правый, " Комбинация: (", левый, ",", правый, ")")
9 Ждать(500)
10 КОНЕЦ_ДЛЯ
11КОНЕЦ_ПРОЦЕДУРЫ
Тест 2: Проверка каждой комбинации отдельно
1ПРОЦЕДУРА Тест_комбинаций():
2 комбинации = [(ЛОЖЬ,ЛОЖЬ), (ЛОЖЬ,ИСТИНА), (ИСТИНА,ЛОЖЬ), (ИСТИНА,ИСТИНА)]
3
4 ДЛЯ КАЖДОЙ комбинации ИЗ комбинации:
5 Вывести("Тест комбинации:", комбинация)
6 Вывести("Нажмите соответствующие датчики и нажмите Enter")
7 Ждать_нажатия_Enter()
8
9 // Проверка в течение 5 секунд
10 время_начала = Получить_время()
11 ПОКА (Получить_время() - время_начала) < 5000:
12 текущие_датчики = (Прочитать_датчик(ПИН_ЛЕВЫЙ_ДАТЧИК), Прочитать_датчик(ПИН_ПРАВЫЙ_ДАТЧИК))
13
14 ЕСЛИ текущие_датчики = комбинация ТО
15 Выполнить_действие_для_комбинации(комбинация)
16 КОНЕЦ_ЕСЛИ
17
18 Ждать(100)
19 КОНЕЦ_ПОКА
20
21 Остановить_моторы()
22 Вывести("Тест завершен")
23 КОНЕЦ_ДЛЯ
24КОНЕЦ_ПРОЦЕДУРЫ
🐛 Типичные ошибки и их устранение
❌ Ошибка 1: Дребезг контактов
Проблема: Датчик срабатывает несколько раз при одном нажатии
1// Плохой код
2ЕСЛИ Прочитать_датчик(пин) ТО
3 счетчик = счетчик + 1 // Может увеличиться несколько раз!
4КОНЕЦ_ЕСЛИ
✅ Решение: Фильтрация сигнала
1ФУНКЦИЯ Прочитать_датчик_стабильно(пин):
2 СТАТИЧЕСКАЯ предыдущее_состояние = ЛОЖЬ
3 СТАТИЧЕСКАЯ время_последнего_изменения = 0
4
5 текущее_состояние = Прочитать_цифровой_пин(пин) = LOW
6 текущее_время = Получить_время()
7
8 ЕСЛИ текущее_состояние ≠ предыдущее_состояние ТО
9 время_последнего_изменения = текущее_время
10 КОНЕЦ_ЕСЛИ
11
12 // Считаем сигнал стабильным, если он не менялся 50мс
13 ЕСЛИ (текущее_время - время_последнего_изменения) > 50 ТО
14 стабильное_состояние = текущее_состояние
15 ИНАЧЕ
16 стабильное_состояние = предыдущее_состояние
17 КОНЕЦ_ЕСЛИ
18
19 предыдущее_состояние = текущее_состояние
20 ВОЗВРАТ стабильное_состояние
21КОНЕЦ_ФУНКЦИИ
❌ Ошибка 2: Застревание в одном состоянии
Проблема: Робот выполняет действие только один раз и застревает
1// Плохой код
2ЕСЛИ левый_датчик И правый_датчик ТО
3 Развернуться_на_180()
4 // После разворота датчики могут быть все еще нажаты!
5КОНЕЦ_ЕСЛИ
✅ Решение: Ожидание освобождения датчиков
1ФУНКЦИЯ Выполнить_действие_11_безопасно():
2 Вывести("Тупик - начинаю маневр")
3
4 // Выполняем маневр
5 Маневр_разворота()
6
7 // Ждем освобождения всех датчиков
8 ПОКА Прочитать_датчик(ПИН_ЛЕВЫЙ_ДАТЧИК) ИЛИ Прочитать_датчик(ПИН_ПРАВЫЙ_ДАТЧИК):
9 Вывести("Жду освобождения датчиков...")
10 Ждать(100)
11 КОНЕЦ_ПОКА
12
13 Вывести("Датчики освобождены, продолжаю")
14КОНЕЦ_ФУНКЦИИ
❌ Ошибка 3: Неправильная логика условий
Проблема: Условия перекрываются или не покрывают все случаи
1// Плохой код - условия могут перекрываться
2ЕСЛИ левый_датчик ТО
3 Повернуть_направо()
4КОНЕЦ_ЕСЛИ
5
6ЕСЛИ правый_датчик ТО
7 Повернуть_налево()
8КОНЕЦ_ЕСЛИ
9// Что если нажаты оба? Будет два поворота!
✅ Решение: Взаимоисключающие условия
1// Хороший код - четкие приоритеты
2ЕСЛИ левый_датчик И правый_датчик ТО
3 Маневр_тупика()
4ИНАЧЕ_ЕСЛИ левый_датчик И НЕ правый_датчик ТО
5 Повернуть_направо()
6ИНАЧЕ_ЕСЛИ НЕ левый_датчик И правый_датчик ТО
7 Повернуть_налево()
8ИНАЧЕ
9 Двигаться_вперед()
10КОНЕЦ_ЕСЛИ
🔍 Отладочные инструменты
📊 Система мониторинга состояний:
1ПЕРЕМЕННАЯ режим_отладки = ИСТИНА
2
3ФУНКЦИЯ Отладочный_вывод(левый, правый, действие):
4 ЕСЛИ режим_отладки ТО
5 Вывести("--- DEBUG ---")
6 Вывести("Время:", Получить_время())
7 Вывести("Левый датчик:", ЕСЛИ левый ТО "НАЖАТ" ИНАЧЕ "НЕ НАЖАТ")
8 Вывести("Правый датчик:", ЕСЛИ правый ТО "НАЖАТ" ИНАЧЕ "НЕ НАЖАТ")
9 Вывести("Действие:", действие)
10 Вывести("--- END ---")
11 КОНЕЦ_ЕСЛИ
12КОНЕЦ_ФУНКЦИИ
13
14// Использование в основном коде
15ГЛАВНЫЙ_ЦИКЛ:
16 левый = Прочитать_датчик_стабильно(ПИН_ЛЕВЫЙ_ДАТЧИК)
17 правый = Прочитать_датчик_стабильно(ПИН_ПРАВЫЙ_ДАТЧИК)
18
19 ЕСЛИ левый И правый ТО
20 Отладочный_вывод(левый, правый, "Маневр тупика")
21 Выполнить_действие_11()
22 // ... остальные условия
23КОНЕЦ_ЦИКЛА
📈 Статистика работы:
1ПЕРЕМЕННЫЕ:
2 счетчик_комбинаций[4] = [0, 0, 0, 0] // Для каждой комбинации
3 общее_время_работы = 0
4
5ФУНКЦИЯ Обновить_статистику(комбинация):
6 индекс = Комбинация_в_индекс(комбинация)
7 счетчик_комбинаций[индекс] = счетчик_комбинаций[индекс] + 1
8
9 // Каждые 100 циклов выводим статистику
10 ЕСЛИ Сумма(счетчик_комбинаций) % 100 = 0 ТО
11 Показать_статистику()
12 КОНЕЦ_ЕСЛИ
13КОНЕЦ_ФУНКЦИИ
14
15ФУНКЦИЯ Показать_статистику():
16 Вывести("=== СТАТИСТИКА ===")
17 Вывести("(0,0):", счетчик_комбинаций[0], " раз")
18 Вывести("(0,1):", счетчик_комбинаций[1], " раз")
19 Вывести("(1,0):", счетчик_комбинаций[2], " раз")
20 Вывести("(1,1):", счетчик_комбинаций[3], " раз")
21 Вывести("================")
22КОНЕЦ_ФУНКЦИИ
🏆 Этап 4: Мини-соревнование “Умный лабиринт”
Проверка интеллекта в деле
🏗️ Подготовка арены
📐 Конструкция лабиринта:
🎯 Простой лабиринт (для начинающих):
1Размер: 2м × 2м
2┌─────┬─────┐
3│START│ │
4├─────┤ ○ │ ○ = препятствие
5│ │ │
6│ ○ ├─────┤
7│ │FINISH│
8└─────┴─────┘
🔥 Сложный лабиринт (для продвинутых):
1Размер: 3м × 3м
2┌───┬───┬───┐
3│S │ ○ │ │
4├───┼───┼───┤
5│ ○ │ │ ○ │
6├───┼───┼───┤
7│ │ ○ │ F │
8└───┴───┴───┘
🧰 Материалы для препятствий:
- Картонные коробки (высота 10-15 см)
- Пластиковые кубики
- Цилиндрические емкости
- Мягкие преграды (подушки)
📋 Правила соревнования
🎯 Основные дисциплины:
🥇 Дисциплина 1: “Скоростное прохождение”
- Цель: Дойти от старта до финиша за минимальное время
- Критерии: Время + штрафы за застревания
- Штрафы: +10 секунд за каждое зависание > 5 секунд
🥈 Дисциплина 2: “Элегантная навигация”
- Цель: Пройти лабиринт с минимумом столкновений
- Критерии: Количество срабатываний датчиков
- Бонусы: -2 секунды за каждое избежание лобового столкновения
🥉 Дисциплина 3: “Исследователь”
- Цель: Обследовать максимальную площадь лабиринта за 2 минуты
- Критерии: Процент посещенной территории
- Особенности: Лабиринт без финиша
📊 Система оценки
🧮 Формула итогового балла:
1Итоговый_балл = Базовые_баллы + Бонусы - Штрафы
2
3Базовые_баллы = ЕСЛИ робот дошел до финиша ТО 50 ИНАЧЕ 0
4
5Бонусы:
6- За скорость: (120 - время_в_секундах) × 0.5
7- За элегантность: (20 - количество_столкновений) × 2
8- За стабильность: ЕСЛИ без_зависаний ТО 10 ИНАЧЕ 0
9
10Штрафы:
11- За зависания: количество_зависаний × 5
12- За выход из лабиринта: 20
13- За опасное поведение: 30
📋 Таблица результатов:
Команда |
Время, с |
Столкновения |
Зависания |
Базовые |
Бонусы |
Штрафы |
Итого |
1 |
___ |
___ |
___ |
___ |
___ |
___ |
___ |
2 |
___ |
___ |
___ |
___ |
___ |
___ |
___ |
3 |
___ |
___ |
___ |
___ |
___ |
___ |
___ |
4 |
___ |
___ |
___ |
___ |
___ |
___ |
___ |
🔍 Анализ стратегий
📈 Успешные подходы:
Стратегия А: “Осторожный исследователь”
1Характеристики:
2- Медленная, но стабильная навигация
3- Минимум столкновений
4- Хорошее время без зависаний
5
6Типичный результат:
7- Время: 80-120 секунд
8- Столкновения: 3-7
9- Зависания: 0-1
Стратегия Б: “Агрессивный спидран”
1Характеристики:
2- Высокая скорость движения
3- Быстрые резкие повороты
4- Риск зависаний в углах
5
6Типичный результат:
7- Время: 40-70 секунд
8- Столкновения: 8-15
9- Зависания: 1-3
Стратегия В: “Адаптивная навигация”
1Характеристики:
2- Изменение поведения в зависимости от ситуации
3- Учет предыдущих ошибок
4- Сбалансированный подход
5
6Типичный результат:
7- Время: 60-90 секунд
8- Столкновения: 5-10
9- Зависания: 0-2
🏅 Церемония награждения
🏆 Номинации и призы:
🥇 Главные призы:
- 🏆 “Гранд чемпион” - лучший общий результат
- ⚡ “Скоростной ас” - лучшее время прохождения
- 🧠 “Мастер навигации” - минимум столкновений
🎯 Специальные номинации:
- 🛡️ “Надежный партнер” - без зависаний
- 🎨 “Креативный алгоритм” - самое необычное поведение
- 🤝 “Командный дух” - лучшая работа в паре
- 🔧 “Техническое совершенство” - качество кода
- 📊 “Аналитик” - лучший анализ результатов
🎪 Демонстрационные заезды:
- Показательные выступления лучших роботов
- Объяснение стратегий победителей
- Анализ ключевых моментов соревнования
📸 Документирование:
- Фото и видео лучших моментов
- Интервью с командами-победителями
- Запись алгоритмов для изучения
🔮 Развитие соревнований
📈 Усложнения для будущих турниров:
Уровень 2: Динамические препятствия
- Препятствия перемещаются во время заезда
- Робот должен адаптироваться к изменениям
Уровень 3: Многоэтажный лабиринт
- Препятствия разной высоты
- Некоторые можно проехать снизу
Уровень 4: Командные соревнования
- Два робота работают вместе
- Один исследует, другой следует оптимальным путем
Уровень 5: ИИ-вызов
- Робот обучается на каждом заезде
- Запоминает карту лабиринта
- Оптимизирует маршрут автоматически
🏠 Домашнее задание
📋 Обязательные задания
1. Схема поведения для трех датчиков
Разработайте полную схему поведения робота с тремя датчиками нажатия:
📊 Таблица истинности (L-левый, C-центральный, R-правый):
L |
C |
R |
Ситуация |
Действие робота |
Логическое обоснование |
0 |
0 |
0 |
_________ |
______________ |
____________________ |
0 |
0 |
1 |
_________ |
______________ |
____________________ |
0 |
1 |
0 |
_________ |
______________ |
____________________ |
0 |
1 |
1 |
_________ |
______________ |
____________________ |
1 |
0 |
0 |
_________ |
______________ |
____________________ |
1 |
0 |
1 |
_________ |
______________ |
____________________ |
1 |
1 |
0 |
_________ |
______________ |
____________________ |
1 |
1 |
1 |
_________ |
______________ |
____________________ |
2. Анализ соревнования
Проанализируйте результаты сегодняшнего соревнования:
📈 Ваши результаты:
- Время прохождения: _____ секунд
- Количество столкновений: _____
- Количество зависаний: _____
- Итоговый балл: _____
🧠 Анализ ошибок:
- Где робот чаще всего застревал? ________________
- Какие комбинации датчиков вызывали проблемы? ________
- Что можно улучшить в алгоритме? _______________
📝 План улучшений:
-
🎯 Дополнительные задания (по выбору)
🧮 Для математиков:
Исследуйте сложность алгоритмов с множественными датчиками:
- Сколько различных комбинаций у N датчиков?
- Как растет сложность программы с увеличением датчиков?
- Предложите математическую модель для оптимизации
Постройте график зависимости сложности от количества датчиков.
💻 Для программистов:
Изучите продвинутые техники программирования:
- Машины состояний (State Machines)
- Таблицы переходов состояний
- Приоритетные алгоритмы принятия решений
- Самообучающиеся системы
Реализуйте один из подходов в виде псевдокода.
🔬 Для исследователей:
Проведите эксперимент по влиянию параметров на эффективность:
- Как влияет скорость движения на время прохождения?
- Как влияет время задержек между действиями?
- Какое оптимальное расположение датчиков на корпусе?
Сделайте научный отчет с графиками и выводами.
🎨 Для творческих:
Спроектируйте робота будущего с супер-интеллектом:
- Какие датчики он будет использовать?
- Как будет принимать решения?
- Какие задачи сможет решать?
- Нарисуйте схему и опишите возможности
🌐 Полезные ресурсы
📚 Для изучения:
- Теория автоматов и формальных языков
- Искусственный интеллект в робототехнике
- Алгоритмы планирования пути
- Машинное обучение для роботов
💻 Симуляторы и инструменты:
- Симуляторы роботов с множественными датчиками
- Визуализаторы логических схем
- Планировщики траекторий
- Среды для тестирования ИИ
🎥 Видеоматериалы:
- “Как роботы принимают решения”
- “Алгоритмы навигации автономных автомобилей”
- “Машинное обучение в реальном времени”
- “Соревнования роботов мирового уровня”
🎉 Подведение итогов практикума
🏆 Наши грандиозные достижения
🧠 Интеллектуальные навыки:
- ✅ Освоили создание сложных логических систем
- ✅ Научились анализировать множественные входные данные
- ✅ Поняли принципы создания умного поведения
- ✅ Овладели методами отладки сложных программ
💻 Программистские навыки:
- ✅ Создали программы с разветвленной логикой
- ✅ Освоили обработку комбинаций условий
- ✅ Научились оптимизировать алгоритмы
- ✅ Поняли важность тестирования и отладки
🤖 Робототехнические навыки:
- ✅ Построили робота с интеллектуальным поведением
- ✅ Создали систему адаптивной навигации
- ✅ Освоили принципы создания автономных систем
- ✅ Поняли основы искусственного интеллекта
🌟 Главные открытия
🎯 Революционные выводы:
“Умное поведение = Простые датчики + Сложная логика”
“Каждая дополнительная комбинация экспоненциально увеличивает возможности”
“Правильная отладка важнее сложного алгоритма”
🔮 Взгляд в будущее:
- Роботы с сотнями датчиков будут видеть мир в деталях
- Машинное обучение заменит ручное программирование логики
- Квантовые алгоритмы позволят обрабатывать миллионы комбинаций
- Роботы научатся создавать собственные алгоритмы поведения
📊 Финальная рефлексия
🎯 Оцените свой рост (0-10 баллов):
📈 Понимание логических операций: ___/10
- Могу объяснить И, ИЛИ, НЕ
- Умею строить таблицы истинности
- Понимаю комбинаторику состояний
💻 Навыки программирования: ___/10
- Создаю программы с множественными условиями
- Умею отлаживать сложные алгоритмы
- Оптимизирую код для эффективности
🤖 Робототехническая экспертиза: ___/10
- Понимаю принципы умного поведения
- Могу спроектировать интеллектуальную систему
- Вижу перспективы развития ИИ в робототехнике
💬 Поделитесь впечатлениями:
- Что было самым удивительным открытием?
- Какую задачу было труднее всего решить?
- Где вы видите применение полученных знаний?
🔮 Следующий урок: “Ультразвуковые датчики расстояния”
🎯 Готовимся к новым возможностям:
- Бесконтактное обнаружение препятствий
- Измерение точных расстояний
- Создание роботов-разведчиков
- 3D-картирование пространства
🧠 ВЫ СОЗДАЛИ РОБОТА С ИСКУССТВЕННЫМ ИНТЕЛЛЕКТОМ!
Теперь ваши роботы думают прежде чем действовать!