Создание собственного робота-мусорщика – Общие сведения
А теперь настало время написать код для нашего робота сборщика мусора! Он должен остановиться в контрольной точке, распознать тип отходов, двигаться по маршруту, определить, достиг ли он нужного места назначения, достиг ли его без столкновений, и свалить мусор.
Давайте установим площадку таким образом, как на рисунке, и разместим опознавательные/числовые карточки в следующих местах.
В этом задании задачей нашего робота будет:
- Начать движение в контрольной точке.
- Распознать являются ли отходы биологически разлагаемыми или нет.
- Двигаться вперед по маршруту.
- Останавливаться в контрольных точках и распознавать число на карточках, чтобы определить достиг ли он места назначения для сброса мусора.
- Обновить статус сброса мусора, включив светодиодный сигнал по достижении места назначения.
Робот начнёт движение прямо перед контрольной точкой 3 и будет двигаться по маршруту до тех пор, пока не достигнет следующие контрольные точки.
Мы обучим нашего робота сборщика мусора различать два типа отходов – биологически разлагаемые и биологически не разлагаемые; мы используем бумагу, как пример биологически разлагаемых отходов, и батарейку, как пример электронных или биологически не разлагаемых отходов.
После того как робот определит тип отходов, он должен сбросить их в строго определенном для них месте.
А теперь, пользуясь этой последовательностью операций, напишем код.
Пишем код!
Чтобы написать эту программу, мы используем приложение PictoBlox.
Распознавание типа отходов
Для начала давайте напишем программу для определения типа отходов. Для этого сделаем следующее:
- Открываем новый проект в приложении PictoBlox.
- Добавляем блок when flag clicked (когда нажат флажок) из панели Events (События) в раздел для программирования.
- Затем нажимаем на фиолетовую кнопочку Add Extension (Добавить расширение) в левом нижнем углу экрана. Потом выбераем расширение Machine Learning (Обучение машины) и добавляем его на свою панель.
- Нажимаем на кнопку Load Model (Загрузить модель).
- Откроется модель обучения. Вставляем ссылку и нажимаем Upload (Загрузить).
- Когда модель будет успешно загружена, на панели появятся соответствующие блоки.
- Под блоком when flag clicked (когда нажат флажок) добавляем блок turn () video on stage with () transparency (включить_видео с_% прозрачностью) из панели Machine Learning (Обучение машины). По умолчанию из ниспадающего меню выбрано on (включить) и 0 как показатель прозрачности. Здесь мы менять ничего не будем. Этот блок включает камеру смартфона.
- Добавляем блок wait for () seconds (ждать _ секунд) из панели Control (Управление).
- Затем добавляем блок wait until () (ждать пока_). В белое окошко добавляем блок not () (не_) из панели Operators (Пользователи).
- Добавляем блок is identified class from () in () ? (распознать класс из _ в _?) из панели Machine Learning (Обучение машины) внутрь блока not () (не _). Завершённый блок wait until () (ждать пока_) гарантирует, что робот не будет выполнять никаких действий из программы, если ничего не обнаружит.
- Теперь переходим к панели Variables (Значения переменных) и задаем переменную под названием Waste (Отходы). Нам она понадобится для определения типа отходов, которые обнаружит Кварки.
- Добавляем блок set () to () (задать _ для _) из панели Variables (Значения переменных). В ниспадающем меню по умолчанию выбраны Waste (Отходы). В белое окошко добавляем блок identify class from () (определить класс из _) из панели Machine Learning (Обучение машины). Так мы зададим значение переменной Waste (Отходы) как «класс» отходов, обнаруженных Кварки. А теперь проверим является ли обнаруженный мусор бумагой, то есть биоразлагаемым или нет.
- Чтобы проверить является ли обнаруженный мусор бумагой, ниже блока set () to () (задать _ для _) добавляем блок if (если) из панели Control (Управление).
- Добавляем блок () = () из панели Operators (Пользователи) внутрь ромбовидного окошка блока if (если). В первое окошко добавляем блок переменной Waste (Отходы). Во второе окошко добавляем блок Paper (Бумага) из панели Machine Learning (Обучение машины) Так мы проверим, является ли обнаруженный мусор бумагой или нет. Если это бумага, программа тогда выполнит блоки под веткой if (если).
- Под веткой if (если) добавляем блок display matrix as () (отображать матрицу как_) и заполняем матрицу зелёным цветом.
- А теперь проверим является ли батарейка, она же электронные отходы, отходами, а затем повторим ветку if (если), написанную выше.
- Добавляем Battery (Батарейка) из ниспадающего меню в ветку if (если).
- И задаем синий цвет в блоке display matrix as () (отображать матрицу как_).
Проверим, как работает программа до этого момента:
- Бумажные отходы:
- Электронные отходы: