🛠️ Конструирование робота. Программирование поворотов

Практическая инженерия: от физики движения к коду и конструкции

⚙️ Конструирование • 💻 Программирование • 📐 Физика • 🎯 Точность
6 класс • Технология • 45 минут

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

🎯 Цель презентации

Создать комплексную методическую презентацию для практической работы по конструированию мобильного робота и программированию различных типов поворотов с глубоким физико-математическим обоснованием.

🔬 STEM-интеграция урока

  • S (Science): Физика поворотов, моменты сил, центробежные силы, трение
  • T (Technology): Конструирование шасси, датчики, двигатели, контроллеры
  • E (Engineering): Проектирование мобильной платформы, оптимизация конструкции
  • M (Mathematics): Расчеты углов поворота, радиусов, программирование траекторий

🎯 План инженерного практикума

🛠️ Наша практическая миссия:

  1. ⚠️ Подготовка мастерской - техника безопасности и инструменты (3 мин)
  2. 🎯 Постановка инженерной задачи - что мы создаем и зачем (5 мин)
  3. 📐 Физика поворотов робота - теоретические основы (7 мин)
  4. ⚙️ Конструирование платформы - сборка базовой модели (15 мин)
  5. 💻 Программирование движений - создание алгоритмов поворотов (15 мин)
  6. 🧪 Испытания и отладка - тестирование и коррекция (10 мин)
  7. 🏆 Демонстрация результатов - презентация роботов (8 мин)
  8. 🤔 Анализ достижений - рефлексия и выводы (2 мин)

🎯 К концу практикума мы сможем:

  • ⚙️ Собирать мобильную платформу робота с оптимальными характеристиками
  • 💻 Программировать точные повороты на заданные углы
  • 📐 Рассчитывать параметры движения робота
  • 🔧 Отлаживать и оптимизировать конструкцию и программу

⚠️ Подготовка инженерной мастерской

Безопасность, инструменты и материалы

🛡️ Правила техники безопасности

⚡ При работе с электронными компонентами:

  • Проверить целостность всех кабелей и разъемов
  • Не подключать/отключать компоненты при включенном питании
  • Соблюдать полярность подключения аккумуляторов
  • При неисправности немедленно отключить питание

🔧 При конструировании:

  • Аккуратно работать с мелкими деталями (балки, оси, шестерни)
  • Не применять чрезмерную силу при соединении деталей
  • Проверять надежность всех соединений
  • Следить за порядком на рабочем месте

💻 При программировании:

  • Сохранять программы под осмысленными именами
  • Делать резервные копии рабочих программ
  • Тестировать программу поэтапно
  • Не оставлять робота без присмотра во время работы

🧰 Инженерное оборудование

🔧 Конструкторские наборы:

Платформа Компоненты Возможности Особенности
LEGO Mindstorms Блоки, моторы, датчики, EV3 Быстрое прототипирование Графическое программирование
Arduino Robot Kit Шасси, моторы, Arduino Uno Глубокое программирование C/C++ код
mBot (mCore) Алюминиевое шасси, датчики Готовая платформа Scratch + Arduino IDE
VEX Robotics Металлические детали, моторы Прочные конструкции Профессиональный уровень

⚙️ Ключевые компоненты робота:

  • Контроллер - мозг робота (EV3, Arduino, ESP32)
  • Двигатели - сервомоторы или моторы постоянного тока
  • Шасси - рама для крепления всех компонентов
  • Колеса - обеспечивают движение и маневренность
  • Датчики - энкодеры, гироскоп, компас (опционально)
  • Аккумулятор - источник питания

📐 Измерительные инструменты

🔍 Инструменты для точности:

Инструмент Назначение Точность Применение
Транспортир Измерение углов поворота ±1° Проверка точности поворотов
Линейка Измерение размеров робота ±1 мм Определение габаритов
Рулетка Измерение траекторий ±5 мм Радиусы дуг, дистанции
Секундомер Время выполнения команд ±0.01 с Калибровка скорости
Компас Ориентация робота ±5° Проверка направления

📊 Тестовый полигон:

  • Размеченное поле 2×2 м с углами 30°, 45°, 90°, 180°
  • Стартовые позиции для разных типов поворотов
  • Контрольные точки для проверки траекторий
  • Препятствия для тестирования маневренности

🎯 Постановка инженерной задачи

Что мы создаем и зачем

🤖 Техническое задание

🎯 Основная цель: Создать мобильного робота, способного выполнять точные повороты для навигации в пространстве

📋 Технические требования:

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

  • Дифференциальный привод (2 ведущих колеса)
  • Стабильная платформа с низким центром тяжести
  • Симметричная конструкция для равномерного движения
  • Габариты: не более 25×25×15 см

Программные возможности:

  • Поворот на месте на заданный угол (90°, 45°, 30°)
  • Движение по дуге с заданным радиусом
  • Точность поворота: ±5°
  • Время выполнения поворота на 90°: не более 3 секунд

🌍 Применение точных поворотов в робототехнике

🏭 Промышленные роботы:

Роботы-манипуляторы:

 1Требования к точности:
 2- Позиционирование: ±0.1 мм
 3- Ориентация: ±0.1°
 4- Повторяемость: ±0.05 мм
 5- Время цикла: 1-5 секунд
 6
 7Применение:
 8- Сварка автомобильных кузовов
 9- Сборка электронных компонентов
