Способы перемещения. Описание движения мобильного робота

19.04.2019

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


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

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

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


Мобильные роботы, передвигающиеся в цехах вдоль линии, подобно роботам из предыдущих лабораторных работ оснащаются различными сенсорными устройствами для восприятия окружающей обстановки: ИК-датчиками, камерами, датчиками безопасности и т.п. Но в отличие от рассматриваемых ранее роботов, реальные роботы работают отнюдь не в лабораторных условиях – зачастую направляющая линия может быть повреждена или скрыта за каким-либо объектом, некоторые маршруты могут пересекаться или вовсе прерываться частично.


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

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

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

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



Для того распознавания пересечений направляющих линий может применяться множество различных способов, например в подобных целях достаточно часто применяются камеры. Но обработка изображений требует большой производительности бортового компьютера робота, поэтому такие решения не всегда применимы. В данной работе рассматривается способ управления мобильным роботом с помощью информации, поступающей от массива ИК-датчиков. С помощью массива из семи датчиков S1-S7 становится возможным определить местоположение пересечений линий. Поскольку вариантов наиболее вероятных пересечений достаточно много, следует настраивать управляющую программу робота на максимально возможное количество допустимых вариантов, определенных на основании показаний ИК-датчиков.

Выполнение маневров вблизи перекрестков

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

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

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


Аналогичным образом можно разработать программу движения робота вдоль любого из более сложных маршрутов. Для этого всего лишь необходимо задать последовательность движения робота через пересечения маршрута.

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


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

Вышеуказанные функции можно разделить на два основных типа:

1) Функции, осуществляющие поворот робота на Т-образных и Г-образных перекрестках.

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

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

Функция l_node_l_turn предназначена для осуществления поворота налево на ближайшем левом пересечении. Функция состоит из двух других функций: l_node_forward отвечающей за движение до ближайшего Г-образного перекрестка с поворотом налево, и pivot_left, за сам отвечающей за поворот налево.

Функция l_node_forward в бесконечном цикле ищет точку пересечения траекторий с помощью функции l_node_detect. Во время поиска робот постоянно следует линии с помощью функции follow_line. После обнаружения точки пересечения маршрутов робот совершает кратковременный рывок вперед, ограниченный временем таймера, для того чтобы слегка сместиться для дальнейшего поворота налево. Данное перемещение крайне важно, для того чтобы после маневра робот оказался по центру направляющей линии. Особое внимание следует уделить процессу распознавания точек пересечения маршрута. Очевидно, что в процессе движения робота по маршруту могут возникнуть различные ситуации, но большинство из них можно описать формальными признаками, например по срабатыванию ИК-датчиков.


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


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


В приведенной выше функции описывается процесс распознавания левого Г-образного поворота. Согласно приведенному алгоритму под подобной точкой маршрута понимается участок траектории, на котором срабатывают ИК-датчики № 1, № 2, № 3.

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


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

Выполнение сложных маневров

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


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


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

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

Каждая из этих функций состоит из функции следования маршруту - diag_corner_forward, I_curve_branch_forward и функции поворота в требуемом направлении – pivot_left, pivot_right. Контроль за движением робота вдоль линии под углом осуществляется с помощью ИК-датчиков № 1 и № 7, которые задают положение робота над линией. Если же робот оказывается над линией, то запускается функция follow_line, с помощью которой робот отслеживает собственное положение относительно линии и центрируется на ней с помощью ИК-датчика № 4.

Следование линии нацелено в первую очередь на движение вдоль нее с ориентацией центра робота над линией. Поскольку центр робота совпадает с ИК-датчиком № 4, функция follow_line стремится минимизировать отклонения ИК-датчиков № 3 и № 5 относительно линии.


Суть данного процесса сводится к выполнению ряда условий:

1) Если ИК-датчик № 4 находится над линией, то робот едет прямолинейно с максимальной скоростью.

2) Если один из ИК-датчиков № 3 или № 5 обнаружил линию, то робот поворачивается в противоположном направлении с минимальной скоростью.

Во время следования линии изменяется, в зависимости от положения робота, скорость его маневрирования. Это сделано из-за того, что в некоторых ситуациях необходимы плавные движения робота, чтобы он не съехал с линии, например при маневрировании между датчиками № 3 и № 5.

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

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


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


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

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

Заключение

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


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

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


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

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

15.01.2012, 18:51

