Урок 18 • 7 класс STEM • 45 минут
Создать робота-сортировщика:
Практические навыки:
STEM-интеграция:
Полностью функциональный робот-сортировщик, способный различать цвета и раскладывать объекты по соответствующим контейнерам.
где:
Типичные значения:
Прямая подсветка:
Диффузная подсветка:
Кольцевая подсветка:
где:
RGB значения (0-255 каждый):
Примеры цветов:
Объекты для калибровки:
Алгоритм калибровки:
1. Установить стандартное освещение
2. ДЛЯ каждого цвета:
а) Поместить объект под датчик
б) Выполнить 10 измерений
в) Вычислить среднее значение R, G, B
г) Записать результат в таблицу
3. Вычислить пороговые значения
4. Протестировать распознавание
| Цвет | R_среднее | G_среднее | B_среднее | Сумма | Условие распознавания |
|---|---|---|---|---|---|
| Красный | 180 | 45 | 40 | 265 | R > 1.5×(G+B) |
| Зеленый | 50 | 200 | 55 | 305 | G > 1.5×(R+B) |
| Синий | 40 | 60 | 190 | 290 | B > 1.5×(R+G) |
| Желтый | 200 | 180 | 50 | 430 | (R+G) > 3×B |
| Белый | 220 | 215 | 210 | 645 | Сумма > 600 |
| Черный | 25 | 30 | 20 | 75 | Сумма < 100 |
Функция: АдаптацияКОсвещению()
1. Измерить белый эталон
2. Вычислить сумму: S_эталон = R + G + B
3. ЕСЛИ S_эталон > 700 ТО
коэффициент = 0.8 // яркий свет
ИНАЧЕ ЕСЛИ S_эталон < 400 ТО
коэффициент = 1.3 // тусклый свет
ИНАЧЕ
коэффициент = 1.0 // нормальный свет
4. Применить коэффициент ко всем измерениям
Функция: ОпределитьЦветПростой(R, G, B)
1. Найти максимальное значение: MAX = max(R, G, B)
2. ЕСЛИ MAX = R ТО
ЕСЛИ R > G + B ТО цвет = "Красный"
ИНАЧЕ цвет = "Неопределенный"
ИНАЧЕ ЕСЛИ MAX = G ТО
ЕСЛИ G > R + B ТО цвет = "Зеленый"
ИНАЧЕ цвет = "Неопределенный"
ИНАЧЕ
ЕСЛИ B > R + G ТО цвет = "Синий"
ИНАЧЕ цвет = "Неопределенный"
3. Вернуть цвет
Функция: ОпределитьЦветТочно(R, G, B)
1. Применить коррекцию освещения
2. Вычислить общую яркость: S = R + G + B
3.
ЕСЛИ S < 100 ТО
цвет = "Черный"
ИНАЧЕ ЕСЛИ S > 600 ТО
цвет = "Белый"
ИНАЧЕ ЕСЛИ R > 1.5×(G+B) И R > 120 ТО
цвет = "Красный"
ИНАЧЕ ЕСЛИ G > 1.5×(R+B) И G > 120 ТО
цвет = "Зеленый"
ИНАЧЕ ЕСЛИ B > 1.5×(R+G) И B > 120 ТО
цвет = "Синий"
ИНАЧЕ ЕСЛИ (R+G) > 3×B И R > 100 И G > 100 ТО
цвет = "Желтый"
ИНАЧЕ
цвет = "Неопределенный"
4. Вернуть цвет
Функция: НадежноеРаспознавание()
1. Выполнить 5 измерений подряд
2. ДЛЯ каждого измерения определить цвет
3. Подсчитать частоту каждого цвета
4. ЕСЛИ один цвет встречается ≥ 3 раза ТО
результат = этот_цвет
ИНАЧЕ
результат = "Неопределенный"
5. Вернуть результат
где $k$ - размер окна сглаживания (3-5 измерений)
Преимущества:
Функция: ВычислитьУверенность(R, G, B, определенный_цвет)
1. Вычислить "расстояние" до эталона цвета
2. ЕСЛИ определенный_цвет = "Красный" ТО
идеальный_R = 200, идеальный_G = 50, идеальный_B = 50
// ... для других цветов
3. Расстояние = √[(R-идеальный_R)² + (G-идеальный_G)² + (B-идеальный_B)²]
4. Уверенность = 100 - (Расстояние / 3)
5. ЕСЛИ Уверенность < 70 ТО
выдать предупреждение "Низкая уверенность"
6. Вернуть Уверенность
Программа: РоботСортировщик
1. Инициализация системы
- Калибровка датчиков
- Установка начальной позиции
- Проверка механизмов
2. Главный цикл:
ПОКА система_включена ВЫПОЛНЯТЬ
а) Ожидать появления объекта
б) Распознать цвет объекта
в) Принять решение о сортировке
г) Выполнить сортировку
д) Вернуться в исходную позицию
е) Обновить статистику
КОНЕЦ ЦИКЛА
3. Завершение работы
- Сохранить статистику
- Парковка в безопасной позиции
Перечисление: СостоянияРобота
- ОЖИДАНИЕ
- ИЗМЕРЕНИЕ
- АНАЛИЗ
- ЗАХВАТ
- ТРАНСПОРТИРОВКА
- ВЫГРУЗКА
- ВОЗВРАТ
Переменная: текущее_состояние = ОЖИДАНИЕ
Функция: ВыполнитьСортировку(определенный_цвет)
1. Подъехать к объекту
2. Захватить объект
3. ВЫБРАТЬ определенный_цвет:
СЛУЧАЙ "Красный":
ПоехатьККонтейнеру(1)
СЛУЧАЙ "Зеленый":
ПоехатьККонтейнеру(2)
СЛУЧАЙ "Синий":
ПоехатьККонтейнеру(3)
СЛУЧАЙ "Желтый":
ПоехатьККонтейнеру(4)
ПО_УМОЛЧАНИЮ:
ПоехатьККонтейнеру(0) // контейнер для неопознанных
4. Выгрузить объект
5. Подать звуковой сигнал
6. Вернуться к началу
Функция: УмнаяСортировка()
1. Проанализировать очередь объектов
2. Определить оптимальный маршрут
3. Сгруппировать объекты одного цвета
4. Минимизировать количество поездок
5. Выполнить серию операций
Функция: ЗахватитьОбъект()
1. Опустить захват
2. Разжать "клешни"
3. Придвинуться к объекту
4. Сжать "клешни"
5. ЕСЛИ датчик_касания = TRUE ТО
Поднять захват
результат = "Успех"
ИНАЧЕ
результат = "Неудача"
6. Вернуть результат
Функция: ПоехатьККонтейнеру(номер)
1. Вычислить угол поворота: угол = номер × 90°
2. Повернуться на угол
3. Проехать расстояние_до_контейнера
4. Точно позиционироваться над контейнером
где $N_{контейнеров}$ - общее количество контейнеров
Структура: СтатистикаРаботы
- общее_количество_объектов
- красных_объектов
- зеленых_объектов
- синих_объектов
- желтых_объектов
- неопознанных_объектов
- ошибок_захвата
- времени_работы
Функция: ОбновитьСтатистику(цвет, успех_операции)
1. общее_количество_объектов++
2. ВЫБРАТЬ цвет:
СЛУЧАЙ "Красный": красных_объектов++
// ... для других цветов
3. ЕСЛИ НЕ успех_операции ТО ошибок_захвата++
4. Вывести статистику на дисплей
Этап 1: Тест датчика
Тест: ПроверкаДатчика()
1. Поместить эталонные объекты
2. ДЛЯ каждого объекта:
- Измерить RGB значения
- Сравнить с калибровочными данными
- Записать отклонения
3. Вычислить точность распознавания:
точность = (правильных_ответов / общих_тестов) × 100%
4. ЕСЛИ точность < 90% ТО
требуется повторная калибровка
Этап 2: Тест механизмов
Тест: ПроверкаМеханизмов()
1. Тест захвата: попытаться захватить тестовый объект
2. Тест перемещения: проехать к каждому контейнеру
3. Тест выгрузки: разместить объект в контейнере
4. Измерить времена выполнения операций
5. Проверить повторяемость результатов
Проблема: Путает красный и желтый цвета Решение:
1. Проверить калибровку красного и желтого
2. Увеличить контрастность условия:
ЕСЛИ R > 2×G И R > 3×B ТО "Красный"
ЕСЛИ R > 1.2×B И G > 1.2×B ТО "Желтый"
3. Улучшить освещение объектов
Проблема: Нестабильное распознавание Решение:
1. Увеличить количество измерений до 7-10
2. Добавить сглаживание:
текущий_цвет = (предыдущий_цвет + новый_цвет) / 2
3. Установить минимальную уверенность 80%
Проблема: Робот не может захватить объект Диагностика:
1. Проверить позиционирование над объектом
2. Убедиться в правильной высоте захвата
3. Проверить силу сжатия "клешней"
4. Протестировать датчик касания
Оптимизация: БыстроеРаспознавание()
1. Использовать адаптивные пороги
2. ЕСЛИ предыдущий_объект = "Красный" И
текущий_цвет близок к красному ТО
сократить количество измерений до 3
3. Кэшировать результаты калибровки
4. Использовать предсказание цвета по контексту
Оптимизация: ЭкономияЭнергии()
1. Отключать подсветку между измерениями
2. Использовать спящий режим при ожидании
3. Оптимизировать маршруты перемещения
4. Снижать скорость движения при высокой точности
Функция: Улучшенная_Надежность()
1. Тройная проверка критических операций
2. Автоматическая повторная калибровка каждые 100 объектов
3. Мониторинг температуры датчиков
4. Резервное копирование настроек
Этап 1: Презентация конструкции (2 мин)
Рассказать о роботе:
1. Показать основные узлы робота
2. Объяснить принцип работы датчика
3. Продемонстрировать механизм сортировки
4. Рассказать об особенностях конструкции
Этап 2: Демонстрация калибровки (2 мин)
Показать процесс настройки:
1. Поместить эталонные цвета под датчик
2. Показать изменение RGB значений на дисплее
3. Объяснить, как выбирались пороговые значения
4. Продемонстрировать влияние освещения
Этап 3: Рабочая демонстрация (4 мин)
Полный цикл сортировки:
1. Поместить 5-6 объектов разных цветов
2. Запустить автоматическую сортировку
3. Комментировать действия робота
4. Показать результат в контейнерах
| Параметр | Целевое значение | Достигнутый результат | Оценка |
|---|---|---|---|
| Точность распознавания | ≥95% | ___% | ✅/❌ |
| Время на объект | ≤15 сек | ___ сек | ✅/❌ |
| Успешность захвата | ≥95% | ___% | ✅/❌ |
| Точность размещения | ≥90% | ___% | ✅/❌ |
| Стабильность при разном освещении | Работает | ✅/❌ | ✅/❌ |
Отчет о работе робота:
- Всего обработано объектов: ___
- Красных: ___ (___%)
- Зеленых: ___ (___%)
- Синих: ___ (___%)
- Желтых: ___ (___%)
- Неопознанных: ___ (___%)
- Ошибок сортировки: ___ (___%)
“Самый точный робот”
“Скоростной сортировщик”
“Самый надежный”
“Лучший алгоритм”
“Инженерное совершенство”
“Командная работа”
Что получилось хорошо (Плюс):
Что вызвало трудности (Минус):
Что показалось интересным:
Расширение функциональности:
Технические усовершенствования:
Промышленность:
Повседневная жизнь:
Технические:
Личностные:
1. Описание проекта
2. Процесс калибровки
3. Алгоритм работы
4. Результаты тестирования
Задание: “Анализ влияния освещения”
Исследовать зависимость точности распознавания от:
1. Интенсивности освещения (яркий/тусклый свет)
2. Типа освещения (лампа накаливания/LED/солнечный свет)
3. Угла падения света на объект
4. Цвета фона под объектом
Построить графики зависимостей
Сделать выводы о оптимальных условиях
Задание: “Расширение функциональности”
Добавить к роботу одну из функций:
1. Распознавание простых геометрических форм
2. Сортировка по размеру объектов
3. Подсчет статистики с выводом на экран
4. Звуковые комментарии к действиям робота
Описать алгоритм реализации
Протестировать и оценить эффективность
Задание: “Сравнение методов распознавания”
Сравнить эффективность различных подходов:
1. Простое пороговое сравнение
2. Статистическое усреднение
3. Метод ближайшего соседа в RGB-пространстве
4. Нормализация по яркости
Провести серию экспериментов
Построить сравнительную таблицу
Рекомендовать лучший метод
Концепция: Робот для автоматической сортировки отходов Технические требования:
Концепция: Устройство для определения цветов предметов Технические требования:
Концепция: Система обнаружения дефектов продукции Технические требования:
Книги:
Онлайн-ресурсы:
Для симуляции:
Для обработки изображений:
Практические результаты:
STEM-навыки:
Универсальные компетенции:
Помните: Сегодня вы создали не просто робота, а комплексную систему искусственного интеллекта, способную “видеть” и принимать решения. Это основа для понимания современных технологий компьютерного зрения!
Следующий урок: “Датчики и сенсоры в робототехнике”