Робот-курьер Урок 6.2 Все курсыДля учителяПройти в программе Ученик Arduino Uno + шилд моторов L298P
Тема 6 · Урок 6.2

Робот-курьер: зачётные заезды

Итоговая задача, часть 2: делаешь программу надёжной, проводишь зачётные заезды и разбираешь результат.

2 × 45 мин1–2 ученика на роботаПроект

Результат урока

Проведены две зачётные попытки, каждая оценена по листу. Команда объясняет свою программу и рассказывает, какую ошибку нашла и как исправила.

Ты научишься

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

Нужно знать

  • 6.1 Робот-курьер: план и программа

Понадобится

Ультразвуковой датчик расстоянияЗахват с сервоприводомДатчик линии (аналоговый, Trema) × 2

Зачем этот урок

Программа, которая прошла маршрут один раз, — ещё не готовая программа. Сегодня ты сделаешь её надёжной, проведёшь две зачётные попытки и разберёшь результат, как настоящий инженер.

Разминка · вспомни
  1. Какой участок твоего плана в прошлый раз работал ненадёжно?
  2. Почему после помощи руками в зачётной попытке баллы продолжения не засчитываются?
1
Занятие 1 · 45 мин
Отладка и надёжность
1

Пробный заезд целиком

8 мин

Что должен делать робот. Задача робота — повторяемо выполнить доставку по своему плану. Задача команды — доказать это наблюдениями и объяснить, почему программа выбирает каждое действие. Используем готового робота, поле, журнал и свою проверенную программу.

Что используем и как это работает. Во время заезда работает цепочка: датчик даёт сигнал, программа проверяет условие, исполнитель выполняет команду, новое измерение показывает изменение. Ошибка может возникнуть на любом звене. Отладка начинается с первого места, где наблюдение расходится с прогнозом: например, датчик увидел полосу, но условие её не распознало.

Как связать измерение с действием. Записывай ожидаемое действие и фактический результат, меняй одну причину за раз и повторяй тот же участок. Разовый успех не доказывает повторяемость. Успешная сборка доказывает допустимость программы для компилятора, а доставка и остановка подтверждаются только наблюдением самого заезда.

  1. Поставь грузы на места, робота — в зону старта.
  2. Запусти весь маршрут и не вмешивайся.
  3. Запиши в журнал, на каком участке плана робот впервые сделал не то, что нужно.
Должно получиться

Ты знаешь, какой участок работает ненадёжно, — или что весь маршрут прошёл.

  1. Поставь грузы на места, робота — в зону старта.
  2. Запусти весь маршрут и не вмешивайся.
  3. Отметь в своём плане из урока 6.1 каждую строку: выполнена или нет. Первая невыполненная строка — участок, с которого начнёшь отладку.
Должно получиться

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

  1. Проведи два пробных заезда подряд без исправлений между ними.
  2. Для каждого запиши: на каком этапе первый срыв (выезд, линия, перекрёсток, подъезд, захват, разворот, постановка, финиш) и сколько секунд длился заезд.
  3. Срыв в одном месте в обоих заездах или в разных? Что это говорит о причине?
Должно получиться

Два заезда в журнале с этапом срыва и временем, вывод о том, случайная ошибка или постоянная.

2

Найди и исправь ошибку

25 мин

Отладка идёт по кругу из четырёх шагов. Главное правило: меняй одну вещь за раз, иначе не поймёшь, что помогло.

ШагЧто делаешьПример
НаблюдаюОписываю, что робот сделалРобот проехал мимо груза 2
ПричинаПредлагаю одну возможную причинуНе досчитал перекрёсток: проехал его, не заметив
Одно изменениеМеняю одну вещьСнижаю скорость перед перекрёстком
ПроверкаЗапускаю только этот участокРобот останавливается на перекрёстке 3 раза из 3
  1. Заполни такую таблицу в журнале для своей ошибки.
  2. Проверяй исправление на своём участке, а не всем маршрутом: так быстрее.
  3. Когда участок работает три раза подряд, проверь весь маршрут и сохрани новую рабочую версию.
Подсказка: Не понимаю, что делает программа

Временно добавь вывод в монитор порта: какое решение маршрута выполняется и что видят датчики. Перед зачётом этот вывод можно оставить — он не мешает.

Должно получиться

Ошибка найдена и исправлена, в журнале записан путь к причине.

Отладка идёт по кругу: наблюдаю → причина → одно изменение → проверка. Меняй одну вещь за раз, иначе не поймёшь, что помогло.

НаблюдаюПричинаОдно изменениеПроверка
  1. Заполни таблицу в журнале для своей ошибки. Если первая причина не подтвердилась, добавь строку со следующей.
  2. Проверяй исправление только на своём участке: поставь робота перед ним.
  3. Когда участок работает три раза подряд, проверь весь маршрут и сохрани новую рабочую версию.
Подсказка: Не знаю, на каком участке ошибка

Запусти первую половину маршрута. Сработала — ищи во второй. Так за два-три запуска найдёшь участок.

