Интеллектуальные игрушки – программируемые роботы конструкторы. Роботы LEGO Mindstorms - занимательная робототехника

Nokia 14.07.2019
Nokia

В этом разделе представлены различные Лего роботы. Начиная с Mindstorms - робота для продвинутых пользователей и даже профессионалов, заканчивая персонажами легенд: Hero Factory, Ninjago, Chima и др.


Начнём наше повествование с необычной лего игрушки – электронного интерактивного робота на базе процессора NXT 2.0! Его, с помощью инструкции, может собрать даже 10-12-летний ребёнок! LEGO Роботы mindstorms понравится не только детям, но и их родителям, так как он очень функционален и возможности его программирования поистине безграничны! Можно сконструировать свои программируемые модели!

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

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

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

Ваш ребёнок никогда не будет скучать, а учиться навыкам конструирования и программирования в игровой форме, тоже весьма познавательное занятие!

Ещё одна серия – это Фабрика Героев. Герои из серии Hero Factory являются очень колоритными существами, это гибрид человека и робота и название им – киборги! Фигурки роботов имеют подвижные руки и ноги, они держат различное оружие, которое помогает им сражаться с полчищами мутантов, которые прислуживают Огненному Лорду.

Данная серия Hero Factory является аналогом Биониклов, поэтому её с радостью воспримут поклонники мультфильмов про роботов.

Среди персонажей есть как добрые: Стормер, Фурно, Бриз и другие, так и отрицательные герои: Дриллдозер, Джетбаг, Вон Небула, которые подчиняются могущественному и злому Огненному Лорду. Попробуйте собрать всю коллекцию фигурок Фабрика Героев лего роботов и устроить своё сражение за торжество добра и справедливости!


Конструктор LEGO – это более универсальный материал, чем может показаться на первый взгляд. Ведь с его помощью можно строить не только игрушечные машинки и домики, но и достаточно сложные конструкции, например, роботов под управлением мобильного телефона. Вот подобные наборы с названием Mindstorm EV3 и представила недавно датская компания на выставке 2013 CES в Лас-Вегасе.




В прошлом году четырнадцатилетний американский школьник прославился на весь технический мир тем, что создал из LEGO , умеющий рисовать фломастером заданные пользователем рисунки. А в 2013-м датская компания и сама выпустила продукт с похожим названием – Mindstorm EV3. Но это не принтер, а сборные роботы, собираемые вручную из деталей упомянутого выше конструктора.



Основу Mindstorm EV3 составляет некое подобие системного блока, небольшой компьютер на базе ARM-процессора, работающий под управлением операционной системы Linux. Он имеет 16 мегабайт встроенной флеш-памяти, 64 мегабайта памяти оперативной, слот расширения для SD-карточек, а также Wi-Fi-модуль.

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



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

Более того, компания LEGO обещает, что робот Mindstorm EV3 сможет также взаимодействовать с мобильными телефонами под управлением операционных систем Android и iOS. Достаточно будет лишь установить на них специальное программное обеспечение, чтобы одними лишь движениями пальцев по экрану смартфона управлять действиями собранного только что собственными руками робота.



Комплект LEGO Mindstorm EV3 включает в себя 594 детали, а собрать простейшего робота с его помощью можно будет всего за 20 минут. Производитель обещает начать продажи этого необычного конструктора уже в 2013 году.

Ваш ребенок мечтает самостоятельно построить и запрограммировать робота, который бы выполнял все его команды? Тогда настоятельно рекомендуем Вам обратить свое внимание на уникальную серию конструкторов известной во всем мире датской фирмы Лего Роботы.

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

Покупая конструктор Лего Mindstorms, Вы получаете:

Интереснейшую игру-конструктор

Лего Роботы - это продукт, при изготовлении которого использовались новейшие технологии в области робототехники. Игрушки серии Лего Mindstorms имеют несколько двигателей, дополнительные датчики-сенсоры и цветной дисплей. Лего Роботы способны поразить воображение всех, кто с ними сталкивается впервые, ведь они ведут себя, как живые существа. Лего Mindstorms реагируют на прикосновение и звук, способны определять температуру объекта и расстояние. Они могут приходить, услышав Ваш хлопок, поднимать предметы, которые находятся рядом, и различать темноту и свет. Все это звучит довольно сложно, но практика показывает, что любой ребенок, который владеет компьютером на пользовательском уровне, может без проблем запрограммировать конструктор из серии Лего Роботы, создав своего личного робота. Отметим, что команды игрушке Лего Mindstorms можно отдавать не только с компьютера, но и с любого мобильного телефона, в котором установлен Bluetooth.

