ОРГАНИЗАЦИЯ ДВИЖЕНИЯ РОБОТА ПО ЛАБИРИНТУ СРЕДСТВАМИ СРЕДЫ TRIK STUDIO - Студенческий научный форум

XI Международная студенческая научная конференция Студенческий научный форум - 2019

ОРГАНИЗАЦИЯ ДВИЖЕНИЯ РОБОТА ПО ЛАБИРИНТУ СРЕДСТВАМИ СРЕДЫ TRIK STUDIO

Пономарев А.С. 1, Гребнева Д.М. 1
1РГППУ (филиал) в г. Нижнем Тагиле
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

TRIK Studio – среда текстового и визуального программирования образовательных конструкторов роботов. TRIK Studio появилась как развитие проекта кафедры системного программирования СПбГУ QReal: Robots. В официальной версии имеется поддержка конструкторов LegoMindstorms NXT, LegoMindstorms EV3 и ТРИК. Каждый из этих конструкторов может быть запрограммирован на одном из двух визуальных языков – более простом, построенном на модели потока управления, или более сложном языке программирования потоков данных – либо на одном из нескольких текстовых. Для Lego NXT доступны языки NXT OSEK C и русскоязычная версия C (для облегчения изучения текстовых языков), для ТРИК – JavaScript, F# или PascalABC.NET , для Lego EV3 поддержан единственный официальный язык программирования стандартной прошивки – байткод виртуальной машины EV3.

Программа на визуальном языке (визуальная диаграмма) может быть исполнена в трех режимах:

отладка на симуляторе

отладка на компьютере с посылкой пакетов на робота по одному из физических каналов (USB, Bluetooth, Wi–Fi)

режим генерации кода на текстовом языке (одном из вышеупомянутых) с последующим автономным исполнением его на роботе.

В режиме отладки на симуляторе диаграмма интерпретируется на двумерной имитационной модели робота

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

Наличие симулятора дает возможность обучения программированию и кибернетике в образовательных учреждениях, которые не имеют реальных роботов. Существует так – же экспериментальная поддержка отладки на трехмерном симуляторе роботов VRep. Отладка на компьютере с посылкой команд роботу (режим интерпретации в терминах среды) удобна для отслеживания поведения программы на целевом устройстве в реальном времени. В режиме интерпретации можно отслеживать значения переменных в соответствующем окне среды, а также строить в реальном времени графики значений с датчиков. Режим генерации кода позволяет перейти от визуального представления программы к текстовому. Тестовый код отображается во встроенном редакторе qscintilla3, который обладает возможностью полноценного редактора кода. В дистрибутив среды входят все необходимые инструменты для построения и передачи программ на робота, поэтому процесс компиляции и взаимодействия с контроллерами роботов остается полностью «прозрачным» для пользователей (пользователи – новички до определенного момента даже не догадываются о его существовании).

Среда написана на языке C++ с инструментарием Qt5 , поэтому является кроссплатформенной (доступны установочные пакеты под Windows, Linux и Mac OS X). При этом, даже несмотря на то, что официальные драйвера для Lego NXT не доступны для Linux и Mac OS X x64, в TRIK Studio существует собственная их реализация. Среда полностью бесплатна, имеет открытый исходный код и распространяется под лицензией ApacheLicense 2.0.

Среда поддерживает как визуальный, так и текстовый язык программирования.

Визуальный язык программирования представляется в виде блоков и связей между ними. Основные блоки Trik Studio и их описание представлено в таблице 1.

Таблица 1

Описание основных блоков Trik Studio

Название

Изображение

Описание

Основные параметры

Начало программы

 

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

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

Конец программы

 

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

У данного блока не может быть исходящих связей.

Таймер

 

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

 

Моторы и вперед назад

 

Включает и выключает моторы по заданным портам с заданной мощности.

Мощность включается в процентах от –100 до 100, если задано отрицательное значение, то включается реверс.

Сброс показаний энкодера

 

Сбрасывает показания количества оборотов моторов по указанным портам

 

Моторы стоп

 

Выключает моторы по заданным портам.

 

Подпрограмма

 

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

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

Функция

 

Считает значение заданного выражения. Также в данном блоке допускается определение переменных.

 

Условие и конец условия

 

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

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

Цикл

 

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

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

Параллельные задачи и завершение задачи

 

