sonyps4.ru

Управляемые лего роботы. Управление роботом LEGO Mindstorms EV3 от первого лица

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

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

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

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

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

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

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

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

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

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

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

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

Роботом, собранным из конструктора LEGO Mindstorms EV3, вы легко можете управлять дистанционно от первого лица. Для этого вам дополнительно понадобится два смартфона, с установленным приложением RoboCam на один из них. Давайте познакомимся подробнее с приложением RoboCam и научимся им пользоваться.

Статья описывает новые возможности, появившиеся в первой версии версии 1.0 приложения RoboCam. Все статьи посвященные приложению RoboCam вы можете найти . Приложение RoboCam можно установить из магазина Google Play .

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

Что нужно для проведения эксперимента?

Чтобы повторить эксперимент, который вы видите на видео, вам нужно следующее:

  1. Робот , собранный из конструктора LEGO Mindstorms EV3.
  2. Android-смартфон с камерой и установленным на него приложением RoboCam . Поддерживается Android 2.3 и выше. В смартфоне как минимум должна быть хотя бы одна камера, а также модули Bluetooth и Wi-Fi.
  3. Смартфон или планшет с современным браузером с поддержкой HTML5. Хорошо подходят и протестированы браузеры Google Chrome, Яндекс.Браузер, Firefox и Opera последних версий. Операционная система в принципе может быть любой (Android, iOS или Windows), но полноценные тесты проводились только на Android. У смартфона или планшета должен быть как минимум сенсорный экран (желательно с распознаванием не менее 2-точек касания) и модуль Wi-Fi.

Схема подключения

Сначала, давайте посмотрим, как все перечисленные выше устройства подключены друг к другу. Лучше всего это иллюстрирует рисунок снизу.

Как вы видите, приложение RoboCam установлено на смартфон 1. Этот смартфон прикрепляется к роботу и подключен к нему через Bluetooth. От смартфона 1 к EV3 идут команды управляющие моторами, обратно поступает информация с датчиков.

2-й смартфон или планшет, подключается к смартфону 1 через Wi-Fi. Смартфон 1 и смартфон или планшет 2 должны быть подключены к одному роутеру. От смартфона или планшета 2 идут координаты джойстиков на смартфон 1, а обратно идёт видеопоток с камеры.

Как происходит управление EV3

Чтобы лучше понять, как происходит управление роботом EV3, посмотрим следующую схему.

Когда вы начинаете прикасаться к джойстикам A и B, смартфон или планшет 2 передаёт координаты прикосновений смартфону 1, который преобразует их в команды для моторов EV3. Каким образом координаты будут преобразованы, зависит от настроек приложения RoboCam. Подробнее о настройках мы поговорим ниже.

Собираем робота

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

Начинать я рекомендую с простой модели. Если у вас образовательный набор LEGO Mindstorms EV3, то вы можете собрать Исследователя EV3, которого вы видите на фото и видео в начале статьи. Вот схема сборки Исследователя EV3:

Инструкция для сборки исследователя EV3 Версия:2

Инструкция для сборки робота исследователя EV3 из базового образовательного набора конструктора LEGO Mindstorms Education EV3 (45544).

В версии 2: рамка закреплена прочнее и не отваливается.

04.06.2016 4.95 MB 5783

Готовим Android-смартфон и приложение RoboCam

Приложение RoboCam работает на смартфонах или планшетах под управлением операционной системы Android 2.3 и выше. Обязательным является наличие у устройства любой встроенной камеры и модулей Bluetooth и WiFi. Приложение бесплатное, вы можете установить его с помощью магазина Google Play. Вот страничка приложения RoboCam . Для установки нажмите кнопку «УСТАНОВИТЬ», и примите требуемые разрешения, нажав на кнопку «ПРИНЯТЬ».

После установки откройте приложение. В Android 6 и выше, вы сразу увидите запрос на разрешение использовать камеру. Камера нам обязательно нужна, поэтому нажмите «РАЗРЕШИТЬ».

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

Зелёная кнопка слева отвечает за запуск и остановку сервера RoboCam, который нужен для подключения смартфона или планшета 2, см. схему выше. Одновременно кнопка показывает, работает сервер или нет. На картинке фон кнопки белый, это значит, что сервер не работает. Об этом же говорит подсказка сверху. Вы можете в любой момент запустить или остановить сервер, нажав на эту кнопку.

Средняя кнопка пурпурного цвета отвечает за подключение к роботу EV3. Одновременно кнопка показывает, подключен ли смартфон к роботу или нет. На картинке, фон кнопки белый, это значит, что робот не подключен. У этой кнопки тоже есть подсказка, прямо под кнопкой, где в верхней строке отображается состояние подключения (на картинке это надпись «EV3 не подключен»), а в нижней строке – название текущих настроек робота (на картинке это «Исследователь EV3»).

Кнопка справа открывает настройки программы RoboCam. Если вы будете использовать моего Исследователя EV3, то дополнительно ничего настраивать не надо, т.к. сразу после первого запуска приложения по умолчанию будут выбраны настройки с названием «Исследователь EV3». Если робот у вас другой, то сначала придётся поковыряться в настройках. Но об этом поговорим ниже.

Запуск сервера RoboCam и подключение к нему

Сразу скажу, что совсем неважно, что вы сделаете раньше, запустите сервер RoboCam или подключите смартфон к роботу. Это можно сделать в любом порядке.

Итак, после того как приложение установлено на смартфон 1 (см. схемы выше) и открыто, вы можете запустить сервер RoboCam. Для этого нажмите на зелёную копку слева, при этом кнопка начнёт мигать, а в подсказке будет написано «Инициализация сервера RoboCam...». Через некоторое время, после того как сервер запустится, фон кнопки окрасится в зелёный цвет, а в подсказке будет написано «Сервер RoboCam работает».

Если смартфон ещё не подключен к вашему Wi-Fi-роутеру (как у нас на картинке), то пора это сделать. После подключения в верхней подсказке во второй строке отобразится адрес для подключения к серверу RoboCam. При включении сервера нет разницы, что включать сначала, сервер RoboCam или Wi-Fi.

