ВКЛ / ВЫКЛ: ИЗОБРАЖЕНИЯ: ШРИФТ: A A A ФОН: Ц Ц Ц ЦНАСТРОЙКИ:
Центр цифрового образования на базе 169 школы (Санкт-Петербург)
191024, Санкт-Петербург, Харьковская ул., д.13А
417-32-50 (директор, канцелярия, заместитель директора по УВР в начальной школе), 417-32-51 (заместители директора по УВР, ВР)
sch169.centr@obr.gov.spb.ru

Центр цифрового образования на базе 169 школы (Санкт-Петербург)

МЕНЮ
МЕНЮ

Александр Григорьев. Публикация-зеркало на Новаторе.

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

ЭТАП 1: Готовим объекты, рисуем и компонуем

Запустите среду Snap4arduino ( установочный файл можно загрузить по ссылке http://snap4arduino.rocks/#download ), проверьте, что выбран русский язык интерфейса. Выберите "Плоский дизайн" как более удобный.

image 20200418171520 1

В новом пустом проекте сейчас лишь два объекта - Сцена и спрайт с костюмом стрелки и названием "Спрайт".

Измените размер Сцены. В этом проекте нам будет удобнее иметь 640х480 пикселей (точек) вместо 480х360. Используйте пункт меню "Настройки", "Размер сцены".

image 20200418171520 2

При необходимости в будущем мы сможем сделать сцену ещё больше.

Теперь отредактируем фон, нарисуем линию разметки, по которой будет ездить робот. Выберите объект "Сцена".

image 20200418171520 3

Переключитесь на вкладку "Фоны", щёлкните по кнопке "Нарисовать новый костюм".

image 20200418171520 4

Откроется окно простого графического редактора.

image 20200418171520 5

Выберите светло-серый, почти белый цвет и, используя инструмент "Заливка", заполните им весь фон. Затем нарисуйте линию разметки (трассу) чёрным или почти чёрным цветом при помощи инструмента "Кисть" размером 10 пикселей. Если нужно отменить последнее действие, используйте кнопку "отменить" в левом верхнем углу, не путайте её с кнопкой закрытия всего окна.

Должно получиться примерно как на рисунке ниже. Закройте окно редактора кнопкой "ОК".

image 20200418171520 6

Трасса готова, теперь займёмся созданием робота. Щёлкните по объекту "Спрайт", переименуйте его. Мы будем использовать имя "Робот".

image 20200418171520 7

Не обязательно рисовать все объекты самостоятельно, воспользуемся готовым изображением "EV3-mini.png".

EV3 mini

Сохраните изображение выше с использованием контекстного меню браузера (щёлкнув правой кнопкой мыши по изображению).

Обратите внимание, что на вкладке "Костюмы" есть надпись "Вы можете перенести и бросить сюда изображение со своего компьютера". Откройте в окне проводника папку, в которой лежит файл с нужным рисунком, перетащите этот файл на вкладку "Костюмы" среды Snap4arduino.

image 20200418171520 8

Изображение спрайта изменилось. Теперь появился и стал использоваться новый костюм с названием "EV3-mini". Мы сразу же отредактируем его, чтобы поведение робота при разворотах было более естественным. Щёлкните по костюму правой кнопкой мыши и выберите "редактировать".

image 20200418171520 9

Теперь при помощи инструмента "Установка центра вращения" выберите точку, вокруг которой будет вращаться робот. Она должна располагаться на оси его ведущих колёс. Нажмите на кнопку "ОК".

image 20200418171521 10

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

Создайте новый спрайт, щёлкнув по кнопке "нарисовать новый спрайт".

image 20200418171521 11

Вновь появилось окно графического редактора. Выберите серый цвет, нарисуйте кружок диаметром, примерно равным двойной ширине линии разметки (20 пикселей), ориентируясь на расположенное рядом изображение. Используйте инструмент "Закрашенный эллипс". Чтобы кружок получился ровным, держите зажатой клавишу "Shift".

image 20200418171521 12

При помощи инструмента "Установка центра вращения" убедитесь, что перекрестье лежит в центре круга, закончите редактирование, нажав на кнопку "ОК".

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

image 20200418171521 13

Сдублируйте спрайт сенсора.

image 20200418171521 14

Дайте дублю название "Сенсор2". Перетащите второй сенсор, чтобы он располагался впереди справа по направлению движения робота.

image 20200418171521 15

еперь мы сделаем очень интересную операцию - объединим несколько спрайтов, чтобы они стали одним целостным объектом. После этого все спрайты, составляющие объект, будут перемещаться вместе.

"Ухватите" мышкой иконку спрайта "Сенсор2" на панели спрайтов и "бросьте" её на изображение робота на сцене.

image 20200418171521 16

Иконка вернулась на панель спрайтов, но кое-что изменилось: появились дополнительные значки, обозначающие взаимосвязанность спрайтов. Главным спрайтом ("хозяином") является спрайт "Робот".

image 20200418171521 17

Повторите операцию для спрайта "Сенсор1", "зацепите" его иконку и "бросьте" на изображение робота на сцене. Готово, все три спрайта взаимосвязаны, и теперь при перемещении робота будут перемещаться и его сенсоры. Проверьте это, перетащив робота и поставив на линию.

image 20200418171521 18

Давайте чуть уменьшим размер робота. Выберите спрайт "Робот".

image 20200418171521 19

Переключитесь на вкладку "Скрипты". Найдите на панели скриптов блок "установить размер в" (категория "Внешность") и вытяните на рабочее поле.

image 20200418171521 20

Отредактируйте значение и щёлкните по блоку, задав размер 50%. И сам робот, и его сенсоры стали меньше, пропорционально поменяв свой размер.

image 20200418171521 21

Готово! Осталось сохранить свой проект, чтобы можно было вернуться к нему после паузы для написания программы следования по линии.

Откройте меню "Файл", "Сохранить как".

image 20200418171521 22

Выберите "Компьютер", напечатайте имя проекта, нажмите кнопку "Сохранить".

image 20200418171521 23

В стандартном диалоговом окне выберите папку, в которую будет помещён сохраняемый файл "Робот на линии.xml". Обратите внимание, что заголовок нашего проекта тоже изменился.

image 20200418171521 24

Теперь среду Snap4arduino можно закрывать, результаты нашей работы сохранятся.

 

ЭТАП 2: Программируем робота для движения по линии

Снова откройте среду Snap4arduino. Загрузите проект "Робот на линии.xml" командой "Файл", "Открыть". Мы будем составлять программу для робота, убедитесь, что выбран именно спрайт "Робот".

Обратите внимание, что поле скриптов спрайта "Робот" уже содержит блок "Установить размер в", который мы туда ранее поместили.

image 20200418171521 25

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

В нашем проекте мы будем использовать пропорциональное регулирование: чем дальше линия отклонилась от средней позиции, тем быстрее робот будет поворачиваться в соответствующую сторону, чтобы линия оказалась снова посередине.

Давайте для наглядности создадим необходимые переменные и назовём их понятными именами.

Нам нужны 4 переменные: "яркость1", "яркость2", "ошибка_положения_линии", "управляющее_воздействие". Обратите внимание, что большинство языков программирования не позволяют использовать в именах пробелы, поэтому мы заменяем их символами подчеркивания.

Щелкните по кнопке "Объявить переменную".

image 20200418171521 26

Корректнее использовать локальные переменные ("только для текущего спрайта"), которые будут доступны лишь в спрайте "Робот". В будущем наш проект может быть дополнен другими спрайтами, которые будут иметь собственные переменные с аналогичными названиями. Итак, создайте 4 локальных переменных.

image 20200418171521 27

Снимите маркеры, чтобы значения переменных не отображались на сцене и не мешали нам.

image 20200418171521 28

В нашей программе будет использоваться очень полезный блок из категории "Сенсоры", который позволяет определять яркость, насыщенность цвета и оттенок под выбранным объектом.

image 20200418171521 29

Соберите скрипт из блоков по образцу ниже. Ещё раз убедитесь, что выбран именно спрайт "Робот". Все остальные объекты нашей программы не нуждаются в собственных скриптах.

image 20200418171521 30

Запустите программу и проверьте её функционирование. Робот должен уверенно следовать по линии.

image 20200418171521 31

Переключитесь на режим "Турбо".

image 20200418171521 32

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

Сохраните свой проект. При сохранении в новое место опять выберите "Computer", при необходимости дайте новое имя.

 

ЭТАП 3 (дополнительно):
Выясняем недостатки нашей компьютерной модели, определяем пути её усовершенствования

Что будет, если запустить по линии одновременно двух роботов? Давайте проверим.

Сдублируйте спрайт "Робот". Вы видите, что сдублировались и подчинённые спрайты сенсоров. Теперь у нас 6 спрайтов: "Робот", "Сенсор1", "Сенсор2", "Робот(2)", "Сенсор1(2)" и "Сенсор2(2)".

image 20200418171521 33

Второй робот получил и копию управляющего скрипта. Однако этот скрипт необходимо поправить, чтобы второй робот использовал свои собственные сенсоры, а не сенсоры первого робота.

image 20200418171521 34

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

image 20200418171521 35

Как видите, следует ещё поработать над моделью столкновений объектов. И кстати, это позволит нашему виртуальному роботу в будущем решать задачи по перемещению (толканию) грузов.

 

 

 

 

Навигация

© 2024. .