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

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

🧠 Логическое мышление • 💻 Алгоритмы • 🤖 Интеллект • 🏆 Соревнования
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)Двоичный кодДесятичное
10 (НЕ НАЖАТ)0 (НЕ НАЖАТ)000
20 (НЕ НАЖАТ)1 (НАЖАТ)011
31 (НАЖАТ)0 (НЕ НАЖАТ)102
41 (НАЖАТ)1 (НАЖАТ)113

🎯 Задача: Для каждой комбинации определить действие робота.

🚗 Пример: Таблица для “Умного автомобиля”

📊 Детальная таблица поведения:

LRСитуацияДействие роботаЛогическое условиеПродолжительность
00Путь свободенДвижение вперед (скорость 200)НЕ L И НЕ RПостоянно
01Препятствие справаПоворот налевоНЕ L И R800 мс
10Препятствие слеваПоворот направоL И НЕ R800 мс
11Тупик впередиОтъезд назад + разворотL И R2000 мс

🧠 Логические выражения:

Движение_вперед = НЕ(L) И НЕ(R)
Поворот_налево = НЕ(L) И R
Поворот_направо = L И НЕ(R)
Маневр_тупик = L И R

📝 Практическое задание

🎯 Составьте таблицу для вашего варианта:

Вариант: ________________

LRОписание ситуацииДействие роботаВремя выполнения
00_________________________________________
01_________________________________________
10_________________________________________
11_________________________________________

🔍 Проверочные вопросы:

  • Все ли комбинации имеют смысл?
  • Нет ли противоречий в логике?
  • Можно ли легко протестировать каждое поведение?
  • Безопасны ли все действия робота?

🧮 Математическая проверка

🔬 Проверка полноты покрытия:

Условие 1: Объединение всех условий должно покрывать все возможные состояния:

(НЕ L И НЕ R) ИЛИ (НЕ L И R) ИЛИ (L И НЕ R) ИЛИ (L И R) = ИСТИНА

Условие 2: Условия не должны пересекаться:

Любые два условия в паре дают ЛОЖЬ при операции И

Условие 3: Каждое условие должно быть достижимо:

Для каждого условия существует реальная ситуация

🎯 Практическая проверка: Убедитесь, что ваша таблица удовлетворяет всем трем условиям!

📊 Расширение до трех датчиков

🧠 Для понимания сложности:

При добавлении третьего датчика (например, заднего):

  • Количество комбинаций: 2^3 = 8
  • Логических условий: 8
  • Вариантов поведения: 8

📋 Краткая таблица (L-левый, R-правый, B-задний):

LRBСитуацияДействие
000Полная свободаБыстро вперед
001Препятствие сзадиМедленно вперед
010Препятствие справаПоворот налево

🎯 Вывод: Чем больше датчиков, тем сложнее, но умнее поведение!

🧠 Этап 2: Разработка алгоритма

От таблицы к программе

📊 Блок-схема общего алгоритма

🔄 Структура основного цикла:

     ⭕ НАЧАЛО
   📦 Инициализация датчиков и моторов
   🔄 ГЛАВНЫЙ ЦИКЛ (бесконечный)
   📥 Чтение состояния левого датчика → L
   📥 Чтение состояния правого датчика → R
   🔷 Определение комбинации (L, R)
     ↙    ↓    ↓    ↘
  (0,0) (0,1) (1,0) (1,1)
    ↓     ↓     ↓     ↓
  📦    📦    📦    📦
Действие Действие Действие Действие
   1      2      3      4
    ↓     ↓     ↓     ↓
    ↑←←←←←↑←←←←←↑←←←←←↑

💻 Псевдокод базового алгоритма

🎯 Основная структура программы:

ПРОГРАММА "Умный робот с двумя датчиками"

КОНСТАНТЫ:
  ПИН_ЛЕВЫЙ_ДАТЧИК = 2
  ПИН_ПРАВЫЙ_ДАТЧИК = 3
  ПИН_МОТОР_ЛЕВЫЙ = 9
  ПИН_МОТОР_ПРАВЫЙ = 10
  СКОРОСТЬ_НОРМАЛЬНАЯ = 200
  СКОРОСТЬ_ПОВОРОТА = 150