Разделяет исполнение задач на несколько, которые будут исполняться параллельно. Этот блок должен иметь как минимум две исходящие связи.

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

Датчики расстояния: ультразвуковой и инфракрасный

 

Ждет, пока расстояние, возвращаемое ультразвуковым датчиком расстояния, не будет сравнимо с указанным в значении параметра «Расстояние»

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

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

Рисунок 9. Поворот на право

Рисунок 1. Поворот налево

Рисунок 2. Движение прямо

Задача 2. Движение по заранее известному лабиринту. Пусть нам известен лабиринт, представленный на рисунке 12.

Рисунок 3. Лабиринт

Программа движения по известному лабиринту на визуальном языке программирования Trik Studio представлена на рисунке 4.

Рисунок 4. Программа выхода из известного лабиринта

Рисунок 5. Программа с защитой от застреваний

Для определения наличия препятствия нужен датчик расстояния. Ими являются инфракрасный датчик и ультразвуковой датчик.

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

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

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

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

Для реализации защиты от застреваний можно использовать сторожевой таймер. Эта функция напоминает диспетчера охранной компании, который каждый час принимает дежурный звонок от сторожа на охранном объекте. Если сторож не позвонил через час, диспетчер поднимает тревогу и на объект выезжает отряд немедленного реагирования. В нашем случае отсутствие звонка от сторожа – это отсутствие реакции датчика расстояния на какое – либо препятствие, а вместо отряда реагирования будет вызываться подпрограмма «Отъезд».

Внутри включенного контроллера всегда работают часы, которые позволяют отмерять время в миллисекундах, например запуска программы. За это отвечает функция time (), которую можно использовать для контроля реакции на объекты.

Но что делать если сработала защита от застреваний, робот начал выполнять отъезд и видел объект. В основной задаче сразу будет вызвана подпрограмма «Отъезд», которая и так уже работает. В этом случае возможна коллизия – наложение двух противоречащих друг другу команд на управление моторами. Как это предотвратить? Достаточно ввести переменную – флаг, с помощью которой будет обеспечен вызов подпрограммы «Отъезд», либо при появлении объекта на пути, либо при срабатывании сторожевого таймера

Рисунок 6. Подпрограмма «Отъезд»

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

Список литературы

Базовые компоненты робота [Электронный ресурс] – Электрон. дан. Режим доступа:   http://vex.examen  technolab.ru/lessons/unit_2_introduction_to_robotics/44/Заглсэкрана.

Лучин, Р. М. Платформа ТРИК: новые задачи и новые возможности // VI Всероссийская конференция «Современное технологическое обучение: от компьютера к роботу» (сборник тезисов). [Текст] / Р. М. Лучин ЗАО «Полиграфическое предприятие № 3», 2016. – 166 с.

Макаров И.М., Топчиев Ю.И. Робототехника, история и перспективы. [Текст] / И.М Макаров М.: Наука, МАИ, 2003. – 166 с.

Набор робота Lego Ev 3 [Электронный ресурс] URL: http://www.prorobot.ru/lego/nxt_ev3.php – Загл. с экрана.

Определения робототехники основные [Электронный ресурс] URL:http://referatwork.ru/category/obrazovanie/view/226112_osnovnye_ponyatiya_robototehniki – Загл. с экрана.

Пример лабиринтов и их виды [Электронный ресурс]. – Электрон.дан. Режим доступа: https://studfiles.net/preview/3602333/page:13 – Загл. с экрана.

Робот для состязаний: выход из лабиринта. Часть I [Электронный ресурс] – Электрон.дан. Режим доступа:http://nnxt.blogspot.com/2011/02/i.html

Руководство пользователя Lego MindStorms Education Ev3 [Электронный ресурс] Электрон.дан. Режим доступа: http://soiro.ru/sites/defalt/files/lego_ev3_r ukovodstvo_polzovatelya.pdf – Загл. с экрана

Трик студио Среда программирования [Электронный ресурс] – Электрон.  дан. Режим доступа:http://nauchkor.ru/uploads/documents/587d36915f1be77c40d59297.pdf – Загл. с экрана.

Хомченко, В. Г. Мехатронные и робототехнические системы [Текст] / В. Г. Хомченко, В. Ю. Соломин. – Омск. Издательство ОмГТУ, 2008. – 125 с.

Просмотров работы: 456