10- Покраска изделий
11- Упаковка продукции

Мобильные роботы на складах:

 1Amazon Warehouse Robots:
 2- Точность позиционирования: ±2 см
 3- Скорость поворота: 180°/с
 4- Грузоподъемность: до 1 тонны
 5- Время автономной работы: 24 часа
 6
 7Задачи:
 8- Навигация между стеллажами
 9- Точная подача к рабочим местам
10- Избегание столкновений
11- Оптимизация маршрутов

🚗 Автономные транспортные средства

🚙 Беспилотные автомобили:

Система поворотов:

 1Алгоритмы управления:
 2- Расчет траектории движения
 3- Компенсация скольжения колес
 4- Учет центробежных сил
 5- Адаптация к дорожным условиям
 6
 7Точность:
 8- Отклонение от полосы: ±10 см
 9- Точность парковки: ±5 см
10- Угол поворота руля: ±0.5°

Математическое моделирование:

\[R = \frac{L}{\tan(\delta)}\]

где:

  • R - радиус поворота
  • L - колесная база автомобиля
  • δ - угол поворота передних колес

🎮 Соревновательная робототехника

🏆 Робототехнические соревнования:

FIRST Robotics Competition:

 1Задачи на точность поворотов:
 2- Навигация по полю 16×8 м
 3- Точное позиционирование у целей
 4- Повороты в ограниченном пространстве
 5- Работа в команде с другими роботами
 6
 7Критерии оценки:
 8- Скорость выполнения задач
 9- Точность попадания в цели
10- Надежность системы управления
11- Эффективность алгоритмов

RoboCup:

 1Футбол роботов:
 2- Точное ведение мяча
 3- Повороты с мячом
 4- Удары по воротам
 5- Командное взаимодействие
 6
 7Требования:
 8- Время реакции: < 100 мс
 9- Точность удара: ±2°
10- Скорость поворота: до 360°/с

🎯 Критерии успеха нашего проекта

📊 Метрики качества робота:

Точность поворотов:

\[\varepsilon = |\alpha_{\text{программа}} - \alpha_{\text{факт}}|\]

Цель: ε < 5° для всех тестов

Стабильность конструкции:

  • Отсутствие люфтов в соединениях
  • Равномерное распределение массы
  • Надежность крепления компонентов

Эффективность программы:

  • Минимальное время выполнения поворота
  • Плавность движения без рывков
  • Адаптивность к разным поверхностям

🏆 Дополнительные вызовы:

  • Движение по сложной траектории (восьмерка)
  • Поворот с одновременным движением вперед
  • Компенсация проскальзывания колес
  • Автоматическая калибровка параметров

📐 Физика поворотов робота

Теоретические основы точного движения

⚙️ Дифференциальный привод

🔧 Принцип работы:

 1Схема дифференциального привода:
 2
 3    ┌─────────────────┐
 4    │                 │
 5    │   РОБОТ         │
 6    │                 │
 7    └─────┬─────┬─────┘
 8          │     │
 9      ┌───▼─┐ ┌─▼───┐
10      │  ML │ │  MR │  ML, MR - моторы
11      └─────┘ └─────┘
12      
13Типы движения:
14ML = MR > 0  →  Движение вперед
15ML = MR < 0  →  Движение назад  
16ML > 0, MR = 0  →  Поворот направо
17ML = 0, MR > 0  →  Поворот налево
18ML = -MR  →  Поворот на месте

📊 Кинематика дифференциального привода:

Линейная скорость центра робота:

\[v = \frac{v_L + v_R}{2}\]

Угловая скорость поворота:

\[\omega = \frac{v_R - v_L}{L}\]

Радиус поворота:

\[R = \frac{L}{2} \cdot \frac{v_L + v_R}{v_R - v_L}\]

где:

  • v_L, v_R - скорости левого и правого колес
  • L - расстояние между колесами (колея)
  • R - радиус поворота

🌀 Поворот на месте

⚡ Физические принципы:

Момент силы для поворота:

\[M = F \cdot \frac{L}{2}\]

Угловое ускорение:

\[\varepsilon = \frac{M}{I}\]

Момент инерции робота:

\[I = I_{\text{корпус}} + 2 \cdot I_{\text{колесо}}\]

Угол поворота за время t:

\[\alpha = \omega_0 t + \frac{\varepsilon t^2}{2}\]

🎯 Практический расчет:

Для поворота на 90° (π/2 радиан):

1Дано:
2- Колея робота L = 20 см
3- Скорость колеса v = 10 см/с
4- Требуемый угол α = 90° = π/2 рад
5
6Расчет времени поворота:
7ω = v/R = 2v/L = 2×10/20 = 1 рад/с
8t = α/ω = (π/2)/1 = 1.57 с

🌊 Поворот по дуге

📐 Геометрия поворота по дуге:

Связь между скоростями колес:

\[\frac{v_L}{v_R} = \frac{R - L/2}{R + L/2}\]

Для заданного радиуса R:

\[v_L = v \cdot \frac{R - L/2}{R}\] \[v_R = v \cdot \frac{R + L/2}{R}\]

Длина дуги поворота:

\[S = R \cdot \alpha\]

Время движения по дуге:

\[t = \frac{S}{v} = \frac{R \cdot \alpha}{v}\]

