СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Lego Mindstorms NXT 2.0 — краткое знакомство

Нажмите, чтобы узнать подробности

Лет эдак в 10-11, после долгих и беззаботных лет игры с контрукторами Lego, я узнал о существовании великолепного набора Mindstorms, который позволял создавать самых настоящих роботов без специализованных знаний электроники, электротехники и даже программирования. Я сразу же заинтересовался данной серией, но тогда моим мечтам обладать Mindstorms по различным (в основном — финансовым) причинам не суждено было сбыться. Сейчас мне 20 и в честь юбилея друзья (спасибо им!) решили окунуть меня назад в детство и таки дать возможность полепить собственных роботов. Правда, в этот раз всё будет серьёзнее, чем в моих детских мыслях — мы будем действительно программировать Mindstorms под Debian GNU/Linux.

Что же это?

Mindstorms NXT 2.0 — третий продукт в линейке Mindstorms — специальной серии конструкторов Lego, предназначенной для создания программируемых роботов. Конструктор поставляется с набором обычных деталей серии Lego Technic, а также специальных сенсоров (расстояния, освещенности, касания), нескольких двигателей-тахометров и специального блока NXT. Подробнее о ко Mindstorms можно узнать из вот этой статьи. К слову о NXT — в этой небольшой коробочке припрятаны целых два микроконтроллера — 32-битный ARM7 и 8-битный AVR, 512 Мб RAM, более 256 Кб flash-памяти, монохромный ЖК-дисплей, динамик, USB-порт, а также 7 портов для подключения сенсоров. А, да — еще отсек для 6 батареек или аккумулятора, который продается отдельно на сайте shop.lego.com. Собственно, NXT и является «сердцем» любого создаваемого робота. Ознакомившись с кратким руководством, включенным в комплект, можно вполне себе создать робота, который выполняет какие-нибудь нехитрые действия вообще без всякого программирования. Например, за буквально 40 минут вместе со сборкой, можно сделать робота, который будет ездить по комнате и старательно избегать препятствия. Это делается прямо на самом устройстве, без подключения к компьютеру, на встроенном монохромном дисплее. Неплохо, да? Собственно, данный робот и будет нашей основной тестовой моделью. Но мы попробуем немного усовершенствовать его навыки. И для этого мы напишем небольшой кусочек кода.

А как?

Действительно. Идущее в комплекте ПО работает только в Windows и Mac OS. А у нас, внезапно, Debian Squeeze. К счастью, Mindstorms обладает огромным сообществом фанатов, которые придумали решение данной проблемы — использование альтернативного ПО для программирования роботов, в частности Bricxcc (здесь выложен полнейший мануал по настройке всего и вся). А теперь немного теории — в программировании Mindstorms, как правило, помимо визуального среды ROBOLAB для Windows и Mac OS используется язык RCX, однако среди фанатов одним из наиболее популярных языков является достаточно простой NXC (Not eXactly C). Простая программа на NXC выглядит примерно так:

  1. task music()
  2. {
  3. int lastTone=5000;
  4. while(true)
  5. {
  6. int tone=Random(5000)+500;
  7. int duration=Random(500);
  8. PlayTone(tone,duration);
  9. Wait(duration);
  10. }
  11. }
  12. task main()
  13. {
  14. start music;
  15. while(true)
  16. {
  17. /* Determine Next Action */
  18. unsigned int duration=Random(5000);
  19. unsigned int motorSpeed=Random(100);
  20. unsigned int syncMode=Random(3);
  21. /* Display Next Action */
  22. ClearScreen();
  23. NumOut(0,LCD_LINE1,duration);
  24. NumOut(0,LCD_LINE2,motorSpeed);
  25. NumOut(0,LCD_LINE3,syncMode);
  26. /* Perform Next Action */
  27. switch(syncMode)
  28. {
  29. case 0:
  30. OnFwdReg(OUT_AC,motorSpeed,OUT_REGMODE_SYNC);
  31. break;
  32. case 1:
  33. OnRevReg(OUT_AC,motorSpeed,OUT_REGMODE_SYNC);
  34. break;
  35. case 2:
  36. OnFwdSync(OUT_AC,motorSpeed,-100);
  37. break;
  38. case 3:
  39. OnRevSync(OUT_AC,motorSpeed,-100);
  40. break;
  41. }
  42. Wait(duration);
  43. }
  44. }

* This source code was highlighted with Source Code Highlighter.

Для справки — данная программа заставляет «танцевать» нашего робота под нечто, напоминающее музыку. Не буду спорить, программа совсем не сложна для понимания, но достаточно громоздка. И её можно заметно упросить, используя вместо написания кода на NXC специальный конвертер PyNXC. Иначе говоря, мы будем писать код на Python'е, а PyNXC будет преобразовывать его в NXC-код и загружать на устройство, избавив нас от необходимости писать громоздкий код на подобии Си.

Пишем программу!

Ну, а теперь, собственно, напишем на Python'е программу для путешествия нашего робота среди прозрачных чашек, но используя более грамотный алгоритм разворота:

  1. # in cm
  2. DEFINE NEAR = 7
  3. def main():
  4. DefineSensors(None, None, None, EYES)
  5. while True:
  6. OnFwd(OUT_BC, 50)
  7. while SensorVal(4) > NEAR:
  8. pass
  9. Off(OUT_BC)
  10. while SensorVal(4) < NEAR:
  11. OnFwd(OUT_B, 50)
  12. Wait(100)

* This source code was highlighted with Source Code Highlighter.

Теперь наш робот научился разворачиваться на месте и, как только мешающий объект пропадет с поля его зрения, продолжать движение вперед. Как вы уже, наверное, заметили, программировать Mindstorms очень просто. Стоит также сказать, что помимо NXC и Python с использованием PyNXC, можно писать код на Java, Lua, Ruby, Ассемблере, а также, что логично, использовать ассемблерные вставки в других языках. Благодаря всему этому Mindstorms из детской игрушки превращается в весьма мощную штуку, позволяющую создавать сложные и «умные» механизмы, как например вот эта гитара: Или этот сортировщик цветных шариков: А самое приятное во всём этом — в комплект поставки Mindstorms NXT 2.0 уже включено большинство необходимых деталей. Единственное, что действительно может понадобится — дополнительные сенсоры, которые можно купить, например, в официальном магазине Lego.

06.04.2015 10:15


Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!