🤚🤚 Программирование робота с двумя датчиками

Практическая работа: умное поведение

🧠 Логическое мышление • 💻 Алгоритмы • 🤖 Интеллект • 🏆 Соревнования
5 класс • Технология • 90 минут

👨‍🏫 Учитель: Ахметов Рустам
🏫 Школа: ГБОУ № 1362
📅 Дата: 2025-06-11
🎯 Миссия: Создать действительно умного робота!

🎯 План практической работы

🚀 Наша большая миссия:

  1. 📊 Составить таблицы истинности - математическая основа
  2. 🧠 Спроектировать поведение - логика умного робота
  3. 💻 Программировать алгоритмы - воплощение идей в код
  4. 🔧 Тестировать и отлаживать - поиск и исправление ошибок
  5. 🏆 Участвовать в соревновании - проверка в деле

🎯 Результат работы:

  • Робот с интеллектуальным поведением
  • Программа, учитывающая все комбинации датчиков
  • Понимание принципов создания умных систем

👥 Работаем в парах:

  • 💻 Программист - создает алгоритмы и код
  • 🔧 Тестировщик - проверяет и отлаживает

🔄 Актуализация знаний

Повторяем логические операции

❓ Быстрая проверка знаний

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
1011   🔷 Определение комбинации (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-картирование пространства

    🧠 ВЫ СОЗДАЛИ РОБОТА С ИСКУССТВЕННЫМ ИНТЕЛЛЕКТОМ!
    Теперь ваши роботы думают прежде чем действовать!