¬ведение в робототехнику с LEGO MINDSTORMS

14.12.2012, 14:20



¬ статье предлагаетс€ задача, которую должен решить робот LEGO MINDSTORMS, запрограммированный с помощью NXT-G, и предоставл€ютс€ необходимые шаги дл€ достижени€ одного из возможных решений поставленного задани€.

«адание

¬ середине круга, ограниченного черной линией, наход€тс€ две полные 330cc банки содовой. ¬аша задача - создать и запрограммировать робот таким образом, чтобы он вынес банки из круга, после чего проиграл мелодию и остановилс€.

¬ ¬ашем распор€жении находитс€ один набор LEGO MINDSTORMS NXT 2.0, который, по неизвестным причинам, не содержит никаких других датчиков, кроме датчика касани€ и датчика цвета (светочувствительный датчик может использоватьс€ взамен датчика цвета).

— чего начать

ѕланирование - основной принцип, если ¬ы хотите получить хороший результат. »сходной точкой должно быть продумывание и определение шагов, которые необходимо предприн€ть. Ќе забывайте, что люба€ задача с вовлечением в нее роботов состоит из двух разных, хот€ и тесно св€занных, частей: аппаратной (робот непосредственно) и программной (программа).  ажда€ из этих частей обусловливает другую, потому в нашем случае использовани€ метода проб и ошибок нужно принимать во внимание обе части.

»меем следующие задачи:

  1. –азработка и конструирование робота.
  2. Ќаписание программы (с использованием NXT-G путем соединени€ блоков). ƒл€ этого сначала необходимо написать алгоритм, а затем уже преобразовать его в программу.
  3. “естирование программы.
  4. ¬несение коррективов.

–обот

Ќеобходимо помнить об ограничени€х (в конструировании и программировании) этой задачи и возможностей робота. ќни следующие:

ќграничени€

  • –обот может использовать только датчик касани€ и датчик цвета/света. Ќет ограничений на размер или количество деталей, которые он должен переместить и повернуть на игровой площадке.
  • –обот должен обнаружить черную линию, ограничивающую область, внутри которой он об€зан находитьс€.
  • –обот должен определить, когда  стыкаетс€ с одной из банок, и переместить ее за пределы пол€.
  • –обот должен знать, когда вынес обе банки из пол€. ѕри создании и тестировании робота часто возникают сложности, которые требуют модификаций. Ќапример, одна из сложностей, с которой ранее сталкивались, св€зана с датчиком цвета: он определ€л все как черное. ѕосле нескольких тестов и изменений стало пон€тно, что проблема заключалась в слишком близком расположении датчика к поверхности пола, таким образом, не было пространства дл€ отражени€ света в датчик. ѕлавное перемещение датчика немного выше решило проблему.

јлгоритм

ѕрежде, чем начать комбинировать блоки кода, составл€ющие программу, было бы неплохо записать ее на нормальном €зыке, то есть, записать шаги, которые должен сделать робот дл€ выполнени€ его миссии. Ќе бывает одного-единственного решени€ дл€ задачи, люди выполн€ют одни и те же задачи по-разному. “ак после записи программы, подумайте об альтернативных способах достижени€ требуемой цели более эффективным способом.

¬ таком случае задачи программировани€ следующие:

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

2. ƒвигайтесь вперед до тех пор, пока робот не обнаружит черную линию или объект.

a. ≈сли робот обнаружит объект, продолжайте двигатьс€ вперед, пока он не определит черную линию (означает, что объект находитс€ теперь вне игрового пол€), добавьте единицу к счетчику.

3. ќстановитьс€, развернутьс€ и вернутьс€ назад.

4. ≈сли счетчик достигает значени€ 2, проиграть мелодию и остановитьс€. ¬ противном случае продолжить поиск.

Ёто - только начальна€ точка дл€ совершенствовани€ программных навыков.

 

ѕрограмма

“еперь ¬ы знаете, какие шаги должен предприн€ть робот дл€ выполнени€ своей миссии, но не рекомендуетс€ сразу запускать всю программу. Ёто - очень полезна€ стратеги€ разбивать сложные задачи на более легкие. ¬ этом случае ¬ы можете разделить программу на две части и объединить их позже.

  1. –обот произвольно перемещаетс€ в пределах игрового пол€, не покида€ его.
  2. –обот перемещает банку за пределы пол€, возвращаетс€ назад и проигрывает мелодию.

 

