электронная
234
печатная A5
348
6+
Соревновательная робототехника. Программирование робота Lego «Перевозчик»

Бесплатный фрагмент - Соревновательная робототехника. Программирование робота Lego «Перевозчик»

Объем:
104 стр.
Возрастное ограничение:
6+
ISBN:
978-5-0050-5026-7
электронная
от 234
печатная A5
от 348

Введение

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

Среди различных масштабных соревновательных мероприятий по школьной робототехнике фестиваль Робофест является одним из наиболее известных, где, кроме прочих, присутствуют регламенты соревнований только для начинающих юных робототехников. Это направление «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. Программа для поворота корпуса робота вокруг центра осевой линии ведущих колес на указанный угол

Для удобства использования, будет предпочтительнее для данного действия создать собственный программный блок (рис.2.5). Более подробное описание изложено в [3].

Рис.2.5. Сборка собственного блока для поворота робота направо/налево на указанный угол в градусах с установленной скоростью

Движение вдоль черной линии по двум датчикам освещенности

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

Пропорциональный регулятор прост и понятен в программном исполнении. С помощью него можно легко добиться ровного, «без мотаний» движения робота. К тому же школьникам нетрудно разобраться в принципе его действия, а это важно. От релейных алгоритмов сразу откажемся, поскольку с помощью них трудно обеспечить стабильно ровное движение вдоль черной линии. ПИД-регулятор (пропорционально-интегрально-дифференциальный) в этой книге мы описывать не будем, так как категория, которую мы рассматриваем, для детей, начинающих изучать робототехнику. Поэтому авторы считают, что изложение на данном этапе смысла и значения интегральной и дифференциальной составляющей излишне. А поскольку соревнование для детей, то и используемые алгоритмы должны быть доступны пониманию ребенка данного возраста.

Рассмотрим кратко работу пропорционального регулятора для нашей задачи. Ниже приведен один из его программных вариантов для движения вдоль черной линии по двум датчикам освещенности (рис.2.6). Считывая в процессе движения показания датчиков освещенности, робот вычисляет разность их показаний. Эта разность называется ошибкой. Если ошибка нулевая: датчики показывают одинаковые значения, то робот движется прямо. Если ошибка положительная или отрицательная, это значит, что робот наезжает одним из датчиков на черную линию, то полученное значение ошибки выправляет траекторию движения робота, воздействуя через параметр Рулевое управление. Чтобы можно было регулировать силу управляющего воздействия, ошибку умножают на некоторый коэффициент с ≠ 0, значение которого подбирается экспериментально. Следует отметить, что мощность в блоке Рулевое управление также подбираются экспериментально. Значения управляемого коэффициента и мощности должны быть такими, чтобы робот уверенно «держал линию» с максимально возможной скоростью на тестируемом участке траектории.

Рис.2.6. Программа движения вдоль черной линии по двум датчикам освещенности (пропорциональный регулятор)
Бесплатный фрагмент закончился.
Купите книгу, чтобы продолжить чтение.
электронная
от 234
печатная A5
от 348