воскресенье, 31 октября 2010 г.

Презентация в школе №82

А тем временем шествие по школам продолжалось.. На этот раз мы побывали в гостях лицея 82, огромное спасибо Людмиле Александровне (учитель информатики) и Галине Витальевне (завуч) за организацию встречи со школьниками и родителями. Да, да.. несмотря на утреннее время на нашу презентацию заглянули и родители и смогли задать свои вопросы. Основной аудиторией, конечно, стали мальчишки из 5-7 классов, но и девочки тоже с интересом слушали и …. записались в список желающих на курс! А тем, кто не смог по разным причинам заглянуть на нашу презентацию учителя пообещали вложить наши флаеры в дневники.

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

суббота, 30 октября 2010 г.

Видео с LEGOWORLD 2010 прохошедшего в Дании

На родине LEGO, в Дании опять Событие - фестиваль-выставка LEGOWORLD 2010.

Matthias Paul Scholz выложил самое интересное из того, что он смог заснять в той секции фестиваля, что касалась Lego Mindstorms. Взгляните, может что-то из увиденного может натолкнуть вас на свежие идеи.

среда, 27 октября 2010 г.

NXT-G: передача данных в блок условия (Switch block)

При активном использовании передачи данных (data wires) из одного блока в другой, иногда приходится сталкиваться с проблемой, что невозможно передать данные снаружи блока условия.


Проблему можно попробовать решить переключением в вид блока условия со вкладками. Для этого нужно убрать галочку "Flat view" в окне конфигурации блока:


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


Для того, чтобы передать данные в другую вкладку блока условия, необходимо провести канал данных из нужного входа (из блока Math в примере ниже) к концу "обрывка" канала, предназначенного для передачи данных в блок. Тоже самое можно сделать и с выходом данных из блока.

Техническая спецификация NXT блока

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


NXT-G: калибровка сенсоров освещенности и звука

Навеяно чтением книги "Lego Mindstorms NXT-G Programming Guide"

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

Следовательно, у нас есть два способа бороться с этим:
  1. Каждый раз когда наша окружающая обстановка меняется, мы измеряем новые показания сенсоров звука и освещенности и меняем программу, так чтобы отразить новые условия. Этот процесс долгий, к тому же многие части программы нам придется тестировать и отлаживать заново.
  2. Для каждой новой окружающей обстановки мы производим настройку сенсоров или их калибровку. Таким образом, если в нашей программе мы раз установили значение для самого темного участка в 20%, то в новой окружающей обстановке, после калибровки, темное место опять будет отображаться как 20% - программу изменять и на заново тестировать не придется.

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

Параметр Action позволяет выбрать два действия для блока: калибровать (Calibrate) и сбросить настройки (Delete). В большинству случаев, нужно будет пользоваться действием "калибровать". Но если все-таки есть необходимость сбросить предыдущие параметры калибровки, используйте Delete.
Параметр Value определяет какое значение необходимо откалибровать - минимальное (Minimum) или максимальное (Maximum). Отсюда следует вывод, с использованием одного блока можно откалибровать (или сбросить) только минимальное значение, для того чтобы отклибровать максимальное значение, вы должны использовать блок Calibrate еще раз. Хотя и NXT-G предоставляет возможность использовать только один блок в программе для калибровки только одного значения, автоматически калибруя второе значение, это делать не рекомендуется во избежание возможных проблем калибровки и в работе программы.

Еще одна особенность блока Calibrate в том, что если к блоку NXT подключено несколько однотипных сенсоров (например, три сенсора освещенности), использование двух блоков калибровки для одного из них, приведет к тому, что они автоматически применятся к другим сенсорам этого типа.

Давайте рассмотрим использование же блока Calibrate в программе:

1. Отдельная программа для калибровки сенсоров.

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

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

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

вторник, 26 октября 2010 г.

НИИТ - учебно-тренировочная база

Еще в конце прошлого учебного года, НИИТ показал себя как активный сторонник введения предмета "Робототехника" в образовательный процесс школ. В 2009/2010 учебном году НИИТ запустил учебные курсы "Программирование Лего-роботов", организовал и провел первую в городе робототехническую олимпиаду.

В этом году НИИТ двигается дальше. Результат - на конец октября 4 группы уже запущены: три на базе НИИТ, одна на базе 165 школы. В тоже время ведутся переговоры по набору еще нескольких групп в Автозаводе, Сормово и Московском районах.