«адание: часть 1

ѕрежде, чем записать программу, рассмотрим алгоритм:

  1. ѕеремещение вперед до тех пор, пока датчик цвета определ€ет черный цвет.
  2. ќстановка.
  3. ¬озвращение назад.
  4. ѕоворот.
  5. ѕовтор шагов 1-4.

ќжидание робота, пока датчик не считает черный цвет, можно задать с использованием любой из следующих трех опций. ѕрименение каждой из них даст тот же самый результат, но треть€ опци€ открывает путь к объединению частей задачи.

ѕрограмма будет следующей:

ѕротестируйте программу и удостоверьтесь, что ее поведение соответствует ожидани€м, но прежде прочитайте Ђ“естирование роботаї в конце этой статьи.

 

«адание: часть 2

„тобы сделать задачу проще, предположим, что робот имеет дело с одной из банок (таким образом, ему не нужно ее искать), что требует более легкого алгоритма, например, как этот:

  1. ѕеремещение вперед, пока не произойдет столкновение с банкой.
  2. ѕродолжение перемещени€, пока не достигнете черную линию на краю игрового пол€.
  3. ќстановка.
  4. ¬озвращение назад.
  5. ѕроигрывание мелодии.

ѕолна€ программа

≈сли две части задачи по отдельности работают, как ожидалось, пора объединить их. —оздадим переменную, с помощью которой будем фиксировать число банок, перемещенных за пределы пол€. ѕеременна€ создаетс€ опцией ќпределить ѕеременную в меню »нструменты и задаетс€ с начальным значением 0 таким образом:

—начала проверьте, можно ли контролировать два датчика одновременно и принимать решени€ на основании их показаний (шаг 2 алгоритма).

‘рагмент кода на изображении начинаетс€ с блока перемещени€ дл€ приведени€ робота в движение прежде, чем запустить цикл, который повтор€етс€ до тех пор, пока или датчик цвета считывает черный цвет линии, или датчик касани€ зажат (вступает в контакт с банкой). ÷икл непрерывно считывает показани€ двух датчиков и посредством логической операции (в этом случае OR), комбинирует оба показани€, генериру€ логическое значение, которое €вл€етс€ истинным, если происходит контакт с банкой или обнаруживаетс€ черна€ лини€, либо оба фактора имеют место одновременно.

–обот должен знать, достиг ли он границы игрового пол€ или коснулс€ банки. — этой целью можно использовать условие, которое будет выполн€тьс€ только, если датчик касани€ был активирован. ¬ этом случае робот будет перемещать банку до тех пор, пока не достигнет черной линии, затем добавит единицу к счетчику (шаг 3).

ѕосле остановки, возвращени€ и поворота робота (шаг 4) необходимо проверить, сколько банок было перемещено за пределы игрового пол€. “аким образом, программа провер€ет значение счетчика и, если оно равно 2, завершает цикл, после чего робот проигрывает мелодию и останавливаетс€ (шаг 5).

 

“естирование робота

“еперь можно протестировать робота и оценить результаты. ≈сли они не будут соответствовать ожидани€м, то необходимо оценить, нужно ли вносить изменени€ в конструкцию робота или программу.

–екомендаци€! Ќе делайте одновременно слишком много изменений, поскольку это затрудн€ет определение того, какие изменени€ улучшают или ухудшают поведение робота.

 

 ак продолжать

Ќа данном этапе можно провести следующие модификации:

  1. ѕосле достижени€ черной линии робот возвращаетс€ назад и поворачиваетс€, но он всегда двигаетс€ одним и тем же путем. »змените программу так, чтобы сделать каждый поворот случайным (например, при помощи броска кубика дл€ определени€, сколько раз повернутьс€).
  2. ѕри наличии ультразвукового датчика робот не будет перемещатьс€ вслепую. ќн в состо€нии определить местоположение банок, не каса€сь их.
  3. «амените банку на что-то более т€желое (на большую банку или что-то подобное). Ёто - интересное зан€тие вроде соревновани€ по сумо с мертвым весом.

 

»сточник: электронный журнал ¬ЂHispabrick Magazine 010 English Edition¬ї



ѕодробности стоимость демонтажа металлоконструкций здесь. ≈сли вы хотите видеть на нашем сайте больше статей то кликните ѕоделитьс€ в социальных сет€х! —пасибо!
—мотрите также:

ќбратите внимание полезна€ информаци€.