НАЧАЛО
  Инициализировать_пины()
  Показать_приветствие()
  
  ГЛАВНЫЙ_ЦИКЛ:
    ПОКА ИСТИНА:
      // Чтение датчиков
      левый_нажат = Прочитать_датчик(ПИН_ЛЕВЫЙ_ДАТЧИК)
      правый_нажат = Прочитать_датчик(ПИН_ПРАВЫЙ_ДАТЧИК)
      
      // Определение действия
      ВЫБОР (левый_нажат, правый_нажат):
        СЛУЧАЙ (ЛОЖЬ, ЛОЖЬ):
          Выполнить_действие_00()
        СЛУЧАЙ (ЛОЖЬ, ИСТИНА):
          Выполнить_действие_01()
        СЛУЧАЙ (ИСТИНА, ЛОЖЬ):
          Выполнить_действие_10()
        СЛУЧАЙ (ИСТИНА, ИСТИНА):
          Выполнить_действие_11()
      КОНЕЦ_ВЫБОРА
      
      Ждать(50)  // Небольшая задержка
    КОНЕЦ_ПОКА
КОНЕЦ

ФУНКЦИЯ Инициализировать_пины():
  Настроить_пин(ПИН_ЛЕВЫЙ_ДАТЧИК, ВХОД_С_ПОДТЯЖКОЙ)
  Настроить_пин(ПИН_ПРАВЫЙ_ДАТЧИК, ВХОД_С_ПОДТЯЖКОЙ)
  Настроить_пин(ПИН_МОТОР_ЛЕВЫЙ, ВЫХОД)
  Настроить_пин(ПИН_МОТОР_ПРАВЫЙ, ВЫХОД)
  Вывести("Датчики и моторы инициализированы")
КОНЕЦ_ФУНКЦИИ

🚗 Конкретные действия для “Умного автомобиля”

📝 Реализация каждого поведения:

ФУНКЦИЯ Выполнить_действие_00():
  // Комбинация (0,0) - путь свободен
  Вывести("Движение вперед - путь свободен")
  Установить_скорость_моторов(СКОРОСТЬ_НОРМАЛЬНАЯ, СКОРОСТЬ_НОРМАЛЬНАЯ)
КОНЕЦ_ФУНКЦИИ

ФУНКЦИЯ Выполнить_действие_01():
  // Комбинация (0,1) - препятствие справа
  Вывести("Препятствие справа - поворот налево")
  Остановить_моторы()
  Ждать(300)
  
  // Поворот налево: правый мотор быстрее левого
  Установить_скорость_моторов(СКОРОСТЬ_ПОВОРОТА / 2, СКОРОСТЬ_ПОВОРОТА)
  Ждать(800)
  
  Остановить_моторы()
  Ждать(200)
КОНЕЦ_ФУНКЦИИ

ФУНКЦИЯ Выполнить_действие_10():
  // Комбинация (1,0) - препятствие слева
  Вывести("Препятствие слева - поворот направо")
  Остановить_моторы()
  Ждать(300)
  
  // Поворот направо: левый мотор быстрее правого
  Установить_скорость_моторов(СКОРОСТЬ_ПОВОРОТА, СКОРОСТЬ_ПОВОРОТА / 2)
  Ждать(800)
  
  Остановить_моторы()
  Ждать(200)
КОНЕЦ_ФУНКЦИИ

ФУНКЦИЯ Выполнить_действие_11():
  // Комбинация (1,1) - тупик
  Вывести("Тупик - маневр разворота")
  Остановить_моторы()
  Ждать(500)
  
  // Отъезд назад
  Установить_скорость_моторов(-СКОРОСТЬ_НОРМАЛЬНАЯ, -СКОРОСТЬ_НОРМАЛЬНАЯ)
  Ждать(1000)
  
  // Разворот на 180 градусов
  Установить_скорость_моторов(СКОРОСТЬ_ПОВОРОТА, -СКОРОСТЬ_ПОВОРОТА)
  Ждать(1500)
  
  Остановить_моторы()
  Ждать(300)
КОНЕЦ_ФУНКЦИИ

🔧 Вспомогательные функции

⚙️ Основные функции управления:

ФУНКЦИЯ Установить_скорость_моторов(скорость_левого, скорость_правого):
  // Ограничение скорости в диапазоне -255...255
  скорость_левого = Ограничить(скорость_левого, -255, 255)
  скорость_правого = Ограничить(скорость_правого, -255, 255)
  
  // Установка скорости с учетом направления
  ЕСЛИ скорость_левого >= 0 ТО
    Установить_ШИМ(ПИН_МОТОР_ЛЕВЫЙ, скорость_левого)
  ИНАЧЕ
    Установить_ШИМ(ПИН_МОТОР_ЛЕВЫЙ, -скорость_левого)
    // Дополнительно: инвертировать направление
  КОНЕЦ_ЕСЛИ
  
  ЕСЛИ скорость_правого >= 0 ТО
    Установить_ШИМ(ПИН_МОТОР_ПРАВЫЙ, скорость_правого)
  ИНАЧЕ
    Установить_ШИМ(ПИН_МОТОР_ПРАВЫЙ, -скорость_правого)
    // Дополнительно: инвертировать направление
  КОНЕЦ_ЕСЛИ
КОНЕЦ_ФУНКЦИИ

ФУНКЦИЯ Остановить_моторы():
  Установить_скорость_моторов(0, 0)
КОНЕЦ_ФУНКЦИИ

ФУНКЦИЯ Прочитать_датчик(пин):
  значение = Прочитать_цифровой_пин(пин)
  // Для датчика с подтяжкой: LOW = нажат, HIGH = не нажат
  ВОЗВРАТ (значение = LOW)
КОНЕЦ_ФУНКЦИИ

ФУНКЦИЯ Ограничить(значение, минимум, максимум):
  ЕСЛИ значение < минимум ТО
    ВОЗВРАТ минимум
  ИНАЧЕ_ЕСЛИ значение > максимум ТО
    ВОЗВРАТ максимум
  ИНАЧЕ
    ВОЗВРАТ значение
  КОНЕЦ_ЕСЛИ
КОНЕЦ_ФУНКЦИИ

🎯 Оптимизация алгоритма

📈 Улучшения для более умного поведения:

ПЕРЕМЕННЫЕ:
  счетчик_столкновений = 0
  время_последней_комбинации = 0
  предыдущая_комбинация = (ЛОЖЬ, ЛОЖЬ)

ФУНКЦИЯ Анализ_поведения(текущая_комбинация):
  // Подсчет частоты столкновений
  ЕСЛИ текущая_комбинация ≠ (ЛОЖЬ, ЛОЖЬ) ТО
    счетчик_столкновений = счетчик_столкновений + 1
    Вывести("Столкновение номер:", счетчик_столкновений)
  КОНЕЦ_ЕСЛИ
  
  // Адаптация скорости в зависимости от частоты столкновений
  ЕСЛИ счетчик_столкновений > 10 ТО
    СКОРОСТЬ_НОРМАЛЬНАЯ = СКОРОСТЬ_НОРМАЛЬНАЯ * 0.8  // Снизить скорость
    Вывести("Снижаю скорость из-за частых столкновений")
    счетчик_столкновений = 0  // Сброс счетчика
  КОНЕЦ_ЕСЛИ
  
  // Запоминание предыдущего состояния
  предыдущая_комбинация = текущая_комбинация
  время_последней_комбинации = Получить_время()
КОНЕЦ_ФУНКЦИИ

🔧 Этап 3: Тестирование и отладка

Поиск и исправление ошибок

📋 План тестирования

🎯 Систематическая проверка всех комбинаций:

Тест 1: Проверка чтения датчиков

ПРОЦЕДУРА Тест_датчиков():
  Вывести("=== ТЕСТ ДАТЧИКОВ ===")
  
  ДЛЯ i = 1 ДО 20:
    левый = Прочитать_датчик(ПИН_ЛЕВЫЙ_ДАТЧИК)
    правый = Прочитать_датчик(ПИН_ПРАВЫЙ_ДАТЧИК)
    
    Вывести("L:", левый, " R:", правый, " Комбинация: (", левый, ",", правый, ")")
    Ждать(500)
  КОНЕЦ_ДЛЯ
КОНЕЦ_ПРОЦЕДУРЫ

Тест 2: Проверка каждой комбинации отдельно

ПРОЦЕДУРА Тест_комбинаций():
  комбинации = [(ЛОЖЬ,ЛОЖЬ), (ЛОЖЬ,ИСТИНА), (ИСТИНА,ЛОЖЬ), (ИСТИНА,ИСТИНА)]
  
  ДЛЯ КАЖДОЙ комбинации ИЗ комбинации:
    Вывести("Тест комбинации:", комбинация)
    Вывести("Нажмите соответствующие датчики и нажмите Enter")
    Ждать_нажатия_Enter()
    
    // Проверка в течение 5 секунд
    время_начала = Получить_время()
    ПОКА (Получить_время() - время_начала) < 5000:
      текущие_датчики = (Прочитать_датчик(ПИН_ЛЕВЫЙ_ДАТЧИК), Прочитать_датчик(ПИН_ПРАВЫЙ_ДАТЧИК))
      
      ЕСЛИ текущие_датчики = комбинация ТО
        Выполнить_действие_для_комбинации(комбинация)
      КОНЕЦ_ЕСЛИ
      
      Ждать(100)
    КОНЕЦ_ПОКА
    
    Остановить_моторы()
    Вывести("Тест завершен")
  КОНЕЦ_ДЛЯ
КОНЕЦ_ПРОЦЕДУРЫ

🐛 Типичные ошибки и их устранение

❌ Ошибка 1: Дребезг контактов

Проблема: Датчик срабатывает несколько раз при одном нажатии

// Плохой код
ЕСЛИ Прочитать_датчик(пин) ТО
  счетчик = счетчик + 1  // Может увеличиться несколько раз!
КОНЕЦ_ЕСЛИ

✅ Решение: Фильтрация сигнала

ФУНКЦИЯ Прочитать_датчик_стабильно(пин):
  СТАТИЧЕСКАЯ предыдущее_состояние = ЛОЖЬ
  СТАТИЧЕСКАЯ время_последнего_изменения = 0
  
  текущее_состояние = Прочитать_цифровой_пин(пин) = LOW
  текущее_время = Получить_время()
  
  ЕСЛИ текущее_состояние ≠ предыдущее_состояние ТО
    время_последнего_изменения = текущее_время
  КОНЕЦ_ЕСЛИ
  
  // Считаем сигнал стабильным, если он не менялся 50мс
  ЕСЛИ (текущее_время - время_последнего_изменения) > 50 ТО
    стабильное_состояние = текущее_состояние
  ИНАЧЕ
    стабильное_состояние = предыдущее_состояние
  КОНЕЦ_ЕСЛИ
  
  предыдущее_состояние = текущее_состояние
  ВОЗВРАТ стабильное_состояние
КОНЕЦ_ФУНКЦИИ

❌ Ошибка 2: Застревание в одном состоянии

Проблема: Робот выполняет действие только один раз и застревает

// Плохой код
ЕСЛИ левый_датчик И правый_датчик ТО
  Развернуться_на_180()
  // После разворота датчики могут быть все еще нажаты!
КОНЕЦ_ЕСЛИ

✅ Решение: Ожидание освобождения датчиков

ФУНКЦИЯ Выполнить_действие_11_безопасно():
  Вывести("Тупик - начинаю маневр")
  
  // Выполняем маневр
  Маневр_разворота()
  
  // Ждем освобождения всех датчиков
  ПОКА Прочитать_датчик(ПИН_ЛЕВЫЙ_ДАТЧИК) ИЛИ Прочитать_датчик(ПИН_ПРАВЫЙ_ДАТЧИК):
    Вывести("Жду освобождения датчиков...")
    Ждать(100)
  КОНЕЦ_ПОКА
  
  Вывести("Датчики освобождены, продолжаю")
КОНЕЦ_ФУНКЦИИ

❌ Ошибка 3: Неправильная логика условий

Проблема: Условия перекрываются или не покрывают все случаи

// Плохой код - условия могут перекрываться
ЕСЛИ левый_датчик ТО
  Повернуть_направо()
КОНЕЦ_ЕСЛИ

ЕСЛИ правый_датчик ТО
  Повернуть_налево()
КОНЕЦ_ЕСЛИ
// Что если нажаты оба? Будет два поворота!

✅ Решение: Взаимоисключающие условия

// Хороший код - четкие приоритеты
ЕСЛИ левый_датчик И правый_датчик ТО
  Маневр_тупика()
ИНАЧЕ_ЕСЛИ левый_датчик И НЕ правый_датчик ТО
  Повернуть_направо()