🎯 Факторы, влияющие на точность

⚠️ Источники погрешностей:

Проскальзывание колес:

\[v_{\text{факт}} = v_{\text{теор}} \cdot (1 - k_{\text{скольж}})\]

где k_скольж = 0.02-0.1 (коэффициент проскальзывания)

Неравномерность моторов:

1Различие скоростей моторов при одинаковых командах:
2Δv = |v_L - v_R| / v_средн
3
4Типичные значения:
5- Дешевые моторы: Δv = 5-10%
6- Серводвигатели: Δv = 1-2%
7- Шаговые двигатели: Δv = 0.1-0.5%

Люфты в механизмах:

  • Люфт в соединениях: ±0.5-2°
  • Деформация колес под нагрузкой
  • Температурные изменения размеров

Инерция системы:

\[t_{\text{разгон}} = \frac{I \cdot \omega}{M_{\text{мотор}}}\]

🔧 Методы повышения точности:

  1. Калибровка моторов - измерение реальных скоростей
  2. Обратная связь - использование энкодеров
  3. Компенсация проскальзывания - коррекция по датчикам
  4. Фильтрация команд - сглаживание резких изменений

⚙️ Конструирование базовой платформы

Сборка оптимальной мобильной конструкции

🏗️ Принципы конструирования

🎯 Основные требования к платформе:

Устойчивость:

  • Низкий центр тяжести (h_цт < L/3)
  • Широкая колея для боковой устойчивости
  • Равномерное распределение массы
  • Отсутствие выступающих частей

Симметрия:

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

Жесткость:

  • Прочные соединения всех узлов
  • Минимальные люфты и деформации
  • Защита от вибраций
  • Надежное крепление аккумулятора

🔧 Схемы сборки базовой платформы

🚗 Конфигурация “Дифференциальный привод”:

 1Вид сверху:
 2    ┌─────────────────┐
 3    │   Контроллер    │
 4    │                 │
 5    ├─────┬─────┬─────┤
 6    │  █  │     │  █  │  █ - Ведущие колеса
 7    │     │     │     │
 8    │     │  o  │     │  o - Опорное колесо/шарик
 9    └─────┴─────┴─────┘
10
11Преимущества:
12✓ Простота конструкции
13✓ Поворот на месте
14✓ Высокая маневренность
15✓ Точное программирование
16
17Недостатки:
18✗ Требует балансировки
19✗ Скольжение опорного колеса
20✗ Чувствительность к неровностям

⚙️ Расчет оптимальных размеров:

Колея (расстояние между колесами):

\[L = 0.6 \times l_{\text{платформы}}\]

Положение опорного колеса:

\[d_{\text{опора}} = 0.7 \times l_{\text{платформы}}\]

Высота центра тяжести:

\[h_{\text{цт}} < \frac{L}{4}\]

🛠️ Пошаговая инструкция сборки

📋 Этап 1: Основание платформы (5 минут)

 1Компоненты:
 2- Основная рама (базовая пластина)
 3- Балки для усиления конструкции
 4- Крепежные элементы
 5
 6Порядок сборки:
 71. Соединить основные балки в прямоугольную раму
 82. Установить поперечные балки для жесткости
 93. Проверить прямоугольность конструкции
104. Затянуть все соединения
11
12Контроль качества:
13✓ Отсутствие люфтов в соединениях
14✓ Плоскость основания
15✓ Симметрия конструкции

📋 Этап 2: Установка ведущих колес (4 минуты)

 1Последовательность:
 21. Закрепить моторы на боковых сторонах рамы
 32. Убедиться в соосности моторов
 43. Установить колеса на валы моторов
 54. Проверить свободное вращение
 6
 7Критические параметры:
 8- Высота осей колес: одинаковая ±1 мм
 9- Расстояние между колесами: L = 18-22 см
10- Диаметр колес: одинаковый ±0.5 мм
11- Отсутствие трения в подшипниках
12
13Проверка:
14✓ Колеса касаются поверхности одновременно
15✓ Нет заедания при вращении
16✓ Моторы надежно закреплены

⚖️ Балансировка платформы

📐 Определение центра тяжести:

Метод весов:

11. Взвесить полностью собранного робота: m_общ
22. Подвесить робота за переднюю точку
33. Измерить отклонение от вертикали: α
44. Рассчитать положение ЦТ:
5
6x_цт = L_база × sin(α)

Практический тест балансировки:

1Тест "Стойка на двух колесах":
21. Поднять опорное колесо
32. Робот должен устойчиво стоять на ведущих колесах
43. Допустимый наклон: не более 5°
5
6Коррекция дисбаланса:
7- Перемещение аккумулятора
8- Добавление балластного груза
9- Изменение положения контроллера

🔧 Оптимизация конструкции:

Жесткость соединений:

\[k_{\text{жест}} = \frac{F}{\delta}\]

где F - приложенная сила, δ - деформация

Частота собственных колебаний:

\[f_0 = \frac{1}{2\pi} \sqrt{\frac{k}{m}}\]

Цель: f₀ > 20 Гц (избежание резонанса с частотой моторов)

🔌 Установка электронных компонентов

📱 Размещение контроллера:

 1Требования:
 2- Защита от вибраций
 3- Доступ к портам подключения
 4- Возможность программирования
 5- Защита от ударов
 6
 7Рекомендуемое положение:
 8- Центр платформы (для баланса)
 9- Высота 5-10 см от основания
