вторник, 30 октября 2012 г.

Еще одна коробка передач

Буквально сразу после недавней статьи про коробку передач на моторах Technic в интернете появилась другая - теперь уже, управляемая NXT блоком. Автор этого устройства в своем блоге (на английском) очень подробно рассказывает о конструктивных особенностях своего детища.

Алгоритмы: черно-белое движение. Часть VI

Продолжение. В этот раз не будет сложных формул и замудренных графиков - данная заметка посвящена именно тому для чего и предназначались роботы, а именно нудной и повторяющейся деятельности.
Но прежде нужно понять, где же в предыдущих заметках была эта нудная и повторяющаяся работа. Для этого взглянем еще раз на формулы.
Первая вычисляет коэффициент пропорциональной составляющей.
А вторая позволяет рассчитать мощность для каждого мотора.
Где, LA - предполагаемая освещенность на границе линии, которую можно определить по следующей, третьей формуле.
Можно заметить, что и KP и LA использующиеся в формуле для мощностей, зависят от уровней освещенности: на белой - Lmax и черной - Lmin частях поля. А это значит, что каждый раз когда робот попадает в другие условия освещенности, или у него изменяется датчик или его расположение относительно поверхности поля, то и KP, и LA придется рассчитывать заново, подставлять в программу и перекомпилировать ее. Поэтому вот это очень и хочется возложить на плечи робота - пусть он делает вычисления вместо человека.

Как бы тогда хотелось, чтобы устройство функционировало?

воскресенье, 28 октября 2012 г.

суббота, 27 октября 2012 г.

Датчик магнитного поля и мультиплексор для датчиков касания от SmartBricks

Компания SmartBricks решила весь октябрь радовать LEGO робототехников новыми датчиками.
В начале месяца это были датчик звука и приемник сигналов пульта ДУ. Сейчас же пойдет речь о мультиплексоре (hub) датчиков касания и датчике магнитного поля.

четверг, 25 октября 2012 г.

Алгоритмы: черно-белое движение. Часть V

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

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

Для составления таблицы еще раз укажем формулы зависимости мощностей от показаний датчика, а также будем считать, что датчик на самом светлом участке поля (Lmax) показывает 60%, а на темном (Lmin) - 24%, таким образом получается, что ожидаемая освещенность на границе линии (LA) - 42%.

среда, 24 октября 2012 г.

Алгоритмы: черно-белое движение. Часть IV

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

вторник, 23 октября 2012 г.

Кружок по робототехнике. Занятие третье

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

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

Магнитный датчик касания SmartBricks

Еще один датчик SmartBricks, который попал на тестирование в руки авторов блога NiNoXT - магнитный датчик касания. Основное преимущество данного датчика перед стандартными датчиками касания - это то, что он не требует физического контакта с поверхностью, касание с которой необходимо проверить.
На самом деле данное преимущество довольно актуально во таких случаях, когда физическое касание либо не желательно вообще, либо жесткость датчика-кнопки не позволяет совершить деликатное, мягкое касание. Примеры:
  • касание с легким предметом
  • касание с предметом, который нельзя тревожить и/или перемещать с места даже на чуть-чуть
Раньше такого рода касания можно было определять только с помощью датчика освещения и/или цвета. Сейчас же пришел на помощь еще один датчик, о котором пойдет речь в данной заметке.

воскресенье, 21 октября 2012 г.

Сортировка данных на NXT

В начале этой неделе я опубликовал вопрос: как в произвольном тексте найти 10 наиболее часто используемых слов? В программах для NXT обработка кучи данных с сенсоров является обыденным делом, но что если тебе надо узнать только 10 самых больших или маленьких значений? Как ты будешь решать этот вопрос? В языке RobotC нет специальных функций для сортировки; в NXC есть единственная ArraySort функция, упорядочивающая численные массивы по возрастанию. Поэтому в данной статье я решил провести небольшое исследование различных алгоритмов сортировки. Я помню эту классную демонстрацию работы алгоритмов, которая наглядно показывает различия в принципах сортировки. Я подумал, что будет реально здорово, если я сделаю тоже самое на NXC. И я сделал это.

Новые элементы LEGO Mindstorms - для быстрой и удобной работы


В интернете существует много интересных и нужных начинаний. Возьмем, к примеру, два из них: первый - MinuteBot, в рамках которого разрабатываются новые концептуальные проекты для улучшения элементной базы LEGO Mindstorms конструкторов, и второй - KickStarter - сайт, позволяющий собрать деньги на реализацию какой-нибудь уникальной идеи.
Теперь объединим эти два проекта и получим, спонсируемую разработку инноваций для LEGO Mindstorms конструкторов. Иными словами, авторы из проекта MinuteBot представляют на суд общественности идею новой и интересной шутки для конструктора LEGO Mindstorms, а общественность решает - имеет эта штука право на воплощение и существование или нет, причем решение принимается за счет спонсирования проекта реальными деньгами каждого отдельного проголосовавшего. Если идея набирает достаточно средств, то MinuteBot тратит их на организацию и налаживание производства нового продукта.