Огромные возможности для развития творчества

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

Качественный продукт

Перед запуском серийного производства конструкторов все их компоненты проходят проверку на прочность на испытательных стендах. Каждый элемент Лего Роботы рассчитан на более чем 50 000 циклов сцепления. Для производства пластиковых элементов конструктора Лего Mindstorms не применяются тяжелые металлы и другие вредные для здоровья материалы.

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

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

Покупайте у нас набор Лего Mindstorms и создавайте игрушки, которые в Ваших руках непременно оживут!

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

Что такое Power Functions?
LEGO Power Functions - новая электрическая система с мощными моторами и дистанционным управлением.

Как работает система Power Functions?
Батарейный отсек дает питание в систему. Если присоединить к разъему мотор, он начнет вращаться в ту или иную сторону, в зависимости от положения выключателя. Светящийся зеленым индикатор говорит о том, что питание включено. Когда выключатель находится в центральном положении, питание выключено.


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


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

Какие элементы питания необходимы?
Батарейный отсек: 6 элементов питания типоразмера AA (пальчиковые) - щелочные, либо перезаряжаемые аккумуляторы

Пульт управления:
3 элемента питания типоразмера AAA

Как установить элементы питания?
Батарейный отсек: Снимите крышки с обеих сторон и вставьте 3 элемента питания AA с каждой стороны, соблюдая полярность, указанную на дне.

Пульт управления:
Открутите винт с задней стороны пульта, снимите крышку и вставьте 3 элемента питания AA с каждой стороны, соблюдая полярность, указанную на дне.

Важно заменять все элементы питания одновременно - не смешивать старые и новые - израсходованные элементы питания могут потечь или нагреться.

Как долго работают элементы питания?
Батарейный отсек: Около 4 часов использования, при управлении тяжелой моделью наподобие Бульдозера.

Пульт управления:
2-3 года

Что говорит о том, что пора заменить элементы питания?
Батарейный отсек:
Моторы вращаются медленнее. Замените элементы питания, если скорость/мощность модели снизилась.

Пульт управления:
Уменьшилось расстояние, с которого возможно управление.

Почему моя модель работала только короткий период времени после того, как я сменил элементы питания?
1. Убедитесь, что вы заменили все 6 элементов питания, а не только 3 с одной стороны.
2. Используйте щелочные, либо перезаряжаемые элементы питания
3. Не забывайте выключать питание батарейного отсека, когда он не используется.

Почему моя модель работает медленно?
Возможны три причины:
1. Убедитесь, что ничто не препятствует нормальной передаче от мотора к движущимся частям, не прокручиваются шестерни, и т.п.
2. Убедитесь, что используются новые элементы питания
3. Слишком много моторов запущено одновременно и под большой нагрузкой.

Как много моторов могут работать одновременно от одного батарейного отсека?
Как правило, можно запускать одновременно 2 XL мотора, либо 4 обычных мотора. Батарейный отсек и инфракрасный приемник защищены от перегрузок, поэтому попытка одновременного запуска большего числа моторов ничему не повредит.

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

Что делать, если моя модель не действует?
1. Убедитесь, что вы используете новые элементы питания в батарейном отсеке и пульте управления.
2. Убедитесь, что все подключено верно.
3. Убедитесь, что зеленый индикатор на батарейном отсеке зажжен.
4. Убедитесь, что зеленый индикатор на инфракрасном приемнике зажжен.
5. Убедитесь, что инфракрасный приемник получает сигналы от пульта управления.
6. Убедитесь, что ничего не препятствует вращению моторов.

Как убедиться, что инфракрасный приемник получает сигналы от пульта управления?
1. Зеленый индикатор на инфракрасном приемнике должен быть зажжен.
2. Зеленый индикатор на пульте управления загорается при отправке сигналов.
3. Убедитесь, что пульт управления и приемник настроены на один канал.
4. Зеленый индикатор на приемнике будет мигать при получении сигналов.

С какого расстояния возможно управление?
Это зависит от многого - в нормальных условиях расстояние может превышать 10 метров.

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