ИНАЧЕ_ЕСЛИ НЕ левый_датчик И правый_датчик ТО
  Повернуть_налево()
ИНАЧЕ
  Двигаться_вперед()
КОНЕЦ_ЕСЛИ

🔍 Отладочные инструменты

📊 Система мониторинга состояний:

ПЕРЕМЕННАЯ режим_отладки = ИСТИНА

ФУНКЦИЯ Отладочный_вывод(левый, правый, действие):
  ЕСЛИ режим_отладки ТО
    Вывести("--- DEBUG ---")
    Вывести("Время:", Получить_время())
    Вывести("Левый датчик:", ЕСЛИ левый ТО "НАЖАТ" ИНАЧЕ "НЕ НАЖАТ")
    Вывести("Правый датчик:", ЕСЛИ правый ТО "НАЖАТ" ИНАЧЕ "НЕ НАЖАТ")
    Вывести("Действие:", действие)
    Вывести("--- END ---")
  КОНЕЦ_ЕСЛИ
КОНЕЦ_ФУНКЦИИ

// Использование в основном коде
ГЛАВНЫЙ_ЦИКЛ:
  левый = Прочитать_датчик_стабильно(ПИН_ЛЕВЫЙ_ДАТЧИК)
  правый = Прочитать_датчик_стабильно(ПИН_ПРАВЫЙ_ДАТЧИК)
  
  ЕСЛИ левый И правый ТО
    Отладочный_вывод(левый, правый, "Маневр тупика")
    Выполнить_действие_11()
  // ... остальные условия
КОНЕЦ_ЦИКЛА

📈 Статистика работы:

ПЕРЕМЕННЫЕ:
  счетчик_комбинаций[4] = [0, 0, 0, 0]  // Для каждой комбинации
  общее_время_работы = 0

ФУНКЦИЯ Обновить_статистику(комбинация):
  индекс = Комбинация_в_индекс(комбинация)
  счетчик_комбинаций[индекс] = счетчик_комбинаций[индекс] + 1
  
  // Каждые 100 циклов выводим статистику
  ЕСЛИ Сумма(счетчик_комбинаций) % 100 = 0 ТО
    Показать_статистику()
  КОНЕЦ_ЕСЛИ
КОНЕЦ_ФУНКЦИИ

ФУНКЦИЯ Показать_статистику():
  Вывести("=== СТАТИСТИКА ===")
  Вывести("(0,0):", счетчик_комбинаций[0], " раз")
  Вывести("(0,1):", счетчик_комбинаций[1], " раз")
  Вывести("(1,0):", счетчик_комбинаций[2], " раз")
  Вывести("(1,1):", счетчик_комбинаций[3], " раз")
  Вывести("================")
КОНЕЦ_ФУНКЦИИ

🏆 Этап 4: Мини-соревнование “Умный лабиринт”

Проверка интеллекта в деле

🏗️ Подготовка арены

📐 Конструкция лабиринта:

🎯 Простой лабиринт (для начинающих):

Размер: 2м × 2м
┌─────┬─────┐
│START│     │
├─────┤  ○  │  ○ = препятствие
│     │     │
│  ○  ├─────┤
│     │FINISH│
└─────┴─────┘

🔥 Сложный лабиринт (для продвинутых):

Размер: 3м × 3м
┌───┬───┬───┐
│S  │ ○ │   │
├───┼───┼───┤
│ ○ │   │ ○ │
├───┼───┼───┤
│   │ ○ │ F │
└───┴───┴───┘

🧰 Материалы для препятствий:

  • Картонные коробки (высота 10-15 см)
  • Пластиковые кубики
  • Цилиндрические емкости
  • Мягкие преграды (подушки)

📋 Правила соревнования

🎯 Основные дисциплины:

🥇 Дисциплина 1: “Скоростное прохождение”

  • Цель: Дойти от старта до финиша за минимальное время
  • Критерии: Время + штрафы за застревания
  • Штрафы: +10 секунд за каждое зависание > 5 секунд

🥈 Дисциплина 2: “Элегантная навигация”

  • Цель: Пройти лабиринт с минимумом столкновений
  • Критерии: Количество срабатываний датчиков
  • Бонусы: -2 секунды за каждое избежание лобового столкновения

