Дополнительный режим джойстика



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

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

тратили на каждый двигатель по 8 бит информации, что при имеющейся точности движений является избыточным. Займем 1 бит для передачи показания датчика касания, у которого вариантов всего два: 0 (отпущен) и 1 (нажат). Заменив младший бит четности, мы потеряем в точности управления в 2 раза, что будет практически незаметно (рис. 8.144).

Закодированное значение

644в диапазоне44740...465535448

00110100142431001001142431{

старший байт, 7бит, S1 значение e1+128 значение

                                         в диапазоне 0...255         (e1+128) / 2 2

Рис. 8.144. Замена бита четности на показания датчика касания S1.

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

 

L = (e1 + 128) ∙ 256 + (e2 + 128) / 2 ∙ 2 + S1 – 32 768.

 

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

 

292


v = (m + 32 768) / 256 – 128, u = (m + 32 768) % 256 / 2 ∙ 2 – 128, k = (m + 32 768) % 2, v = v ∙ (k + 1), u = u ∙ (2 – k) / 2.

 

В переменную k будет записано переданное значение S1. Используя ее, смоделируем режим «турбо», т. е. увеличение скорости v и понижение чувствительности к управлению u (рис. 8.145). Выбрав курс робота в обычном режиме, можно включить «турбо» нажатием кнопки, и робот выполнит рывок в нужном направлении.

 

Рис. 8.145. Режим «турбо» включается датчиком касания на передатчике.

Другой пример использования дополнительного бита — это нанесение удара по мячу с помощью третьего мотора. По правилам игры в управляемый футбол, которая с 2011 г. проводится на Математикомеханическом факультете Санкт-Петербургского государственного университета (СПбГУ), размер робота в момент удара по мячу не должен превышать цилиндра диаметром 22 см и высотой 22 см. 

Для того, чтобы запрограммировать удар, необходимо логически отделить первый полученный сигнал к удару от всех последующих до тех пор, пока «клюшка» не будет приведена в исходное положение. В пылу игры человек может несколько раз нажать на кнопку и продержать ее в нажатом состоянии существенно дольше, чем это необходимо. Задача робота по требованию спокойно от начала до конца выполнить очередной удар и приступить к следующему только в том случае, если после завершения продолжает поступать соответствующий сигнал. Алгоритм приемника приведен на рис. 8.146. Для передатчика подойдет программа из предыдущего примера (рис. 8.145).

293

 

Рис. 8.146. Удар по мячу роботом с третьим мотором.

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

Пример робота с ударным механизмом изображен на рис. 8.147. Его разработал ученик физико-математического лицея № 239 Илья Балташов. Игра в футбол с такими роботами происходит в формате 3 · 3 или 5 · 5 на поле размером 4 · 6 м. В качестве покрытия используется ковролин. Мяч для гольфа оказался наиболее подходящим для такого размера роботов, хотя можно использовать и мячик из набора 9797.

 

Рис. 8.147. Робот с ударным механизмом для игры в футбол.

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

294

ClearMessage(); // Может не работать в RobotC 3.0  temp = message;

}

if (message!=0)

{

k=message-1; // Сообщение приходит на 1 больше  v=messageParm[1]; u=messageParm[2];

motor[motorA]=v+u;

motor[motorB]=v-u;  

nxtDisplayTextLine(0, "k=%d", k); nxtDisplayTextLine(1, "v=%d", v); nxtDisplayTextLine(2, "u=%d", u); wait1Msec(10);

}

}

}

В среде RobotC реализованы команды подключения к другому устройству в программном режиме, а также ряд других возможностей Bluetooth, позволяющих повысить стабильность работы. Примеры находятся в папке Sample Programs\NXT\Bluetooth Communication.

Роботы-манипуляторы

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

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

Стрела манипулятора

Для освоения управления манипулятором следует вернуться к контролю положения двигателя с помощью П-регулятора, которое описано в главе «Алгоритмы управления». Только конструкция будет несколько отличаться от описанной (рис. 8.148 8.149).

296

 

Рис. 8.148. Крепление мотора к корпусу NXT горизонтально на уровне поверхности. Штифт-полуось вствляется в вал мотора снизу.

 

Рис. 8.149. Первое колено манипулятора.

Стрела манипулятора расположена горизонтально. Алгоритм управления состоит из двух параллельных задач. В первой работает П-регулятор, который удерживает мотор в положении alpha. Во второй положение alpha изменяется со временем (рис. 8.150).

 

Рис. 8.150. Управление горизонтальным положением стрелы манипулятора.

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

297

Манипулятор с захватом

 

Рис. 8.151. Установка захвата на второй мотор.

 

Рис. 8.152. Мотор с захватом закрепляется на диске первого мотора.

Программирование робота с двумя степенями свободы (рис. 8.151 8.152) осуществляется аналогично. Новая переменная beta будет определять положение второго мотора. Расширьте вторую задачу, подобрав подходящие значения для открывания и закрывания захвата (рис. 8.153). Не забывайте, что стартовое положение определяет все.

 

Рис. 8.153. Заготовка для управления двумя моторами на основе П-регуляторов. Необходимо продолжить цикл в параллельной задаче.

298


Заключение

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

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

 

Ваши вопросы и предложения автору отправляйте по адресу robobook@mail.ru.

Литература

1. Ананьевский М. С., Болтунов Г. И., Зайцев Ю. Е., Матвеев А. С., Фрадков А. Л., Шиегин В. В. Санкт-Петербургские олимпиады по кибернетике. Под ред. Фрадкова А. Л., Ананьевского М. С. СПб.: Наука, 2006.

2. Boogaarts M., Torok R., Daudelin J., et al. The LEGO Mindstorms NXT Idea Book. San Francisco: No Starch Press, 2007.

3. Isogawa Y. LEGO Technic Tora no Maki, Version 1.00 Isogawa Studio,

Inc., 2007, //Электронный ресурс

[http://www.isogawastudio.co.jp/legostudio/toranomaki/en/].

4. Constructopedia NXT Kit 9797, Beta Version 2.1, Center for Engineering

Educational Outreach, Tufts University, 2008, //Электронный ресурс [http://www.legoengineering.com/library/doc_download/150-nxtconstructopedia-beta-21.html].

5. Kelly J. F. Lego Mindstorms NXT. The Mayan adventure. Apress, 2006.

6. Wang E. Engineering with LEGO Bricks and ROBOLAB. Third edition. College House Enterprises, LLC, 2007.

7. Perdue D. J. The Unofficial LEGO MINDSTORMS NXT Inventor's Guide. San Francisco: No Starch Press, 2007.

8. Белиовская Л.Г., Белиовский А.Е. Программируем микрокомпьютер NXT в LabVIEW. М: ДМК Пресс, 2010.

9. Азимов А. Я, робот. Серия: Библиотека приключений. М: Эксмо, 2002.

Приложения

П.1. Названия деталей

 

П.2. Правила состязаний

Регламент соревнований роботов «Кегельринг»[15]

(по версии Ассоциации спортивной робототехники)

 

10. Условия состязания:

 в наиболее короткое время робот, не выходя за пределы круга,

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

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

 

Рис. П.2.1. Поле для кегельринга.

11. Ринг:

 цвет ринга — светлый;  цвет ограничительной линии — черный;  диаметр ринга 1 м (белый круг);  ширина ограничительной линии 50 мм;

12. Кегли:

 кегли — жестяные цилиндры, изготовленые из пустых стандарт-

ных жестяных банок, используемых для напитков;

диаметр кегли 70 мм;  высота кегли 120 мм;  вес кегли — не более 50 г.

13. Робот:

 максимальная ширина робота 20 см, длина — 20 см;  высота и вес робота не ограничены;  робот должен быть автономным;

 во время соревнования размеры робота должны оставаться неиз-

менными и не должны выходить за пределы 20 · 20 см;  робот не должен иметь никаких приспособлений для выталкива-

ния кеглей (механических, пневматических, вибрационных, акустических и др.);

 робот должен выталкивать кегли только своим корпусом;  запрещено использование каких-либо клейких приспособлений на

корпусе робота для сбора кеглей.

14. Игра:

 робот помещается строго в центр ринга.  на ринге устанавливается восемь кеглей.

 кегли равномерно расставляются внутри окружности ринга. На каждую четверть круга должно приходиться не более двух кеглей. Кегли ставятся не ближе 12 и не далее 15 см от черной ограничительной линии. Перед началом игры участник состязания может поправить расположение кеглей. Окончательная расстановка кеглей принимается судьей соревнования;  главная цель робота состоит в том, чтобы вытолкнуть кегли за

пределы круга, ограниченного линией;  кегля считается вытолкнутой, если никакая ее часть не находится

внутри белого круга, ограниченного линией;  один раз покинувшая пределы ринга кегля считается вытолкнутой

и может быть снята с ринга в случае обратного закатывания;  робот должен быть включен или инициализирован вручную в на-

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

15. Правила отбора победителя:

 каждой команде дается не менее двух попыток (точное число оп-

ределяется судейской коллегией в день проведения соревнований);  в зачет принимается лучшее время из попыток или максимальное

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

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


Дата добавления: 2019-02-22; просмотров: 414; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!