Управление роботом LEGO Mindstorms EV3 от первого лица
Роботом, собранным из конструктора LEGO Mindstorms EV3, вы легко можете управлять дистанционно от первого лица. Для этого вам дополнительно понадобится два смартфона, с установленным приложением RoboCam на один из них. Давайте познакомимся подробнее с приложением RoboCam и научимся им пользоваться.
Статья описывает новые возможности, появившиеся в первой версии версии 1.0 приложения RoboCam. Все статьи посвященные приложению RoboCam вы можете найти здесь. Приложение RoboCam можно установить из магазина Google Play или скачать apk-файл и установить приложение вручную. Для скачивания есть 2 версии: обычная версия RoboCam и версия RoboCam с использованием RenderScript (для некоторых старых смартфонов).
Сначала давайте посмотрим видео, где показан робот, управляемый от первого лица, которого я назвал Исследователь EV3. Помимо того, что робот может ездить в любом направлении, он умеет поднимать и опускать голову, т.е. рамку, к которой прикреплён смартфон. А это значит, что вы сможете смотреть не только по сторонам, но и вверх/вниз.
Что нужно для проведения эксперимента?
Чтобы повторить эксперимент, который вы видите на видео, вам нужно следующее:
- Робот, собранный из конструктора LEGO Mindstorms EV3.
- Android-смартфон с камерой и установленным на него приложением RoboCam. Поддерживается Android 2.3 и выше. В смартфоне как минимум должна быть хотя бы одна камера, а также модули Bluetooth и Wi-Fi.
- Смартфон или планшет с современным браузером с поддержкой 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 14086 |
Готовим Android-смартфон и приложение RoboCam
Приложение RoboCam работает на смартфонах или планшетах под управлением операционной системы Android 2.3 и выше. Обязательным является наличие у устройства любой встроенной камеры и модулей Bluetooth и WiFi. Приложение бесплатное, вы можете установить его с помощью магазина Google Play или скачать и установить приложение вручную. Вот страничка приложения RoboCam. Для установки нажмите кнопку «УСТАНОВИТЬ», и примите требуемые разрешения, нажав на кнопку «ПРИНЯТЬ».
Для установки вручную есть 2 версии: обычная версия RoboCam и версия RoboCam с использованием RenderScript (для некоторых старых смартфонов).
После установки откройте приложение. В 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 не подключен». При этом моторы остановятся или примут первоначальное положение в зависимости от настроек.
Настройки сервера RoboCam
Чтобы перейти в настройки, нажмите на серую кнопку справа.
Настройки разделены на 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. Если остались вопросы по программе или есть предложения, можете оставлять их в комментариях к этой статье или в сообществе RoboCam.
Tags: RoboCam Учебники по использованию программ Обзоры программ Инструкции LEGO Mindstorms EV3 LEGO Mindstorms Education EV3 Android
Комментарии
----
Thanks Alex.
.....
Have anyone used mailboxes to send joystick coordinates to EV3 to calculate power of motors inside EV3 with RoboCam ?
Can anyone give me an example ?
Regards Magnus
В этом приложении нет такой возможности.
RSS лента комментариев этой записи