Еще один результат нового учебного года - НИИТ зарегистрировался в Федеральной программе "Робототехника: инженерно-технические кадры инновационной России" как учебно-тренировочная база в направлении "Общая робототехника". Поскольку основа данной программы это открытые спортивно-технические соревнования, то регистрация позволяет НИИТ:
  • официально (в рамках Федеральной программы) проведение целенаправленного обучения школьников робототехнике
  • проводить подготовку команд к участию в региональным, Всероссийским и даже Международным робототехническим олимпиадам
  • организовывать и проводить региональные отборочные олимпиады, результаты которых могут засчитываться для участия во Всероссийской олимпиаде
  • участвовать в сертификационных мероприятиях, тем самым повышая уровень специалистов проводящих подготовку и обучение
  • покупать на льготных условиях оборудование и комплектующие для подготовки команд

Особенности работы с сенсором освещенности в View режиме

По результатам чтения статей 1 и 2 на www.legoleaguecoaching.org.

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

Но при получении данных c сенсора освещенности в режиме View есть одна особенность.

Когда вы используете этот режим, чтобы видеть показания сенсора освещенности, чаще всего его показания будут в диапазоне 30-35 для черного цвета и 60-65 для белого. Это неоткалиброванные значения. Если вы калибруете сенсор (а вы должны это делать), эти значения не изменяются, поскольку режим View показывает только неоткалиброванные значения. Для того, чтобы видеть откалиброванные показания, вам нужно самим написать небольшую программу, отображающую значения светового сенсора. Или же воспользоваться уже чужой готовой.

На сайте nxtprograms.com можно найти хорошую программу для выполнения калибровки. Она позволит установить белое и черное значение в 0 и 100, соответственно. Архив с этой программой также содержит код, который позволит вам посмотреть показания сенсора после калибровки.

воскресенье, 24 октября 2010 г.

NXT-G: опрос сенсора расстояния (UltraSonic)

В стандартной поставке Lego Mindstorms NXT есть четыре сенсора:
* касания (Touch)
* звука (Sound)
* световой (Ligth)
* расстояния (Ultrasonic)

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

С сенсором расстояния дела обстоят немного сложнее. По своему физическому устройству его можно представить как передатчик и приемник: передатчик испускает волну в ультразвуковом диапазоне, волна отраженная от удаленной поверхности улавливается приемником.


При написании программ для NXT это означает, что передатчик испускает звуковую волну после того как, программа обратиться к сенсору расстояния.

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

Давайте рассчитаем теоретический предел задержки.

Стандартный ультразвуковой сенсор, поставляемый с набором Mindstorms, позволяет определять расстояние до 2,5 метров (или 100 дюймов). Т.е. зная скорость звука (пусть будет 330 м/c) можно рассчитать, что максимальное время ожидания вернувшейся волны.

Еще одна особенность в том, что работа с сенсором устроена таким образом, что он всегда ждет максимальное время. Т.е. даже если препятствие находится на расстоянии 10 см., то результат программе вернется все равно не раньше, чем через 1/66 секунды.

Простейшая программа позволит проверить так ли на самом деле и не расходятся ли теоретические выкладки с реальным использованием:

Как показывает эксперимент, реальная задержка - это примерно 1/17 секунды (0,058 секунды). Видимо, это связано с внутренней реализацией NXT-G функции опрашивающей сенсор - дополнительные проверки, инициализации, возможно защита для многопотокового использования и т.п.
Следует отметить, что для других языков программирования задержка будет меньше. Например, при аналогичной программе на NXC, он будет примерно 1/34 секунды.

Так что же дает нам это знание?
Чтобы лучше понять это, рассмотрим несколько примеров.

Пример 1.
Необходимо сделать робот-радар. Т.е. датчик установлен на двигателе двигатель вращается так, что робот должен обозревать пространство с углом обзора в 180 градусов. Как результат, отсканированное пространство будет отображено на экране NXT блока.
Пердположим, что время, за которое двигатель делает оборот в 180 градусов - 0,5 секунды. Это значит, что, если программа в цикле опрашивает сенсор расстояния в течении этого поворота, то цикл выполниться 8-9 раз. Иными словами, радар будет "выстреливать" волну каждые 20 градусов.

Очевидно, что такой радар не годиться, поскольку он не обнаружит большинство объектов.
Таким образом, необходимо рассчитать скорость вращения двигателя, так чтобы сенсор расстояния опрашивался как можно чаще в течении поворота. Например, если желательное разрешение радара - 2 градуса, то за один оборот радара сенсор должен опроситься 90 раз, что займет 90/17 = 5,3 секунды. Т.е. двигатель должен двигаться в 10 раз медленнее. Чтобы достичь этого скорее всего придется использовать шестерную передачу.

Пример 2.
Допустим, составлена программа для движения робота вдоль стены на расстоянии 10 см., так что робот находится в трех состояниях: выполнять поворот к стене, выпольнять поворот от стены, не выполнять никакого поворота. Условия смены состояний следующие:
- если расстояние до стены больше 12 см., выполняем поворот к стене
- если расстояние до стены меньше 8 см., выполняем поворот от стены
- если расстояние больше 8 см., но меньше 12 см., не выполнять никакого поворота

Имея два вложенных опроса сенсора, общая задержка выяснения расстояния для того, чтобы среагировать на поворот от стены является 0,117 секунды. При достаточно большой скорости робота, может получиться так, что за это время он может уже доехать до стены и, врезавшись в нее, перевернуться.
Следовательно, при опросе сенсора расстояния в цикле необходимо минимизировать количество обращений к нему.
Например, можно опросить сенсор один раз, занести результат опроса в переменную, а, затем, уже извлекать данные из нее. Для алгоритма описанного выше, это позволит ускорить реакцию на приближающуюся стену почти в два раза:

суббота, 23 октября 2010 г.

Lego Technic и Lego Mindstorms

Многим известно, что детали Lego Mindstorms совместимы с Lego Technic. И вот доказательство:
Lego 8290-2 модель:

А вот, что можно собрать из Lego Mindstorms руководствуясь инструкциями по сборке для указанной выше модели:


Кстати, инструкции по соборке многих Lego Technic моделей можно найти здесь.

Ну и для тех, кто еще сомневается что Lego Mindstorms/Technic круче других серий Lego - смотрите короткий комикс:

NXT-G - младший брат LabVIEW

На LabVIEW Portal создан раздел форума, посвещенный программированию для Lego Mindstorms.

Среди тем, затрагиваемых в этом форуме, использование LabVIEW, а также и NXT-G как его близкого родственника.

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

четверг, 21 октября 2010 г.

Можно ли программировать робота, у которого нет компьютерного блока?

Можно! Не вероятно, но факт.

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

Заднеприводный робот-тележка с управляющей передней осью

Слегка доработанный вариант робота, найденного в Lego-проектах


Инструкции по сборке доступны в виде слайд-шоу.


Фотографии в большего размера доступны в веб-альбоме Picassa

вторник, 19 октября 2010 г.

3D принтер из Lego Mindstorms NXT

На сайте BattleBticks опубликован обзор робота, способного самостоятельно строить различные фигуры из стандартных Lego-блоков.



Робот-принтер состоит из 2400 деталей, включая 3 NXT блока. После загрузки в него модели специально подготовленной посредством Java-программы, принтер изготовит ее используя 1x2, 2x2, 3x2, 4x2, и 8x2 Lego-блоки.



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



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

А счастливчики, которые посетят выставку LegoWorld в Голландии, смогут увидеть это чудо инженерной мысли там в живую.

понедельник, 18 октября 2010 г.

Презентация в школе №126

Сегодня были с презентацией в школе №126.

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

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

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

NXT Remote Control

Всем читателям, доброе время суток!
Вчера, совершенно случайно наткнулся на программку NXT Remote Control. Наконец-то!! Наконец-то!! И для пользователей андройд телефонов появилось возможность управлять роботом через bluetooth. В кратце, програмка имеет два интерфейса для управления роботом. "Button" и "Touch".. В первом случае у нас на экране стрелки: вверх, вниз, влево, вправо. Во втором же режиме у нас на экране что-то типа радара.. работая с котором мы отправляем команды роботу.

QR код для скачивания с маркета:

Интересно послушать мнения от пользователей этой программы:) Жду их в комментах

среда, 13 октября 2010 г.

Идея для урока: изучение свойств шестереночных передач (состязание)

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

Для этого предлагается использовать следующий механизм: Dragster



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



Задание таково: группа учеников разбивается на несколько команд. Каждая команда собирает Dragster, согласно инструкциям. Но при сборке передаточного механизма у каждой команды будет индивидуальное задание:
* одна команда собирает его как есть: большая шестерня на ось двигателей, маленькая - на ось колес.
* другая команда меняет шестеренки местами, так что большая шестерня крепится на ось колес, а мальенкая - на ось двигателей
* еще одна команда собирает устройство вообще без шестерен.

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

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



Состязания между командами можно сделать следующие:
- Кто быстрее? В начале - машины на одной линии. По гомкому сигналу, машины стартуют вместе.
- Кто сильнее (перетягивание каната)? Машины попарно соединяются друг с другом тросом, веревкой или несколькими лего-деталями, скрепленными вместе, так что машины на старте направлены в противоположные стороны. По громкому сигналу, машины начинают перетягивать соперника.
- Кто точнее? Либо проехать какое-то маленькое расстояние (10 см.), либо с помощью датчика освещенности остановиться на черной линии.

По результатам состязаний сделать и обсудить выводы вместе с учениками:
* Если нужна скорость - на двигатель большая шестерня.
* Если нужна сила - на двигатель меньшая шестерня.

Несколько уроков по программированию на NXT-G, LabVIEW и MRS

Еще один ресурс, содержащий уроки по NXT-G. Здесь содержатся примеры программ, для решения базовых задач:
- выход из лабиринта, через повторение действий
- движение вдоль линии
и пр.

Помимо этого, среди обучающих материалова можно найти уроки по LabVIEW и интересные обзоры Microsoft Robotics Studio.

Русскоязычный форум для фанатов NXT

Для тех, кому интересно интернет-общение в формате форумов, можно посоветовать посмотреть на данный ресурс - здесь общаются люди, которые серьезно увлекаются Lego Mindstorms и Lego Technics.
Например, там можно найти информацию о формате мини-программ, которые создаются прямо на блоке в режиме "NXT Program" или о том, варианты починки сломавшегося NXT блока.

Инструкция пользователя NXT 2.0 на русском языке

Если так получилось и вам привезли коробку с NXT 2.0 (8547) из-за границы или вы случайно потеряли инструкцию Lego Mindstorms набора - не отчаивайтесь - инструкцию пользователя на русском языке можно скачать здесь.

вторник, 12 октября 2010 г.

Практическое руководство по работе с Lego Mindstorms NXT

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

Репортажи с Всероссийских этапов Международных состязаний роботов

Если кому-то хочется окунуться в атмосферу робототехнических фестивалей и состязаний роботов, можете ознакомиться с данными роликами:

2010 год:


2009 год:


2008 год:


2007 год:


2006 год:


2005 год:


2004 год:


2002 год:

Регламенты Всероссийских этапов Международных состязаний роботов

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

Итак, ниже можно найти ссылки на регламенты состязаний с 2002 по 2010 года:
2010 год
* Правила состязаний
* Приложение 1: разрешенные детали
* Приложение 2: тех.задание по изготовлению полей

2009 год
* Правила состязаний

2008 год
* Правила состязаний первого этапа (требует регистрации)
* Правила состязаний второго этапа (требует регистрации)

2007 год
* Правила состязаний (требует регистрации)

2006 год
* Правила состязаний

2005 год
* Правила состязаний

2004 год
* Правила состязаний

2002 год
* Правила состязаний

Lego механизмы: конструктопедия по-японски II

Как и многие он-лайн жители, ISOGAWA Yoshihito ведет свой видео блог. В нем он выкладывает примеры своих работ, создание которых он описывает в своей книге.



воскресенье, 10 октября 2010 г.

Идея для урока: изучение свойств шестереночных передач (лабораторная работа)

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

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



Инструкции по сборке можно найти здесь.

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

Результаты экспериментов можно поместить в следующую таблицу

Конфигурация шестерней
Скорость
Насколько быстро двигалась тележка
Сила
Насколько нагружена тележка
   
   
   
   
   
   

Еще одна группа экспериментов с этим же роботов, позволит выяснить на сколько точно можно передвигать тележку с той или иной конфигурацией шестерней: при какой мощности и угле поворота двигателя толкатель сможет переместить тележку на 3 сантиметра?

Конфигурация шестерней
Сила двигателя
Угол поворота
   
   
   
   
   
   

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

Устройство для изучения свойств шестереночных передач

Данный робот может быть использован для изучения свойств шестереночных передач.



Робота можно собирать в парах: один собирает тележку, другой - толкатель.

Толкатель:















Тележка:






Программа:


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

 
 
Related Posts Plugin for WordPress, Blogger...