Дополнительная информация и комментарии.

  • Рычажки на пульте могут находиться только в трех фиксированных положениях - вперед, назад и нейтральное. Скорость вращения моторов в каждом случае постоянна. Причем это особенность именно пульта - поскольку сами инфракрасные приемники содержат большую функциональность, в том числе и возможность регулировки скорости вращения моторов посредством широтно-импульсной модуляции.
  • Инфракрасные приемники работают только с новыми батарейными отсеками - со старыми через переходник не работают.
  • Несмотря на ограничение в два XL мотора - вполне можно использовать одновременно два XL мотора для приведения в движение, скажем, автомобиля, и при этом периодически «рулить» третьим обычным мотором.
  • XL мотор содержит «технические» отверстия спереди и по бокам для присоединения модели, обычный мотор содержит отверстия спереди и стандартное леговское дно пластины снизу.
  • Скорость вращения ненагруженного обычного мотора - 405 оборотов в в минуту, XL - 220 оборотов в минуту. При использовании перезаряжаемых аккумуляторов (общее напряжение 7.2 вольта) скорость снижается приблизительно в полтора раза.
  • Вполне возможно, что в ближайшем будущем выпустят, по крайней мере, новый пульт управления - с возможностью регулирования скорости вращения моторов - в ИК приемнике такая функциональность уже заложена.
  • Разъемы подключения у Power Functions "сквозные". То есть к одному выходу подключается более одного устройства - просто каждый следующий сверху другого. Таким образом, можно подключить к одному выходу инфракрасного приемника два мотора и включать их одновременно одним рычажком.

Основной модуль конструктора Lego Mindstorms EV3 может работать с прошивкой leJOS , позволяющей запускать Java-приложения. Специально для этого Oracle выпустил и поддерживает отдельную версию полноценной Java SE .

Нормальная JVM позволила мне использовать встроенный в нее протокол Java Management Extensions (JMX), чтобы реализовать удаленное управление роботом-манипулятором. Для объединения управляющих элементов, показаний датчиков и картинок с установленных на роботе IP-камер используется мнемосхема, сделанная на платформе AggreGate.


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

Оба компьютера подключены к IP-сети помещения через Wi-Fi адаптеры NETGEAR WNA1100. Робот управляется восемью двигателями Mindstorms - из них 4 «большие» и 4 «маленькие». Также установлены инфракрасный и ультразвуковой датчики для автоматической остановки у препятствия при движении задним ходом, два датчика прикосновения для остановки поворота манипулятора из-за препятствия, и гироскопический датчик, облегчающий ориентировку оператора при помощи визуализации положения плеча.

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

В самом манипуляторе два двигателя отвечают за подъем и опускание «плеча» и «предплечья». Еще три двигателя занимаются подъемом/опусканием кисти, ее поворотом на 360 градусов и сжиманием/разжиманием «пальцев».

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

В целом все выглядит так (коробок спичек был с трудом найден для масштаба):

Для передачи картинки установлены две камеры:

  • Обычный Android-смартфон с установленным приложением IP Webcam для общего обзора (на снимке HTC One)
  • Автономная Wi-Fi микро-камера AI-Ball , установленная прямо на «кисти» манипулятора и помогающая хватать предметы сложной формы

Программирование EV3

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

Код главных классов ПО руки-манипулятора

