Показаны сообщения с ярлыком моторы. Показать все сообщения
Показаны сообщения с ярлыком моторы. Показать все сообщения

суббота, 21 декабря 2013 г.

EV3 производительность. Часть I

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

Например, вот выступление новосибирской команды Лига Роботов на World Robot Olympiad 2013 в Джакарте. Робот движется на достаточно большой скорости и отличить красный шарик от синего позволит только частый опрос датчиков цвета. Но если при этом произойдет значительная задержка при выполнении операции остановки, то робот проедет шарик мимо и выполнить его сбор будет уже невозможно:

четверг, 19 декабря 2013 г.

500 тысяч LEGO деталей

Именно такое количество понадобилось Стиву Саммартино и Раулю Оайда, чтобы собрать полноразмерный старомодный автомобиль из LEGO.
Что еще можно сказать о проекте?
  • Автомобиль может достигать скорости 20-30 км/ч.
  • В двигателе машины используется 256 пневматических поршней LEGO расположенных по окружности. Подобные ротативные двигатели использовались в самолетостроении.
  • Потребовалось 60 тыс. долларов, чтобы воплотить изначальную задумку в готовое решение.
К сожалению, на текущий момент это все детали. Если кто-то найдет больше информации - отписывайтесь в комментариях.


Видео ролик, набравший больше 250 тысячи просмотров за два дня можно посмотреть ниже:

понедельник, 16 декабря 2013 г.

Темная сторона силы на EV3

Среда программирования LEGO Mindstorms EV3 будучи прямым продолжателем традиций от NXT-G взяла также много хорошего от других своих предшественников Robolab и LabView: досрочный выход из цикла, массивы, сложные арифметические выражения, управление по изменению значения на датчике.
Еще одним полезным приобретением является возможность замерять мощность подаваемую на мотор.

среда, 16 октября 2013 г.

Технические характеристики новых EV3 моторов

Филипп Хурбейн обновил свою страничку, где он приводит технические характеристики LEGO моторов, - теперь она включает информацию и о новых EV3 моторах.
Например, следующие графики позволяют оценить новые моторы относительно других по таким параметрам, как мощность и крутящий момент:

понедельник, 16 сентября 2013 г.

Запуск моторов в C программе на EV3

В прошлой статье мы разобрали как создать, закачать и запустить простую программу на С. Данная инструкция покажет, как можно использовать аппаратные ресурсы в Linux. Во время старта ядра Linux, оно загружает несколько модулей, которые дают доступ к "железу". После того, как эти модули были загружены, пользователь может "общаться" с "железом", используя стандартные файловые операции записи и чтения. Эта инструкция не имеет целью рассказать обо всех доступных функциях работы с аппаратными ресурсами.
Модули, доступные в EV3 блоке, могут быть отображены с помощью команды lsmod. Модули Lego, относящиеся к "железу", имеют префикс d_Имя в своем названии. Пример, представленный ниже, показывает один из способов управления моторами. Для того, чтобы скомпилировать этот код, я использовал переменные, объявленные в исходном коде прошивки EV3.

суббота, 9 марта 2013 г.

NXT R3PTAR - пишем свою программу

В школе, где проходит наш кружок робототехники, нужно было провести "удивительный урок" для первоклассников, приуроченный к 23 феваряля и 8 марта. Одним из роботов, который должен был появиться на этом уроке, было решено сделать - NXT R3PTAR - змею, похожую на EV3 R3PTAR, только выполненную из набора NXT 2.0.
Об существующих инструкциях по сборке для данного "животного" уже упоминалось в блоге. А вот программу пришлось составлять самостоятельно. А поскольку кто-то захочет повторить этот опыт - процесс составления программы приводиться в этой заметке.

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

NXT и Python: мотор застрял?

Предыдущие статьи по программированию NXT роботов на языке Python можно считать вводными - они вкратце знакомили с базовыми API, применив которые можно было уже написать простые программы.
Естественно, многое осталось за рамками тех материалов - например, функции, управляющие движением моторов, были описаны не все, да и для описанных не были указаны все возможные параметры.

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

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

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

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

Рассмотрим, что происходит с вращением оси мотора в случае работы следующей программы:

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

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

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

суббота, 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 и спецификой команды управления моторами, которая используется при такого рода соединении.

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

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

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

вторник, 25 сентября 2012 г.