суббота, 20 октября 2012 г.

Новый видеоблог о робототехнике и LEGO

Mike McFarlane из Великобритании под псевдонимом MooSooBoo недавно начал вести видеоблог, в котором он делиться своими новостями в целом о робототехнике и о LEGO-роботах в частности.
Также в своих видео-заметках он старается рассказать о своих LEGO изобретениях - так, например, в последнем выпуске он продемонстрировал свой радиоуправляемый танк, а в предпоследнем вездеход 4x4.

пятница, 19 октября 2012 г.

LEGOWORLD 2012 в Голландии

В Голландии в городке Zwolle с 17 по 23 октября проходит традиционная выставка LEGOWORLD. Как это происходит? Есть там, на что посмотреть? Судите сами!

среда, 17 октября 2012 г.

Алгоритмы: черно-белое движение. Часть III

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

Как же это сделать?

Ниже представлена диаграмма, показывающая как изменяется характер движения тележки в зависимости от того, с какой стороны границы находится датчик света. На границе линии датчик показывает 50% освещенности.

вторник, 16 октября 2012 г.

Осторожно, в квартире сторожевой робот!

Проект Вольфранг Бира наглядно демонстрирует, что идея подключения робота к сети Интернет не является надуманной. Он построил небольшого робота-постового и подключил его к Android смартфону. Робот способен передвигаться по квартире и делать фотографии камерой телефона. 
Телефон также является промежуточным звеном между программой в браузере (с помощью которой Бир может контролировать робота из любой точки мира) и своим роботом. 

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

Кружок по робототехнике. Занятие второе.

Занятие второе началось со знакомства с набором LEGO Mindstorms NXT. Актуально это было еще и потому, что ребята за неделю приобрели свои наборы, и им необходимо было рассказать о том, что же это такое.

воскресенье, 14 октября 2012 г.

MIDI синтезатор для NXT

На страницах своего блога мы уже неоднократно рассказывали о различных устройствах, позволяющих расширить возможности NXT блока: например, о Raspberry Pi или WifiBlock. В этот раз расскажем о проекте из университета Tufts: MIDI синтезатора для Lego робота.
Данная плата питается от стандартного порта для моторов A, причем мощности вполне хватает и для внешнего динамика.
Для демонстрации работы данного синтезатора был собран робот с 3 сенсорами касания и 2 моторами. 3 сенсора дают 7 возможных вариантов проигрывания нот. Вращение первого мотора позволяет изменить громкость, а второго - октаву. Судя по видео можно сказать, что синтезатор охватывает 3 октавы. 
Приставка MIDI означает, что на таком устройстве можно проиграть практически любой звук - от пианино до органа. В данной программе доступно 128 инструментов.


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

Python, NXT и компьютерное зрение

OpenCV (Open Source Computer Vision Library) - библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения. Она обладает большим потенциалом, который позволяет применять ее в робототехнических нуждах, так что роботы могут, подобно человеку, взаимодействовать с предметами окружающего мира - выделять и распознавать их, реагировать соответствующим образом.
Библиотека поддерживается многими языками программирования, в том числе и Python. А это значит, что благодаря модулю nxt-python, для LEGO роботов тоже можно проектировать программы, использующие в своей основе алгоритмы компьютерного зрения.

Для примера, можно рассмотреть такую возможность, как слежение за цветными объектами - пусть тележка с LEGO-пассажиром будет стремиться всегда находиться в поле зрения web-камеры:

суббота, 13 октября 2012 г.

Роботы на выставке "Калейдоскоп идей"

В эти дни (12 - 14 октября) в ННГУ им. Н.И. Лобачевского проходит фестиваль "Путь в науку". Цель мероприятия - популяризировать науку и привлечь молодежь в сферу высоких технологий.  

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

Фестиваль робототехники "Робомир" в лицее №165

В 165 лицее уже стало традицией проводить фестивали робототехники, где ребята могли бы показать свои новые работы и обменяться знаниями и идеями. Вот и в начале нового учебного года, 8 октября в лицее повсюду ездили, ползали и собирали конфеты роботы.
На церемонии открытия был поднят флаг Робототехники и показан видеоролик о том, какие роботы были представлена на IV ассамблее наук и искусств в прошлом учебном году.

Алгоритмы: черно-белое движение. Часть II

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

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

четверг, 11 октября 2012 г.

Робо-состязания: базовые навыки по программированию роботов