public class Arm { public static void main(String args) { try { EV3Helper.printOnLCD("Starting..."); EV3Helper.startJMXServer("192.168.1.8", 9000); MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); EV3LargeRegulatedMotor motor = new EV3LargeRegulatedMotor(BrickFinder.getDefault().getPort("A")); LargeMotorMXBean m = new LargeMotorController(motor); ObjectName n = new ObjectName("robot:name=MotorA"); mbs.registerMBean(m, n); // Registering other motors here EV3TouchSensor touchSensor = new EV3TouchSensor(SensorPort.S1); TouchSensorMXBean tos = new TouchSensorController(touchSensor); n = new ObjectName("robot:name=Sensor1"); mbs.registerMBean(tos, n); // Registering other sensors here EV3Helper.printOnLCD("Running"); Sound.beepSequenceUp(); Thread.sleep(Integer.MAX_VALUE); } catch (Throwable e) { e.printStackTrace(); } } } public class EV3Helper { static void startJMXServer(String address, int port) { MBeanServer server = ManagementFactory.getPlatformMBeanServer(); try { java.rmi.registry.LocateRegistry.createRegistry(port); JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + address + ":" + String.valueOf(port) + "/server"); Map props = new HashMap(); props.put("com.sun.management.jmxremote.authenticate", "false"); props.put("com.sun.management.jmxremote.ssl", "false"); JMXConnectorServer connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, props, server); connectorServer.start(); } catch (Exception e) { e.printStackTrace(); } } static void printOnLCD(String s) { LCD.clear(); LCD.drawString(s, 0, 4); } }

Для каждого типа датчика и мотора создан интерфейс MBean"а и реализующий его класс, которые напрямую делегирует все вызовы классу, входящему в leJOS API.

Пример кода интерфейса

public interface LargeMotorMXBean { public abstract void forward(); public abstract boolean suspendRegulation(); public abstract int getTachoCount(); public abstract float getPosition(); public abstract void flt(); public abstract void flt(boolean immediateReturn); public abstract void stop(boolean immediateReturn); public abstract boolean isMoving(); public abstract void waitComplete(); public abstract void rotateTo(int limitAngle, boolean immediateReturn); public abstract void setAcceleration(int acceleration); public abstract int getAcceleration(); public abstract int getLimitAngle(); public abstract void resetTachoCount(); public abstract void rotate(int angle, boolean immediateReturn); public abstract void rotate(int angle); public abstract void rotateTo(int limitAngle); public abstract boolean isStalled(); public abstract void setStallThreshold(int error, int time); public abstract int getRotationSpeed(); public abstract float getMaxSpeed(); public abstract void backward(); public abstract void stop(); public abstract int getSpeed(); public abstract void setSpeed(int speed); }

Пример кода реализации MBean"а

public class LargeMotorController implements LargeMotorMXBean { final EV3LargeRegulatedMotor motor; public LargeMotorController(EV3LargeRegulatedMotor motor) { this.motor = motor; } @Override public void forward() { motor.forward(); } @Override public boolean suspendRegulation() { return motor.suspendRegulation(); } @Override public int getTachoCount() { return motor.getTachoCount(); } @Override public float getPosition() { return motor.getPosition(); } @Override public void flt() { motor.flt(); } @Override public void flt(boolean immediateReturn) { motor.flt(immediateReturn); } // Similar delegating methods skipped }

Как ни странно, на этом программирование закончилось. На стороне сервера и операторского рабочего места не было написано ни одной строчки кода.

Подключение к серверу

Непосредственное управление роботом осуществляет сервер IoT-платформы AggreGate . Установленная бесплатная версия продукта AggreGate Network Manager включает драйвер протокола JMX и позволяет подключить до десяти JMX-хостов. Нам понадобится подключить два - по одному на каждый кирпичик EV3.

Прежде всего, нужно создать аккаунт JMX устройства, указав в настройках URL, заданный при запуске JMX сервера:

Свойства соединения с JMX-устройством


После этого выбираем активы (т.е. MBean"ы в данном случае), которые будут добавлены в профиль устройства:

Выбор MBean"ов


И через несколько секунд смотрим и меняем текущие значения всех опрошенных свойств MBean"ов:

Снимок устройства


Можно также потестировать различные операции вызывая вручную методы MBean"ов, например forward() и stop().

Список операций


Далее настраиваем периоды опроса для датчиков. Высокая частота опроса (100 раз в секунду) используется, так как управляющий сервер находится в локальной сети вместе с роботом и именно сервер принимает решения об остановке вращения при упоре в препятствие и т.п. Решение, безусловно, не промышленное, но в хорошо работающей Wi-Fi сети в рамках одной квартиры показало себя вполне адекватным.

Периоды опроса


Интерфейс оператора

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

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

Вид изнутри редактора интерфейсов

Вся форма:

Вид с показанными панелями-контейнерами:


Теперь, как говорят АСУТПшники, осталось «оживить мнемосхему». Для этого применяются так называемые привязки связывающие свойства и методы графических компонентов интерфейса со свойствами и методами серверных объектов. Так как компьютеры EV3 уже подключены к серверу, серверными объектами могут быть и MBean"ы нашего робота.

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

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

Вторая половина привязок позволяет управлять роботом с клавиатуры, предварительно нажав на кнопку Keyboard Control. Эти привязки реагируют на события keyPressed и keyReleased , а в условии каждой привязки прописано, на какой именно код кнопки нужно реагировать.

Все управляющие привязки вызывают методы forward() , backward() и stop() различных MBean"ов. Поскольку доставка событий происходит асинхронно, важно, чтобы вызовы функций forward() /backward() и последующие вызовы stop() не перепутались. Для этого привязки, вызывающие методы одного MBean"а, добавлены в одну очередь (Queue).

Две отдельные группы привязок выставляют начальные скорости и ускорения двигателей (сейчас это реализовано на стороне сервера при помощи модели, поэтому эти привязки отключены) и меняют скорости/ускорения при перемещении ползунков Speed и Acceleration.



Рекомендуем почитать

Наверх