10- Ориентация портами наружу

🔋 Установка аккумулятора:

 1Критерии размещения:
 2- Максимально низко (снижение ЦТ)
 3- Симметрично относительно оси робота
 4- Надежное крепление
 5- Легкость замены
 6
 7Крепление:
 8- Липучки Velcro
 9- Эластичные ремни  
10- Специальные держатели

🔗 Прокладка проводов:

 1Принципы:
 2- Минимальная длина
 3- Защита от заломов
 4- Группировка по функциям
 5- Маркировка соединений
 6
 7Схема подключения:
 8Контроллер → Моторы: толстые провода (мощность)
 9Контроллер → Датчики: тонкие провода (сигналы)
10Аккумулятор → Контроллер: провода питания

💻 Программирование поворотов робота

Создание алгоритмов точного движения

🧮 Основы программирования движения

🎯 Структура программы управления:

 1# Псевдокод базовой программы
 2class RobotController:
 3    def __init__(self):
 4        self.left_motor = Motor('портA')
 5        self.right_motor = Motor('портB')
 6        self.wheel_diameter = 5.5  # см
 7        self.wheelbase = 20.0      # см
 8    
 9    def move_forward(self, distance, speed=50):
10        # Движение вперед на заданное расстояние
11        
12    def turn_on_spot(self, angle, speed=30):
13        # Поворот на месте на заданный угол
14        
15    def turn_arc(self, radius, angle, speed=40):
16        # Поворот по дуге заданного радиуса

📐 Калибровочные константы:

1# Константы робота (определяются экспериментально)
2WHEEL_DIAMETER = 5.5        # Диаметр колеса в см
3WHEELBASE = 20.0           # Расстояние между колесами в см
4DEGREES_PER_ROTATION = 360 # Градусов на оборот мотора
5MOTOR_POWER_MAX = 100      # Максимальная мощность мотора
6FRICTION_COEFFICIENT = 0.8  # Коэффициент сцепления с поверхностью

🔄 Программирование поворота на месте

⚙️ Алгоритм поворота на заданный угол:

 1def turn_on_spot(self, angle_degrees, power=30):
 2    """
 3    Поворот робота на месте на заданный угол
 4    
 5    Параметры:
 6    angle_degrees: угол поворота в градусах (+/- для направления)
 7    power: мощность моторов (0-100)
 8    """
 9    
10    # Расчет количества оборотов колеса
11    wheel_rotations = (angle_degrees * self.wheelbase) / (360 * self.wheel_diameter)
12    
13    # Преобразование в градусы поворота мотора
14    motor_degrees = wheel_rotations * 360
15    
16    if angle_degrees > 0:  # Поворот направо
17        self.left_motor.run_angle(power, motor_degrees)
18        self.right_motor.run_angle(-power, motor_degrees)
19    else:  # Поворот налево
20        self.left_motor.run_angle(-power, abs(motor_degrees))
21        self.right_motor.run_angle(power, abs(motor_degrees))
22    
23    # Ожидание завершения поворота
24    wait_for_completion()

📊 Математическое обоснование:

Длина дуги, которую проходит колесо:

\[S_{\text{колесо}} = \frac{\alpha \cdot L}{2}\]

Количество оборотов колеса:

\[N_{\text{оборотов}} = \frac{S_{\text{колесо}}}{\pi \cdot D} = \frac{\alpha \cdot L}{2\pi \cdot D}\]

Угол поворота мотора:

\[\alpha_{\text{мотор}} = N_{\text{оборотов}} \cdot 360°\]

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

📐 Алгоритм движения по дуге:

 1def turn_arc(self, radius_cm, angle_degrees, base_power=40):
 2    """
 3    Поворот робота по дуге заданного радиуса
 4    
 5    Параметры:
 6    radius_cm: радиус поворота в см
 7    angle_degrees: угол поворота в градусах
 8    base_power: базовая мощность для внешнего колеса
 9    """
10    
11    # Вычисление скоростей левого и правого колес
12    if angle_degrees > 0:  # Поворот направо
13        # Правое колесо - внутреннее, левое - внешнее
14        outer_radius = radius_cm + self.wheelbase / 2
15        inner_radius = radius_cm - self.wheelbase / 2
16        
17        left_power = base_power  # Внешнее колесо
18        right_power = base_power * (inner_radius / outer_radius)
19    else:  # Поворот налево
20        # Левое колесо - внутреннее, правое - внешнее
21        outer_radius = radius_cm + self.wheelbase / 2
22        inner_radius = radius_cm - self.wheelbase / 2
23        
24        right_power = base_power  # Внешнее колесо
25        left_power = base_power * (inner_radius / outer_radius)
26    
27    # Расчет времени движения
28    arc_length = (abs(angle_degrees) * pi * radius_cm) / 180
29    wheel_speed = (base_power / 100) * self.max_wheel_speed
30    travel_time = arc_length / wheel_speed
31    
32    # Выполнение поворота
33    self.left_motor.run_time(left_power, travel_time * 1000)  # мс
34    self.right_motor.run_time(right_power, travel_time * 1000)

🧮 Математические расчеты для дуги:

Радиусы для левого и правого колес:

\[R_L = R - \frac{L}{2}, \quad R_R = R + \frac{L}{2}\]