Когда учащиеся проходят некоторый базовый курс обучения, то встает вопрос, что изучать дальше, какие навыки будут необходимы для участия команд в робо-состязаниях.
В ходе Летнего Робототехнического лагеря - 2012, вырисовалась примерная схема, как можно шаг за шагом готовить команды, на каких задачах их можно тренировать.
Итак, ниже представлен план по какому происходила тренировка команд в лагере. Данный план может быть легко адаптирован под нужды учебного процесса в кружке и/или уроки информатики. Причем он достаточно универсальный - не опирается на какой-то отдельный язык программирования - задания в нем могут быть выполнены, что на NXT-G, что на Robolab, а равно также и на RobotC, LabView и NXC.

Датчик звука и набор для удаленного управления от SmartBricks

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

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

Подключаем NXT блок по Bluetooth к BricxCC в Windows 7

Подключение NXT блока по Bluetooth к компьютеру всегда было больным местом для LEGO-робототехников: здесь нужно было угадать с BT адаптером и правильными драйверами, а также не напутать ничего во время непосредственного подключения блока к компьютеру/ноутбуку и обнаружения его в среде программирования.
В данной заметке будет описан опыт подключения блока в Windows 7 (речь пойдет о английской версии) со спецификой среды программирования BricxCC.

воскресенье, 7 октября 2012 г.

Кружок по робототехнике. Занятие первое

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

суббота, 6 октября 2012 г.

Python и MotorControl

В предыдущей заметке уже упоминалось о том, что модуль nxt-python для языка программирования Python уже имеет встроенную поддержку инструмента по управлению моторами MotorControl.
По сути, это заключается в следующем:
  • в составе архива модуля есть скомпилированный исполняемый модуль MotorControl22.rxe (22 - это версия модуля - 2.2), который можно загрузить на NXT блок с помощью поставляющегося в архиве скрипта nxt_push или программы NeXTTool, доступной для загрузке на сайте BricxCC. Тут же есть и исходный код, который можно собрать исполняемый файл с помощью компилятора NXC непосредственно или с помощью среды BricxCC
  • в самом модуле nxt-python доступен набор методов класса MotCont, реализованного в под-модуле nxt.motcont, обеспечивающих обмен сообщениями по USB/Bluetooth с управляющей программой MotorControl. Примечательным фактом является, что никакого специального объекта этого класса создавать не надо. Он автоматически создается в результате инициализации объекта Brick, т.е., например, доступен сразу после того, как объект Brick вернется функцией find_one_brick(). К объекту класса MotCont в этом случае можно обращаться через имя mc (см. пример ниже).

пятница, 5 октября 2012 г.

MotorControl - удаленное управление моторами NXT

Управление моторами робота - практически всегда ключевая задача для программиста. Если устройство не имеет двигающихся частей, то его уже трудно назвать роботом.
Так уж получилось, что программирование операций с моторами на LEGO роботах, во многих случаях, достаточно непростое занятие.
На блоге уже публиковались несколько статей (ссылка + ссылка), изучавших этот вопрос. Основные проблемы, с которыми приходится сталкиваться при этом, сводятся к двум пунктам:
  • Нельзя повернуть ось мотора в точности на заданный угол поворота
  • При одновременном включении двух моторов для перемещения тележки наблюдается рассинхронизация скоростей вращения, что приводит к тому, что робот не едет четко в заданном направлении
Эти проблемы только усугубляются, если робот не автономный, а управляется с компьютера или смартфона. Связано это с задержками передачи команд и задержками опроса енкодеров по USB/Bluetooth и спецификой команды управления моторами, которая используется при такого рода соединении.

среда, 3 октября 2012 г.

Австралийское робототехническое состязание RoboCup Junior

Как-то в Летнем Робототехническом Лагере на Истре в кулуарах прозвучал вопрос, а какие еще в мире бывают состязания для школьников кроме World Robot Olympiad и FIRST LEGO League. Тогда же был озвучено, что есть например, что-то подобное в Австралии. Так вот, как разсовсем недавно 22-23 сентября прошел очередной чемпионат австралийского состязания RoboCup Junior.
В регламент состязаний традиционно входят выступления команд в трех видах:

вторник, 2 октября 2012 г.

NXC: датчики, енкодеры, кнопки - взаимодействуем с внешним миром

Программирование робота, в большинстве случаев, - изменение поведения робота как реакция на информацию, пришедшую к управляющему устройству с датчиков и сенсоров. Эта заметка рассматривает примеры опроса датчиков в языке Not eXactly C, а также некоторые особенности, которые необходимо учитывать при работе с ними.
Пример 1. Датчик расстояния
Для датчика расстояния (ультразвуковой) используются специальные функции для его инициализации и опроса.

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

Lego-робот подделывает подпись

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


Автор этого устройства делится с нами не только деталями по сборке манипулятора, но и некоторыми деталями по его программированию: программа на NXC для управления манипулятором и связанная с ней математика.
Related Posts Plugin for WordPress, Blogger...