Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Движение в круге. Выталкивание предметов. Кегельринг

Лекция



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

выталкивание предметов . кегельринг .

 

Задача 2. Кегельринг

(Robolab) 

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

Движение в круге. Выталкивание предметов. Кегельринг

Первый вариант программы на языке Robolab иллюстрирует простейший алгоритм движения в круге с черной границей. Направление движения моторов зависит от показаний датчика освещенности. Значение 5 синего (числового) модификатора означает ожидание  уровня освещенности темнее текущего на 5 пунктов.

Движение в круге. Выталкивание предметов. Кегельринг

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

(NXT-G)

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

Движение в круге. Выталкивание предметов. Кегельринг

Здесь реализован тот же самый алгоритм, что и в программе на Robolab. Блок движения, стоящий после цикла, работает в течение трех оборотов мотора. Этого вполне достаточно, чтобы робот отъехал от линии для разворота. Последние две команды Motor инициируют поворот робота вокруг своей оси. Внимательно проверьте время поворота! Робот должен повернуться своей фронтальной частью внутррь круга для продолжения поиска оставшихся кеглей. Установить точное время поворота можно опытным путем.

Пример реализации более сложного алгоритма с поиском кеглей.

Движение в круге. Выталкивание предметов. Кегельринг

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

 

Танец в круге
Робот живет внутри круга, за пределы которого нельзя выходить. Для выполнения этой задачи надо собрать стандартную трехколесную тележку: два передних колеса ведущие, одно заднее подвижное на шарнире. Об этом говорит сайт https://intellect.icu . Спереди по центру расположен датчик освещенности, направленный строго вниз и находящийся на расстоянии 5-10 мм от пола.
Движение в круге. Выталкивание предметов. Кегельринг

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

Алгоритм действий "Танец в круге" таков:
  1. ехать вперед, пока показания датчика не понизятся на 5 пунктов (лучше 10);
  2. отъехать немного назад (полсекунды);
  3. развернуться примерно на 120-150 градусов (тоже по времени);
  4. повторять пункты 1-3 бесконечно.
Движение в круге. Выталкивание предметов. Кегельринг

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

Вытолкнуть все банки
Несколько пластиковых стаканчиков или пустых жестяных банок расставлены внутри круга, за черной линией на расстоянии 12-15 см от нее - это мусор, от которого необходимо очистить круг за кратчайшее время. Первые попытки запуска робота покажут несколько недостатков:
  1. стаканчики попадают под колеса, падают и плохо выталкиваются;
  2. даже вытолкнутые стаканчики остаются частично внитри круга, поскольку, увидев край, робот сразу устремляется назад;
  3. робот ведет себя как слон в посудной лавке;
  4. робот делает много движений впустую.
Избавимся от первого недостатка. Для этого построим бампер шириной 20-25 см рядом с датчиком освещенности.
 

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

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

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

Для точности управления моторами необходимо использовать другой тип команд: с контролируемым вращением. Эти команды находятся в разделе "Advanced Output Control"  и позволяют задавать мощность моторов от -100 до 100. В новом примере для компактности разместим все числовые параметры сверху, а модификаторы портов снизу.
Движение в круге. Выталкивание предметов. Кегельринг

Не делать лишних движений
Желание проконтролировать движение робота приводит к необходимости изменить траекторию движения таким образом, чтобы каждый раз, доехав до края, он возвращался в центр круга.
Севомоторы NXT имеют встроенный датчик оборотов, этим непременно надо воспользоваться. Для этого нужно обнулять показания датчика оборотов, когда робот окажется в центре. Отсчет времени невозможно повернуть вспять, чтобы снова придти в нулевую точку, а моторы можно. По замыслу робот проезжает некоторое количество оборотов вперед, после чего следует назад, пока датчик оборотов снова не будет ноль.
В Robolab для этого следует использовать специфический блок, который не обнуляет показания датчиков оборотов  при вызове (с буквой А на пиктограмме). Кроме того, в примере добавлены модификаторы "Encoder C" из палитры "NXT Commander" для ясности различия между командами управления мотором и датчиками.
Движение в круге. Выталкивание предметов. Кегельринг

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

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

 

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

Из статьи мы узнали кратко, но содержательно про движение в круге
создано: 2014-08-18
обновлено: 2021-03-13
133591



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

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

Термины: Робототехника