NXC: Управление моторами

С этой статьи начинается публикация материалов из методички по языку программирования Not eXactly C, подготовленной в рамках учебных курсов Нижегородского Института Информационных Технологий.
В NXC существует около 40 команд для работы с моторами. Их условно можно разделить на команды управления движением, команды остановки, команды опроса датчиков и состояния моторов.

В данной статье рассматриваются команды управления движением.

Пример 1. OnFwd(), OnRev()
Данный пример предназначен для рассмотрения семейств команд OnFwd(), OnRev(), OnFwdSync(), OnRevSync() и его цель - проверить на то, что после OnFwd() управление сразу передается на следующую команду.

суббота, 22 сентября 2012 г.

90 кг. для LEGO кресла - много или мало?

LEGO изобретатель из Англии Simon Burfield решил провести эксперимент - на сколько тяжелые вещи можно перевести с помощью NXT моторов.
Для этого он собрал из деталей LEGO кресло, подсоединил к нему 14 NXT моторов, управляемых 7ю NXT блоками, а чтобы кресло было более маневренное были использованы колеса Rotacaster multi-directional.

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

Скорость опроса сенсоров

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

Итак, сначала надо определиться с методикой определения частоты опроса датчика.
Предлагается такой алгоритм:
  1. Инициализируем датчик
  2. Запоминаем текущее значение таймера (или сбрасываем таймер в ноль)
  3. Делаем N итераций цикла, который делает только одно действие - опрашивает датчик
  4. После завершения цикла запоминаем новое значение таймера, а точнее на сколько он изменился с шага 2.
В результате, поделив количество итераций на время, которое они заняли, станет известно сколько итераций выполниться за 1 секунду.

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

Приложение для управления LEGO роботами

Когда мы только разрабатываем и отлаживаем LEGO робота, иногда возникает необходимость управления механизмом с компьютера или ноутбука. Почти каждая среда программирования предоставляет такую возможность, но то иногда управление очень ограничено неизменяемой конфигурацией моторов, и к тому же в таких режимах не так просто получать информацию с сенсоров, что так необходимо для отладки.
Если такая проблема знакома, то, как вариант, можно посмотреть на Windows-приложение DCA NXT Remote Control.

вторник, 10 июля 2012 г.

Контролируем нагрузку на моторы механическим способом

Nico71 продолжает делиться секретами своего мастерства. На этот раз он подробно рассказывает о том, каким именно образом устроена двигательная установка для у его ткацкого станка. Дело в том, что в работе ткацкого станка необходимо предусмотреть защиту от чрезмерных нагрузок на мотор, которые могут случаться в случае заедания челнока или застревании щеток станка.
А поскольку в конструкции вообще не использовался ни NXT, ни RCX блок, то задачу пришлось решать чисто механическим способом.


Какая же идея заложена в работу этой защиты?

суббота, 23 июня 2012 г.

NXT и Python: включаем моторы

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

Чтобы узнать, какие функции модуля nxt-python нужно использовать, чтобы заставить робота двигаться, можно использовать два способа. В одном случае, можно воспользоваться свойством открытости - языки с открытым исходным кодом тем и хороши, что позволяют зайти в любой модуль, любую функцию и посмотреть для чего она нужна и что она делает. Другой способ, воспользоваться встроенной в Python функцией подсказки - например, через терминал, предоставляющий доступ к командной строке в Linux:
$ python
Python 2.7.2 (default, Oct 27 2011, 01:36:46) 
[GCC 4.6.1 20111003 (Red Hat 4.6.1-10)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import nxt.motor
>>> help(nxt.motor)
Итак, что можно почерпнуть из этих источников?

Больше, чем три мотора к одному NXT? Почему нет?!

Фотографии взяты из этой статьи.

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

Второй способ - приобрести готовый электронный мультплексор или даже, если схемотехника и паяльник не пугают, собрать свой собственный. Способ требует определенных денежных вливаний. Да к тому же, на таких состязаниях роботов, как World Robotic Olympiad, использование данных устройств запрещено.

Остается еще несколько способов, о которых поговорим ниже.

воскресенье, 17 июня 2012 г.

Опять про мультиплексоры для Lego-двигателей

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

Кстати, это устройство - один из вариантов ответа на вопрос как к одному NXT блоку подключить больше трех моторов.
Related Posts Plugin for WordPress, Blogger...