Занятие 3. Движение по времени: задачи 4.1–4.2 и почему на этом нельзя строить робота
Занятие 3. Движение по времени (мини-задачи 4.1–4.2)
Цель занятия: обучающиеся выполняют 4.1–4.2 (проезд вперёд/назад t секунд с остановкой) и экспериментально показывают, почему движение по времени ненадёжно для задач на расстояние.
Разминка-вспоминание (5 мин, без подглядывания)
- Что означает
drive(150, 150)иdrive(-150, -150)? - Чем
stopBrake()отличается отstopCoast()? - Ниже какого напряжения на банку нельзя разряжать Li-аккумулятор?
- Что меняем в проекте при замене драйвера моторов?
Разбор (worked example)
Эталонное решение 4.1 «вперёд t секунд и стоп» — с объяснением каждой строки:
const int PWM_RUN = 150; // не 255: на максимуме моторы разбалансированы сильнее,
// а торможение даёт длинный юз
void task_4_1(float t_sec) {
drive(PWM_RUN, PWM_RUN);
delay((unsigned long)(t_sec * 1000));
stopBrake(); // активный тормоз: юз короче и повторяемее, чем выбег
}
// 4.2 = то же с drive(-PWM_RUN, -PWM_RUN)
stopBrake, а не stopCoast. При выбеге робот катится, пока кинетическая энергия не уйдёт в трение — путь выбега зависит от скорости, массы и покрытия и «плавает». При активном торможении обмотки замыкаются, мотор работает генератором на самого себя — остановка резкая и повторяемая. Для всех задач «…и остановиться» по умолчанию тормозим активно. Свободный выбег пригодится позже — для мягкого подъезда к объекту с захватом.Практика
Сдать 4.1 и 4.2 по протоколу
Судья (соседняя пара) называет t (например, 2,5 с). Три попытки, фиксация в журнал: реально пройденный путь рулеткой.
Эксперимент «батарея врёт»
Одна и та же программа (t = 3 c, PWM = 150): 3 заезда на свежезаряженной батарее, 3 заезда на подсевшей (или через понижающий преобразователь имитировать просадку). Измерить путь каждого заезда, посчитать разброс.
Эксперимент «покрытие врёт»
Тот же заезд на линолеуме и на баннере соревновательного поля. Записать разницу.
Вывод письменно (2 предложения в журнал)
От чего зависит путь при движении по времени и для каких задач регламента этот способ пригоден (только 4.1–4.2, где критерий — само время), а для каких — нет (4.3+).
Типичные ошибки:
delay(t_sec * 1000)приint t_secи дробном вводе — потеря дробной части;- остановка через
drive(0,0)у некоторых драйверов = выбег, а не тормоз — проверить свой драйвер и зафиксировать в HAL; - «зашью PWM=255, доеду быстрее» — на полной мощности разница моторов максимальна, робот уводит вбок уже на первом метре.
Мини-проверка выхода
Заезды 4.1/4.2 в допуске по времени + устный ответ: «почему для задачи “проехать 50 см” мы завтра возьмём энкодеры, а не секундомер?» (ожидаем: путь за время зависит от напряжения батареи, нагрузки, покрытия — эксперимент это показал).
Над-образовательная активность (Такман: начало шторма)
Первые «у них едет, у нас нет» — нормируем: сравниваем не пары между собой, а разброс заездов внутри пары; вводим правило пост-разбора «1 гипотеза → 1 изменение → контрольный заезд».