🤖 Программирование робота для определения расстояния до препятствий
Практическая работа: создаем робота с ультразвуковым зрением
🔊 Датчики • 🧮 Точность • 🎯 Программирование • 🏆 Тестирование
5 класс • Технология • 90 минут
👨🏫 Учитель: Ахметов Рустам
🏫 Школа: ГБОУ № 1362
📅 Дата: 2025-06-11
🎯 Миссия: Создать робота, который умеет “видеть” препятствия!
🎯 План практической работы
🔊 Наша ультразвуковая миссия:
- 🔧 Собрать робота с ультразвуковым датчиком
- 💻 Создать программу для измерения расстояний
- 📏 Провести калибровку и проверить точность
- 🧮 Рассчитать погрешности измерений
- ⚙️ Оптимизировать программу с учетом погрешностей
- 🏆 Протестировать робота в соревновании
🎯 Результат работы:
- Робот, который останавливается на точном расстоянии
- Понимание факторов, влияющих на точность измерений
- Навыки анализа и коррекции погрешностей
👥 Работаем в парах:
- 🔧 Конструктор - сборка и механика
- 💻 Программист - логика и алгоритмы
🔄 Актуализация знаний
Вспоминаем основы ультразвуковых измерений
❓ Блиц-опрос
🔊 Принцип работы ультразвукового датчика:
- Как датчик измеряет расстояние до объекта?
- Почему в формуле расчета мы делим время на 2?
- От чего зависит скорость звука в воздухе?
🧮 Формула расчета расстояния:
1d = (v × Δt) / 2
2
3где:
4d - расстояние до объекта
5v - скорость звука (343 м/с при 20°C)
6Δt - время прохождения сигнала туда и обратно
🎯 Факторы точности:
- Температура воздуха
- Материал препятствия
- Угол отражения
- Электрические помехи
🎯 Постановка задачи
🤖 Техническое задание:
Создать робота, который:
- ✅ Движется вперед до препятствия
- ✅ Останавливается на расстоянии 15 см от препятствия
- ✅ Работает с разными типами поверхностей
- ✅ Имеет погрешность не более ±2 см
📊 Критерии успеха:
- Отлично (5): остановка в диапазоне 13-17 см
- Хорошо (4): остановка в диапазоне 12-18 см
- Удовлетворительно (3): остановка в диапазоне 10-20 см
- Требует доработки (2): погрешность более ±5 см
🏆 Дополнительные вызовы:
- Работа с препятствиями разной высоты
- Остановка на разных заданных расстояниях
- Плавное торможение без рывков
🔧 Этап 1: Сборка робота с датчиком
Создание измерительной платформы
📋 Компоненты системы
🧰 Основные детали:
- Базовое шасси робота с колесами
- Микроконтроллер (Arduino или аналог)
- Ультразвуковой датчик HC-SR04
- Соединительные провода
- Батарейный блок
- Светодиод для индикации
🔧 Инструменты:
- Отвертки для крепления
- Линейка для проверки расстояний
- Рабочий лист для записи данных
📐 Правильное размещение датчика
🎯 Требования к установке:
- Высота: 10-15 см от пола
- Направление: строго вперед по ходу движения
- Угол наклона: 0° (горизонтально)
- Препятствия: ничто не должно закрывать датчик
📊 Схема установки:
1 ┌─────────────┐
2 │ Датчик HC │ ← 10-15 см от пола
3 │ │
4 └─────────────┘
5 │
6 ┌──────┴──────┐
7 │ Робот │
8 │ │
9 └─────────────┘
10 🔄 🔄
11 колесо колесо
⚠️ Типичные ошибки установки:
- Датчик направлен под углом вниз → измеряет расстояние до пола
- Датчик слишком низко → “видит” мелкие неровности
- Датчик закрыт другими деталями → ложные показания
🔌 Подключение датчика
📊 Таблица соединений:
| Датчик HC-SR04 |
Arduino |
Назначение |
| VCC |
5V |
Питание |
| GND |
GND |
Общий провод |
| Trig |
Pin 7 |
Запуск измерения |
| Echo |
Pin 8 |
Прием сигнала |
✅ Проверка подключения:
- Включить робота
- Светодиод на датчике должен загореться
- При поднесении руки к датчику на расстоянии 10 см должна быть реакция
- Показания должны изменяться плавно при движении руки
💻 Этап 2: Программирование робота
Создание логики движения
🧠 Базовый алгоритм
📝 Логика работы “Остановка перед препятствием”:
1АЛГОРИТМ Движение_с_остановкой():
2 ПОСТОЯННО:
3 расстояние = Измерить_расстояние_датчиком()
4
5 ЕСЛИ расстояние > 20 см ТО
6 Двигаться_вперед(нормальная_скорость)
7
8 ИНАЧЕ ЕСЛИ расстояние > 15 см ТО
9 Двигаться_вперед(медленная_скорость)
10
11 ИНАЧЕ
12 Остановиться()
13 Подать_звуковой_сигнал()
14 КОНЕЦ ЕСЛИ
15
16 Ждать(100 мс) // Задержка между измерениями
17 КОНЕЦ ПОСТОЯННО
18КОНЕЦ АЛГОРИТМА
🎯 Ключевые принципы:
- Постоянное измерение расстояния
- Разные скорости для разных зон
- Плавное торможение
- Звуковая индикация остановки
⚙️ Улучшенный алгоритм
📈 Адаптивное торможение:
1АЛГОРИТМ Плавная_остановка():
2 целевое_расстояние = 15 // см
3
4 ПОСТОЯННО:
5 текущее_расстояние = Измерить_расстояние()
6
7 // Вычисляем скорость в зависимости от расстояния
8 ЕСЛИ текущее_расстояние > 50 ТО
9 скорость = 100 // максимальная
10
11 ИНАЧЕ ЕСЛИ текущее_расстояние > целевое_расстояние ТО
12 // Линейное снижение скорости
13 скорость = (текущее_расстояние - целевое_расстояние) × 2
14 скорость = ОГРАНИЧИТЬ(скорость, 30, 100)
15
16 ИНАЧЕ
17 скорость = 0 // остановка
18 Включить_красный_светодиод()
19 КОНЕЦ ЕСЛИ
20
21 Установить_скорость_моторов(скорость)
22 Ждать(50 мс)
23 КОНЕЦ ПОСТОЯННО
24КОНЕЦ АЛГОРИТМА
💡 Преимущества улучшенного алгоритма:
- Автоматическое замедление при приближении
- Отсутствие резких остановок
- Более точная остановка
- Визуальная индикация состояния
🔧 Функция измерения с фильтрацией
🌊 Сглаживание показаний датчика:
1ФУНКЦИЯ Стабильное_измерение():
2 сумма = 0
3 количество = 5
4
5 // Делаем несколько измерений подряд
6 ДЛЯ i = 1 ДО количество:
7 измерение = Прочитать_датчик()
8 сумма = сумма + измерение
9 Ждать(20 мс)
10 КОНЕЦ ДЛЯ
11
12 среднее = сумма / количество
13 ВОЗВРАТ среднее
14КОНЕЦ ФУНКЦИИ
15
16ФУНКЦИЯ Измерение_с_проверкой():
17 измерение1 = Стабильное_измерение()
18 Ждать(50 мс)
19 измерение2 = Стабильное_измерение()
20
21 // Проверяем, что измерения близки
22 разность = АБС(измерение1 - измерение2)
23
24 ЕСЛИ разность < 5 ТО // см
25 ВОЗВРАТ (измерение1 + измерение2) / 2
26 ИНАЧЕ
27 // Повторяем измерение
28 ВОЗВРАТ Измерение_с_проверкой()
29 КОНЕЦ ЕСЛИ
30КОНЕЦ ФУНКЦИИ
📏 Этап 3: Калибровка и измерение точности
Научный подход к оценке погрешностей
🧪 Методика измерений
📊 План эксперимента:
Тест 1: Точность на разных расстояниях
1Эталонные расстояния: 10, 15, 20, 30, 50, 80, 100 см
2
3Для каждого расстояния:
41. Установить препятствие точно на заданном расстоянии
52. Запустить робота
63. Измерить фактическое расстояние остановки
74. Повторить 3 раза
85. Записать все результаты
Тест 2: Влияние материала препятствия
1Материалы: картон, металл, дерево, ткань, пластик
2
3Фиксированное расстояние: 20 см
4Для каждого материала провести 3 измерения
Тест 3: Влияние высоты препятствия
1Высоты: 5 см, 15 см, 30 см, 50 см
2
3Фиксированное расстояние: 25 см
4Материал: картон
📊 Таблица результатов измерений
📏 Тест точности по расстояниям:
| Эталон, см |
Попытка 1 |
Попытка 2 |
Попытка 3 |
Среднее |
Абс. погрешность |
Отн. погрешность, % |
| 10 |
___ |
___ |
___ |
___ |
___ |
___ |
| 15 |
___ |
___ |
___ |
___ |
___ |
___ |
| 20 |
___ |
___ |
___ |
___ |
___ |
___ |
| 30 |
___ |
___ |
___ |
___ |
___ |
___ |
| 50 |
___ |
___ |
___ |
___ |
___ |
___ |
| 80 |
___ |
___ |
___ |
___ |
___ |
___ |
| 100 |
___ |
___ |
___ |
___ |
___ |
___ |
🧮 Формулы расчета погрешностей:
1Абсолютная погрешность = |Измеренное - Эталонное|
2Относительная погрешность = (Абсолютная погрешность / Эталонное) × 100%
🧱 Тест влияния материалов
📊 Фиксированное расстояние 20 см:
| Материал |
Попытка 1 |
Попытка 2 |
Попытка 3 |
Среднее |
Погрешность |
Особенности |
| Картон |
___ |
___ |
___ |
___ |
___ |
___ |
| Металл |
___ |
___ |
___ |
___ |
___ |
___ |
| Дерево |
___ |
___ |
___ |
___ |
___ |
___ |
| Ткань |
___ |
___ |
___ |
___ |
___ |
___ |
| Пластик |
___ |
___ |
___ |
___ |
___ |
___ |
🔍 Ожидаемые результаты:
- Металл: лучшее отражение, высокая точность
- Картон: хорошее отражение, стабильные результаты
- Ткань: плохое отражение, большие погрешности
- Пластик: зависит от типа поверхности
📈 Анализ результатов
🔍 Выявление закономерностей:
График точности vs расстояние:
- На каких расстояниях робот наиболее точен?
- Как изменяется погрешность с увеличением расстояния?
- Есть ли критическое расстояние, после которого точность резко падает?
Влияние материалов:
- Какие материалы дают лучшие результаты?
- Есть ли материалы, которые датчик “не видит”?
- Как это учесть в программе робота?
Практические выводы:
- Оптимальный диапазон работы для данной задачи
- Необходимые коррекции в программе
- Рекомендации по использованию
⚙️ Этап 4: Оптимизация программы
Учет погрешностей и улучшение точности
🔧 Коррекция на основе данных
📊 Создание таблицы поправок:
1НА ОСНОВЕ РЕЗУЛЬТАТОВ ИЗМЕРЕНИЙ:
2
3ЕСЛИ эталонное_расстояние = 10 см ТО
4 поправка = +2 см // датчик показывает меньше
5
6ИНАЧЕ ЕСЛИ эталонное_расстояние = 20 см ТО
7 поправка = -1 см // датчик показывает больше
8
9ИНАЧЕ ЕСЛИ эталонное_расстояние = 50 см ТО
10 поправка = +3 см // систематическая ошибка
11КОНЕЦ ЕСЛИ
12
13скорректированное_расстояние = измеренное + поправка
🎯 Адаптивная остановка:
1ФУНКЦИЯ Точная_остановка(целевое_расстояние):
2 // Определяем поправку на основе целевого расстояния
3 ЕСЛИ целевое_расстояние < 15 ТО
4 поправка = +2
5 ИНАЧЕ ЕСЛИ целевое_расстояние < 30 ТО
6 поправка = +1
7 ИНАЧЕ
8 поправка = 0
9 КОНЕЦ ЕСЛИ
10
11 скорректированная_цель = целевое_расстояние + поправка
12
13 ПОСТОЯННО:
14 текущее = Измерить_расстояние()
15
16 ЕСЛИ текущее <= скорректированная_цель ТО
17 Остановиться()
18 ВЫХОД ИЗ ЦИКЛА
19 КОНЕЦ ЕСЛИ
20
21 Двигаться_вперед()
22 КОНЕЦ ПОСТОЯННО
23КОНЕЦ ФУНКЦИИ
🧠 Интеллектуальная фильтрация
🌊 Отсеивание ложных сигналов:
1ФУНКЦИЯ Надежное_измерение():
2 МАССИВ последние_измерения[5]
3
4 ДЛЯ i = 0 ДО 4:
5 последние_измерения[i] = Прочитать_датчик()
6 Ждать(50 мс)
7 КОНЕЦ ДЛЯ
8
9 // Находим медианное значение (средний элемент)
10 Отсортировать(последние_измерения)
11 медиана = последние_измерения[2]
12
13 // Проверяем на разумность
14 ЕСЛИ медиана > 2 И медиана < 200 ТО
15 ВОЗВРАТ медиана
16 ИНАЧЕ
17 ВОЗВРАТ Надежное_измерение() // Повторяем
18 КОНЕЦ ЕСЛИ
19КОНЕЦ ФУНКЦИИ
🎯 Компенсация материалов:
1ФУНКЦИЯ Коррекция_по_материалу(расстояние):
2 // Анализируем стабильность сигнала
3 измерение1 = Прочитать_датчик()
4 Ждать(100 мс)
5 измерение2 = Прочитать_датчик()
6
7 нестабильность = АБС(измерение1 - измерение2)
8
9 ЕСЛИ нестабильность > 5 ТО
10 // Вероятно, плохо отражающая поверхность
11 коррекция = -2 // приближаемся ближе
12 ИНАЧЕ
13 коррекция = 0 // стабильная поверхность
14 КОНЕЦ ЕСЛИ
15
16 ВОЗВРАТ расстояние + коррекция
17КОНЕЦ ФУНКЦИИ
🏆 Этап 5: Тестирование и соревнование
Проверка в реальных условиях
🎯 Финальное тестирование
📋 Тест-кейсы для проверки:
Тест 1: Стандартный режим
- Цель: остановка на 15 см от картонной коробки
- Повторить 5 раз
- Записать все результаты
Тест 2: Разные материалы
- Цель: остановка на 20 см
- Препятствия: металл, дерево, ткань
- По 3 попытки для каждого
Тест 3: Разные расстояния
- Цели: 10, 15, 25, 30 см
- Препятствие: картон
- По 3 попытки для каждого расстояния
🏁 Мини-соревнование “Точная остановка”
🎯 Правила соревнования:
Задача: Остановиться точно на 15 см от препятствия
Условия:
- Препятствие: картонная коробка высотой 20 см
- Стартовая позиция: 100 см от препятствия
- У каждой команды 3 попытки
- Засчитывается лучший результат
📊 Система оценки:
1Отклонение от 15 см:
20-1 см → 10 баллов (идеально!)
31-2 см → 8 баллов (отлично)
42-3 см → 6 баллов (хорошо)
53-5 см → 4 балла (удовлетворительно)
65+ см → 2 балла (требует доработки)
🏆 Дополнительные номинации:
- 🎯 “Самый стабильный” - минимальный разброс между попытками
- ⚡ “Самый быстрый” - кратчайшее время до остановки
- 🧠 “Самый умный” - лучшая адаптация к разным материалам
📊 Протокол соревнования
| Команда |
Попытка 1, см |
Попытка 2, см |
Попытка 3, см |
Лучший результат |
Отклонение |
Баллы |
| 1 |
___ |
___ |
___ |
___ |
___ |
___ |
| 2 |
___ |
___ |
___ |
___ |
___ |
___ |
| 3 |
___ |
___ |
___ |
___ |
___ |
___ |
| 4 |
___ |
___ |
___ |
___ |
___ |
___ |
🔍 Анализ успехов и неудач
💡 Факторы успеха:
- Качественная калибровка датчика
- Правильное размещение на роботе
- Эффективные алгоритмы фильтрации
- Учет особенностей разных материалов
⚠️ Типичные проблемы:
- Вибрации при движении влияют на датчик
- Неравномерность пола дает ложные сигналы
- Угол наклона робота изменяет показания
- Электрические помехи от моторов
🛠️ Пути улучшения:
- Жесткое крепление датчика
- Программная компенсация наклона
- Экранирование от электрических помех
- Использование нескольких датчиков
🏠 Домашнее задание
📋 Обязательные задания
1. Отчет о практической работе
Оформите подробный отчет, включающий:
📊 Структура отчета:
- Цель работы и поставленные задачи
- Описание конструкции робота с фотографиями
- Таблицы измерений с расчетом погрешностей
- Анализ результатов - выявленные закономерности
- Выводы о точности и факторах, влияющих на измерения
- Предложения по улучшению конструкции и программы
2. Идеи по улучшению точности
Предложите и обоснуйте 3 способа повышения точности ультразвукового датчика:
💡 Возможные направления:
- Конструктивные улучшения (крепление, защита от помех)
- Программные решения (алгоритмы фильтрации, коррекции)
- Методические подходы (калибровка, компенсация внешних факторов)
🎯 Дополнительные задания (по выбору)
🔬 Для исследователей:
Проведите дополнительное исследование влияния температуры на точность измерений:
- Измерьте точность в разных помещениях (теплое/прохладное)
- Рассчитайте теоретическую поправку на температуру
- Сравните с практическими результатами
💻 Для программистов:
Разработайте улучшенный алгоритм работы робота:
- Автоматическое определение типа поверхности
- Адаптивная корректировка параметров
- Система самообучения на основе предыдущих измерений
🛠️ Для конструкторов:
Спроектируйте систему из нескольких датчиков:
- Схема расположения 2-3 датчиков на роботе
- Алгоритм обработки показаний нескольких датчиков
- Анализ преимуществ мультисенсорной системы
🎉 Подведение итогов практикума
🏆 Наши ультразвуковые достижения
🔧 Конструкторские навыки:
- ✅ Собрали робота с правильно размещенным датчиком
- ✅ Научились учитывать физические факторы при установке
- ✅ Освоили принципы механической стабилизации
💻 Программистские навыки:
- ✅ Создали алгоритм движения с остановкой
- ✅ Реализовали фильтрацию и коррекцию сигналов
- ✅ Научились оптимизировать программу по результатам тестов
📊 Аналитические навыки:
- ✅ Провели систематические измерения
- ✅ Рассчитали абсолютные и относительные погрешности
- ✅ Выявили факторы, влияющие на точность
🌟 Главные открытия
🎯 Ключевые выводы практикума:
“Точность робота зависит не только от датчика, но и от качества программы”
“Систематические ошибки можно компенсировать, если их понимать”
“Реальные условия всегда сложнее теоретических расчетов”
🔮 Применение в будущем:
- Автономные автомобили с системами парковки
- Роботы-помощники для людей с нарушениями зрения
- Системы автоматического складирования
- Дроны с функциями избегания препятствий
📏 Рефлексия “Лестница успеха”
🎯 Оцените себя по шкале от 1 до 5:
🔧 Сборка робота с датчиком: ⭐⭐⭐⭐⭐
💻 Программирование алгоритмов: ⭐⭐⭐⭐⭐
📊 Проведение измерений: ⭐⭐⭐⭐⭐
🧮 Расчет погрешностей: ⭐⭐⭐⭐⭐
🔍 Анализ результатов: ⭐⭐⭐⭐⭐
💭 Поделитесь впечатлениями:
- Что было самым сложным в практической работе?
- Какой результат вас больше всего удивил?
- Как можно применить полученные навыки в других проектах?
- Какие идеи для улучшения у вас появились?
🔮 Следующий урок: “Системы автоматического управления в робототехнике”
🎯 Готовимся к новым технологиям:
- Принципы обратной связи
- ПИД-регуляторы для точного управления
- Автоматическая стабилизация систем
- Адаптивные алгоритмы управления
🤖 ВЫ СОЗДАЛИ РОБОТА С ТОЧНЫМ ЗРЕНИЕМ!
Теперь ваши роботы умеют не просто видеть препятствия, но и точно рассчитывать расстояния с учетом погрешностей!