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

Прочие модели 15.04.2019
Прочие модели

На втором занятии мы детальнее познакомимся со средой программирования и подробно изучим команды, задающие движение нашему роботу-тележке, собранному на первом занятии. Итак, давайте запустим среду программирования Lego mindstorms EV3, загрузим наш проект lessons.ev3, созданный ранее и добавим в проект новую программу - lesson-2-1. Программу можно добавить двумя способами:

  • Выбрать команду "Файл"-"Добавить программу" (Ctrl+N) .
  • Нажать "+" на вкладке программ.

Палитры программирования и программные блоки

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

Зеленая палитра называется: "Действие" :

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

Зеленая палитра – блоки действия

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

Для правильной настройки блока управления большим мотором мы должны:

  1. Выбрать порт, к которому подключен мотор (A, B, C или D) (Рис. 3 поз. 1)
  2. Выбрать режим работы мотора (Рис. 3 поз. 2)
  3. Настроить параметры выбранного режима (Рис. 3 поз. 3)

Чем же отличаются режимы? Режим: "Включить" включает мотор с заданным параметром "Мощность" и после этого управление передается следующему программному блоку программы. Мотор будет продолжать вращаться, пока не будет остановлен следующим блоком "Большой мотор" с режимом "Выключить" или следующий блок "Большой мотор" не будет содержать другие параметры выполнения. Режим "Включить на количество секунд" включает большой мотор с установленной мощностью на указанное количество секунд, и только по завершению времени мотор остановится, а управление в программе перейдет к следующему программному блоку. Аналогично поведет мотор себя в режимах "Включить на количество градусов" и "Включить на количество оборотов" : только после выполнения установленного вращения мотора, он остановится и управление в программе перейдет к следующему блоку.

Параметр мощность (на Рис. 3 мощность установлена в 75) может принимать значения от -100 до 100. Положительные значения мощности задают вращение мотора по часовой стрелке, отрицательные - против часовой. При значении мощности равном 0 мотор вращаться не будет, чем "выше" значение мощности, тем быстрее вращается мотор.

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

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

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

Параметр "Рулевое управление" (Рис. 4 поз. 2 ) может принимать значения от -100 до 100. Отрицательные значения параметра заставляют робота поворачивать налево, при значении равном 0 робот движется прямо, а положительные значения заставляют робота поворачивать направо. Стрелка над числовым параметром меняет свою ориентацию в зависимости от значения, подсказывая тем самым направление движения робота (Рис. 5 ).

Программный блок "Независимое управление моторами" похож на программный блок "Рулевое управление" . Он также управляет двумя большими моторами, только вместо параметра "Рулевое управление" появляется возможность независимого управления мощностью каждого мотора. При равном значении параметра "Мощность" для левого и правого мотора робот будет двигаться прямолинейно. Если на один мотор подать отрицательное значение мощности (например -50), а на второй - положительное значение (например 50), то робот будет разворачиваться на месте (Рис. 6 ).

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

Прямолинейное движение, повороты, разворот на месте остановка

Итак, теперь мы можем написать программу движения робота по какому-либо маршруту.

Задача 1

Экран, звук, индикатор состояния модуля

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

Программный блок "Экран" имеет четыре режима работы: режим "Текст" позволяет выводить текстовую строку на экран, режим "Фигуры" позволяет отображать на экране одну из четырех геометрических фигур (прямая, круг, прямоугольник, точка), режим "Изображение" может вывести на экран одно изображение. Изображение можно выбрать из богатой коллекции изображений или нарисовать свое, используя редактор изображений. Режим "Окно сброса настроек" сбрасывает экран модуля EV3 к стандартному информационному экрану, показываемому во время работы программы.

Рассмотрим параметры программного блока "Экран" в режиме "Текст" (Рис. 9 поз.1) . Строка, предназначенная для вывода на экран, вводится в специальное поле (Рис. 9 поз. 2) . К сожалению, в поле ввода текста можно вводить только буквы латинского алфавита, цифры и знаки препинания. Если режим "Очистить экран" установлен в значение "Истина" , то экран перед выводом информации будет очищен. Поэтому, если вам требуется объединить текущий вывод с информацией уже находящейся на экране, то установите этот режим в значение "Ложь" . Режимы "X" и "Y" определяют точку на экране, с которой начинается вывод информации. Экран блока EV3 имеет 178 пикселей (точек) в ширину и 128 пикселей в высоту. Режим "X" может принимать значения от 0 до 177, режим "Y" может принимать значения от 0 до 127. Верхняя левая точка имеет координаты (0, 0), правая нижняя (177, 127)

Во время настройки программного блока "Экран" можно включить режим предварительного просмотра (Рис. 9 поз. 3) и визуально оценить результат настроек вывода информации.

В режиме "Фигуры" (Рис. 11 поз. 1 ) настройки программного блока меняются в зависимости от типа фигуры. Так при отображении круга необходимо будет задать координаты "X" и "Y" центра окружности, а также значение "Радиуса" . Параметр "Заполнить" (Рис. 11 поз. 2) отвечает за то, что будет отображен либо контур фигуры, либо внутренняя область фигуры будет заполнена цветом, заданным в параметре "Цвет" (Рис. 11 поз. 3) .

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

Чтобы отобразить прямоугольник следует задать координаты "X" и "Y" левого верхнего угла прямоугольника, а также его "Ширину" и "Высоту" .

Отобразить точку проще всего! Укажите лишь её координаты "X" и "Y".

Режим "Изображение" , наверное, самый интересный и самый используемый режим. Он позволяет выводить на экран изображения. Среда программирования содержит огромную библиотеку изображений, отсортированную по категориям. В дополнение к имеющимся изображениям вы всегда можете создать свой рисунок и, вставив его в проект, вывести на экран. ("Главное меню среды программирования" - "Инструменты" - "Редактор изображения") . Создавая своё изображение, вы можете также вывести на экран символы русского алфавита.

Как вы видите - отображению информации на экране главного модуля EV3 среда программирования придает огромное значение. Давайте рассмотрим следующий важный программный блок "Звук" . С помощью этого блока мы можем выводить на встроенный динамик блока EV3 звуковые файлы, тона произвольной длительности и частоты, а также музыкальные ноты. Давайте рассмотрим настройки программного блока в режиме "Воспроизвести тон" (Рис. 15) . В этом режиме необходимо задать "Частоту" тона (Рис. 15 поз. 1) , "Продолжительность" звучания в секундах (Рис. 15 поз. 2) , а также громкость звучания (Рис. 15 поз. 3) .

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

В режиме "Воспроизвести файл" вы можете выбрать один из звуковых файлов из библиотеки (Рис. 17 поз. 1) , либо, подключив к компьютеру микрофон, с помощью Редактора звука ("Главное меню среды программирования" - "Инструменты" - "Редактор звука") записать собственный звуковой файл и включить его в проект.

Давайте отдельно рассмотрим параметр "Тип воспроизведения" (Рис. 17 поз. 2) , общий для всех режимов программного блока "Звук" . Если данный параметр установлен в значение "Ожидать завершения" , то управление следующему программному блоку будет передано только после полного воспроизведения звука или звукового файла. В случае установки одного из двух следующих значений начнется воспроизведение звука и управление в программе перейдет к следующему программному блоку, только звук или звуковой файл будет воспроизведен один раз или будет повторяться, пока не его не остановит другой программный блок "Звук" .

Нам осталось познакомиться с последним программным блоком зеленой палитры - блоком "Индикатор состояния модуля" . Вокруг кнопок управления модулем EV3 смонтирована цветовая индикация, которая может светиться одним из трех цветов: зеленым , оранжевым или красным . За включение - выключение цветовой индикации отвечает соответствующий режим (Рис. 18 поз. 1) . Параметр "Цвет" задает цветовое оформление индикации (Рис. 18 поз. 2) . Параметр "Импульсный" отвечает за включение - отключение режима мерцания цветовой индикации (Рис. 18 поз. 3) . Как можно использовать цветовую индикацию? Например, можно во время различных режимов работы робота использовать различные цветовые сигналы. Это поможет понять: так ли выполняется программа, как мы запланировали.


Давайте используем полученные знания на практике и немного "раскрасим" нашу программу из Задачи 1.

Задача 2

Попробуйте решить задачу самостоятельно, не подглядывая в решение!

9 самых жутких пыток древнего мира

Что форма носа может сказать о вашей личности?

20 Признаков что вы нашли идеального парня

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

Инструкция

  1. Если вы таки решили научиться данному танцу, то следует прислушаться к следующим рекомендациям. Для занятий нужно подобрать музыку. Она должна быть ритмичной, около 100-120 ударов в минуту. Важно чувствовать ритм музыки, соблюдать музыкальность. Обучитесь делать сильное сокращение мышц, это можете телу как бы вибрировать и трястись. Такие движений являются характерной особенностью этого вида уличного танца. В танце эти «вздрагивания» выполняются непрерывно, комбинируются с разными движениями и позами.
  2. Помните, что основой этого стиля является удар. Отрабатывайте его грудной клеткой, шеей, руками, ногами в различных вариациях. Выучите 10 базовых элементов и 4-5 типичных связок. Потом до идеала доведите технику исполнения фиксации. Постарайтесь скопировать движения робота, совершайте небольшие остановки в конце каждого сделанного движения, это позволит подчеркнуть резкость следующего элемента.
  3. В движениях много жестикуляций, углов, вам следует их освоить. Учтите, что практически все движения в танце робота делаются стоя, однако есть элементы, которые осуществляются с опусканием на колени и лежа.
  4. Движения кистями рук и самими руками должны выполняться очень резко. Руки могут быстро и энергично описывать круги, словно кисть рубит воздух, подобные элементы придадут танцу решительность, собранность и силу. Можете делать указывания пальцем. Можно выполнять элементы, создающие иллюзию, словно вы скользите или плывете по полу в различных направлениях. «Пускание» волн по рукам и корпусу. Научитесь скользить ногами по полу, как бы создавая эффект скольжения по воздуху, используя перекатывание стопы с носка на пятку.
  5. Все движения необходимо повторять через одинаковые промежутки времени, так у танцора получится создать эффект, что он движется будто под светом стробоскопа.
  6. Экспериментируйте, используя уже выученные элементы. Используйте движения и элементы из других направлений, создайте свой стиль, совершенствуйте технику. Чем более непредсказуемый танец, чем разнообразнее движения, тем интереснее зрителю за ним наблюдать.
  7. Смотрите видео уроки, представленные в конце статьи, чтобы лучше понять особенности этого танца и научиться его движениям.

Обратите внимание

Этот танце появился в семидесятых годах двадцатого века. Его продолжительное время танцевали под музыку: электро, фанк и диско. Родиной поппинга является Калифорния. Сейчас движения этого стиля подстраивают под современные мелодии и песни. Частенько его танцуют под новинки электронной музыки и хип-хоп. Он очень популярен среди молодежи. Его элементы встречаются в клипах и фильмах. Даже проводятся соревнования по этому виду танца.

Видео уроки

Как танцевать как робот?



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

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

Техника танца Робот

  1. Перед тем как научиться танцевать, подберите ритмичную музыку.
  2. Робот - это машина. Избавьтесь от мимики, придайте лицу холодный взгляд, устремленный в одну точку.
  3. Напрягите ваше тело и потянитесь макушкой вверх, ноги на ширине плеч, носки устремлены в стороны, руки внизу.
  4. Рассмотрим движение головы. Представьте, что вы находитесь на картинке и вам нужно осмотреть ее углы. Плавным движением начинайте поворот головы наверх вправо, затем фиксация положения, вниз-фиксация, влево-фиксация, и закончите движение поднятием головы вверх.
  5. Учимся остановкам. Наполните легкие воздухом с помощью глубокого вдоха носом, и когда грудная клетка поднимется, замрите, через несколько секунд выдохните воздух. Повторите данное движение несколько раз.
  6. Далее представьте, будто вы воздушный шар, который заполняют воздухом. Выполняя пункт 5 инструкции, подключите руки. Представьте, что вы кукла-марионетка и вас дергают за ниточки. Изменяйте положения рук, разворачивая корпус тела в разные стороны. Делайте движения медленно и с паузами. Закончите движение, стоя прямо и сложив руки вместе, будто вы сидите за партой.
  7. Не убирая положения рук, сложенных вместе, развернитесь налево и согните ваш корпус. Можно медленно покачаться корпусом в такт, затем разогнуть руки в стороны и сложить их обратно.
  8. Далее поработайте грудной клеткой. Голову зафиксируйте на месте, а корпус прогибайте вверх и вниз.
  9. Следующее движение - поворот. При повороте направо встаньте на носок левой ноги и слегка согните колено. При повороте налево аналогичные действия с правой ногой. Плечи поворачивайте вместе с ногами.
  10. Отработаем повороты полусидя. Согните колени и поворачивайте корпус вправо и влево, будто вы на крутящемся круге.
  11. Следующий элемент включает в себя движение рук и корпуса. Повернитесь налево и представьте, что хотите поднять коробку. При помощи прямых рук возьмите воображаемую коробку, повернитесь прямо, зафиксировав положение, затем повернитесь налево и поставьте коробку вниз.
  12. Делаем волну. В этом движении важна пластичность и гибкость тела. Начните волну с правой руки, затем подключите плечо, корпус и закончите движение волной на левой руке. Потренируйтесь делать также обычную волну с помощью живота.
  13. Несколько раз отрепетируйте описанные движения под музыку перед зеркалом. Соединяя элементы - получится танец. После отработки движений вы можете на свой вкус расставить их в хронологическом порядке. Придумайте свои элементы танца.

Новичкам на заметку

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

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


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

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

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


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


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

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

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

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



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


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


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

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

Заключение

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


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

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


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

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

Лабораторное занятие № 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.



Рекомендуем почитать

Наверх