Робот-курьер: зачётные заезды
Итоговая задача, часть 2: делаешь программу надёжной, проводишь зачётные заезды и разбираешь результат.
Результат урока
Проведены две зачётные попытки, каждая оценена по листу. Команда объясняет свою программу и рассказывает, какую ошибку нашла и как исправила.
Ты научишься
- Находить причину ошибки по наблюдению и менять за раз одну вещь.
- Проверять, что программа работает при немного других условиях старта.
- Провести автономный заезд по правилам и оценить его по критериям.
- Объяснить устройство своей программы и следующий шаг улучшения.
Нужно знать
- 6.1 Робот-курьер: план и программа
Понадобится
Зачем этот урок
Программа, которая прошла маршрут один раз, — ещё не готовая программа. Сегодня ты сделаешь её надёжной, проведёшь две зачётные попытки и разберёшь результат, как настоящий инженер.
- Какой участок твоего плана в прошлый раз работал ненадёжно?
- Почему после помощи руками в зачётной попытке баллы продолжения не засчитываются?
Пробный заезд целиком
8 минЧто должен делать робот. Задача робота — повторяемо выполнить доставку по своему плану. Задача команды — доказать это наблюдениями и объяснить, почему программа выбирает каждое действие. Используем готового робота, поле, журнал и свою проверенную программу.
Что используем и как это работает. Во время заезда работает цепочка: датчик даёт сигнал, программа проверяет условие, исполнитель выполняет команду, новое измерение показывает изменение. Ошибка может возникнуть на любом звене. Отладка начинается с первого места, где наблюдение расходится с прогнозом: например, датчик увидел полосу, но условие её не распознало.
Как связать измерение с действием. Записывай ожидаемое действие и фактический результат, меняй одну причину за раз и повторяй тот же участок. Разовый успех не доказывает повторяемость. Успешная сборка доказывает допустимость программы для компилятора, а доставка и остановка подтверждаются только наблюдением самого заезда.
- Поставь грузы на места, робота — в зону старта.
- Запусти весь маршрут и не вмешивайся.
- Запиши в журнал, на каком участке плана робот впервые сделал не то, что нужно.
Ты знаешь, какой участок работает ненадёжно, — или что весь маршрут прошёл.
- Поставь грузы на места, робота — в зону старта.
- Запусти весь маршрут и не вмешивайся.
- Отметь в своём плане из урока 6.1 каждую строку: выполнена или нет. Первая невыполненная строка — участок, с которого начнёшь отладку.
План размечен по пробному заезду, участок для отладки выбран.
- Проведи два пробных заезда подряд без исправлений между ними.
- Для каждого запиши: на каком этапе первый срыв (выезд, линия, перекрёсток, подъезд, захват, разворот, постановка, финиш) и сколько секунд длился заезд.
- Срыв в одном месте в обоих заездах или в разных? Что это говорит о причине?
Два заезда в журнале с этапом срыва и временем, вывод о том, случайная ошибка или постоянная.
Найди и исправь ошибку
25 минОтладка идёт по кругу из четырёх шагов. Главное правило: меняй одну вещь за раз, иначе не поймёшь, что помогло.
| Шаг | Что делаешь | Пример |
|---|---|---|
| Наблюдаю | Описываю, что робот сделал | Робот проехал мимо груза 2 |
| Причина | Предлагаю одну возможную причину | Не досчитал перекрёсток: проехал его, не заметив |
| Одно изменение | Меняю одну вещь | Снижаю скорость перед перекрёстком |
| Проверка | Запускаю только этот участок | Робот останавливается на перекрёстке 3 раза из 3 |
- Заполни такую таблицу в журнале для своей ошибки.
- Проверяй исправление на своём участке, а не всем маршрутом: так быстрее.
- Когда участок работает три раза подряд, проверь весь маршрут и сохрани новую рабочую версию.
Подсказка: Не понимаю, что делает программа
Временно добавь вывод в монитор порта: какое решение маршрута выполняется и что видят датчики. Перед зачётом этот вывод можно оставить — он не мешает.
Ошибка найдена и исправлена, в журнале записан путь к причине.
Отладка идёт по кругу: наблюдаю → причина → одно изменение → проверка. Меняй одну вещь за раз, иначе не поймёшь, что помогло.
| Наблюдаю | Причина | Одно изменение | Проверка |
|---|---|---|---|
- Заполни таблицу в журнале для своей ошибки. Если первая причина не подтвердилась, добавь строку со следующей.
- Проверяй исправление только на своём участке: поставь робота перед ним.
- Когда участок работает три раза подряд, проверь весь маршрут и сохрани новую рабочую версию.
Подсказка: Не знаю, на каком участке ошибка
Запусти первую половину маршрута. Сработала — ищи во второй. Так за два-три запуска найдёшь участок.
Ошибка найдена и исправлена, в журнале — строки круга отладки.
Отлаживай по доказательствам, а не по догадке.
- Добавь в программу диагностику: номер выполняемого решения маршрута и показания датчиков в момент решения выводятся в монитор порта. Подключи USB-кабель и запусти робота с ним, придерживая кабель; или зажигай светодиод L на каждом решении.
- Для своей ошибки запиши гипотезу и опыт, который может её опровергнуть, — до того, как менять код.
- Проведи опыт. Гипотеза не подтвердилась — запиши новую. В журнале должно быть не меньше двух кругов, если первый не дал ответа.
- Исправление засчитывается, когда участок проходит пять раз из пяти.
| Гипотеза | Опыт | Что показал | Вывод |
|---|---|---|---|
Диагностика работает, в журнале — гипотезы, опыты и выводы, участок проходит пять раз из пяти.
Проверь надёжность
12 минНа зачёте условия будут чуть другими: робот поставлен на старт не идеально, батарея немного разряжена. Проверь заранее.
- Поставь робота на старт чуть левее, потом чуть правее. Маршрут проходит?
- Если робот стал ехать медленнее, чем на пробах, попроси преподавателя проверить батарею. После замены или зарядки заново подбери время прямых участков и поворотов.
- Проведи весь маршрут два раза подряд без исправлений между запусками.
Два полных маршрута подряд с разных положений на старте.
Все решения на перекрёстках верны в двух заездах подряд.
Попроси напарника выдать тебе другую карточку и пройди её, поменяв только маршрут в программе. Если для этого нужно переписывать функции, программа ещё не готова к зачёту.
Программа проходит маршрут два раза подряд. Рабочая версия для зачёта сохранена.
Зачётная попытка 1
10 мин- Расставь грузы на исходные места по схеме своего поля.
- Перед стартом договоритесь, за какими четырьмя решениями на перекрёстках следить.
- Один запуск. Дальше робот едет сам: нельзя трогать его, поправлять грузы или отправлять команды.
- Если нужна помощь, останови робота. Безопасность важнее баллов.
Попытка записана в лист оценки.
Исправь, если нужно
8 минМежду попытками можно исправлять программу. Используй круг отладки: наблюдение → причина → одно изменение → проверка участка.
Исправление проверено на участке и сохранено — или ты оставил программу без изменений.
Зачётная попытка 2
10 минПроведи вторую попытку по тем же правилам. Каждая попытка оценивается отдельно: лучшие части разных попыток не складываются.
Обе попытки записаны в лист оценки.
Разбор результата
12 мин- Сначала оцени свою попытку по листу оценки сам, потом сверь оценку с преподавателем.
- Покажи в своей программе: прямое движение, расчёт П-регулятора, остановку по ультразвуку, управление захватом и строку, которая завершает поездку.
- Расскажи об одной ошибке, которую ты нашёл и исправил. Как ты понял, в чём причина?
- Запиши в журнал: какое умение у твоего робота работает лучше всего, а какое ты бы улучшил дальше.
- Сохрани итоговый скетч и лист оценки.
- Сначала оцени свою попытку по листу оценки сам, потом сверь оценку с преподавателем.
- Покажи в своей программе: прямое движение, расчёт П-регулятора, остановку по ультразвуку, управление захватом и строку, которая завершает поездку.
- Расскажи об одной ошибке, которую ты нашёл и исправил, по строкам круга отладки.
- Объясни одно своё решение: почему на каком-то перекрёстке или участке ты сделал именно так. Что было бы при другом решении?
- Запиши в журнал: какое умение у твоего робота работает лучше всего, а какое ты бы улучшил дальше и как.
- Сохрани итоговый скетч и лист оценки.
- Сначала оцени свою попытку по листу оценки сам, потом сверь оценку с преподавателем.
- Покажи в своей программе: прямое движение, расчёт П-регулятора, остановку по ультразвуку, управление захватом и строку, которая завершает поездку.
- Напиши короткий инженерный отчёт в журнал: - надёжность по своим данным: сколько проб каждого участка прошло; - главная ошибка, гипотезы и опыты, которыми ты её нашёл; - самый большой оставшийся риск и одно изменение, которое бы его уменьшило, — и как ты проверил бы, что оно помогло.
- Расскажи отчёт классу за две минуты.
- Сохрани итоговый скетч, лист оценки и отчёт.
Критерии оценки
Как оценивается заезд
| Критерий | Баллы | Макс. |
|---|---|---|
| Прямой выезд со старта | 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 за её доставку.
- После помощи руками автономный заезд окончен. Продолжать можно для тренировки, но баллы не добавляются.
- Каждая попытка оценивается отдельно. Лучшие части разных попыток не складываются.
- Аварийная остановка ради безопасности не штрафуется.
Проверь себя
Выберите ответы для подготовки. Они не сохраняются и не оцениваются на сайте. Пройдите проверку знаний в программе курса или обсудите ответы с преподавателем.
● Основное
★ Средний уровень
★★ Продвинутый уровень
Отвечай на вопросы своего уровня. Нужно верных ответов: Начальный — 4 из 5; Средний — 4 из 5; Продвинутый — 4 из 5. Ответы проверит преподаватель или программа курса.
Итог
Ты прошёл весь путь инженера: разобрал задачу, составил план, собрал программу из проверенных частей, нашёл и исправил ошибки и проверил результат на поле. Если зачёт сдан, попробуй следующий уровень или факультативные уроки — энкодеры и ПИД-регулятор.
Как подтвердить результат
Результат опыта связывает условия, версию программы, наблюдение и вывод. Сравнение попыток с одним изменением помогает проверить причину, включая неудачные попытки. Отметка относится к уже выполненной практике; повтор ради отметки не нужен. Расхождение с прогнозом задаёт следующую проверяемую гипотезу. Модель, измерения настоящего робота и объяснение — разные виды доказательств.
Словарь урока
| отладка | Поиск и исправление ошибки: наблюдаем, находим причину, меняем одну вещь и проверяем снова. |
| автономный заезд | Заезд, в котором робот после старта едет сам: никто его не трогает и не отправляет команд. |
| надёжность | Программа работает не один раз случайно, а каждый раз — даже если робот поставлен на старт чуть иначе. |