Теперь вы можете подключиться к серверу RoboCam. Для этого возьмите второй смартфон или планшет (я буду использовать планшет), убедитесь, что он подключен к тому же Wi-Fi-роутеру, откройте браузер и перейдите на страничку с адресом, который показан в подсказке в приложении RoboCam (на картинке это «http://192.168.1.153:8088»). Браузер нужно использовать один из тех, про которые было написано выше. Если вы всё сделали правильно, то в браузере загрузится страничка для ввода логина и пароля. Введите здесь логин и пароль и нажмите кнопку «Войти». Если после установки вы ничего не меняли в настройках, то по умолчанию установлен логин «admin» и пароль «123».

После этого откроется основная страничка сервера RoboCam, на которой вы увидите картинку с камеры смартфона 1 (см. схему выше).

Как видите ориентация смартфона 1 – портретная, а моего планшета – альбомная. Вы можете перевернуть смартфон 1 так, чтобы он тоже был в альбомной ориентации. При этом картинка в на планшете автоматом поменяется на альбомную.

Обратите внимание, что ориентация не меняется, если вы заблокировали смартфон 1.

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

Подключение RoboCam к EV3

Прежде чем подключать приложение RoboCam к EV3 убедитесь, что у вашего робота EV3 и смартфона включён Bluetooth и что они спарены. Также убедитесь, что моторы подключены именно к тем портам, которые указаны в настройках робота. Название текущих настроек написано в подсказке к средней кнопке во второй строке, на картинке ниже, это «Исследователь EV3». Если вы собрали Исследователя EV3 по моей схеме (см. выше) и после установки приложения RoboCam не меняли настройки, то будьте уверены, что всё настроено правильно. Подробно о настройках будет написано ниже.

Итак, если всё готово, нажмите на центральную пурпурную кнопку. Если у вас на смартфоне Bluetooth оказался выключен, то вы увидите запрос на его включение. Нажмите «Да».

Дальше вы увидите, что кнопка начнёт мигать, а вместо подсказки появится список спаренных через Bluetooth устройств. Выберите здесь вашего робота EV3 (на картинке – это «EV3», но у вас в настройках EV3 может быть выставлено другое имя).

После этого приложение подключится к EV3.

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

В настройках по умолчанию для Исследователя EV3 у вас будут два джойстика: круглый и вертикальный (см. картинку выше). Вертикальным джойстиком управляется рамка-держатель смартфона, а круглым – движения робота. Иконка с изображением ладони сверху справа, меняет джойстики местами, чтобы быстро переключать управление для левши и правши. Подробнее о джойстиках будет написано ниже.

Остановка сервера RoboCam и отключение EV3

После того как вы закончили управлять роботом перед тем как закрыть приложение RoboCam рекомендуется остановить сервер RoboCam и отключить EV3 от смартфона. Это можно делать в любом порядке. Для того чтобы остановить сервер нажмите на зелёную кнопку слева. После этого фон кнопки станет белым, а подсказка покажет «Сервер RoboCam выключен». Чтобы отключить EV3, нажмите на центральную пурпурную кнопку. После этого фон кнопки станет белым, а на подсказке в верхней строке вы увидите надпись «EV3 не подключен». При этом моторы остановятся или примут первоначальное положение в зависимости от настроек.

Чтобы перейти в настройки, нажмите на серую кнопку справа.

Настройки разделены на 2 части: настройки сервера и настройки робота. Сначала давайте посмотрим, что есть в настройках сервера. Выберите «Сервер».

Настройки сервера делятся на 2 группы: настройки камеры и настройки безопасности. В настройках камеры можно выбрать камеру (фронтальную или тыловую), размер изображения и качество JPEG. Чем меньше вы установите размер изображения, тем плавнее и быстрее будет передача видео клиенту, но ухудшится качество картинки. Аналогично влияет передачу видео и качество JPEG: чем лучше качество JPEG (90 и более процентов), тем лучше картинка, но медленнее скорость, и наоборот, чем хуже качество JPEG (40 и менее процентов), тем быстрее скорость, но хуже картинка. Выберите то, что оптимально для вас.

В настройках безопасности вы можете поменять имя и пароль водителя (по умолчанию – имя «admin» и пароль – «123»). Также по умолчанию включены наблюдатели. Наблюдатели могут параллельно с вами видеть изображение с камеры, но не могут управлять роботом. Для наблюдателя также можно задать имя и пароль (по умолчанию здесь используется имя «guest» и пароль «123»). Чтобы выключить наблюдателей, уберите галку «Разрешить наблюдателей».

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

После изменения настроек, вы можете сохранить их, нажав на кнопку «СОХРАНИТЬ» справа сверху или выйти без сохранения, нажав на кнопку «ОТМЕНА» или стрелку слева сверху. После сохранения настроек сервера клиенты могут быть отключены, и нужно будет подключаться снова.

Список настроек роботов

Вторая часть настроек программы RoboCam – это настройки роботов. Нажмите «Робот», чтобы перейти к списку настроек роботов.

В списке настроек роботов вы можете увидеть настройки для всех ваших роботов. Вы в любой момент можете добавить или удалить настройки нажав, соответственно, кнопку «ДОБАВИТЬ» или «УДАЛИТЬ» сверху справа. А сразу под кнопками вы можете увидеть текущие настройки. С помощью этого пункта происходит переключение между настройками для ваших роботов. Теперь давайте посмотрим настройки Исследователя EV3. Для этого выберите в списке «Исследователь EV3».

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

Всего вы можете настроить до 4-х джойстиков, но одновременно на экране у клиента будет видна только одна пара джойстиков 1-2 или 3-4. Однако если вы будете использовать джойстик 1 и 3, то они всё равно не будут видны одновременно, т.к. относятся к разным парам, и вы будете видеть либо джойстик 1, либо джойстик 3. Видимость каждого джойстика включается галочкой «Видимость ». Если вы включили 2 пары джойстиков, то на экране клиента появится кнопка для переключения между парами.

Итак, в настройках вы можете увидеть группы «Джойстик 1», «Джойстик 2», «Джойстик 3» и «Джойстик 4». В каждой из них собраны настройки для одного джойстика. Давайте посмотрим настройки для «Джойстика 1». Галочка «Видимость», как вы уже поняли, показывает или прячет джойстик. Если галочка не установлена, то и настройки для этого джойстика будут спрятаны.

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

Вертикальный джойстик воспринимает только высоту прикасания к нему, т.е. ему всё равно, прикоснулись вы к нему левее или правее, главное на какой высоте. Координата касания для него будет в пределах от -100 в самой нижней точке до 100 в самой высокой точке с 0 посередине.

Горизонтальный джойстик работает аналогично, но по горизонтали. Для него всё равно, на какой высоте происходит касание, главное слева или справа. Здесь координата касания вычисляется по горизонтали от -100 в самой левой точке до 100 в самой правой точке с 0 посередине.

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

Джойстики-стрелки не чувствительны к точке касания, главное, к какой стрелке вы прикасаетесь. Если вы касаетесь стрелки вверх, то считается, что координата джойстика по вертикали будет 100, а по горизонтали 0. Для стрелки вниз, горизонтальная координата джойстика также будет 0, а вертикальная превратится в -100. Аналогично со стрелками влево и вправо: вертикальная координата джойстика будет равна 0, а горизонтальная будет соответственно -100 и 100.

Сразу под формой выбирается тип джойстика в выпадающем списке «Тип ». Здесь можно выбрать одно из следующих значений: «Независимые моторы», «Руление 1», «Руление 2» и «Почтовый ящик».

Джойстики с типами «Руление 1 » и «Руление 2 » позволяют управлять роботом с двумя независимыми ведущими колёсами, таким как Исследователь EV3. Координаты прикосновения к таким джойстикам будут автоматически трансформироваться в команды двигателям. Для джойстика нужно будет только выбрать, на каком порту будет левое, а на каком правое колёса. Но об этом будет написано чуть ниже.

«Руление 1» позволит управлять двухколёсным роботом, как автомобилем. Здесь вы не сможете развернуть робота на месте. Чем ближе касание к центру по вертикали, тем ниже скорость. «Руление 2» позволяет роботу крутиться на месте.

Джойстик с типом «Независимые моторы » преобразует горизонтальную координату касания в команды мотору независимо от вертикальной координаты. Для джойстика нужно будет указать, какой мотор будет управляться при изменении горизонтальной координаты, а какой при изменении вертикальной координаты. Этот тип джойстика можно использовать для управления машиной, у которой один мотор поворачивает руль, а второй мотор крутит ведущие колёса. В этом случае изменение горизонтальной координаты нужно настроить на вращение первого мотора, а изменение вертикальной координаты – на вращение второго мотора.

Джойстик с типом «Почтовый ящик » будет просто передавать координаты прикосновения в почтовые ящики EV3. Чтобы ваш робот ожил, вам нужно будет написать программу для EV3, которая будет обрабатывать эти координаты. С помощью джойстика такого типа вы можете сделать более сложные модели управления роботом, т.к. можете реализовать свой собственный алгоритм преобразования координат снятых с джойстика в команды моторам. Например, вы сможете сделать управление Гиробоем EV3. Джойстик 1 передаёт координаты в почтовые ящики с именами x и y, джойстик 2 – в почтовые ящики w и z, джойстик 3 – в почтовые ящики a и b и джойстик 4 – в почтовые ящики c и d.

Следующие две настройки «Окончание прикосновения (для горизонтальной оси) » и «Окончание прикосновения (для вертикальной оси) » определяют, что будет происходить, когда вы перестали прикасаться к джойстику. Здесь можно выбрать один из двух вариантов: «Возвращаться к нулю» или «Сохранять позицию». Возвращение к нулю имеет смысл использовать в большинстве ситуаций, например, если вам нужно чтобы робот остановился, когда вы перестали прикасаться к джойстику, как раз подходит вариант «Возвращаться к нулю». Вариант с сохранением позиции будет полезен, когда нужно помнить последнюю координату касания. Этот вариант используется, например, для наклона рамки Исследователя EV3. Эта настройка доступна для всех форм джойстика кроме джойстиков-стрелок.

Если вы используете тип джойстика «Независимые моторы», «Руление 1» или «Руление 2», то ниже вы найдёте настройки портов для этого джойстика. Порты, которыми будет управлять джойстик можно добавлять и удалять. Для этого есть кнопки «ДОБАВИТЬ» и «УДАЛИТЬ». Количество портов не ограничено. Снизу на первом рисунке показаны настройки для джойстика с типом «Независимые моторы», а на втором рисунке для джойстика с типами «Руление 1» и «Руление 2». Как видите, есть небольшая разница.

Давайте пробежимся по настройкам портов. Настройка «Ось джойстика » появляется только для джойстика с типом «Независимые моторы». Варианта здесь два: «Горизонтальная» и «Вертикальная». Если вы выбрали «Горизонтальная», то мотор будет реагировать только при изменении координаты прикосновения по горизонтальной оси, а если выбрали «Вертикальная» - то на прикосновения по вертикальной оси.

Настройка «Мотор » появляется только для джойстика с типом «Руление 1» или «Руление 2». Здесь вы выбираете между «Левый» и «Правый».

Настройка «Модуль EV3 » понадобится, если вы собрали робота с использование нескольких модулей EV3, соединённых в «гирлянду». Здесь можно выбрать номер модуля от 1 до 4. Если у вас используется только один модуль EV3, то здесь всегда должна быть 1.

Настройкой «Номер порта » вы можете выбрать порт мотора от A до D.

Настройка «Изменяемое значение » появляется только для джойстика с типом «Независимые моторы». Здесь возможно два варианта: «Мощность мотора» и «Угол поворота мотора». Если вы выбрали «Мощность мотора », то джойстик будет влиять на мощность мотора, т.е. чем дальше от центра джойстика вы касаетесь, тем быстрее будет крутиться мотор. Если вы выбрали «Угол поворота мотора », то джойстик будет влиять на угол поворота мотора, т.е. чем дальше от центра джойстика вы касаетесь, тем на больший угол повернётся мотор. В этом случае мощность для мотора будет настраиваться настройкой «Мощность ». Чем больше будет эта цифра, тем быстрее мотор будет реагировать на изменение координаты касания, и тем лучше он будет держать угол.

Установка галочки «Инвертировать » позволит инвертировать вычисленную мощность или угол, а «Коэффициент » увеличить или уменьшить вычисленное значение.

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

Вот собственно и все настройки, которые есть в программе RoboCam. Если что-то непонятно, пишите в комментариях.

Подключение без роутера

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

Адрес сервера RoboCam вы сможете точно так же узнать из подсказки к кнопке. В большинстве случаев, для такой точки доступа адрес всегда будет http://192.168.43.1:8088.

Использование смартфона 1 как джойстик

Есть ещё один трюк, который вы можете проделать с приложением RoboCam. На смартфоне 1 (на котором у вас установлено приложение RoboCam) запустите сервер, подключитесь к роботу, а затем на этом же смартфоне запустите браузер (естественно такой, который поддерживает HTML5) и перейдите по адресу http://localhost:8088. Вы увидите страничку для ввода логина и пароля. Войдите как водитель. После входа вы увидите джойстики и сможете управлять роботом. Правда в этом случае изображение с камеры передаваться не будет. Wi-Fi можно отключить.

Итог

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

В статье содержится описание опыта использования конструктора Lego Mindstorms EV3 для создания прототипа робота с его последующим программным и ручным управлением при помощи Robot Control Meta Language (RCML).

  • Сборка прототипа робота на базе конструктора Lego Mindstorms EV3
  • Быстрая установка и настройка RCML для Windows
  • Программное управление роботом на базе контроллера EV3
  • Ручное управление периферией робота с помощью клавиатуры и геймпада
Забегая немного вперед, добавлю, что для реализации управления Lego-роботом с помощью клавиатуры требуется создать программу, содержащую всего 3 строки программного кода. Подробней о том, как это сделать написано под катом.

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

Описание прототипа робота

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



2. Следующий шаг - подготовка RCML для работы с конструктором Lego Mindstorms EV3.

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

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

Содержимое каталога после распаковки в него архивов



Далее необходимо создать файл конфигурации config.ini, который необходимо расположить в этом же каталоге. Для реализации возможности управления контроллером EV3 при помощи клавиатуры и геймпада, следует подключить модули lego_ev3, keyboard и gamepad.

Листинг конфигурационного файла config.ini для RCML

Module = lego_ev3 module = keyboard module = gamepad


Далее следует произвести сопряжение контроллера EV3 и адаптера.

Инструкция для сопряжения контролера EV3 и Bluetooth адаптера

Инструкция содержит пример сопряжения контроллера Lego Ev3 и ПК под управлением операционной системы Windows 7.

1. Нужно перейти в раздел настроек контроллера Ev3, далее в пункт меню «Bluetooth».

2. Следует убедиться в правильности установки параметров конфигурации. На против пунктов “Visibility”,” Bluetooth” должны быть установлены галочки.

3. Необходимо перейти в «Панель управления», далее «Устройства и принтеры», далее «Устройства Bluetooth».

4. Необходимо нажать кнопку «Добавление устройства». Откроется окно для выбора доступных Bluetooth устройств.

5. Следует выбрать устройство “EV3” и нажать кнопку «Далее».

6. На экране контроллера EV3 отразится диалоговое окно «Connect?». Нужно выбрать вариант галочки, и подтвердить свой выбор нажатием центральной клавиши.

7. Далее отобразиться диалоговое окно «PASSKEY», в строке ввода должны быть указаны цифры «1234», далее следует подтвердить ключевую фразу для сопряжения устройств, путем нажатия центральной клавиши на позиции с изображением галочки.

8. В мастере сопряжения устройства появится форма для ввода ключа для сопряжения устройств. Нужно ввести код «1234» и нажать клавишу «Далее».

10. На ПК необходимо вернуться в «Панель управления», далее «Устройства и принтеры», далее «Устройства Bluetooth». В списке доступных устройств отобразится устройство, с которым было произведено сопряжение.

11. Следует двойным нажатием зайти в свойства подключения “EV3”.

14. Указанный в свойствах индекс COM-порта, следует использовать в конфигурационном файле config.ini модуля lego_ev3. В примере показаны свойства Bluetooth подключения контроллера Lego EV3 с использованием стандартного последовательного порта COM14.


Дальнейшая конфигурация модуля сводится к тому, что необходимо прописать в конфигурационном файле модуля lego_ev3 адрес COM-порта, через который осуществляется коммуникация с роботом Lego.

Листинг конфигурационного файла config.ini для модуля lego_ev3

Connection = COM14 dynamic_connection = 0


Теперь необходимо произвести настройку модуля keyboard. Модуль находится в каталоге control_modules, далее keyboard. Следует создать конфигурационный файл config.ini рядом с файлом keyboard_module.dll. Перед тем, как создать конфигурационный файл, необходимо определить, какие действия должны быть совершены по нажатию клавиш.

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

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

  • Стрелки вверх/вниз используются для вращения мотора задних колес вперед/назад
  • Стрелки влево/вправо поворачивают колеса влево/вправо
Файл конфигурации модуля keyboard описывает, какие оси доступны программисту, для осуществления взаимодействия с роботом в режиме ручного управления. Таким образом, в примере получилось две управляющих группы – это оси клавиатуры. Для добавления новой оси, следует придерживаться следующих правил описания осей.

Правила описания осей для модуля keyboard

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

Имя_оси = значение_кнопки_клавиатуры_в_HEX_формате
2. Необходимо установить максимальное и минимальное значение, которое может откладываться по данной оси. Для этого необходимо с новой строки добавить секцию в конфигурационном файле config.ini , одноименную с именем оси, и задать свойства upper_value и lower_value , которые соответствуют максимум и минимуму оси соответственно. В общем виде данная секция выглядит следующим образом:

[имя_оси] upper_value = максимальное_значение_оси lower_value = минимальное_значение_оси
3. Далее следует определить, какое значение будет иметь ось в случае нажатия кнопки на клавиатуре, которая ранее была прикреплена к ней. Определение значений происходит посредством создания секции, название которой состоит из имени оси и значения кнопки клавиатуры в HEX формате, разделенные между собой символом нижнего подчеркивания. Для задания значения по умолчанию (в не нажатом) и нажатом состоянии используются свойства unpressed_value и pressed_value соответственно, в которые передаются значения. Общий вид секции в таком случае выглядит следующим образом:

[имя-оси_значение-кнопки-клавиатуры] pressed_value = значение_оси_при_нажатой_клавише unpressed_value = значение_оси_при_отжатой_клавише
Текст спойлера для удобства просмотра скопирован из документации по RCML .


Для реализации управления прототипом робота был создан конфигурационный файл модуля keyboard, который включает в себя оси go и rotate. Ось go используется для задания направления движения робота. При нажатии клавиши “стрелка вверх” ось получит значение 100, при нажатии клавиши “стрелка вниз” ось примет значение -50. Ось rotate используется для установки угла поворота передних колес. При нажатии клавиши “стрелка влево” значение оси будет равно -5, при нажатии «стрелки вправо» ось примет значение 5.

Листинг конфигурационного файла config.ini для модуля keyboard

;Обязательная секция ;название_оси = код_клавиши (в HEX формате) ;Ось go получает значения от стрелки_вверх go = 0x26 ;Ось go получает значения от стрелки_вниз go = 0x28 ;Ось rotate получает значения от стрелки_влево rotate = 0x25 ;Ось rotate получает значения от стрелки_вправо rotate = 0x27 ;Описание оси go, всегда должно иметь оба ключа ;Верхняя граница значений оси go upper_value = -100 ;Нижняя граница значений оси go lower_value = 100 ;Описание оси rotate, всегда должно иметь оба ключа ;Верхняя граница значений оси rotate upper_value = -100 ;Нижняя граница значений оси rotate lower_value = 100 ;Описание поведения оси go для клавиши *стрелка_вверх* (0x26) ;При нажатии клавиши *стрелка_вверх* значение оси задать равным 50 pressed_value = 100 ;При отпускании клавиши *стрелка_вверх* значение оси задать равным 0 unpressed_value = 0 ;Описание поведения оси go для клавиши *стрелка_вниз* (0x28) ;При нажатии клавиши *стрелка_вниз* значение оси задать равным -50 pressed_value = -50 ;При отпускании клавиши *стрелка_вниз* значение оси задать равным 0 unpressed_value = 0 ;Описание поведения оси rotate для клавиши *стрелка_влево* (0x25) ;При нажатии клавиши *стрелка_влево* значение оси задать равным -5 pressed_value = -5 ;При отпускании клавиши *стрелка_влево* значение оси задать равным 0 unpressed_value = 0 ;Описание поведения оси rotate для клавиши *стрелка_вправо* (0x27) ;При нажатии клавиши *стрелка_вправо* значение оси задать равным 5 pressed_value = 5 ;При отпускании клавиши *стрелка_вправо* значение оси задать равным 0 unpressed_value = 0


Далее для реализации управления при помощи геймпада, необходимо настроить модуль gamepad. Конфигурирование модуля включает в себя создание конфигурационного файла config.ini рядом с gamepad_module.dll, находящего в каталоге control_modules, далее gamepad.

Универсальный файл конфигурации модуля для взаимодействия с геймпадом

;Обязательная секция описания используемых осей ;Ось для завершения режима ручного управления Exit = 9 ; 11 бинарных осей, соответствующих кнопкам геймпада B1 = 1 B2 = 2 B3 = 3 B4 = 4 L1 = 7 L2 = 5 R1 = 8 R2 = 6 start = 10 T1 = 11 T2 = 12 ; 4 оси стиков;Правый стик движение вверх/вниз RTUD = 13 ;Правый стик движение влево/вправо RTLR = 16 ;Левый стик движение вверх/вниз LTUD = 15 ;Левый стик движение влево/вправо LTLR = 14 ; 2 оси крестовины;Движение крестовины вверх/вниз arrowsUD = 17 ;Движение крестовины влево/вправо arrowsLR = 18 ;Описание поведения оси B1 ;При нажатии кнопки B1 значение оси задать равным 1 upper_value = 1 ;При отпускании кнопки B1 значение оси задать равным 0 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 ;Описание поведения оси правого стика движение вверх/вниз ;Значение оси при перемещении в максимально возможное верхнее положение upper_value = 0 ;Значение оси при перемещении в максимально возможное нижнее положение lower_value = 65535 upper_value = 0 lower_value = 65535 upper_value = 0 lower_value = 65535 upper_value = 0 lower_value = 65535 ;Описание поведения оси крестовины движение вверх/вниз ;Значение оси при нажатии стрелки вверх upper_value = 1 ;Значение оси при нажатии стрелки вниз lower_value = -1 upper_value = 1 lower_value = -1


Дополнительная информация об особенностях настройки модуля gamepad отображена в справочном руководстве по RCML .

3. Следующий шаг - написание программы на языке RCML.

В корне созданного каталога, необходимо создать файл программы. Имя файла программы и его расширение может быть любым, однако следует избегать русских букв в названии. В примере использовано имя файла - hello.rcml.

Для модуля lego_ev3 программный код резервирования робота, имеет следующий вид:

@tr = robot_lego_ev3;

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

Алгоритм программы следующий:

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

Листинг программы для Lego робота на языке RCML

function main() { @tr = robot_lego_ev3; //Резервирование робота @tr->setTrackVehicle("B","C",0,0); //Установка синхронизации двигателей @tr->motorMoveTo("D",100,0,0); system.sleep(500); @tr->trackVehicleForward(-100); system.sleep(1000); @tr->motorMoveTo("D",50,-50,0); system.sleep(4000); @tr->motorMoveTo("D",50,50,0); system.sleep(4000); @tr->trackVehicleOff(); system.sleep(1000); }


Для компилирования программы необходимо использовать командную строку window. Сначала следует переместиться в созданный каталог с исполняемыми файлами rcml_compiler.exe и rcml_intepreter.exe. Далее нужно ввести следующие команды.

Команда для компилирования файла hello.rcml:

Rcml_compiler.exe hello.rcml hello.rcml.pc
В результате компилирования, в созданной директории появится новый файл hello.rcml.pc.

Скриншот командой строки после успешного компилирования



Теперь следует убедиться в том, что контроллер EV3 включен, сопряжен с Bluetooth адаптером. Геймпад должен быть подключен к ПК. После этого нужно выполнить команду исполнения программного файла:

Rcml_intepreter.exe hello.rcml

Внешний вид командной строки во выполнения программы



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

4. Следующий шаг – управление роботом в ручном режиме при помощи клавиатуры.

При помощи клавиатуры возможно управление любым двигателем робота. В рамках примера реализовано управление следующими механизмами:

  • Углом поворота передних колес
  • Направлением вращения задних колес

Листинг программы взаимодействия клавиатуры и робота Lego на базе контроллера EV3

function main() { @tr = robot_lego_ev3; //Резервирование робота @tr->setTrackVehicle("B","C",0,0); //Установка синхронизации двигателей system.hand_control(@tr,"keyboard", "straight","go", "speedMotorD","rotate"); }


Далее следует откомпилировать программу и выполнить её. Результат ручного управления Lego роботом при помощи на клавиатуры показан на видео внизу страницы.

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

Листинг программы взаимодействия геймпада и робота Lego

function main() { @tr = robot_lego_ev3; //Резервирование робота @tr->setTrackVehicle("B","C",0,0); //Установка синхронизации двигателей system.hand_control(@tr,"gamepad", "straight"," RTUD", "speedMotorD"," RTLR"); }


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

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

Теги:

  • lego mindstorms
  • робототехника
  • программирование
Добавить метки

1.1 Что такое LEGO® MINDSTORMS®?

LEGO MINDSTORMS - это конструкторский набор программируемой робототехники, который даёт тебе возможность создавать собственных роботов LEGO и управлять ими. Новый набор LEGO MINDSTORMS EV3 содержит всё, что нужно для создания любого из 17 роботов, которые ходят, говорят, двигаются и делают всё, что ты хочешь. В комплект EV3 входит программное обеспечение и бесплатные приложения, позволяющие строить, программировать и управлять роботами с помощью ПК, Mac, планшета или смартфона.

1.3 Что такое интеллектуальный модуль EV3?

Модуль EV3 - это программируемый интеллектуальный модуль, который, будучи мозгом робота, управляет моторами и датчиками, чтобы заставить его двигаться, ходить, говорить, а также обеспечивает беспроводную связь через Wi-Fi и Bluetooth.

2.1 Что входит в набор LEGO® MINDSTORMS® EV3?

Инструкции по сборке первого робота, TRACK3R
Соединительные кабели
1 USB-кабель
Детали LEGO Technic: 594 детали
1 модуль EV3
2 больших интерактивных сервомотора
1 средний интерактивный сервомотор
1 датчик касания
1 датчик цвета
1 инфракрасный датчик
1 инфракрасный маяк

2.2 Доступны ли инструкции по сборке в формате PDF?

2.3 Сколько роботов можно собрать, используя набор LEGO MINDSTORMS EV3 (31313)?

Сразу&ndash можно собрать пять моделей - инструкции по сборке вместе с сопровождающими программами содержатся в программном обеспечении EV3. Кроме того, существуют еще 12 дополнительных роботов, созданных нашими фанатами, информацию о которых можно получить через меню EV3 Software Lobby или через веб-сайт&ndash- все 12 моделей можно собрать, используя детали из набора LEGO® MINDSTORMS® EV3 (31313).

3.1 Можно ли использовать программное обеспечение LEGO® MINDSTORMS® EV3 Home Edition как на платформе Macintosh, так и на PC?

Да. Для программирования модулей LEGO MINDSTORMS EV3 программное обеспечение EV3 можно использовать как на платформе Macintosh, так и на платформе PC..

3.3 На каких языках доступно программное обеспечение LEGO® MINDSTORMS® EV3 Home Edition?

Вы можете бесплатно загрузить программное обеспечение пользователя EV3 с сайта сайт/mindstorms на следующих языках:

  • Китайский (Упрощенный)
  • Датский
  • Голландский
  • Английский (США)
  • Французский
  • Немецкий
  • Японский
  • Корейский
  • Русский
  • Испанский (ESSA)

3.4 Имеется ли руководство пользователя для программного обеспечения EV3?

Да. Руководство пользователя доступно для загрузки в формате pdf’с сайта сайт/mindstorms

3.5 На каких языках существует руководство пользователя по программному обеспечению EV3?

Вы можете загрузить руководство пользователя EV3 с сайта сайт/mindstorms на следующих языках:

  • Чешский
  • Китайский (упрощенный)
  • Датский
  • Голландский
  • Английский (США)
  • Эстонский
  • Финский
  • Французский
  • Немецкий
  • Венгерский
  • Итальянский
  • Японский
  • Корейский
  • Латвийский
  • Литовский
  • Норвежский
  • Польский
  • Португальский
  • Румынский
  • Русский
  • Словацкий
  • Испанский (ESSA)
  • Шведский
  • Украинский

3.6 Существует ли возможность программирования на самом модуле EV3?

Да. Мы продолжили работу и усовершенствовали программное приложение модуля для модуля LEGO® MINDSTORMS® EV3 . Вы с легкостью можете программировать основные задачи на модуле EV3. Все программы модуля EV3 могут быть загружены в программное обеспечение LEGO MINDSTORMS EV3 Home Edition для дальнейшего расширенного программирования.

3.7 Существуют ли инструменты для создания моих собственных программируемых блоков для программного обеспечения LEGO® MINDSTORMS® EV3 Home Edition?

Да. Для большинства пользователей этот инструмент называется «Мои Блоки» (MyBlocks), и он уже встроен в стандартное программное обеспечение EV3. Для людей, создающих свои собственные аппаратные средства, предоставляется комплект разработчика программного обеспечения.

3.8 Могу ли я запрограммировать модуль LEGO® MINDSTORMS® EV3, используя программное обеспечение NXT?

Нет. В программном обеспечении NXT нет возможности программировать модуль EV3.

3.9 Будет ли доступен справочный материал в формате pdf, в котором показано, как выполнять программирование на модуле EV3, а также использовать программное обеспечение LEGO® MINDSTORMS® EV3 Home Edition?

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

3.10 Совместимо ли программное обеспечение LEGO® MINDSTORMS® EV3 Home Edition с прежними версиями аппаратных средств NXT?

Да. Вы можете программировать интеллектуальный модуль NXT, используя новое программное обеспечение LEGO MINDSTORMS EV3 Home Edition. Модуль NXT поддерживает не все функции программного обеспечения.

3.11 Будет ли ПО LEGO® MINDSTORMS® EV3 работать на планшете?

Да и нет. Бесплатное приложение EV3 Programmer, которое можно загрузить через App Store и Google Play, позволяет программировать роботов с помощью планшета через Bluetooth. По сравнению с программным обеспечением для ПК и Mac, данное приложение намного проще в использовании и не предусматривает более сложных программных функций, блоков данных и вычислений. Приложение EV3 Programmer рекомендовано для новичков в LEGO MINDSTORMS или для тех, кто хочет иметь возможность программировать своих роботов, даже если стационарного ПК или Mac нет под рукой. Для завершения установки программного обеспечения EV3 необходимо установить программу LEGO MINDSTORMS EV3 на ПК или Mac. В настоящее время данная версия программного обеспечения недоступна для планшетов.

3.12 Помимо программного обеспечения EV3, какие платформы программирования можно использовать для программирования модулей LEGO® MINDSTORMS® EV3?

Кроме программного обеспечения EV3, вы также можете использовать LabVIEW и RobotC. Программное обеспечение EV3 - это открытая платформа, и мы ожидаем, что сообщество MINDSTORMS будет использовать дополнительные языки, такие как JAVA.

3.13 Какие новые возможности добавлены в программное обеспечение LEGO® MINDSTORMS® EV3 Home Edition по сравнению с NXT?

В программном обеспечении EV3 есть много новых функций и усовершенствований по сравнению с программным обеспечением NXT. Вот наиболее заметные из них: Главная страница

  • Новый дизайн для удобного для перемещения по контенту, включая доступ к файлам проекта для пяти героев-роботов EV3: TRACK3R, SPIK3R, R3PTAR, GRIPP3R и EV3RSTORM, а также прямые ссылки на 12 бонусных роботов, созданных фанатами.
Редактор контента
  • Контент можно редактировать непосредственно внутри программного обеспечения, что позволяет выполнять настройку существующих проектов или создавать новые проекты с нуля.
Более тесная связь между модулем EV3 и средой программирования
  • Страница аппаратных средств позволяет отслеживать их состояние и значения.
  • Элементы аппаратных средств автоматически распознаются благодаря поддержке автоматической идентификации.
  • Настройка Bluetooth упрощается благодаря средствам адаптации USB к Bluetooth.
Средства отладки теперь являются частью среды программирования.
  • Важная информация о выполнении программы
  • Программные блоки будут отображать предупредительный знак, если обнаруженное аппаратное средство, отличается от требуемого.
  • Зонды позволяют видеть прохождение числовых значений по шинам данных.
Новые возможности программных блоков’:
  • Простое линейное программирование путем стыкования блоков (больше не нужно использовать луч).
  • Параметры блоков настраиваются непосредственно на блоках.
  • Читайте запрограммированную последовательность непосредственно на блоках.
  • Усовершенствованные шины последовательности действий упрощают отображение структуры программы и создают параллельное выполнение.
  • “Была добавлена функция Ожидание изменения” (Wait for change), которая позволяет легко создавать роботов, действующих в зависимости от окружающей обстановки и не ждущих изменения пороговой величины, реализуемого путем сравнения измеренных значений.
  • Усовершенствованы шины данных, добавлена функция приведения данных, упрощающая преобразование типов данных.
  • Массивы интегрированы в стандартные блоки.
  • Стало возможным прерывание цикла, что позволяет создавать усовершенствованные механизмы управления состоянием.

3.14 Что представляет собой редактор контента в программном обеспечении EV3?

Редактор контента позволяет редактировать, адаптировать и настраивать проекты &mdash - или же создавать свои собственные новые с нуля. Вы можете использовать редактор контента для изменения своих проектов, вставляя в них текст, изображения, видеоролики и звук.

3.15 Будет ли редактор контента поддерживать файлы.MOV и.AVI?

Редактор контента поддерживает следующие форматы файлов, за исключением.AVI:
Изображение: JPG, PNG
Видео: MP4, ASF, WMV, MOV
Звук: MP3, WMA

3.16 Как обновлять программное обеспечение EV3?

Из пункта «Справка» в верхней строке меню программного обеспечения EV3 вы можете включить в программном обеспечении EV3 функцию автоматической проверки наличия обновлений. После выбора опции «Проверять наличие обновлений ПО» появится флажок, и программное обеспечение EV3 будет регулярно проверять наличие обновлений. (Для этого требуется подключение к Интернету.) Если имеется соответствующее обновление, программное обеспечение EV3 уведомит вас об этом.. После загрузки вы можете установить обновление.

4.1 Для чего может использоваться связь по Bluetooth в модуле LEGO® MINDSTORMS® EV3?

Технология Bluetooth обеспечивает связь с программным обеспечением EV3 или связь между модулями EV3. Для работы приложений EV3 Programmer и EV3 Commander необходимо подключить планшет к роботу посредством Bluetooth.

4.2 Зачем использовать USB-кабель для подключения модуля LEGO® MINDSTORMS® EV3 к компьютеру, если существует возможность связи по Bluetooth?

USB-подключение более быстрое, кроме того, в некоторых компьютерах модуль Bluetooth отсутствует.

4.3 Могут ли модули LEGO® MINDSTORMS® EV3 подключаться шлейфом по Bluetooth?

4.4 В чем разница между Wi-Fi и Bluetooth?

Wi-Fi и Bluetooth предназначены для разных целей. Bluetooth - это связь между двумя устройствами, действующая на близком расстоянии. Wi-Fi- это сетевая связь в более широком диапазоне, для нее требуется точка доступа Wi-Fi&ndash, маршрутизатор, и она потребляет больше мощности батарей, чем Bluetooth.

4.5 Что означает надпись “made for iPod, iPhone and iPad”?

Связь Bluetooth на модуле EV3 поддерживает тот же протокол, который используют устройства iOS, - например, вы можете осуществлять связь с iPod, iPhone и iPad. (В модуле NXT этой возможности нет.)

5.1 Для чего может использоваться Wi-Fi с модулем LEGO® MINDSTORMS® EV3?

Функция Wi-Fi может использоваться для связи модуля EV3 с программным обеспечением EV3. Адаптер Wi-Fi должен быть подключен к USB-порту модуля EV3. (Адаптер Wi-Fi не входит в комплект продукта.)

Да. С интеллектуальным модулем EV3 в качестве Wi-Fi-адаптера рекомендуется использовать беспроводной адаптер NETGEAR N150 (WNA1100) и адаптер EDIMAX EW-7811UN.

5.3 Зачем использовать USB-кабель для подключения модуля LEGO® MINDSTORMS® EV3 к компьютеру, если существует возможность связи по Wi-Fi?

USB-подключение более быстрое. Батарея будет работать дольше, если подключение по Wi-Fi отключено.

5.4 Могут ли модули LEGO® MINDSTORMS® EV3 подключаться шлейфом через Bluetooth?

Нет. При подключении шлейфом для подключения модулей EV3 используется USB-кабель.

5.5 Нужен ли маршрутизатор?

Да. Если вы хотите использовать Wi-Fi, то вам потребуется маршрутизатор.

5.6 Wi-Fi лучше, чем Bluetooth?

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

6.1 Какие датчики LEGO для LEGO® MINDSTORMS® EV3 существуют?

В набор LEGO MINDSTORMS EV3 (31313) входят следующие датчики:

  • 1 Датчик касания
  • 1 Датчик цвета
  • 1 ИК-датчик
  • 1 ИК-маяк
Датчики, перечисленные ниже можно приобрести дополнительно в онлайн-магазине сайт:
  • Гироскопический датчик
  • Ультразвуковой датчик, а также другие датчики сторонних производителей.

6.2 Чем отличаются датчики LEGO® MINDSTORMS® EV3 от датчиков NXT?

Датчики LEGO MINDSTORMS EV3 - это совершенно новые датчики, которые имеют улучшенный интерфейс и рабочие характеристики, а также обеспечивают бóльшую точность по сравнению с датчиками NXT.

  • Датчик цвета EV3 может обнаруживать 7 цветов (и отсутствие цвета), тогда как датчик цвета NXT может обнаруживать только 6 цветов
  • Датчик цвета EV3 имеет режим отраженного света, который удаляет фоновое освещение.
  • Датчики EV3 могут возвращать новые значения 1000 раз в секунду, тогда как датчики NXT возвращают новые значения только 333 раза в секунду.

6.3 Будут ли датчики LEGO® MINDSTORMS® EV3 работать с интеллектуальным модулем NXT?

Нет. Датчики LEGO MINDSTORMS EV3 являются цифровыми, и поэтому не будут работать с интеллектуальным модулем NXT.

6.4 Потребуются ли новые соединительные кабели?

Нет. Для LEGO® MINDSTORMS® EV3 используются такие же соединительные кабели RJ12, как и LEGO MINDSTORMS NXT.

6.5 Можно ли использовать датчики LEGO® MINDSTORMS® EV3 вместе с датчиками NXT?

Да. Для модуля LEGO MINDSTORMS EV3 используются такие же соединительные кабели RJ12, как и для модуля LEGO MINDSTORMS NXT.

6.6 Могут ли датчики NXT использоваться с модулем LEGO® MINDSTORMS® EV3?

Да. LEGO MINDSTORMS EV3 использует такие же элементы LEGO Technic и соединительные кабели RJ12.

7.1 Какие моторы входят в набор LEGO® MINDSTORMS® EV3?

Два больших сервомотора и один средний сервомотор.

7.2 Чем отличаются интерактивные сервомоторы LEGO® MINDSTORMS® EV3 от интерактивных сервомоторов NXT?

Характеристики большого мотора EV3 такие же, как и в NXT, однако интерфейс оптимизирован для обеспечения более быстрой сборки с бóльшими возможностями.
Средний интерактивный сервомотор - это совершенно новый мотор, обеспечивающий новые возможности.

7.3 Взаимозаменяемы ли сервомоторы LEGO® MINDSTORMS® EV3 и сервомоторы NXT?

Технически да, но большие моторы LEGO MINDSTORMS EV3 и сервомоторы NXT имеют разную конструкцию. Большие моторы LEGO MINDSTORMS EV3 предоставляют более интересный опыт конструирования.

7.4 Могут ли моторы LEGO® MINDSTORMS® EV3 и NXT использоваться вместе?

7.5 Можно ли использовать сервомоторы LEGO® MINDSTORMS® EV3 с модулем NXT?

Да. Вы можете использовать как большие сервомоторы, так и средний сервомотор с модулем NXT.

7.6 Можно ли использовать моторы с кривошипно-шатунным механизмом с модулем LEGO® MINDSTORMS® EV3?

Нет. Коннекторы не совпадают.

7.7 Что значит “подключение шлейфом”?

Подключение шлейфом - это возможность соединять до четырех модулей LEGO® MINDSTORMS® EV3 с помощью USB-кабеля, что обеспечивает наличие у вашего робота 16 выходных портов и 16 входных портов, управляемых с главного модуля LEGO MINDSTORMS EV3.

7.8 Что необходимо для подключения шлейфом?

Несколько модулей LEGO® MINDSTORMS® EV3, датчики и моторы, а также дополнительный обычный USB-кабель для LEGO MINDSTORMS EV3.

Основной модуль конструктора 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.



Загрузка...