вторник, 7 апреля 2015 г.

Кегельринг

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


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

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

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

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

Наше лучшее время пока примерно 30 сек.
3. Идея третья "Спираль"
Движение по спирали - самый эффективный алгоритм, позволяющий выбить кегли за кратчайшее время. Выбивая кегли таким образом, робот не использует датчик расстояния и лишь повторяет выверенную траекторию спирали.
Спираль - это дуга с меняющимся радиусом, поэтому сначала научимся двигаться по кругу диаметром 1 м. В примере, который расположен ниже, скорости левого и правого моторов равны v1=100 и v2 =70. Но этот показатель (70) зависит от расстояния между колесами, поэтому для своего робота надо установить экспериментально. 
Минимальный радиус круга будет получен при значении v2=0 (робот будет крутиться вокруг своего правого колеса). Будем увеличивать скорость мотора от 0 до 70 (здесь надо поставить ваше значение, определенное в первом эксперименте) на единицу 70 раз. Достигнув желаемого значения, продолжим движение по кругу в течении некоторого времени.
Задержка 0,1 сек обеспечит выполнение цикла за 70*0,1=7 (сек). Что уже хорошо, но, надо признать, что спираль раскручивается слишком быстро, робот пропускает кегли.
Уменьшим величину приращения скорости, это позволит повысить плотность витков спирали. Введем новую величину a, которая будет означать ускорение второго мотора, работать будем с дробными числами (тип float).
По правилам кегельринга робот не может выходить из круга больше чем на 5 сек. Поэтому, даже в спиральном алгоритме требуется использование датчика освещенности. Оптимальное решение - при наезде на ограничительную черную линию прекратить наращивание радиуса дуги и переключиться на движение по линии с помощью датчика.
В конце 2012 года в СПб был поставлен очередной рекорд - 2,4 сек.

По результатам соревнований

4-5 апреля учащиеся курса "Робототехника" впервые приняли участие в соревнованиях по "Интеллектуальному сумо 15 на 15". Были подготовлены пять роботов:
1. УДАЧА Попов Георгий
2. СЛЕНДЕРПУЗИКИ Дьяконов Александр
3. ВОЛКИ Оспельников Алексей
4. РОБОФОКСИ Шишикин Андрей и Скарин Виталий
5. ТИГР Герасимук Ярослав
В этот раз нам с трудом удалось зарегистрироваться на соревнования, так как были изменения правила регистрации: появились ограничения по некоторым наиболее популярным видам спорта. Кроме того, победители районных соревнований теперь имеют возможность попасть в play-off миную отборочные соревнования.
Очередь на регистрацию
 
Давай знакомиться. Сыграем?
Итак, в первый день, 4 апреля, наши команды попали в разные команды группового этапа. В этом этапе соревнования проходили по круговой системе (т.е. каждый играл с каждым). 
Команда РОБОФОКСИ играла на столе № 1 (группа А). Это была самая многочисленная группа - 9 участников. Команда 7 раз выиграла, одни раз проиграла. Заняла II место в своей подгруппе и вышла в play-off.
Все результаты можно посмотреть здесь

Робот УДАЧА выступал на столе № 2 (группа В). Четыре победы, два поражения, III место в подгруппе, не дающее право выходя в play-off.

 

На столе № 3 (группа С) выступал робот ВОЛКИ. Одна победа, четыре поражения. Именно в этой группе выступал будущий победитель соревнований Тесла.

 

На 4 столе выступала команда СЛЕНДЕРПУЗИКИ. Шесть побед, одно поражение. Первое место в подгруппе. Выход в play-off.
 
Измерение, взвешивание

Больше всех не повезло Ярославу, робот ТИГР  попал в группу E, соревнования для которой были отложены до 14 часов.  Две победы, 5 поражений. В это группе мы увидели очень мощного робота Оборотень, который по итогам стал третьим в соревнованиях.

 

 

Для участия в play-off надо было вернуться на соревнования 5 апреля. Два наших робота СЛЕНДЕРПУЗИКИ и РОБОФОКСИ прибыли на соревнование, в котором принимали участие 16 сильнейших команд Санкт-Петербурга, Ленинградской области, Великого Новгорода. 
Второй соревновательный день начался с торжественного открытия.
Главные судьи в различных номинациях
Соревнования проходили по двойной олимпийской системе. Система проведения турниров, в которой участник выбывает из турнира после двух поражений. В этом и есть отличие от простой олимпийской системы, в которой к вылету приводит единственное поражение.
Все началось с измерений и взвешиваний.
 
 
Первая игра СЛЕНДЕРПУЗИКИ и Супербот, РОБОФОКСИ и Дракон  - проигрыш
После первого проигрыша обе наши команды уходят на утешительный раунд.
 
Робот СЛЕНДЕРПУЗИКИ выигрывает у команд Супер Сумо и Deris ira
СЛЕНДЕРПУЗИКИ проигрывают команде Оборотень (которая займет итоговое III место) и заканчивают выступления в play-off (2 поражения, 2 победы)
 
 РОБОФОКСИ одержали две победы у роботов Листик I и Внедорожник
Дальнейшее продвижение РОБОФОКСИ остановил тот самый СуперБот,
которому проиграли СЛЕНДЕРПУЗИКИ в певом раунде
Наш результат - VII место у обоих команд. Две победы.


Победитель Тесла
 

  
 


Второе место Иван

Третье место Оборотень