Kitabı oxu: «Соревновательная робототехника. Программирование робота Lego «Перевозчик»»

Şrift:

© Э. Д. Шакирьянов, 2019

© З. А. Зинурова, 2019

ISBN 978-5-0050-5026-7

Создано в интеллектуальной издательской системе Ridero

Введение

Соревновательная робототехника одно из увлекательных направлений в мире детского технического творчества. Спортивный азарт побуждает находить различные пути для победы в состязании. Однако практика показала, что современные дети, как правило, как быстро зажигаются, так и быстро теряют интерес к решению задачи, особенно, когда «перестает получаться». И здесь непременно нужна помощь наставника, но надо не перестараться.

Среди различных масштабных соревновательных мероприятий по школьной робототехнике фестиваль Робофест является одним из наиболее известных, где, кроме прочих, присутствуют регламенты соревнований только для начинающих юных робототехников. Это направление «Hello, Robot». Согласно общим положениям [1], до участия в этом направлении допускаются школьники, не принимавшие участие в соревнованиях по робототехнике ранее. Таким образом, все добросовестные участники находятся более или менее в одной «весовой категории», что немаловажно.

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

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

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

В этой книге хотелось бы поделиться тем практическим опытом, который удалось накопить во время занятий по робототехнике в детском технопарке Стерлитамакского филиала БашГУ. Авторами в свое время были подготовлены команды, которые принимали участие в соревнованиях по направлению «Hello, Robot» Lego – Перевозчик. Ребята стали победителями на Региональном робототехническом Фестивале Робофест-Стерлитамак Республика Башкортостан и на III Окружном робототехническом Фестивале Робофест-Самара в 2018 г. Именно решению этого задания посвящен материал книги. Надеемся, что полученные знания будут читателю полезны.

I. Описание задания

Условия соревнований, в рамках направления «Hello, Robot! Lego», для старшей группы (школьники 5—6 класс) определены регламентом Всероссийского робототехнического фестиваля Робофест-2018 «Перевозчик» [1]. Ниже приведены выдержки из этого регламента.

Задача для робота: за минимальное время робот должен переместить кубики на базу в определенном порядке. Соревновательное поле представляет собой холст размерами 2400х1200 мм с белым основание и черной линией шириной 18 – 25 мм, определяющей траекторию движения робота (рис.1.1). На поле размещены две зоны. Зона «Старт» размером 250х250 мм – стартовая позиция робота, и зона «База» размером 200х200 мм предназначена для размещения перемещенных кубиков. Кубик имеет размеры 50±5мм, Вес – 50±5 гр. На двух смежных сторонах имеется цветная метка размером 40х40 мм. Цвет метки – красный, синий, зеленый, желтый, черный, белый. Также на поле вдоль траектории движения расположены 10 отметок: квадрат со стороной 55 мм для установки кубика.

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

Требования к роботу. Робот должен быть автономным. Размер робота на старте не превышает 250х250х250 мм. Робот стартует из зоны «Старт». До старта никакая часть робота не может выступать из зоны «Старт».

Положение цветных меток кубика относительно линии устанавливается на усмотрение участников команды. Робот должен двигаться строго по линии, перемещая кубики в зону «База». Порядок перемещения кубиков определен жеребьевкой цветов, таким образом, в первую очередь перемещаются все кубики первого цвета, затем все кубики второго цвета и т. д.

Рис.1.1. Соревновательное поле «Перевозчик»


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

Время выполнения задания 120 секунд.

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

Если во время попытки робот съезжает с черной линии, т.е. оказывается всеми колесами с одной стороны линии, то он завершает свою попытку с фиксированием времени в 120 секунд и суммой набранных баллов.

В зачет принимаются суммарные результаты попыток: сумма баллов и сумма времени. Финиш робота фиксируется только после перемещения всех кубиков в зону «База» в соответствующем жеребьевке порядке.

Таким образом, необходимо придумать, собрать и запрограммировать робота, который в определенном заранее порядке будет перевозить кубики с цветными метками не более чем по 2 единицы в определенную зону. При этом неизвестно: общее число кубиков, количество кубиков по цветовым меткам, расположение кубиков по своим полям. Известно: количество цветных меток и порядок перевозки по цвету.

Из условия можно сделать вывод, что решение этого задания не столь очевидно, как кажется на первый взгляд. Поэтому для его решения и ему подобных заданий воспользуемся методом «от простого к сложному». Пока у нас конструкция робота неизвестна, начнем решение задания с простых подзадач. Для их решения будем использовать алгоритмы, которые назовем базовыми.

II. Базовые алгоритмы

Анализ задания робота

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

Разобьем процесс выполнения роботом основного задания на простейшие функции. Каждая такая функция предполагает выполнение роботом одной-двух операций. Анализируя соревновательное поле (рис.1), получаем следующий список:

а) движение из зоны Старт на основную линию (основной линией будем считать кольцевую черную линию, вдоль которой расположены поля-метки для кубиков)

б) движение по основной линии

– до обнаружения кубика/кубика нужного цвета

– до перекрестка

в) движение в зону/из зоны База (если этого требует конструкция робота)

г) загрузка/выгрузка кубика

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

Движение из зоны Старт на основную линию. Для реализации этой функции, необходимо выполнить две операции: сместиться с текущей позиции в зоне Старт до основной линии; выполнить поворот корпуса робота на 90 градусов влево (в нашем случае мы будем рассматривать алгоритм движение робота по траектории против часовой стрелки).

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

