ДО курс по робототехнике

4 апреля 2013 г.

Робот для состязаний: кегельринг

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

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

В данном цикле заметок, предлагается поразмышлять, над каждым аспектом по отдельности.

Итак, что же может из себя представлять конструкция робота?


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

Первая схема с рулевыми колесами.



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


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

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



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

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

Как показано на рисунке ниже, маленькое колесо за поворот двигателя на 180 градусов, проедет гораздо меньшее расстояние, чем проедет большое колесо при повороте двигателя на эти же 180 градусов.



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



Мотор сделает чуть меньше, чем четверть поворота (9 зубцов, отмеченных красным), а маленькая шестерня при этом обернется на 180 градусов (9 зубцов, отмеченных синим). Т.е. за полный оборот двигателя, колесо сделает 4-5 оборотов вокруг своей оси, тем самым проехав в 4-5 большее расстояние, нежели в случае, когда оно присоединено непосредственно к двигателю.

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


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



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

Итак, базовое поведение робота в состязании Кегельринг можно описать просто:
  1. Найти кеглю в внутри ринга
  2. Выдвинуть ее за пределы ринга
  3. Перейти в пункт 1.
Поскольку известно, что робот в самом начале стоит в центре ринга, то в самом начале для поиска кегли робот может вращаться вокруг своей оси, и если датчик расстояния обнаружит предмет на каком-то заданном удалении от робота, то можно считать, что он обнаружил кеглю. Т.е. вращение робота должно прекратиться для того, чтобы следующими действиями выдвинуть кеглю за пределы ринга.

Что делать дальше, когда кегля выдвинута?

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


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


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

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


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

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


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


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


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

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

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


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


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

Комментариев нет:

Отправить комментарий