Отношение скоростей:

\[\frac{v_L}{v_R} = \frac{R_L}{R_R} = \frac{R - L/2}{R + L/2}\]

Длина дуги:

\[S = R \cdot \frac{\alpha \cdot \pi}{180°}\]

🎯 Калибровка и точность

🔧 Калибровка базовых параметров:

 1def calibrate_wheel_diameter(self, test_distance=100):
 2    """
 3    Калибровка диаметра колеса
 4    Робот проезжает известное расстояние, измеряется количество оборотов
 5    """
 6    print("Поставьте робота на линию старта")
 7    input("Нажмите Enter для начала калибровки...")
 8    
 9    # Подсчет оборотов мотора
10    initial_position = self.left_motor.angle
11    
12    # Движение на заданное расстояние
13    self.move_forward(test_distance, speed=30)
14    
15    final_position = self.left_motor.angle
16    motor_rotations = (final_position - initial_position) / 360
17    
18    # Вычисление реального диаметра
19    actual_diameter = test_distance / (motor_rotations * pi)
20    
21    print(f"Калиброванный диаметр колеса: {actual_diameter:.2f} см")
22    return actual_diameter
23
24def calibrate_wheelbase(self, test_angle=360):
25    """
26    Калибровка расстояния между колесами
27    Робот делает полный оборот, измеряется количество оборотов моторов
28    """
29    print("Установите робота в центр тестовой области")
30    input("Нажмите Enter для начала калибровки...")
31    
32    initial_position = self.left_motor.angle
33    
34    # Поворот на полный круг
35    self.turn_on_spot(test_angle, power=25)
36    
37    final_position = self.left_motor.angle
38    motor_rotations = abs(final_position - initial_position) / 360
39    
40    # Вычисление реальной колеи
41    actual_wheelbase = (motor_rotations * self.wheel_diameter * pi) / (test_angle * pi / 180)
42    
43    print(f"Калиброванная колея: {actual_wheelbase:.2f} см")
44    return actual_wheelbase

📊 Компенсация систематических ошибок:

 1def compensated_turn(self, target_angle, power=30):
 2    """
 3    Поворот с компенсацией систематических ошибок
 4    """
 5    # Эмпирические коэффициенты коррекции
 6    correction_factors = {
 7        90: 1.02,   # Поворот на 90° требует коррекции +2%
 8        45: 1.01,   # Поворот на 45° требует коррекции +1%
 9        180: 1.03,  # Поворот на 180° требует коррекции +3%
10    }
11    
12    # Применение коррекции
13    corrected_angle = target_angle * correction_factors.get(target_angle, 1.0)
14    
15    # Выполнение скорректированного поворота
16    self.turn_on_spot(corrected_angle, power)

🧪 Тестовые программы

🎯 Программа комплексного тестирования:

 1def test_suite(self):
 2    """
 3    Комплексный тест всех типов поворотов
 4    """
 5    tests = [
 6        ("Поворот на 90° направо", lambda: self.turn_on_spot(90)),
 7        ("Поворот на 90° налево", lambda: self.turn_on_spot(-90)),
 8        ("Поворот на 180°", lambda: self.turn_on_spot(180)),
 9        ("Поворот на 45° направо", lambda: self.turn_on_spot(45)),
10        ("Движение по дуге R=30см на 90°", lambda: self.turn_arc(30, 90)),
11        ("Квадрат 40×40 см", self.draw_square),
12        ("Восьмерка", self.draw_figure_eight),
13    ]
14    
15    for test_name, test_function in tests:
16        print(f"\nВыполняется тест: {test_name}")
17        input("Нажмите Enter для продолжения...")
18        
19        start_time = time.time()
20        test_function()
21        end_time = time.time()
22        
23        print(f"Время выполнения: {end_time - start_time:.2f} с")
24        
25        accuracy = input("Оцените точность (1-10): ")
26        print(f"Точность: {accuracy}/10")
27
28def draw_square(self, side_length=40):
29    """Рисование квадрата заданного размера"""
30    for i in range(4):
31        self.move_forward(side_length)
32        self.turn_on_spot(90)
33
34def draw_figure_eight(self, radius=25):
35    """Рисование восьмерки"""
36    # Первая окружность
37    self.turn_arc(radius, 360)
38    # Переход ко второй окружности
39    self.turn_on_spot(180)
40    # Вторая окружность
41    self.turn_arc(radius, 360)

🧪 Практические испытания и отладка

🎯 Методика тестирования

📋 Протокол испытаний:

Тест 1: Точность поворота на месте

 1Цель: Проверить точность поворотов на фиксированные углы
 2
 3Процедура:
 41. Установить робота в центр тестового поля
 52. Совместить переднюю часть робота с отметкой 0°
 63. Выполнить команду поворота на 90°
 74. Измерить фактический угол поворота транспортиром
 85. Записать отклонение от заданного угла
 9
10Тестовые углы: 30°, 45°, 90°, 180°, 270°
11Количество повторов: 3 для каждого угла
12
13Критерии успеха:
14✓ Отклонение < ±5° для углов 90°, 180°
15✓ Отклонение < ±3° для углов 30°, 45°
16✓ Стабильность результатов (разброс < 3°)

