В рамках данного урока предлагается сконструировать робота, управляемого с помощью команд, задаваемых кнопками. В качестве устройства, задающего команды, используется панель программируемого контроллера СМ-530. На панели контроллера СМ-530 располагается четыре кнопки управления – U (Up/ Forward), L (Left), R (Right), D (Down/ Backward). Несмотря на то что данные кнопки названы в соответствии с наиболее часто выполняемой функцией, пользователь всегда может присвоить каждой из них определенную задачу. Как это сделать предлагается рассмотреть в данном уроке.
Ручное управление мобильным роботом с помощью кнопок программируемого контроллера СМ-530
Рассмотрим простейший пример управления мобильным роботом с помощью четырех кнопок на панели контроллера СМ-530. Каждой кнопке контроллера присвоим функцию, выполняющую определенное действие:
С помощью таких простейших движений мобильный робот может выполнить почти произвольный маневр, например объезд препятствия, следование по лабиринту и многое другое. Причем движения робота могут выполняться как поэтапно – после нажатия на соответствующую клавишу, так и непрерывно – по заданной в программе последовательности действий.
Рассмотрим процесс разработки управляющей программы, обрабатывающей нажатия кнопок на панели контроллера СМ-530.
В целом рабочий алгоритм программы можно изобразить в виде блок-схемы, описывающей последовательность выполнения программы. Сразу же после запуска робота осуществляется инициализация программы управляющего контроллера. В процессе инициализации осуществляется проверка правильности сборки модели робота и присваиваются значения различных таймеров и скоростей движения робота.
После завершения процедуры инициализации программируемый контроллер ожидает нажатия одной из кнопок управления, после чего выполняет запрограммированное действие. Данный процесс повторяется в бесконечном цикле до тех пор, пока программируемый контроллер не будет выключен.
Управляющая программа робота начинается с присвоения значений скоростей движения и временных диапазонов работы таймеров.
Значения скоростей правого и левого колеса задаются для режима прямолинейного движения, который может быть вызван сразу же после запуска программируемого контроллера.
В режиме прямолинейного движения мобильный робот едет заданное время со скоростью, определяемой значениями, установленными в начале программы. Данная подпрограмма является тестовой, с помощью которой можно проверить правильность сборки и функционирования робота.
Для того чтобы перейти к режиму ручного управления роботом с помощью кнопок на панели контроллера СМ-530, необходимо сначала войти в режим проверки правильности сборки робота, нажав на кнопку D.
В этом случае выполнение программы переходит на этап проверки правильности сборки робота и корректности его предварительной настройки.
Проверка качества сборки робота начинается с инициализации максимального и минимального значения ID – номера каждого из приводов в отдельности. Поскольку в модели робота используется всего два привода, максимальное и минимальное значения ID ограничены следующим образом:
Далее последовательно анализируются все возможные ошибки, о которых может сигнализировать сервомодуль Dynamixel, в частности ошибки неправильной инициализации и превышения рабочего момента.
После успешного завершения процедуры инициализации программы и проверки правильности сборки робота, выполнение программы переходит к метке Start_turn.
При старте рабочей программы воспроизводится базовая мелодия, и контроллер переходит в бесконечный цикл ожидания нажатия какой-либо кнопки. В зависимости от нажатия на одну из кнопок вызывается соответствующая функция, определяющая один из маневров робота, например: при нажатии на кнопку U вызывается функция forward, определяющая прямолинейное движение робота в течение заданного времени.
Каждая из функций, задающих движения робота, описывается отдельно. Рассмотрим состав подобной функции на примере функции reverse.
Движение робота задается за счет вращения каждого из приводов с определенной скоростью и в течение заданного времени. С помощью базовых настроек в меню управления задается направление вращения каждого из приводов, скорость движения задается с помощью переменных, указанных в начале программы. Аналогичным образом описываются функции, задающие остальные движения робота.
Воспользовавшись данными рекомендациями, разработайте управляющую программу робота согласно приведенному выше алгоритму. Во время проведения пробных испытаний робота обратите внимание на зависимость движения робота от базовых значений, заданных при инициализации программы:
Для того чтобы оценка перемещений робота производилась с максимальной точностью, на бампере робота можно закрепить карандаш, который будет очерчивать траекторию движения робота.
Постарайтесь добиться того, чтобы при определенных значениях скоростей вращения колес и значений таймеров, соответствующих движению вперед и поворотам направо и налево, робот перемещался на расстояние кратное собственной длине и поворачивался на угол 90 градусов.
В случае если удастся добиться такой точности движения, мобильный робот будет обладать достаточно высокой маневренностью при собственных габаритах.
Программирование последовательности действий робота с помощью кнопок контроллера СМ-530
Зачастую алгоритм работы робота сводится к повторению ряда определенных операций. Например, если грузы на конвейере расположены в определенной последовательности, то операция их сортировки сводится к цикличному повторению однотипных операций с каждым из объектов.
В этом случае ручное управление роботом силами человека-оператора слишком утомительный процесс, который следует автоматизировать максимально возможным образом. Если весь цикл сортировочных операций описать в виде последовательности команд, то робот сможет их выполнять автоматически, в этом случае на человека-оператора можно будет возложить обязанности по надзору за процессом выполнения работ.
По аналогии с предыдущей частью урока опишем процесс программирования последовательности действий робота с помощью кнопок на панели контроллера СМ-530.
В данном примере предлагается запрограммировать какое-либо движение робота с помощью последовательных нажатий кнопок. Последовательность нажатий заносится в список, содержащий порядковый номер операции и тип нажатой кнопки. После того как список команд сформирован и нажата кнопка Start, начинается процесс воспроизведения команд из списка до его полного опустошения. Количество команд задается пользователем на стадии написания программы.
Управляющая программа начинается с процесса инициализации начальных значений переменных, процесса проверки правильности сборки робота и тестового режима.
Сразу же после перехода к метке выполнения программы происходит инициализация счетчика команд с помощью функции initialize.
Функция initialize осуществляет сброс и переход к стартовому значению счетчика команд. Данная функция выделена отдельно, чтобы не допустить случайных ошибок при редактировании программы.
После процесса инициализации программа ждет ввода команды, т.е. нажатия одной из кнопок. Поскольку заранее известен перечень всех команд и соответствующих им действий, проводится анализ нажатия определенных кнопок на панели контроллера СМ-530. В нашем случае рассматриваются все кнопки – U, D, L, R, отвечающие за движение и повороты робота.
Какая из кнопок нажата в данный момент, определяется с помощью логической операции «ИЛИ» в теле оператора IF. Если нажата одна из указанных выше кнопок, выражение в теле оператора IF становится равным единице и выполнение программы переходит к следующей строке, где запоминается тип нажатой кнопки.
Каждое считанное нажатие кнопки заносится в список команд робота. В данном списке хранится номер текущей операции и ее тип, соответствующий типу нажатой кнопки. Количество программируемых команд определяется длиной списка.
В рассматриваемом примере список команд содержит пять операций, в случае ввода шестой команды список команд обнуляется и воспроизводится соответствующая мелодия.
После того как пользователь задал необходимую последовательность команд, необходимо нажать на кнопку Start, после чего осуществляется выход из цикла и начинается выполнение программы согласно запрограммированной последовательности.
Выполнение программы осуществляется последовательно по списку команд. Подобный метод идентичен работе с очередью команд, где выполнение программы производится последовательно с первой заданной и до конца очереди.
В процессе выполнения программы осуществляется последовательный анализ очереди команд. На каждом этапе тип выполняемой операции определяется нажатой кнопкой, после чего вызывается функция move, которая определяет, какая из операций должна быть выполнена на данном этапе.
В теле функции move в зависимости от типа нажатой кнопки определяется действие, которое должен выполнить мобильный робот. В зависимости от полученной команды после программируемой задержки вызывается функция, реализующая движение робота.
Функции, описывающие движения робота, идентичны тем, что использовались в предыдущей части урока. С их помощью можно запрограммировать движение робота по произвольной траектории.
В процессе задания траектории движения робота можно использовать любое количество команд, не превышающее величину списка. В случае если величины списка команд недостаточно, следует изменить код программы и расширить величину списка самостоятельно на необходимую величину.
Воспользовавшись данными рекомендациями, разработайте управляющую программу робота согласно приведенному выше алгоритму. Для того чтобы запрограммировать робота с помощью кнопок на панели контроллера СМ-530, с помощью кнопки MODE перейдите в режим PLAY и запустите выполнение программы.
Программирование движений робота осуществляется с помощью кнопок U, D, L, R. В случае если необходимая последовательность команд задана, необходимо нажать на кнопку Start, после чего начнется процесс выполнения программы и робот начнет свое движение.
Заключение
В заключение вам предлагается выполнить несколько опытных испытаний.
Первое задание заключается в разработке программы робота, которая содержит минимальный список команд для его выполнения. Смысл задания заключается в сбивании флагов, расположенных в рабочей зоне. Победителем является робот, выполнивший задание за минимальное время и минимальное количество команд.
Второе задание заключается в соревновании двух роботов, которые наперегонки должны проехать по рабочему полю и сбить максимальное количество флагов, причем финальной целью является один из отмеченных флагов. Для данного задания могут применять различные правила, оговоренные игроками заранее, например: за сбивание обычных флагов начисляется определенное количество баллов, а за сбивание одного из отмеченных флагов игроку присваивается значительно большее количество баллов.
Программирование робота с помощью последовательности команд, задаваемых с помощью кнопок контроллера СМ-530, простой и быстрый способ корректировки программы робота. В любой момент после запуска робота пользователь может вручную задать алгоритм его работы.
Источник: Методические пособия по роботехнике для начинающих компании ООО «Экзамен-Технолаб».