Виртуальный робот телеприсутствия с использованием Raspberry Pi
Виртуальный робот телеприсутствия с использованием Raspberry Pi
Этот робот с камерой размещен в удаленном месте для съемки окружающей среды в визуальная форма с использованием Raspberry Pi (RPi). Захваченные изображения отображаются на гарнитуре виртуальной реальности (VR) пользователя.
Добавленная функция позволяет камере двигаться в направлении движения головы пользователя. Это дает пользователю возможность в режиме реального времени, поскольку if он присутствует там, где находится виртуальный робот телеприсутствия.
Виртуального робота телеприсутствия также можно перемещать в любом направлении через приложение, установленное на смартфоне пользователя.
Виртуальная реальность
Видео, снятое камерой RPi, можно просмотреть на смартфоне, помещенном в гарнитуру виртуальной реальности (VR). Проект позволяет пользователю ощутить виртуальную реальность через гарнитуру VR. Для этого в смартфоне включен режим двухэкранного режима.
Смартфон считывает данные акселерометра и магнитометра направления, в котором пользователь поворачивает голову, скажем, вправо или влево. Эти данные отправляются на модем через Wi-Fi и на плату RPi, которая, в свою очередь, предоставляет эти значения в качестве входных данных для серводвигателей.
Для перемещения камеры используются два серводвигателя: один для вертикального перемещения, другой для горизонтального. Поэтому, когда вы поворачиваете голову вместе с гарнитурой VR вправо, камера RPi также повернется в правильном направлении.
Цепь и работа
Блок-схема виртуального робота телеприсутствия представлена на рис. 1. RPi — это мозг системы. Он получает входные данные от смартфона через Wi-Fi, а затем отправляет управляющий импульс серводвигателям для перемещения камеры RPi.
Рис. 1: Блок-схема виртуального робота телеприсутствия
Смартфон также обеспечивает ввод данных в Arduino Mega (Board2) для навигации или перемещения виртуального робота телеприсутствия. Микросхема драйвера двигателя и мотор-редукторы подключаются в конце навигационной схемы.
Команды для запуска виртуального робота телеприсутствия можно отправлять через Bluetooth или радиочастотный модуль со смартфона. В этом примере используется Bluetooth.
Основная принципиальная схема виртуального робота телеприсутствия показана на рис. 2. Проект состоит из следующих разделов: зарядное устройство 12 В, источник питания 8 В, плата Raspberry Pi, плата Arduino Mega 2560, серводвигатели, мотор-редукторы постоянного тока и модуль Bluetooth. Помимо этого вам также потребуется смартфон Android с соответствующим приложением, коды Python и PHP для Raspberry Pi и эскиз Arduino для платы Arduino.
Рис. 2. Принципиальная схема робота виртуального телеприсутствия
Источник питания
Первая ступень схемы — зарядное устройство на 12 В для зарядки аккумуляторных батарей. Четыре свинцово-кислотные аккумуляторные батареи, каждая емкостью 4 В, 1 Ач, расположены последовательно и параллельно для обеспечения питания 8 В. Если батареи соединены последовательно, конечное напряжение суммируется, а ток остается прежним. Если батареи соединены параллельно, ток складывается, а напряжение остается прежним. Таким образом, вы получаете источник питания 8 В, 2 Ач, подключив два комплекта последовательно, а затем два комплекта параллельно.
Диод D1 используется для блокировки разряда аккумулятора через светодиод 1 и конденсатор C1. Диод также обеспечивает стабильность схемы и контролирует температуру зарядки while.
Источник питания 8 В используется для питания Arduino, микросхемы драйвера двигателя и других модулей. Когда switch S1 разомкнут, питание сервоприводов от батареи отключается. Три последовательных диода (от D2 до D4) снижают напряжение примерно до 6 В для безопасной работы серводвигателей.
Для питания Raspberry Pi используется блок питания 5 В.
Навигация
Навигационная схема управляет движением робота. Он состоит из платы Arduino Mega 2560 (Board2), модуля Bluetooth HC-05, драйвера двигателя L293D (IC1) и двух мотор-редукторов постоянного тока M3 и M4.
Данные о направлении или команда со смартфона передаются в навигационную систему через модуль Bluetooth HC-05. Он обрабатывается Arduino и затем подается на микросхему драйвера двигателя, которая приводит мотор-редуктор в необходимое направление. Команды отдаются приложению Bluetooth Electronics, установленному на смартфоне.
Сначала вам необходимо открыть приложение Bluetooth Electronics и выполнить сопряжение с модулем HC-05, как показано на рис. 3. После сопряжения двух устройств кнопки редактируются в приложении и настраиваются на символы английского алфавита. Каждому направлению (вперед, назад, вправо и влево) присвоен свой символ. Используются четыре кнопки, как показано на рис. 4. При нажатии этих кнопок передаются соответствующие символы.
Рис. 3. Сопряжение с модулем BluetoothРис. 4. Настройка кнопок
Модуль Bluetooth HC-05 получает символы и отправляет их на контакты Arduino (передатчик и приемник). Arduino обрабатывает эти данные и сравнивает их с программой Arduino. Соответствующие цифровые значения отправляются на входные контакты микросхемы L293D. Микросхема драйвера обеспечивает больший ток, чтобы заставить двигатель двигаться в нужном направлении.
Рис. 5. Окончательная настройка на смартфоне
В зависимости от данных, полученных от модуля Bluetooth, двигатель движется вперед или назад.
К мотор-редукторам от Board2 с микроконтроллером ATmega2560 (MCU) подключены четыре провода. Используется Arduino Mega, поскольку он имеет 16 аналоговых каналов и может использоваться для подключения различных датчиков. Блок-схема (рис. 6) изображает алгоритм, используемый в навигационной программе (arduino_bluetooth.ino), записанной в MCU Arduino.
Рис. 6: Блок-схема навигационной программы
Съемка живого видео. Серводвигатели подключены к контактам GPIO RPi. Для управления положением камеры используются два серводвигателя (M1 и M2), которые перемещают камеру в направлениях X и Y.
Загрузите приложение Wireless IMU из Play Store и установите его на свой смартфон. Приложение поддерживает акселерометр, гироскоп и магнитометр и может работать в фоновом режиме. Значения из этого приложения отправляются в RPi через протокол UDP. Показания магнитометра заставляют сервоприводы двигаться либо вправо, либо влево. Значения акселерометра заставляют сервоприводы двигаться вверх и вниз. В проекте используется только направление Z. Алгоритм сервоуправления показан на рис. 7. Таким образом, камера может снимать живое видео под разными углами.
Рис. 7: Алгоритм подключения серводвигателя
Arduino Mega 2560
Arduino Mega 2560 — плата микроконтроллера на базе ATmega2560. Он имеет 54 цифровых контакта ввода/вывода (из которых 15 могут использоваться как выходы PWM), 16 аналоговых входов, четыре UART (аппаратные последовательные порты), кварцевый генератор 16 МГц, разъем USB, разъем питания, разъем ICSP и кнопку сброса. Он содержит все необходимое для поддержки микроконтроллера; для начала просто подключите его к компьютеру с помощью кабеля USB или включите его с помощью адаптера переменного тока в постоянный ток или аккумулятора. Плата Mega 2560 совместима с большинством шилдов, разработанных для Uno. Это обновление Arduino Mega.
Плата Arduino действует как процессор направления виртуального робота телеприсутствия. Команды для управления виртуальным роботом телеприсутствия в указанном направлении обрабатываются и передаются Arduino на микросхему драйвера, которая, в свою очередь, запускает двигатели. Плату Mega 2560 можно запрограммировать с помощью программного обеспечения Arduino (IDE). ATmega2560 на плате поставляется с предварительно запрограммированным загрузчиком, который позволяет загружать в него новый код без использования внешнего аппаратного программатора.
Плата Mega 2560 может получать питание через соединение USB или от внешнего источника питания. Источник питания выбирается автоматически. Внешнее питание (не USB) может поступать либо от адаптера переменного тока в постоянный, либо от аккумулятора. Плата может работать от внешнего источника питания 6-20 Вольт. Рекомендуемый диапазон напряжения питания — 7–12 В.
ATmega2560 имеет 256 КБ флэш-памяти для хранения кода (из них 8 КБ используется для загрузчика), 8 КБ SRAM и 4 КБ EEPROM. Плата Mega 2560 имеет ряд средств для связи с компьютером, другой платой или другими микроконтроллерами. ATmega16U2 на плате передает один из них через USB и предоставляет виртуальный COM-порт для программного обеспечения на компьютере.
Мотор-редуктор
Двигатели-редукторы — это особый тип электродвигателей, которые создают высокий крутящий момент while, сохраняя при этом низкую мощность или низкую скорость вращения двигателя. Это может быть как переменный ток (переменный ток), так и постоянный ток (постоянный ток). У них также есть две разные характеристики скорости: нормальная скорость и крутящий момент на скорости сваливания.
Двигатели-редукторы постоянного тока в основном используются для снижения скорости ряда шестерен, что, в свою очередь, создает больший крутящий момент. Это достигается с помощью интегрированного ряда шестерен или коробки передач, прикрепленной к ротору и валу главного двигателя через второй редукторный вал. Затем второй вал соединяется с рядом шестерен или коробкой передач, образуя так называемый ряд редукторов.
В этом проекте используются два мотор-редуктора постоянного тока.
Серводвигатель
Серводвигатель — это вращательный или линейный привод, который позволяет точно контролировать угловое или линейное положение, скорость и ускорение. Он состоит из подходящего двигателя, соединенного с датчиком обратной связи по положению. Для этого также требуется относительно сложный контроллер, часто специальный модуль, разработанный специально для использования с серводвигателями. Это не особый класс двигателя, хотя термин «серводвигатель» часто используется для обозначения двигателя, подходящего для использования в системе управления с замкнутым контуром. В этом проекте используются два серводвигателя.
Модуль Bluetooth
Модуль HC-05 — это простой в использовании модуль Bluetooth SPP (протокол последовательного порта), предназначенный для прозрачной настройки беспроводного последовательного соединения. Модуль Bluetooth с последовательным портом представляет собой полностью квалифицированный модулятор Bluetooth V2.0+EDR (повышенная скорость передачи данных) 3 Мбит/с с полным радиоприемопередатчиком 2,4 ГГц и основной полосой частот. Он использует одночиповую систему Bluetooth CSR Bluecore 04-External с технологией CMOS и функцией AFH (адаптивное скачкообразное изменение частоты). Его скорость передачи данных default составляет 38400 бод, он имеет восемь бит данных, один стоповый бит и не имеет четности. Он поддерживает следующие скорости передачи данных: 9600, 19200, 38400, 57600, 115200, 230400 и 460800.
Драйвер двигателя L239D
L293D — это типичная микросхема драйвера двигателя, которая позволяет двигателю постоянного тока вращаться в любом направлении. L293D — это 16-контактная микросхема, которая может одновременно управлять двумя двигателями постоянного тока в любом направлении. Это означает, что вы можете управлять двумя двигателями постоянного тока с помощью одной микросхемы L293D.
Модуль камеры
Модуль камеры — это датчик изображения, интегрированный с объективом, управляющей электроникой и интерфейсом, например CSI, Ethernet или простой низковольтной дифференциальной сигнализацией. Модуль камеры Raspberry Pi можно использовать для съемки видео высокой четкости, а также фотографий. Модуль оснащен пятимегапиксельной камерой с фиксированным фокусом, которая поддерживает видеорежимы 1080p30, 720p60 и VGA90, а также съемку фотографий. Он подключается через ленточный кабель длиной 15 см к порту CSI на Raspberry Pi. Доступ к нему можно получить через API-интерфейсы MMAL и V4L, и для него создано множество сторонних библиотек, включая библиотеку Picamera Python.
Raspberry Pi и настройки видео
В этом проекте используется RPi, поскольку он позволяет легко передавать видео через Wi-Fi. RPi считается CPU виртуального робота телеприсутствия. Используемая здесь модель B Raspberry Pi 3 (RPi 3) — это RPi третьего поколения. Этот мощный одноплатный компьютер размером с кредитную карту можно использовать для множества приложений. RPi 3 Model B, выпущенная в феврале 2016 года, оснащена встроенными возможностями загрузки Wi-Fi, Bluetooth и USB. В RPi 3 используется Broadcom BCM2837 SoC с 64-разрядным четырехъядерным процессором ARM Cortex-A53 с тактовой частотой 1,2 ГГц и общим кэшем второго уровня объемом 512 КБ.
Следующий основной шаг — настройка RPi
После завершения первоначальной настройки RPi плата RPi подключается к Wi-Fi. Адрес IP запрограммирован, и установка связана с RPi. Видео, снятое камерой RPi, передается через модем Wi-Fi. Это видео можно просмотреть на вашем смартфоне, подключившись к тому же соединению Wi-Fi и адресу IP RPi.
RPi питается от блока питания 5 В и 10 000 мАч (Xiaomi). Затем SD-карта с программным обеспечением Raspbian вставляется в слот на плате RPi. Плата подключается к монитору для дальнейшей настройки. Инструмент настройки RPi в Raspbian позволяет легко включать функции и изменять конкретные настройки, например раскладку клавиатуры. Процедура первоначальной настройки следующая:
1. Откройте окно Терминала на Mac (или его эквивалент на другом компьютере)
2. Запускайте по беспроводной сети со статическим IP для каждой SD-карты
3. Автоматический запуск
4. Установите часовой пояс
5. Пропустите GUI RPi
После завершения вышеуказанной настройки мы сможем увидеть экран рабочего стола на мониторе RPi. Чтобы снова просмотреть рабочий стол, нам необходимо получить доступ через удаленный рабочий стол.
Чтобы получить удаленный рабочий стол на некоторых ноутбуках, необходимо установить программное обеспечение XRDP, как показано на рис. 8. Имя пользователя и пароль вводятся на экране. Затем вводится адрес компьютера IP, как показано на рис. 9. Доступ к RPi осуществляется путем ввода имени пользователя и пароля, как показано на рис. 10. Откроется рабочий стол RPi, как показано на рис. 11.
Рис. 8. Установка XRDP для удаленных вычисленийРис. 9: Ввод адреса IPРис. 10: Ввод имени пользователя и пароляРис. 11: Рабочий стол RPi
Программное обеспечение
Веб-сервер Apache
В этом проекте используется Apache для настройки RPi в качестве сервера. Apache — популярное приложение веб-сервера, которое вы можете установить на RPi, чтобы он мог обслуживать веб-страницы. Apache может обслуживать файлы HTML через HTTP, а с помощью дополнительных модулей он может обслуживать динамические веб-страницы с использованием языков сценариев, таких как PHP. Сначала установите пакет Apache, введя в терминале следующую команду:
Sudo apt-get install apache2 -y
К default Apache помещает тестовый HTML-файл в веб-папку. Эта веб-страница default обслуживается, когда вы просматриваете http://192.168.1.98 с другого компьютера в сети. Просмотрите веб-страницу default либо на RPi, либо на другом компьютере в сети; вы увидите страницу default. Затем установите PHP5, введя в терминале следующую команду:
Sudo apt-get install php5
Веб-интерфейс камеры RPi. RPi подключен к Ethernet и настроен для доступа в Интернет. Затем производится подключение к локальной сети через Wi-Fi. Затем к Board1 подключается модуль камеры RPi. Снимаются неподвижные изображения, а результат проверяется на странице веб-интерфейса камеры RPi Raspberry Pi. Те же настройки выполняются для передачи видео. Установка веб-интерфейса RPi Cam показана на рис. 12, финальная веб-страница — на рис. 13, а настройка камеры — на рис. 14.
Рис. 12: Установка веб-интерфейса камеры RPiРис. 13: Последняя веб-страницаРис. 14: Доступ к настройкам камеры
Окончательная настройка передачи видео осуществляется путем установки на смартфон приложения DualScreen, которое устанавливается в гарнитуру VR. Это сделано для усиления эффекта от виртуальной реальности.
Питон
Python — широко используемый язык программирования высокого уровня для программирования общего назначения. Программы Python не нужно компилировать перед их запуском. Однако для их запуска на компьютере должен быть установлен интерпретатор Python. Интерпретатор Python — это программа, которая читает файлы Python и выполняет код. Код python_camera.py используется на плате RPi для управления серводвигателями.
Ардуино IDE
Программное обеспечение Arduino с открытым исходным кодом (IDE) позволяет легко писать код и загружать его на плату. Он работает на Windows, Mac OS X и Linux. Среда написана на Java и основана на Processing и другом программном обеспечении с открытым исходным кодом.
PHP
PHP (рекурсивная аббревиатура от PHP: препроцессор гипертекста) — это широко используемый язык сценариев общего назначения с открытым исходным кодом, который особенно подходит для веб-разработки и может быть встроен в HTML. Он особенно подходит для серверной веб-разработки, при которой case PHP обычно работает на веб-сервере. Любой код PHP в запрошенном файле выполняется средой выполнения PHP, обычно для создания динамического содержимого веб-страницы или динамических изображений, используемых на веб-сайтах или в других местах. В этом проекте PHP5 используется для запуска и редактирования веб-страницы default.
Приложение Wireless IMU
Это приложение (рис. 16) измеряет и сообщает об удельной силе тела, угловой скорости, а иногда и магнитном поле, окружающем тело, с помощью комбинации акселерометров и гироскопов, а иногда и магнитометров. Блок инерционных измерений (IMU) работает, определяя текущую скорость ускорения с помощью одного или нескольких акселерометров, а также обнаруживает изменения атрибутов вращения, таких как тангаж, крен и рысканье, с помощью одного или нескольких гироскопов. А некоторые также включают в себя магнитометр, в основном для облегчения калибровки против смещения ориентации. Акселерометры расположены так, что их измерительные оси ортогональны друг другу. Три гироскопа расположены одинаково ортогонально и измеряют положение вращения относительно произвольно выбранной системы координат. Магнитометры обеспечивают более высокую производительность при расчете динамической ориентации в системах ориентации и курса.
Двойной экран
Приложение DualScreen от Goestoweb позволяет отображать экран смартфона в двух разных частях. Это сделано для получения точных изображений через линзу VR. В VR-гарнитуре два окуляра, поэтому используется двухэкранный режим.
Рис. 15. Двойной экран в приложении DualScreen
Электроника Bluetooth
Это приложение от Keuwlsoft необходимо установить на смартфон. Оно позволяет пользователю управлять двигателем со смартфона. Указания виртуального робота телеприсутствия передаются через Bluetooth.
Рис. 16: Скриншот приложения IMU
Создание и тестирование
Схема виртуального телеприсутствия PCB в реальном размере показана на рис. 17, а схема ее компонентов — на рис. 18. Установите компоненты на PCB, подключите платы (плата1 и плата2) и четыре батареи. Используйте подходящее шасси для робота виртуального телеприсутствия. Закрепите все батареи под корпусом. Установите PCB и платы сверху корпуса. Подключите серводвигатели M1 и M2. Прикрепите камеру RPi к этим двум двигателям для горизонтального и вертикального перемещения.
Рис. 17: PCB макет виртуального робота телеприсутствияРис. 18: Расположение компонентов PCB
Загрузите PCB и PDF-файлы макетов компонентов: нажмите здесь
Подключите два мотор-редуктора постоянного тока к шасси виртуального робота телеприсутствия для перемещения вперед, назад, влево и вправо.
После завершения сборки оборудования установите все необходимые приложения на свой смартфон, как упоминалось ранее. Включите режим двойного экрана. Поместите смартфон на гарнитуру VR, например на VR Box. Теперь наденьте гарнитуру VR на голову. Отрегулируйте правую и левую линзы очков VR, чтобы убедиться, что изображение отображается правильно. Если все в порядке, поверните голову влево и вправо, камера, установленная на роботе виртуального телеприсутствия, соответственно, тоже будет двигаться в том же направлении. Вы также можете управлять виртуальным роботом телеприсутствия (без VR) с помощью приложения Bluetooth Electronics. Авторский прототип показан на рис. 19.
Все ссылки на книги и журналы, представлены на этом сайте, исключительно для ознакомления, авторские права на эти публикации принадлежат авторам книг и издательствам журналов!
Подробно тут! Жалоба