Тест 2: Движение по дуге

 1Цель: Проверить способность двигаться по заданной траектории
 2
 3Процедура:
 41. Начертить на полу дугу радиусом 30 см, угол 90°
 52. Установить робота в начальную точку
 63. Запустить программу движения по дуге
 74. Измерить отклонение от идеальной траектории
 8
 9Параметры тестирования:
10- Радиусы: 20 см, 30 см, 50 см
11- Углы дуги: 90°, 180°
12- Скорости: медленная (30%), средняя (50%)
13
14Критерии успеха:
15✓ Отклонение от траектории < ±3 см
16✓ Достижение конечной точки с точностью ±5 см

🔧 Отладка и оптимизация

⚠️ Типичные проблемы и решения:

Проблема: Робот поворачивает неточно

 1Возможные причины:
 21. Неправильная калибровка диаметра колес
 32. Разные диаметры левого и правого колеса
 43. Проскальзывание колес
 54. Неравномерная работа моторов
 6
 7Диагностика:
 8- Измерить диаметры колес штангенциркулем
 9- Проверить синхронность работы моторов
10- Тестировать на разных поверхностях
11
12Решения:
13- Перекалибровка констант программы
14- Замена колес на более точные
15- Программная компенсация разности моторов
16- Использование энкодеров для обратной связи

Проблема: Робот движется не по дуге, а ломаной линией

 1Причины:
 21. Слишком большой шаг дискретизации
 32. Недостаточно плавное изменение мощности
 43. Люфт в механизмах
 5
 6Решения:
 7- Уменьшить временной шаг управления
 8- Использовать плавное ускорение/торможение
 9- Проверить жесткость всех соединений
10- Применить сглаживающие фильтры к командам

📊 Сбор и анализ данных

📈 Таблица результатов тестирования:

Тест Заданное значение Измеренное значение Ошибка Оценка
Поворот 90° №1 90° 87° -3°
Поворот 90° №2 90° 91° +1°
Поворот 90° №3 90° 89° -1°
Поворот 45° №1 45° 44° -1°
Дуга R=30, 90° R=30см, 90° R=32см, 88° ΔR=+2см, Δα=-2°
Квадрат 40×40 Замкнутая фигура Ошибка замыкания 3см 3см

🧮 Статистическая обработка:

Средняя абсолютная ошибка: \[MAE = \frac{1}{n} \sum_{i=1}^{n} |\text{ошибка}_i|\]

Стандартное отклонение: \[\sigma = \sqrt{\frac{1}{n-1} \sum_{i=1}^{n} (\text{ошибка}_i - \bar{\text{ошибка}})^2}\]

Коэффициент точности: \[K_{\text{точн}} = \frac{\text{количество успешных тестов}}{\text{общее количество тестов}} \times 100\%\]

🎯 Калибровка по результатам тестов

🔧 Автоматическая калибровка:

 1def auto_calibration(self):
 2    """
 3    Автоматическая калибровка на основе результатов тестов
 4    """
 5    calibration_data = []
 6    
 7    # Серия тестовых поворотов
 8    test_angles = [90, 180, 270, 360]
 9    
10    for target_angle in test_angles:
11        print(f"Калибровка для угла {target_angle}°")
12        
13        # Выполнить поворот
14        self.turn_on_spot(target_angle)
15        
16        # Пользователь измеряет фактический угол
17        actual_angle = float(input(f"Введите фактический угол поворота: "))
18        
19        # Вычислить коэффициент коррекции
20        correction_factor = target_angle / actual_angle
21        calibration_data.append((target_angle, correction_factor))
22    
23    # Вычислить средний коэффициент
24    avg_correction = sum(cf for _, cf in calibration_data) / len(calibration_data)
25    
26    # Обновить параметры робота
27    self.wheelbase *= avg_correction
28    
29    print(f"Новая калиброванная колея: {self.wheelbase:.2f} см")
30    print(f"Коэффициент коррекции: {avg_correction:.3f}")
31    
32    return avg_correction

📐 Коррекция по типам поворотов:

 1# Таблица индивидуальных коррекций
 2ANGLE_CORRECTIONS = {
 3    30: 1.01,   # Малые углы - коррекция +1%
 4    45: 1.005,  # Средние углы - коррекция +0.5%
 5    90: 1.02,   # Прямой угол - коррекция +2%
 6    180: 1.03,  # Полуоборот - коррекция +3%
 7    270: 1.025, # 3/4 оборота - коррекция +2.5%
 8    360: 1.04   # Полный оборот - коррекция +4%
 9}
10
11def corrected_turn(self, angle):
12    """Поворот с индивидуальной коррекцией"""
13    correction = ANGLE_CORRECTIONS.get(angle, 1.0)
14    corrected_angle = angle * correction
15    self.turn_on_spot(corrected_angle)

🏆 Демонстрация результатов

📋 Структура презентации роботов

⏱️ Регламент демонстраций:

  • Время на команду: 2 минуты
  • Демонстрация: 1.5 минуты
  • Вопросы и комментарии: 0.5 минуты
  • Общее время этапа: 8 минут

🎯 Программа демонстраций:

Демонстрация 1: Базовые повороты

 1Задание: Выполнить серию точных поворотов
 2- Поворот на 90° направо
 3- Поворот на 90° налево  
 4- Поворот на 180°
 5- Возврат в исходное положение
 6
 7Критерии оценки:
 8✓ Точность углов (±5°)
 9✓ Стабильность позиции