До сих пор в статьях о алгоритмах, использующихся при движении вдоль линии, рассматривался такой способ, когда датчик освещенности как бы следил за левой или правой ее границей: чуть робот съедет на белую часть поля - регулятор возвращал робота на границу, начнет датчик перемещаться вглубь черной линии - регулятор выправлял его обратно.
Не смотря на то, что картинка выше приведена для релейного регулятора, общий принцип движения пропорционального (П-регулятора) будет такой-же. Как уже говорилось, средняя скорость такого перемещения не очень высокая и было сделано несколько попыток увеличить ее за счет незначительного усложнения алгоритма: в одном случае использовалось "мягкое" торможение, в другом, помимо поворотов, вводилось движение вперед.
Для того, чтобы позволить роботу на некоторых участках двигаться вперед, в диапазоне значений выдаваемых датчиком освещенности выделялся узкий участок, который условно можно было назвать "датчик находится на границе линии".
У данного подхода есть небольшой недостаток - если робот "следит" за левой границей линии, то на правых поворотах он как бы не сразу определяет искривления траектории и, как следствие, тратит большее время на поиск линии и поворот. Причем, можно с уверенностью сказать, что чем, круче поворот, тем дольше по времени происходит этот поиск.
На следующем рисунке видно, что если бы датчик находился не с левой стороны от границы, а с правой, то он уже обнаружил искривление траектории и начал бы совершать маневры по повороту.

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

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

На схеме выше сразу же показано, как конкретно в программе должно меняться поведение моторов.Теперь, написание программы не должно составить большого труда.Начать стоит с того, чтобы выбрать какой датчик будет опрашиваться первым. Это не имеет большого значения, поэтому пусть будет левый. Необходимо определить, над светлой или над темной он поверхностью:
Это действие еще не позволяет сказать в какую сторону роботу надо ехать. Но оно разделит состояния, перечисленные выше, на две группы: (I, II) для верхней ветви и (III, IV) для нижней. В каждой из групп теперь по два состояния, поэтому необходимо выбрать какое-то из них. Если внимательно посмотреть на первые два состояния I и II, то они отличаются положением правого датчика - в одном случае он над светлой поверхностью, в другом - над темной. Именно это и определит выбор, какое действие предпринять:
Теперь можно вставить блоки, определяющие поведение моторов согласно таблицам выше: верхняя ветвь вложенного условия определяет комбинацию "оба датчика на светлом", верхняя - "левый на светлом, правый на темном":
Нижняя ветка основного условия отвечает за другую группу состояний III и IV. Эти два состояния также отличаются друг от друга уровнем освещенности, который улавливает правый датчик. Значит, он будет определять выбор каждого из них:
Получившиеся две ветви наполняются блоками движения. Верхняя ветвь отвечает за за состояние "левый на темном, правый на светлом", а нижняя - за "оба датчика на темном".
Следует отметить, что данная конструкция всего лишь определяет, как включить моторы в зависимости от показаний сенсоров в определенном месте поля, естественно через мгновение программа должна проверить не изменились ли показания, чтобы соответствующим образом подправить поведение моторов, а через мгновение еще раз, еще и т.д. Поэтому она должна быть помещена в цикл, который будет обеспечивать такую повторяющуюся проверку:

Такая довольно простая программа будет обеспечивать довольно высокую скорость передвижения робота вдоль линии без вылета за ее пределы, если правильным образом настроить максимальную скорость при движении в состояниях I и IV, а также задать оптимальный способ торможения в состояниях II и III - чем круче повороты на трассе, тем "жестче" должно быть торможение - скорость должна сбрасываться быстрее, и наоборот - при плавных поворотах вполне можно применять торможение через выключение энергии или даже вообще через незначительный сброс скорости.

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



Аннотация: Задача управления является очень актуальной в современной науке и технике. Пусть имеется система (объект управления), которую мы должны поддерживать в заданном состоянии. Для этого у нас имеется регулятор, который (1) производит сбор информации о текущем состоянии системы в момент времени t и (2) вычисляет управляющий сигнал U(t). Этот сигнал подается объекту управления, возвращая его в заданное состояние. Такая схема носит название системы с отрицательной обратной связью, поскольку при отклонении от равновесия регулятор стремится вернуть систему в нормальное состояние. В этой теме мы рассмотрим два вида регуляторов: более простой релейный и более устойчивый пропорциональный. Цель: научиться строить систему управления автономным роботом на основе простейшего релейного и пропорционального регуляторов, рассмотреть одну из задач соревновательной робототехники и изучить возможности использования датчика оборотов.

Релейный регулятор

Пример 9.1. Движение робота вдоль стены.

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

Следует заранее продумать положение датчика ультразвука. Как упоминалось выше (см. с. 38), этот датчик медленный. Поэтому его следует располагать чуть впереди корпуса робота. Кроме этого, его следует сместить как можно дальше от стены (см. Рис. 9.1), потому что на малых расстояниях (5 - 7 см) показания датчика ультразвука становятся слишком неточными. Далее мы увидим, что направление датчика также следует подкорректировать.

Алгоритм движения робота, записанный в словесной форме, может быть примерно таким (Рис. 9.2):

  1. двигаться прямо;
  2. если расстояние до стены больше заданного, то повернуть к стене;
  3. если расстояние до стены меньше заданного, то повернуть от стены;
  4. повторять шаги 2 - 3 бесконечно (или до наступления некоторого события).

Одним из самых очевидных решений этой задачи является релейный регулятор.

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

Для определённости примем в качестве заданного расстояния 20 см. Получим следующую программу (Рис. 9.3):

Как видно из текста программы, после включения обоих моторов запускается бесконечный цикл, в котором реализован вышеописанный словесный алгоритм. Хорошо заметной особенностью этого подхода является "рыскающее" движение: робот всегда поворачивает с одной и той же интенсивностью, независимо от того, насколько далеко или близко он оказался по отношению к стене. Поэтому траектория всегда будет зигзагообразной, так как во время поворотов робот всегда будет "прыгать" вокруг среднего значения 20 см. Так как датчик ультразвука является "медленным", в цикле используется небольшая задержка (0,1 с) для того, чтобы показания датчика успевали обрабатываться блоком NXT. Величина задержки фактически определяет время, в течение которого робот будет двигаться в неизменном направлении. Другими словами, увеличивая время задержки мы получим более крупные "зубцы" траектории. Как отмечалось ранее, делать задержку меньше 0,06 с не имеет смысла, потому что в этом случае датчик ультразвука просто не успеет провести измерения.

При использовании релейного регулятора возможны частые уходы робота с дистанции. Одна из причин состоит в том, что при выбранном нами расположении датчика ультразвука робот не сможет различать положения, симметричные относительно нормального положения. То есть два положения, показанные на Рис. 9.4 будут идентичными, и расстояние до стены в обоих случаях окажутся больше 20 см. В соответствии с вторым шагом алгоритма робот должен повернуть к стене (влево). И если для второго положения это верно, то для первого - ошибочно: робот ещё больше уйдёт с трассы.

Эту проблему можно решить, если расположить датчик не перпендикулярно к направлению движения (т. е. строго влево), а под углом 45° к направлению движения (Рис. 9.5).

Так нам удастся избежать случая, показанного на Рис. 9.4 . Действительно, при подруливании влево расстояние до стены будет (при небольших углах поворота < 45°) уменьшаться, а при поворотах вправо, наоборот, увеличиваться. Однако не стоит рассчитывать, что наш робот сможет проехать вдоль стены любой формы. Даже простой поворот на 90° может вызвать у него неожиданные трудности. Таким образом, наиболее значимым достоинством релейного регулятора в нашем случае является простота его алгоритма. В следующем разделе мы рассмотрим более интересный алгоритм управления.

Задание 9.1. Запрограммируйте движение робота вдоль стены с разными положениями датчика ультразвука. В каком случае движение более устойчиво?

Задание 9.2. Сравните это решение с примером 4.1 на с. 48. Реализуйте релейный алгоритм движения вдоль стены без использования ветвления.

Задание 9.3. Реализуйте релейный алгоритм движения по линии с использованием ветвления.

P-регулятор

Трудности использования релейного регулятора, о которых говорилось в п. 9.1, требуют поиска более приемлемого решения задачи управления. Одним из вариантов является пропорциональный регулятор (или P-регулятор). В этом случае управляющее воздействие на моторы робота не постоянно, как в релейном регуляторе, а изменяется пропорционально отклонению от заданного расстояния до стены. Другими словами, чем больше отклонение, тем активнее должны работать моторы, выравнивая траекторию робота. В идеале робот должен ехать прямо, если датчик регистрирует заданное расстояние. При небольшом отклонении следует небольшое подруливание. Если отклонение больше, то и подруливание больше. Алгоритм P-регулятора является классическим в теории систем автоматического управления.

Пример 9.2. Управление движением вдоль стены на основе P-регулятора.

Для P-регулятора управляющее воздействие U(t) на моторы робота в момент времени t вычисляется по формуле:

(9.1)

Очевидно, графиком для расчёта управляющего воздействия U в зависимости от ошибки E будет прямая (см. Рис. 9.6):

Из графика очень просто определить коэффициент . Выберем произвольную точку на графике. В нашем случае это точка A(1; 2) . Тогда

Ошибка может быть как положительная (если мы ближе к стене, чем надо), так и отрицательная (если мы отъехали от стены дальше, чем необходимо). Таким образом, управляющее воздействие U(t) тоже может быть как положительным, так и отрицательным.

Пусть мы имеем P-регулятор для робота, движущегося вдоль стены. Тогда мощность моторов PowerB(t) и PowerC(t) в момент времени t вычисляется по формулам:

(9.2)
(9.3)
  • Nm - нормальная мощность моторов: мощность, с которой должны крутиться оба двигателя, если отклонение от курса равно нулю. В нашей программе можно положить Nm = 50;
  • U(t) - управляющее воздействие на моторы, вычисляемое по формуле (9.1).

Знаки перед U(t) для Вашего робота могут поменяться на противоположные в зависимости от того, какой мотор находится слева, а какой справа.

Рассмотрим смысл коэффициента пропорциональности . Как видно, поворот производится в силу того, что от мощности одного мотора управляющее воздействие вычитается, тогда как к другому - прибавляется. Таким образом коэффициент может усиливать или ослаблять воздействие регулятора на моторы: если он больше единицы, то происходит усиление, а если меньше - ослабление. Большой сделает робот очень чутким к ошибкам, что приведёт к резким рывкам для исправления траектории. Малый сделает движения робота плавнее, но на крутых поворотах робот может потерять стену и сойти с траектории. Конкретные значения коэффициента , наиболее подходящие в каждом конкретном случае, будут зависеть от конструктивных особенностей робота, скорости движения (нормальной мощности), сложности трассы, используемых датчиков. Величины PowerB(t) и PowerC(t) должны лежать в диапазоне . Поэтому при больших ошибках (и, соответственно, больших управляющих сигналах) мощность моторов будет ограничиваться так, чтобы она не выходила из указанного диапазона. В этом случае пропорциональный регулятор не будет работать корректно, поскольку не сможет скомпенсировать большие ошибки. Таким образом, одной из особенностей P-регулятора является адекватная работа только при небольших ошибках. Для того, чтобы учесть это в нашей задаче нужно иметь стену без резких поворотов и двигаться с небольшой скоростью.

Реализуем алгоритм P-регулятора согласно приведённым формулам при помощи вложенных процедур (My blocks ) на языке NXT-G.

Блок вычисления отклонения (ошибки) от заданного расстояния, который мы назовём Error , имеет следующие параметры:

  • входные - текущее показание датчика расстояния X(t) ;
  • выходные - ошибка E(t)) .

Блок Error на языке NXT-G выглядит так:


Рис. 9.7.

Мы используем его в подпрограмме для вычисления управляющего воздействия U(t) . Она имеет следующие параметры.

Лабораторное занятие № 1 "Программирование

микроконтроллера NXT Brick"

Введение

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

Одним из наиболее популярных робототехнических комплектов в мире является LEGO Mindstorms NXT. Разработанный совместно с сотрудниками Масачусетского технологического института он представляет собой большой набор конструктивных деталей (более 600 шт), 3 сервопривода, набор датчиков и микрокомпьютер NXT Brick. Комплект является базовым при проведении многих робототехнических мероприятий в мире, в том числе соревнований WRO (World Robotic Olympiad). С комплектом поставляется среда визуального программирования NXT-G, созданная компанией National Instruments на основе своего продукта LabView.

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

Цель занятия

Познакомиться с основными возможностями робототехнического микрокомпьютера NXT Brick, его блоками управления, системой меню, познакомиться со средой визуального программирования NXT-G, произвести программирование базовых функций: вывод на экран, воспроизведение звуков.

Задание

Изучить органы управления NXT Brick Изучить систему меню NXT Brick

Изучить назначение портов NXT Brick

Запустить среду программирования NXT-G

Познакомиться с базовой палитрой инструментов NXT-G

Познакомиться с расширенной палитрой инструментов NXT-G Написать следующие программы:

    • издает одиночный звуковой фрагмент из файла

      издает одиночный звук определенной тональности

    • издает однократно серию звуков из файлов

      издает однократно серию звуков различной тональности (программируем мелодию)

      издает непрерывно серию звуков различной тональности (блок "Цикл")

      выводит на экран изображение из файла

      выводит на экран текст в одной строке

      выводит на экран текст в трех строках Подготовить отчет со скриншотами написанных программ.

Ход выполнения работы

Внешний вид микрокомпьютера NXT Brick приведен на рис. 1. Питание осуществляется от 6 батарей формата AA. Блок оснащен ЖК дисплеем с возможностью отображения текста и графики. Для перемещения по разделам меню служат клавиши на лицевой панели: оранжевая OK, темно серая - Отмена. Блок может воспроизводить звуки как из заранее записанных файлов, так и различной тональности. Подключение к компьютеру осуществляется по интерфейсу USB. Есть модуль связи Bluetooth, что позволяет как управлять блоком с компьютера, так и связывать блоки друг с другом. NXT Brick имеет три порта для приводов помеченных буквами A, B и C (для движения обычно используются B и C, A - для манипулятора), четыре порта для датчиков, помеченных цифрами.

Рис. 1. NXT Brick

Для программирования NXT Brick может использоваться среда визуального программирования NXT-G. Внешний вид среды со стандартной палитрой инструментов приведен на рис. 2. Здесь программа строится из блоков, размещаемых на балках LEGO. Допустимо использовать циклы, условные переходы, взаимодействовать с датчиками, приводами, управлять приемопередатчиком Bluetooth, осуществлять вывод на экран и воспроизводить звуки.



Рис. 2. Интерфейс визуальной среды программирования NXT-G

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

    каждого блока есть набор параметров, которые определяют его "поведение". Так, например у блока "Движение" можно выбрать направление движения, его продолжительность, мощность, подаваемую на двигатели.

Студенты должны выполнить пункты задания на лабораторную работу и поготовить отчет.

Лабораторное занятие № 2 "Основные приемы управления движением мобильного робота"

Цель занятия

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

Задание

На основе предложенной схемы собрать конструкцию мобильного робота Написать следующие программы:

    • Прямолинейное движение вперед на расстояние 1 метр

      Движение по "квадрату"

      Движение по "окружности"

      Движение по "восьмерке"

Ход выполнения работы

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


Рис. 3. Тележка мобильного робота с поворотным колесом

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



Рис. 4. Вид снизу. Способ крепления двигателей

Двигатели в данной тележке крепятся к днищу микрокомпьютера посредством прямых балок (рис. 4).

Особое внимание следует уделить конструкции поворотного колеса (рис. 5). Оно должно свободно поворачиваться как вокруг своей оси, так и вокруг оси крепления. При том конструкция должна быть достаточно прочной. Рис. 5. Конструкция поворотного колеса

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



Лабораторное занятие № 3 "Изучение сенсорных датчиков Mindstroms NXT"

Цель занятия

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

Задание

Оснастить робота бампером на основе датчиков касания Написать следующие программы:

    • Прямолинейное движение вперед до момента столкновения со стеной, после этого отъезд назад, случайный поворот направо или налево, продолжение движения

Дооснастить робота датчиком расстояния Написать следующие программы:

    • Прамолинейное движение вперед либо до момента столкновения с препятствием, либо когда до препятствия осталось менее 20 см, после этого отъезд назад, случайный поворот направо или налево, продолжение движения

Подготовить отчет со скриншотами написанных программ

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


Рис. 6. Датчик касания NXT

Датчик касания NXT фактически представляет собой кнопку. Мы можем отслеживать три состояния: "нажата", "отпущена", "нажата и отпущена". В зависимости от логики работы программы необходимо анализировать одно из этих трех расстояний. С помощью датчика касания можно решать например такие задачи, как детектор столкновений, два датчика могут помочь определить размер объекта и т.д.


Рис. 7. "Заготовка" для бампера



Рис. 8. Бампер

Из кривых балок LEGO соберите собственно сам бампер. Смонтируйте его на мобильном роботе.


Рис. 9. Мобильный робот с бампером

Напишите программу для робота с бампером согласно заданию на лабораторную работу.


Рис. 10. Ультразвуковой датчик расстояния

Датчик расстояния NXT использует ультразвуковой метод определения расстояния до объекта. Имеет излучатель и микрофон. Эффективно работает на расстоянии в пределах от 10 до 100 см до объекта.


Рис. 11. Мобильный робот с бампером и ультразвуковым датчиком расстояния.

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

По итогам работы необходимо оформить отчет.

Лабораторное занятие № 4 "Движение мобильного робота по черной линии"

Цель занятия

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

Задание

На основе предложенной схемы собрать конструкцию мобильного робота (2 варианта: робот на гусеничной платформе, робот на колесной платформе с поворотным колесом)

Оснастить робота цветовым датчиком Написать следующие программы:

    • Движение вдоль черной линии используя "классический алгоритм"

      Движение вдоль черной линии используя П-регулятор

      Движение вдоль черной линии используя ПИ-регулятор

      Движение вдоль черной линии используя ПИД-регулятор Подготовить отчет со скриншотами написанных программ

Ход выполнения работы

Для выполнения данной работы понадобится цветовой датчик NXT. Цветовой датчик может работать в двух режимах: датчик цвета и датчик света. Для решения задачи движения по линии больше подходит режим светового датчика. В этом случае значение находится в пределах от 0 до 255 и соответствует яркости отраженного света от освещаемого объекта. Для движения по черной линии целесообразно освещать ее красным светодиодом.


Рис. 12. Цветовой сенсор NXT.

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

"Классическая" программа движения робота по черной линии приведена на рис. 13.

Реализуйте ее.



Рис. 13. Простейший "классический" алгоритм движения по черной линии.

Модифицируйте программу для движения по линии с П-регулятором, ПИ-регулятором и ПИД-регулятором.

По окончании работы подготовьте отчет.

Библиографический список

    Основы мехатроники: монография / Ю. М. Осипов [и др.] Федеральное агентство по образованию, Томский государственный университет систем управления и радиоэлектроники. - Томск: ТУСУР, 2007. - 162 с.(90 экз. в библиотеке ТУСУР)

    Юревич Е. И., Игнатова Е. И. Основные принципы мехатроники. Мехатроника, Автоматизация, Управление, №3, 2006.(5 экз. в библиотеке ТУСУР)

    Юревич Е.И. Основы робототехники. Учеб.пособие. – СПб.: БХВ-Петербург, 2005.

    М. Шахинпур. Курс робототехники. Пер. с англ. – м.: Мир, 1990.

1. Конструкция робота для движения вдоль стенки
На базовую тележкунадо прикрепить датчик расстояния и подключить его на 1 порт.
Датчик расстояния слегка выносится вперед:

Ориентацию датчика можно варьировать:


2. Движение вдоль стенки на П-регуляторе
Решим такую задачу. Робот должен двигаться вдоль стенки на заданном расстоянии L. Предположим, что левое колесо робота управляется мотором B, правое - мотором С, а датчик расстояния, подключенный к порту 1, закреплен несколько впереди корпуса тележки (это важно!) и направлен на стену справа по ходу движения.


Расстояние до стенки в настоящий момент времени, которое показывает датчик, обозначим S1. Измеряется она в сантиметрах.
Моторы двигаются со средней скоростью 50% от максимума, но при отклонении от заданного курса на них осуществляется управляющее воздействие u (на мотор В 50+u, на мотор С 50-u ):
u=k*(S1-L), где k - некий усиливающий коэффициент, определяющий воздействие регулятора на систему.
Таким образом, при S1=L робот не меняет курса и едет прямо. В случае отклонения его курс корректируется. Для робота NXT средних размеров коэффициент k может колебаться от 1 до 10 в зависимости от многих факторов. Подберите его самостоятельно.

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

3. Пропорционально-дифференциальный регулятор

В некоторых случаях П-регулятор может вывести систему из устойчивого состояния.

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

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

u=k1*(S -L)+k2*(s1-Sold), где Sold - расстояние на предыдущем шаге.

Необходимо подобрать подходящие значения коэффициентов k1 и k2. Обычно подбор начинается с пропорционального коэффициента (k1) при нулевом дифференциальном (k2=0). Когда достигнута некоторая стабильность на небольших отклонениях, добавляется дифференциальная составляющая.

4. Конструкция робота с датчиком расстояния, расположенным под углом

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

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

Это напоминает угловое зрение человека: кое-что он может увидеть краем глаза. Стоит воспользоваться таким свойством и разместить датчик расстояния не перпендикулярно курсу движения, а под острым углом. Так можно убить сразу двух зайцев. Во-первых, робот будет видеть препятствия спереди, во-вторых, более стабильно будет придерживаться курса вдоль стены, постоянно находясь на грани видимости. Таким образом, без добавления новых устройств будет получено более эффективное использование возможностей дальномера.

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