🥉 Дисциплина 3: “Исследователь”

  • Цель: Обследовать максимальную площадь лабиринта за 2 минуты
  • Критерии: Процент посещенной территории
  • Особенности: Лабиринт без финиша

📊 Система оценки

🧮 Формула итогового балла:

Итоговый_балл = Базовые_баллы + Бонусы - Штрафы

Базовые_баллы = ЕСЛИ робот дошел до финиша ТО 50 ИНАЧЕ 0

Бонусы:
- За скорость: (120 - время_в_секундах) × 0.5
- За элегантность: (20 - количество_столкновений) × 2
- За стабильность: ЕСЛИ без_зависаний ТО 10 ИНАЧЕ 0

Штрафы:
- За зависания: количество_зависаний × 5
- За выход из лабиринта: 20
- За опасное поведение: 30

📋 Таблица результатов:

КомандаВремя, сСтолкновенияЗависанияБазовыеБонусыШтрафыИтого
1_____________________
2_____________________
3_____________________
4_____________________

🔍 Анализ стратегий

📈 Успешные подходы:

Стратегия А: “Осторожный исследователь”

Характеристики:
- Медленная, но стабильная навигация
- Минимум столкновений
- Хорошее время без зависаний

Типичный результат:
- Время: 80-120 секунд
- Столкновения: 3-7
- Зависания: 0-1

Стратегия Б: “Агрессивный спидран”

Характеристики:
- Высокая скорость движения
- Быстрые резкие повороты
- Риск зависаний в углах

Типичный результат:
- Время: 40-70 секунд
- Столкновения: 8-15
- Зависания: 1-3

Стратегия В: “Адаптивная навигация”

Характеристики:
- Изменение поведения в зависимости от ситуации
- Учет предыдущих ошибок
- Сбалансированный подход

Типичный результат:
- Время: 60-90 секунд
- Столкновения: 5-10
- Зависания: 0-2

🏅 Церемония награждения

🏆 Номинации и призы:

🥇 Главные призы:

  • 🏆 “Гранд чемпион” - лучший общий результат
  • “Скоростной ас” - лучшее время прохождения
  • 🧠 “Мастер навигации” - минимум столкновений

🎯 Специальные номинации:

  • 🛡️ “Надежный партнер” - без зависаний
  • 🎨 “Креативный алгоритм” - самое необычное поведение
  • 🤝 “Командный дух” - лучшая работа в паре
  • 🔧 “Техническое совершенство” - качество кода
  • 📊 “Аналитик” - лучший анализ результатов

🎪 Демонстрационные заезды:

  • Показательные выступления лучших роботов
  • Объяснение стратегий победителей
  • Анализ ключевых моментов соревнования

📸 Документирование:

  • Фото и видео лучших моментов
  • Интервью с командами-победителями
  • Запись алгоритмов для изучения

🔮 Развитие соревнований

📈 Усложнения для будущих турниров:

Уровень 2: Динамические препятствия

  • Препятствия перемещаются во время заезда
  • Робот должен адаптироваться к изменениям

Уровень 3: Многоэтажный лабиринт

  • Препятствия разной высоты
  • Некоторые можно проехать снизу

Уровень 4: Командные соревнования

  • Два робота работают вместе
  • Один исследует, другой следует оптимальным путем

Уровень 5: ИИ-вызов

  • Робот обучается на каждом заезде
  • Запоминает карту лабиринта
  • Оптимизирует маршрут автоматически

🏠 Домашнее задание

📋 Обязательные задания

1. Схема поведения для трех датчиков Разработайте полную схему поведения робота с тремя датчиками нажатия:

📊 Таблица истинности (L-левый, C-центральный, R-правый):

LCRСитуацияДействие роботаЛогическое обоснование
000___________________________________________
001___________________________________________
010___________________________________________
011___________________________________________
100___________________________________________
101___________________________________________
110___________________________________________
111___________________________________________

2. Анализ соревнования Проанализируйте результаты сегодняшнего соревнования:

📈 Ваши результаты:

  • Время прохождения: _____ секунд
  • Количество столкновений: _____
  • Количество зависаний: _____
  • Итоговый балл: _____

🧠 Анализ ошибок:

  • Где робот чаще всего застревал? ________________
  • Какие комбинации датчиков вызывали проблемы? ________
  • Что можно улучшить в алгоритме? _______________

