🤖 Программирование робота для определения расстояния до препятствий

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

🔊 Датчики • 🧮 Точность • 🎯 Программирование • 🏆 Тестирование
5 класс • Технология • 90 минут

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

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

🔊 Наша ультразвуковая миссия:

  1. 🔧 Собрать робота с ультразвуковым датчиком
  2. 💻 Создать программу для измерения расстояний
  3. 📏 Провести калибровку и проверить точность
  4. 🧮 Рассчитать погрешности измерений
  5. ⚙️ Оптимизировать программу с учетом погрешностей
  6. 🏆 Протестировать робота в соревновании

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

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

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

  • 🔧 Конструктор - сборка и механика
  • 💻 Программист - логика и алгоритмы

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

Вспоминаем основы ультразвуковых измерений

❓ Блиц-опрос

🔊 Принцип работы ультразвукового датчика:

  • Как датчик измеряет расстояние до объекта?
  • Почему в формуле расчета мы делим время на 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 Прием сигнала

✅ Проверка подключения:

  1. Включить робота
  2. Светодиод на датчике должен загореться
  3. При поднесении руки к датчику на расстоянии 10 см должна быть реакция
  4. Показания должны изменяться плавно при движении руки

💻 Этап 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:

🔧 Сборка робота с датчиком: ⭐⭐⭐⭐⭐ 💻 Программирование алгоритмов: ⭐⭐⭐⭐⭐ 📊 Проведение измерений: ⭐⭐⭐⭐⭐ 🧮 Расчет погрешностей: ⭐⭐⭐⭐⭐ 🔍 Анализ результатов: ⭐⭐⭐⭐⭐

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

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

🔮 Следующий урок: “Системы автоматического управления в робототехнике”

🎯 Готовимся к новым технологиям:

  • Принципы обратной связи
  • ПИД-регуляторы для точного управления
  • Автоматическая стабилизация систем
  • Адаптивные алгоритмы управления

🤖 ВЫ СОЗДАЛИ РОБОТА С ТОЧНЫМ ЗРЕНИЕМ!
Теперь ваши роботы умеют не просто видеть препятствия, но и точно рассчитывать расстояния с учетом погрешностей!