Движение в зону/из зоны База. Реализация данной функции зависит от конструкции робота. Если устройство выгрузки кубиков робота позволяет выполнить выгрузку непосредственно в зону База, то робот реализует эту функцию одной операцией: выгрузить кубик (и) (в нашей конструкции используется устройство выгрузки непосредственно в зону База). В противном случае количество операций увеличивается, например, один из вариантов: поворот корпусом в стону зоны База, сместиться с текущей позиции в сторону зоны База, выгрузить кубики, разворот в сторону основной линии, сместиться с текущей позиции до основной линии; выполнить поворот корпуса робота на 90 градусов вправо.

Загрузка/выгрузка кубика. Данные функции, как правило, представляют собой простейшие операции, связанные с однократным включением сервопривода устройства загрузки и/или выгрузки.

Таким образом, можно выделить следующие базовые алгоритмы, которые послужат основой для будущей программы робота «Перевозчика»:

а) прямолинейное движение робота на заданное расстояние;

б) поворот корпусом вокруг центра оси;

в) движение вдоль линии по датчикам освещенности;

г) включение среднего мотора.

Прямолинейное движение робота на заданное расстояние

Данный алгоритм позволит реализовать функции, в которых роботу необходимо преодолеть прямолинейный отрезок пути известной длины передним или задним ходом.

Известно, при прямолинейном движении за каждый оборот колеса, робот преодолевает путь, равный длине окружности колеса. Длина окружности колеса определяется по формуле S=π*D, π – постоянная, равная 3,14, D – диаметр колеса. В базовом наборе Lego EV3 45544 диаметр колеса составляет 56 мм. Тогда, длина окружности этого колеса будет 56*3,14≈176 мм. Для колеса другого диаметра длина его окружности вычисляется аналогично. Следовательно, чтобы робот преодолел отрезок пути длиной Х мм, требуется совершить (Х/S) число оборотов колес.

Составление программы начинаем с использования блока Математика в режиме Разделить. В блоке Математика делим длину отрезка пути в мм на длину окружности колеса в мм, результат отправляем на блок управления моторами, включенными в режиме Число оборотов (Рис.2.1).

Рис.2.1. Программа для движения прямо вперед/назад

на указанное расстояние


Здесь следует сразу отметить, что при программировании важным является умение структурировать программу. И учиться этому надо изначально. В данной графической среде для этих целей хорошим инструментом является Конструктор моего блока – аналог процедур и функций в традиционных языках программирования. С помощью собственных блоков диаграмму программы можно сделать компактной, функционально понятной и удобочитаемой. Поэтому с помощью пункта меню Инструменты – Конструктор моего блока создаем собственный блок для движения робота прямолинейно на указанное расстояние вперед/назад с установленной скоростью (Рис.2.2).

Для обеспечения большей точности движения, необходимо добавить блок Рулевое управление в режиме Выключить мотор. Первый параметр блока указывает расстояние в миллиметрах, второй – скорость движения. Для движения назад необходимо один из параметров ввести со знаком «—». Более подробно можно посмотреть здесь [2].


Рис. 2.2. Сборка собственного блока для прямолинейного движения

вперед/назад с установленной скоростью

Поворот корпуса робота вокруг центра осевой линии ведущих колес

Данный алгоритм поможет нам решать задачи, в которых роботу необходимо совершить произвольный поворот корпусом вокруг центральной оси. Чтобы наш робот совершил поворот на произвольный угол, надо рассчитать число оборотов, которое должны совершить большие моторы, вращая колеса робота. За каждый оборот робота вокруг своей оси, его колеса преодолевают путь, равный длине окружности, диаметром которой является колея робота. Колеей будем называть поперечное расстояние между серединами колес, закрепленных на одной оси (рис.2.3).


Рис.2.3. Определение колеи колес


При совершении роботом полного оборота вокруг своей оси (360 градусов), каждое его колесо проходит путь, равный S1=π*K, π – постоянная, равная 3,14, K – колея робота. Таким образом, чтобы найти количество оборотов, совершаемых колесами, необходимо этот путь разделить на длину окружности колеса, тогда получим: n= (π*K) / (π*D) =K/D, где D – диаметр колеса. При повороте на произвольный угол А, колеса совершают обороты равные nA= K/D*A/360.

Используя блок Математика в режиме Дополнения, составим программу для поворота корпуса робота. В параметр a впишем колею робота, b – диаметр колеса, с – значение 360. В строке формулы впишем выражение a/b/c*d, а выход блока Математика подадим на вход Обороты блока Рулевое управление как на рисунке ниже (рис.2.4). В параметр d вписываем значение угла в градусах, на который требуется совершить поворот корпусом робота.

Следует обратить внимание на следующие факторы. Точность поворота зависит от скорости, чем выше скорость, тем ниже точность. Поскольку ширина колес робота отлична от нуля, то при совершении маневра, «пятно» контакта колес с поверхностью может меняться, а измеренная «идеальная» колея может отличаться от реальной. Поэтому при тестировании значение в параметре a требуется подкорректировать исходя из эксперимента.


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

Pulsuz fraqment bitdi.

Yaş həddi:
6+
Litresdə buraxılış tarixi:
09 oktyabr 2019
Həcm:
107 səh. 121 illustrasiyalar
ISBN:
9785005050267
Müəllif hüququ sahibi:
Издательские решения
Yükləmə formatı: