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

Для Андроид 22.02.2019
Для Андроид
15.01.2012, 18:51

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

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

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

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

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

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



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

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

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

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

Инструкция

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

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

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

Видео уроки

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. Конструкция робота с датчиком расстояния, расположенным под углом

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

  • скорость или ускорение движения
  • точность позиционирования (повторяемость)
  • гибкость и робастность (надежность) при различных условиях
  • эффективность (низкое энергопотребление)

Система координат

Для того чтобы математически описать движение мобильного робота нам потребуется определить системы координат. Я введу две системы координат — мировую систему координат W (буду считать что он неподвижна в пространстве), и система координат робота R , которая перемещается в пространстве и остается неподвижной относительно самого робота.

Нам необходимо определить местоположение робота, то есть мы хотим знать, как преобразовывать координаты между W и R .

Степени свободы движения

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

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

Твердое тело, которое перемещается и вращается на плоскости имеет 3 степени свободы: 2 поступательных и 1 вращательную. Пример: наземный робот.

Твердое тело, которое перемещается и вращается в 3D-объеме имеет 6 степеней свободы: 3 поступательных и 3 вращательных. Пример: летающий робот.

Особый случай — это так называемый голономный робот, который способен перемещаться мгновенно в любом направлении в пространстве его степеней свободы (робот является голономным если число управляемых степеней свободы равно полному числу степеней свободы). Голономные роботы существуют, но требуют множество моторов и необычный конструктив, что зачастую очень непрактично. Однако, наземные голономные роботы могут быть реализованы с использованием всенаправленных колес (omni-wheels).

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


Конфигурации колесных роботов

Существует множество различных конфигураций мобильных роботов.

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

Или марсоход Opportunity, который имеет колеса на штангах для преодоления больших препятсвий.

Но чаще применяются другие типы конфигураций.

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

Все эти роботы неголономны (используется два двигателя, но три степени свободы движения). Например, не может мгновенно двигаться в сторону.

Робот с дифференциальным приводом

Такая конфигурация используется в .

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

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

Движение по дуге

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

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

Автомобиль/Трицикл/Реечно-зубчатый привод

Такой тип роботов имеет два мотора — один для движения, другой для рулежки.

  • Не может нормально развернуться на месте.
  • При постоянной скорости и угле поворота движется по дуге окружности.
  • В четырехколесной схеме необходим задний дифференциал и переменная связь («Принцип Аккермана») на рулевые колеса.

Круговое движение трехколесного робота

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

Радиус траектории, которую описывают задние колеса:

За время расстояние вдоль этой дуги окружности, пройденное приводными колесами равно , поэтому угол на который повернется робот:

Зубчатая передача

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

Если Передача 1 имеет крутящий момент , она оказывает тангенциальную силу

на Передачу 2 . Крутящий момент Передачи 2 поэтому

Изменение угловой скорости между Передачей 1 и Передачей 2 вычислим, рассмотрев скорость в точке где они соприкасаются:

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

Оценка движения c помощью датчиков

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

Например, на основе очень простой оценки:

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

Энкодеры дают большую точность измерения числа оборотов колес. Информация с энкодера может быть преобразована в линейное расстояние умножением на постоянный радиус колеса. Но все же, как правило, для большей точности, все равно проводится калибровка.

Движение и состояние робота для плоскости

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

И определяют местоположение предопределенной точки «центра робота» в мировой системе координат.

Определяет угол поворота между системами координат (угол между осями и ).

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

Интегральное движение на плоскости

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

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

Рассмотрим робота, который может только двигаться вперед или поворачиваться на месте:

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

Если присутствует только вращательное движение, при повороте на угол :

Оценка кругового 2D движения

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



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

Наверх