Виртуальный робот Telepresence с использованием Raspberry Pi. Часть 1
Этот робот с камерой расположен в удаленном месте, чтобы захватить окружающую среду в визуальной форме с помощью Raspberry Pi (RPi). Захваченные изображения отображаются на гарнитуре виртуальной реальности пользователя. Дополнительная функция позволяет камере перемещаться в направлении движений головы пользователя. Это дает пользователю возможность видеть в реальном времени, как будто он присутствует там, где находится робот виртуального телеприсутствия. Робот виртуального телеприсутствия также может перемещаться в любом направлении через приложение, установленное на смартфоне пользователя. Видео, снятое камерой RPi, можно просматривать на смартфоне, помещенном в гарнитуру виртуальной реальности (VR). Проект позволяет пользователю испытать виртуальную реальность через гарнитуру VR. Для этого в смартфоне включен режим двойного экрана. Смартфон считывает данные акселерометра и магнитометра о направлении, в котором пользователь поворачивает голову, скажем, вправо или влево. Эти данные отправляются на модем через Wi-Fi и на плату RPi, которая, в свою очередь, предоставляет эти значения в качестве входных данных для серводвигателей. Два серводвигателя используются для перемещения камеры - один для вертикального движения, а другой для горизонтального движения. Поэтому, когда вы поворачиваете голову вместе с виртуальной гарнитурой VR на правую сторону, камера RPi также поворачивается в правильном направлении. Блок-схема виртуального робота телеприсутствия показана на рис. 1. RPi - это мозг системы. Он получает вход от смартфона через Wi-Fi, а затем отправляет управляющий импульс на серводвигатели для перемещения камеры RPi.
Fig. 1: Block diagram of virtual telepresence robot
Смартфон также обеспечивает вход в Arduino Mega (Board2) с целью навигации или перемещения робота виртуального телеприсутствия. Микросхема привода двигателя и мотор-редукторы подключены в конце навигационной цепи.
Команды для запуска виртуального робота дистанционного присутствия могут быть отправлены через смартфон или радиочастотный модуль со смартфона. В этом примере используется Bluetooth.
Принципиальная схема робота виртуального телеприсутствия показана на рис. 2. Проект состоит из следующих разделов: зарядное устройство 12 В, источник питания 8 В, плата Raspberry Pi, плата Arduino Mega 2560, серводвигатели, мотор-редукторы постоянного тока и модуль Bluetooth. Наряду с этим вам также понадобится смартфон Android с соответствующим приложением, Python и PHP-коды для Raspberry Pi, а также скетч Arduino для платы Arduino.
Fig. 2: Circuit diagram for virtual telepresence robot
Первая ступень схемы представляет собой зарядное устройство на 12 В для зарядки аккумуляторных батарей. Четыре свинцово-кислотных перезаряжаемых аккумулятора, каждый на 4 В, 1 Ач, расположены последовательно и параллельно для обеспечения источника питания 8 В. Если батареи соединены последовательно, окончательное напряжение складывается, а ток остается прежним. Если батареи подключены параллельно, ток увеличивается, а напряжение остается прежним. Таким образом, вы получаете источник питания 8 В, 2 Ач, подключая два последовательно друг к другу, а затем два комплекта параллельно. Диод D1 используется для блокировки разряда батареи через светодиод LED1 и конденсатор C1. Диод также обеспечивает стабильность цепи и контролирует температуру во время зарядки. Источник питания 8 В используется для питания Arduino, микросхемы драйвера двигателя и других модулей. Когда переключатель S1 разомкнут, питание аккумуляторов от сервоприводов отключается. Три последовательных диода (от D2 до D4) снижают напряжение примерно до 6 В для безопасной работы серводвигателей. Банк питания 5 В используется для питания Raspberry Pi. Схема навигации контролирует движение робота. Он состоит из платы Arduino Mega 2560 (Board2), модуля Bluetooth HC-05, драйвера двигателя L293D (IC1) и двух мотор-редукторов постоянного тока M3 и M4. Направленные данные или команда со смартфона отправляются в схему навигации через модуль Bluetooth HC-05. Он обрабатывается Arduino, а затем подается на микросхему привода двигателя, которая приводит в движение мотор-редуктор в нужном направлении. Команды выдаются приложению Bluetooth Electronics, установленному на смартфоне. Во-первых, вам нужно открыть приложение Bluetooth Electronics и выполнить сопряжение с модулем HC-05, как показано на рис. 3. Как только два устройства будут сопряжены, кнопки будут отредактированы в приложении и настроены на символы английского алфавита. Каждому направлению (вперед, назад, вправо и влево) присваивается символ. Четыре кнопки используются, как показано на рис. 4. При нажатии этих кнопок передаются соответствующие символы.
Fig. 3: Pairing with Bluetooth module
Fig. 4: Configuring the buttons
Модуль Bluetooth HC-05 принимает символы и отправляет их на контакты Arduino (передатчик и приемник). Arduino обрабатывает эти данные и сравнивает их с программой Arduino. Соответствующие цифровые значения отправляются на входные контакты микросхемы L293D. ИС драйвера обеспечивает больший ток, чтобы двигатель двигался в нужном направлении.
Fig. 5: Final setup in smartphone
В зависимости от данных, полученных от модуля Bluetooth, двигатель движется в прямом или обратном направлении. К редукторным двигателям от Board2 подключены четыре провода с микроконтроллером ATmega2560 (MCU). Arduino Mega используется потому, что имеет 16 аналоговых каналов и может использоваться для подключения разных датчиков. Блок-схема (рис. 6) изображает алгоритм, используемый в навигационной программе (arduino_bluetooth.ino), сожженной в MCU Arduino.
Fig. 6: Flow-chart of navigation program
Захват живого видео. Серводвигатели подключаются к выводам GPIO RPi. Для управления положением камеры два серводвигателя (M1 и M2) используются для перемещения камеры в направлениях X и Y. Загрузите приложение Wireless IMU из Play Store и установите его на свой смартфон. Приложение поддерживает акселерометр, гироскоп и магнитометр и может работать в фоновом режиме. Значения из этого приложения отправляются в RPi по протоколу UDP. Значения магнитометра заставляют сервоприводы двигаться вправо или влево. Значения акселерометра заставляют сервоприводы двигаться вверх и вниз. В проекте используется только направление Z. Алгоритм сервоуправления показан на рис. 7. Таким образом, камера может снимать живое видео под разными углами.
Fig. 7: Algorithm for servo motor interfacing
Arduino Mega 2560 - это микроконтроллерная плата на базе ATmega2560. Он имеет 54 цифровых входа / выхода (из которых 15 могут использоваться в качестве ШИМ-выходов), 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-порт для программного обеспечения на компьютере. Мотор-редукторы - это особый тип электрических двигателей, которые вырабатывают высокий крутящий момент, сохраняя при этом низкую или низкую скорость двигателя. Это может быть переменный ток (переменный ток) или постоянный ток (постоянный ток). У них также есть две различные спецификации скорости - нормальная скорость и крутящий момент при скорости сваливания. Мотор-редукторы постоянного тока в основном используются для снижения скорости в ряде передач, что, в свою очередь, создает больший крутящий момент. Это достигается с помощью встроенной серии зубчатых колес или коробки передач, прикрепленной к ротору и валу основного двигателя через второй редукторный вал. Затем второй вал соединяется с рядом зубчатых колес или редукторов для создания так называемого ряда редукторов. В этом проекте используются два редукторных двигателя постоянного тока. Серводвигатель - это вращательный или линейный привод, который позволяет точно контролировать угловое или линейное положение, скорость и ускорение. Он состоит из подходящего двигателя, подключенного к датчику обратной связи по положению. Это также требует относительно сложного контроллера, часто специального модуля, разработанного специально для использования с серводвигателями. Это не определенный класс двигателя, хотя термин «серводвигатель» часто используется для обозначения двигателя, подходящего для использования в замкнутой системе управления. В этом проекте используются два серводвигателя.
В начало обзора