📝 План улучшений:

  • 🎯 Дополнительные задания (по выбору)

    🧮 Для математиков: Исследуйте сложность алгоритмов с множественными датчиками:

    • Сколько различных комбинаций у N датчиков?
    • Как растет сложность программы с увеличением датчиков?
    • Предложите математическую модель для оптимизации

    Постройте график зависимости сложности от количества датчиков.

    💻 Для программистов: Изучите продвинутые техники программирования:

    • Машины состояний (State Machines)
    • Таблицы переходов состояний
    • Приоритетные алгоритмы принятия решений
    • Самообучающиеся системы

    Реализуйте один из подходов в виде псевдокода.

    🔬 Для исследователей: Проведите эксперимент по влиянию параметров на эффективность:

    • Как влияет скорость движения на время прохождения?
    • Как влияет время задержек между действиями?
    • Какое оптимальное расположение датчиков на корпусе?

    Сделайте научный отчет с графиками и выводами.

    🎨 Для творческих: Спроектируйте робота будущего с супер-интеллектом:

    • Какие датчики он будет использовать?
    • Как будет принимать решения?
    • Какие задачи сможет решать?
    • Нарисуйте схему и опишите возможности

    🌐 Полезные ресурсы

    📚 Для изучения:

    • Теория автоматов и формальных языков
    • Искусственный интеллект в робототехнике
    • Алгоритмы планирования пути
    • Машинное обучение для роботов

    💻 Симуляторы и инструменты:

    • Симуляторы роботов с множественными датчиками
    • Визуализаторы логических схем
    • Планировщики траекторий
    • Среды для тестирования ИИ

    🎥 Видеоматериалы:

    • “Как роботы принимают решения”
    • “Алгоритмы навигации автономных автомобилей”
    • “Машинное обучение в реальном времени”
    • “Соревнования роботов мирового уровня”

    🎉 Подведение итогов практикума

    🏆 Наши грандиозные достижения

    🧠 Интеллектуальные навыки:

    • ✅ Освоили создание сложных логических систем
    • ✅ Научились анализировать множественные входные данные
    • ✅ Поняли принципы создания умного поведения
    • ✅ Овладели методами отладки сложных программ

    💻 Программистские навыки:

    • ✅ Создали программы с разветвленной логикой
    • ✅ Освоили обработку комбинаций условий
    • ✅ Научились оптимизировать алгоритмы
    • ✅ Поняли важность тестирования и отладки

    🤖 Робототехнические навыки:

    • ✅ Построили робота с интеллектуальным поведением
    • ✅ Создали систему адаптивной навигации
    • ✅ Освоили принципы создания автономных систем
    • ✅ Поняли основы искусственного интеллекта

    🌟 Главные открытия

    🎯 Революционные выводы:

    “Умное поведение = Простые датчики + Сложная логика”

    “Каждая дополнительная комбинация экспоненциально увеличивает возможности”

    “Правильная отладка важнее сложного алгоритма”

    🔮 Взгляд в будущее:

    • Роботы с сотнями датчиков будут видеть мир в деталях
    • Машинное обучение заменит ручное программирование логики
    • Квантовые алгоритмы позволят обрабатывать миллионы комбинаций
    • Роботы научатся создавать собственные алгоритмы поведения

    📊 Финальная рефлексия

    🎯 Оцените свой рост (0-10 баллов):

    📈 Понимание логических операций: ___/10

    • Могу объяснить И, ИЛИ, НЕ
    • Умею строить таблицы истинности
    • Понимаю комбинаторику состояний

    💻 Навыки программирования: ___/10

    • Создаю программы с множественными условиями
    • Умею отлаживать сложные алгоритмы
    • Оптимизирую код для эффективности

    🤖 Робототехническая экспертиза: ___/10

    • Понимаю принципы умного поведения
    • Могу спроектировать интеллектуальную систему
    • Вижу перспективы развития ИИ в робототехнике

    💬 Поделитесь впечатлениями:

    • Что было самым удивительным открытием?
    • Какую задачу было труднее всего решить?
    • Где вы видите применение полученных знаний?

    🔮 Следующий урок: “Ультразвуковые датчики расстояния”

    🎯 Готовимся к новым возможностям:

    • Бесконтактное обнаружение препятствий
    • Измерение точных расстояний
    • Создание роботов-разведчиков
    • 3D-картирование пространства

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