Должно получиться

Ошибка найдена и исправлена, в журнале — строки круга отладки.

Отлаживай по доказательствам, а не по догадке.

  1. Добавь в программу диагностику: номер выполняемого решения маршрута и показания датчиков в момент решения выводятся в монитор порта. Подключи USB-кабель и запусти робота с ним, придерживая кабель; или зажигай светодиод L на каждом решении.
  2. Для своей ошибки запиши гипотезу и опыт, который может её опровергнуть, — до того, как менять код.
  3. Проведи опыт. Гипотеза не подтвердилась — запиши новую. В журнале должно быть не меньше двух кругов, если первый не дал ответа.
  4. Исправление засчитывается, когда участок проходит пять раз из пяти.
ГипотезаОпытЧто показалВывод
Должно получиться

Диагностика работает, в журнале — гипотезы, опыты и выводы, участок проходит пять раз из пяти.

3

Проверь надёжность

12 мин

На зачёте условия будут чуть другими: робот поставлен на старт не идеально, батарея немного разряжена. Проверь заранее.

  1. Поставь робота на старт чуть левее, потом чуть правее. Маршрут проходит?
  2. Если робот стал ехать медленнее, чем на пробах, попроси преподавателя проверить батарею. После замены или зарядки заново подбери время прямых участков и поворотов.
  3. Проведи весь маршрут два раза подряд без исправлений между запусками.

Два полных маршрута подряд с разных положений на старте.

Все решения на перекрёстках верны в двух заездах подряд.

Попроси напарника выдать тебе другую карточку и пройди её, поменяв только маршрут в программе. Если для этого нужно переписывать функции, программа ещё не готова к зачёту.

Должно получиться

Программа проходит маршрут два раза подряд. Рабочая версия для зачёта сохранена.

2
Занятие 2 · 45 мин
Зачёт и разбор
4

Зачётная попытка 1

10 мин
  1. Расставь грузы на исходные места по схеме своего поля.
  2. Перед стартом договоритесь, за какими четырьмя решениями на перекрёстках следить.
  3. Один запуск. Дальше робот едет сам: нельзя трогать его, поправлять грузы или отправлять команды.
  4. Если нужна помощь, останови робота. Безопасность важнее баллов.
Должно получиться

Попытка записана в лист оценки.

5

Исправь, если нужно

8 мин

Между попытками можно исправлять программу. Используй круг отладки: наблюдение → причина → одно изменение → проверка участка.

Должно получиться

Исправление проверено на участке и сохранено — или ты оставил программу без изменений.

6

Зачётная попытка 2

10 мин

Проведи вторую попытку по тем же правилам. Каждая попытка оценивается отдельно: лучшие части разных попыток не складываются.

Должно получиться

Обе попытки записаны в лист оценки.

7

Разбор результата

12 мин
  1. Сначала оцени свою попытку по листу оценки сам, потом сверь оценку с преподавателем.
  2. Покажи в своей программе: прямое движение, расчёт П-регулятора, остановку по ультразвуку, управление захватом и строку, которая завершает поездку.
  3. Расскажи об одной ошибке, которую ты нашёл и исправил. Как ты понял, в чём причина?
  4. Запиши в журнал: какое умение у твоего робота работает лучше всего, а какое ты бы улучшил дальше.
  5. Сохрани итоговый скетч и лист оценки.
Проверь себя
  1. Сначала оцени свою попытку по листу оценки сам, потом сверь оценку с преподавателем.
  2. Покажи в своей программе: прямое движение, расчёт П-регулятора, остановку по ультразвуку, управление захватом и строку, которая завершает поездку.
  3. Расскажи об одной ошибке, которую ты нашёл и исправил, по строкам круга отладки.
  4. Объясни одно своё решение: почему на каком-то перекрёстке или участке ты сделал именно так. Что было бы при другом решении?
  5. Запиши в журнал: какое умение у твоего робота работает лучше всего, а какое ты бы улучшил дальше и как.
  6. Сохрани итоговый скетч и лист оценки.
Проверь себя
  1. Сначала оцени свою попытку по листу оценки сам, потом сверь оценку с преподавателем.
  2. Покажи в своей программе: прямое движение, расчёт П-регулятора, остановку по ультразвуку, управление захватом и строку, которая завершает поездку.
  3. Напиши короткий инженерный отчёт в журнал: - надёжность по своим данным: сколько проб каждого участка прошло; - главная ошибка, гипотезы и опыты, которыми ты её нашёл; - самый большой оставшийся риск и одно изменение, которое бы его уменьшило, — и как ты проверил бы, что оно помогло.
  4. Расскажи отчёт классу за две минуты.
  5. Сохрани итоговый скетч, лист оценки и отчёт.
Проверь себя

Критерии оценки

Как оценивается заезд

Максимум 100Зачёт от 70
КритерийБаллыМакс.
Прямой выезд со старта
5 — Сам выехал вперёд из зоны старта.
10 — Доехал до линии и продолжил задание без подталкивания.
10
Движение по линии
10 — Терял линию, но сам возвращался на неё и продолжал маршрут.
20 — Прошёл все участки линии и дуги по датчикам, не теряя линию.
20
Выбор дороги на перекрёстках
5 — За каждое из четырёх решений на перекрёстках, которые совпали с планом.
20
Груз 1: обнаружение
5 — Остановился перед грузом по ультразвуку.
5
Груз 1: захват
5 — Взял груз захватом и увёз, а не вытолкнул.
5
Груз 1: доставка
5 — Груз стоит и частично находится в нужной зоне.
10 — Груз стоит целиком в нужной зоне, захват отпущен.
10
Груз 2: обнаружение
5 — Остановился перед грузом по ультразвуку.
5
Груз 2: захват
5 — Взял груз захватом и увёз, а не вытолкнул.
5
Груз 2: доставка
5 — Груз стоит и частично находится в нужной зоне.
10 — Груз стоит целиком в нужной зоне, захват отпущен.
10
Прямой въезд и остановка
5 — После линии сам въехал вперёд в зону финиша.
10 — Остановился внутри зоны и стоит с выключенными моторами не меньше 3 секунд.
10

Обязательные условия зачёта

  • Команда объясняет свою программу: показывает прямое движение, расчёт П-регулятора, остановку по ультразвуку, управление захватом и строку, которая завершает поездку.
  • Изгибы пройдены по показаниям датчиков линии с П-регулятором.
  • Подъезд к грузу заканчивается по измерению ультразвука, а не только по времени.
  • После старта робота никто не трогает и не отправляет ему команд.

Правила

  • Скорость не оценивается: нет бонуса за быстрый заезд.
  • Отрицательных штрафов нет. Невыполненное действие просто не получает баллов.
  • Груз в чужой зоне или доставленная не по порядку — 0 за её доставку.
  • После помощи руками автономный заезд окончен. Продолжать можно для тренировки, но баллы не добавляются.
  • Каждая попытка оценивается отдельно. Лучшие части разных попыток не складываются.
  • Аварийная остановка ради безопасности не штрафуется.

Проверь себя

Выберите ответы для подготовки. Они не сохраняются и не оцениваются на сайте. Пройдите проверку знаний в программе курса или обсудите ответы с преподавателем.

● Основное

1.Оба датчика линии показывают «белое». Что это значит?
2.Ультразвуковой датчик не получил эхо. Как поступить программе?
3.Робот проехал мимо груза. Что делаешь первым?
4.Во время зачётной попытки робот сбился, и ты поставил его обратно на линию. Что с попыткой?
5.После финиша робот снова поехал. В чём вероятная причина?

★ Средний уровень

1.На среднем поле робот выбрал на перекрёстке не то решение. Где искать причину сначала?
2.Зачем перед зачётной попыткой делать тренировочный заезд?
3.Робот проехал мимо груза 2. Какая запись в круге отладки — «причина», а не «наблюдение»?
4.Не знаешь, на каком участке ошибка. Как найти его за 2–3 запуска?
5.Почему между попытками меняют только одну вещь?

★★ Продвинутый уровень

1.На крутой S-дуге робот теряет линию только со свежезаряженной батареей. Что вероятнее всего?
2.Что записать в журнал после неудачного заезда? Выбери все верные ответы.
3.Гипотеза: «робот пропускает перекрёсток В из-за скорости». Какой опыт может её опровергнуть?
4.Диагностика печатает номер решения на каждом перекрёстке. Робот повернул не там, а последним напечатано «решение 4», хотя по плану это перекрёсток 5. Что это значит?
5.В отчёте: «участок 3 прошёл 4 раза из 10». Какой вывод верен?

Отвечай на вопросы своего уровня. Нужно верных ответов: Начальный — 4 из 5; Средний — 4 из 5; Продвинутый — 4 из 5. Ответы проверит преподаватель или программа курса.

Итог

Ты прошёл весь путь инженера: разобрал задачу, составил план, собрал программу из проверенных частей, нашёл и исправил ошибки и проверил результат на поле. Если зачёт сдан, попробуй следующий уровень или факультативные уроки — энкодеры и ПИД-регулятор.

Как подтвердить результат

Результат опыта связывает условия, версию программы, наблюдение и вывод. Сравнение попыток с одним изменением помогает проверить причину, включая неудачные попытки. Отметка относится к уже выполненной практике; повтор ради отметки не нужен. Расхождение с прогнозом задаёт следующую проверяемую гипотезу. Модель, измерения настоящего робота и объяснение — разные виды доказательств.

Словарь урока

отладкаПоиск и исправление ошибки: наблюдаем, находим причину, меняем одну вещь и проверяем снова.
автономный заездЗаезд, в котором робот после старта едет сам: никто его не трогает и не отправляет команд.
надёжностьПрограмма работает не один раз случайно, а каждый раз — даже если робот поставлен на старт чуть иначе.