10✓ Плавность движений
11✓ Время выполнения

Демонстрация 2: Сложная траектория

 1Задание: Нарисовать фигуру по выбору команды
 2Варианты:
 3- Квадрат со стороной 30 см
 4- Треугольник с углами 60°
 5- Восьмерка из двух окружностей
 6- Спираль из 3-4 витков
 7
 8Критерии оценки:
 9✓ Точность геометрии фигуры
10✓ Замыкание траектории
11✓ Сложность программирования
12✓ Креативность решения

🏅 Критерии оценки демонстраций

📊 Система оценивания (25 баллов максимум):

Качество конструкции (8 баллов):

  • Прочность и надежность соединений (2 балла)
  • Симметричность и баланс платформы (2 балла)
  • Оптимальность размещения компонентов (2 балла)
  • Эстетика и аккуратность сборки (2 балла)

Точность программирования (10 баллов):

  • Точность базовых поворотов ±5° (4 балла)
  • Стабильность повторения результатов (3 балла)
  • Плавность и скорость движений (3 балла)

Сложность решения (4 балла):

  • Использование продвинутых алгоритмов (2 балла)
  • Калибровка и компенсация ошибок (2 балла)

Презентация и объяснение (3 балла):

  • Четкость объяснения принципов работы (1 балл)
  • Демонстрация понимания физики процесса (1 балл)
  • Анализ проблем и их решений (1 балл)

🎤 Вопросы для обсуждения

🔧 Технические аспекты:

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

💻 Программирование:

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

⚙️ Инженерные решения:

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

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

🥇 Конкурсные категории:

“Инженерная точность”

  • Самые точные повороты по результатам измерений
  • Минимальная погрешность в серии тестов
  • Стабильность повторения результатов

“Программистский элегант”

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

“Конструкторское мастерство”

  • Самая надежная и красивая конструкция
  • Оптимальное использование деталей
  • Инновационные технические решения

“Комплексное решение”

  • Лучшее сочетание конструкции и программы
  • Системный подход к решению задач
  • Профессиональная презентация результатов

“Творческий подход”

  • Самая оригинальная траектория движения
  • Нестандартные конструкторские решения
  • Креативное использование возможностей платформы

🤔 Анализ достижений и рефлексия

🎯 Анализ результатов обучения

🛠️ Что мы освоили в конструировании:

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

💻 Что мы изучили в программировании:

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

🔬 Что мы поняли о физике:

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

📊 Самооценка работы команд

🎯 Оцените работу вашей команды (1-5 баллов):

⚙️ Конструирование робота: ⭐⭐⭐⭐⭐

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

💻 Программирование движений: ⭐⭐⭐⭐⭐

  • Создание алгоритмов поворотов
  • Калибровка и отладка программы
  • Достижение требуемой точности

🧪 Тестирование и оптимизация: ⭐⭐⭐⭐⭐

  • Систематическое тестирование функций
  • Анализ результатов и коррекция
  • Достижение стабильных результатов

🤝 Командная работа: ⭐⭐⭐⭐⭐

  • Распределение обязанностей
  • Взаимопомощь и сотрудничество
  • Эффективность коммуникации

💭 Рефлексия процесса обучения

🔧 Самые интересные открытия:

  • Что было самым удивительным в физике поворотов?
  • Какие неожиданные проблемы возникли при конструировании?
  • Что оказалось сложнее: программирование или сборка?
  • Какие инженерные принципы показались наиболее важными?

⚡ Трудности и их преодоление:

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

🚀 Идеи для развития:

  • Как можно улучшить конструкцию робота?
  • Какие дополнительные функции хотелось бы добавить?
  • Где еще можно применить изученные принципы?
  • Какие новые проекты хотелось бы реализовать?

🔮 Перспективы развития проекта

📈 Направления улучшения:

Конструкторские модификации:

  • Добавление датчиков для обратной связи (энкодеры, гироскоп)
  • Использование более точных моторов (серво, шаговые)
  • Создание адаптивного шасси для разных поверхностей
  • Интеграция систем стабилизации

Программные усовершенствования:

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

Расширение функциональности:

  • Добавление манипулятора для захвата объектов
  • Интеграция камеры для компьютерного зрения
  • Беспроводное управление и телеметрия
  • Групповое взаимодействие роботов

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

📋 Базовый уровень

1. Завершение программирования (если необходимо) Доработать программы робота для всех типов поворотов:

  • Поворот на месте на точные углы
  • Движение по дуге заданного радиуса
  • Комбинированные траектории

2. Отчет о практической работе Подготовить структурированный отчет:

 1Структура отчета:
 21. Описание конструкции робота
 3   - Схема сборки
 4   - Основные размеры и характеристики
 5   - Используемые компоненты
 6
 72. Программные решения
 8   - Алгоритмы поворотов
 9   - Калибровочные константы
10   - Методы повышения точности
11
123. Результаты тестирования
13   - Таблица измерений точности поворотов
14   - Анализ ошибок и их причин
15   - Способы устранения проблем
16
174. Выводы и предложения
18   - Достигнутые результаты
19   - Направления улучшения
20   - Практическая значимость проекта

🎯 Повышенный уровень

3. Программирование сложной траектории Создать программу для движения робота по одной из траекторий:

Вариант A: Восьмерка

1def draw_figure_eight(self, radius=25):
2    """
3    Программа рисования восьмерки
4    
5    Параметры:
6    radius: радиус каждой окружности в см
7    """
8    # Ваш код здесь
9    pass

Вариант B: Спираль

 1def draw_spiral(self, initial_radius=10, turns=3, radius_increment=5):
 2    """
 3    Программа рисования спирали
 4    
 5    Параметры:
 6    initial_radius: начальный радиус в см
 7    turns: количество витков
 8    radius_increment: увеличение радиуса за виток
 9    """
10    # Ваш код здесь
11    pass

Вариант C: Звезда

 1def draw_star(self, outer_radius=30, inner_radius=15, points=5):
 2    """
 3    Программа рисования звезды
 4    
 5    Параметры:
 6    outer_radius: внешний радиус в см
 7    inner_radius: внутренний радиус в см  
 8    points: количество лучей звезды
 9    """
10    # Ваш код здесь
11    pass

4. Исследование зависимости точности от скорости Провести эксперимент:

  • Измерить точность поворота на 90° при разных скоростях (20%, 40%, 60%, 80%)
  • Построить график зависимости ошибки от скорости
  • Сделать выводы о оптимальной скорости для точных поворотов

🔬 Исследовательские проекты

Проект 1: “Адаптивная система управления” Разработать систему, которая автоматически адаптируется к условиям:

 1class AdaptiveRobotController:
 2    def __init__(self):
 3        self.surface_type = "unknown"
 4        self.correction_factors = {}
 5        
 6    def detect_surface(self):
 7        """Определение типа поверхности по характеру движения"""
 8        pass
 9        
10    def adaptive_turn(self, angle):
11        """Поворот с автоматической коррекцией под поверхность"""
12        pass
13        
14    def learn_from_errors(self, target_angle, actual_angle):
15        """Обучение на основе ошибок"""
16        pass

Проект 2: “Групповая координация роботов” Создать систему управления несколькими роботами:

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

Проект 3: “Робот-художник” Робот, рисующий сложные узоры:

  • Алгоритмы генерации художественных траекторий
  • Точное воспроизведение заданных рисунков
  • Оптимизация пути для минимизации времени рисования
  • Интерактивное программирование через интерфейс

🎉 Итоги практикума: от идеи к реализации!

🏆 Инженерные достижения урока

⚙️ Конструкторские навыки:

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

💻 Программистские компетенции:

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

🔬 Физико-математическое понимание:

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

🌟 Главные принципы робототехнической инженерии

🎯 Ключевые выводы практикума:

“Точность робота определяется не только программой, но и качеством конструкции”

“Каждый миллиметр в геометрии робота влияет на точность его движений”

“Калибровка и компенсация ошибок превращают теоретические расчеты в практические результаты”

🔮 Универсальные принципы инженерии:

  • Системный подход: конструкция + программа + тестирование
  • Итеративная разработка: проектирование → тестирование → улучшение
  • Точность через понимание: знание физики обеспечивает качество
  • Командная работа: распределение ролей и взаимопомощь

🎨 Творческая рефлексия

💭 Техника “Робот моей мечты”: Представьте идеального мобильного робота:

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

🔬 Философские вопросы робототехники:

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

🌈 Связь с будущими профессиями

🚀 Карьерные перспективы:

  • Инженер-робототехник - проектирование автономных систем
  • Программист встроенных систем - создание ПО для роботов
  • Мехатроник - интеграция механики, электроники и программирования
  • Исследователь ИИ - разработка интеллектуальных алгоритмов
  • Конструктор - создание механических систем роботов

🏭 Области применения навыков:

  • Автомобильная промышленность (беспилотные автомобили)
  • Аэрокосмическая отрасль (марсоходы, дроны)
  • Медицина (хирургические роботы, протезы)
  • Логистика (роботы-курьеры, складские системы)
  • Домашние технологии (умные пылесосы, помощники)

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

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

  • Интеграция датчиков в мобильную платформу
  • Алгоритмы обработки сенсорной информации
  • Замкнутые системы управления с обратной связью
  • Автономная навигация и избегание препятствий

⚙️ ВЫ СТАЛИ НАСТОЯЩИМИ ИНЖЕНЕРАМИ-РОБОТОТЕХНИКАМИ!
Теперь вы умеете создавать роботов, которые точно выполняют ваши команды и движутся именно туда, куда нужно!

📚 Дополнительные ресурсы

🔗 Полезные ссылки для углубленного изучения

📖 Документация и руководства:

🎥 Видеоуроки и каналы:

  • “Робототехника для начинающих” - YouTube канал
  • “Advanced Mobile Robotics” - MIT OpenCourseWare
  • “Robot Academy” - Queensland University of Technology

📱 Симуляторы для практики:

  • Webots - профессиональный симулятор роботов
  • V-REP/CoppeliaSim - универсальная платформа
  • RobotStudio - симулятор ABB роботов

🛠️ Инструменты для проектирования

💻 ПО для 3D моделирования:

  • Fusion 360 (бесплатно для образования)
  • SolidWorks Student Edition
  • OpenSCAD (открытый код)

📐 Калькуляторы и справочники:

  • Калькулятор кинематики дифференциального привода
  • Справочник по передаточным числам
  • Таблицы моментов инерции стандартных фигур

Удачи в дальнейшем освоении робототехники! 🤖✨