Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: XLII Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 31 мая 2016 г.)

Наука: Технические науки

Секция: Технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Байчурин А.А. РАЗРАБОТКА ЧУВСТВИТЕЛЬНОГО К ДВИЖЕНИЮ КОНТРОЛЛЕРА НА ОСНОВЕ ANDROID-СМАРТФОНА // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. XLII междунар. студ. науч.-практ. конф. № 5(41). URL: https://sibac.info/archive/technic/5(41).pdf (дата обращения: 16.04.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

РАЗРАБОТКА ЧУВСТВИТЕЛЬНОГО К ДВИЖЕНИЮ КОНТРОЛЛЕРА НА ОСНОВЕ ANDROID-СМАРТФОНА

Байчурин Антон Артурович

студент 2 курса, кафедра прикладной математики КНИТУ,

КАИ им. Туполева, г. Казань

Денисов Кирилл Геннадьевич

научный руководитель,

канд. технических наук, доцент КНИТУ,

КАИ им. Туполева, г. Казань

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

Существуют различные аналоги таких контроллеров, к примеру, Wii Remote [5], который работает за счет акселерометра и светочувствительной матрицы, Playstation Move [3], отличающийся от предыдущего наличием светодиодной сферы, считываемой камерой, или же Razor Hydra [4], который, помимо прочего взаимодействует со сферой, генерирующей слабое электромагнитное поле, увеличивающее точность определения положения контроллера. Но описанные выше аналоги работают только с продуктами компаний, который разработали эти контроллеры. В этой работе рассматривается вариант контроллера, который возможно установить на любое Android-устройство.

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

Актуальность проблемы

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

Специфические манипуляции с ЭВМ. Использование компьютерной мыши не всегда может быть интуитивно понятным пользователю, т.к. предлагает манипуляции лишь в двухмерной плоскости. Использование контроллера, чувствительного к движению в пространстве, может предложить дополнительно третью плоскость, плюс к ним еще и считывание вращения. Это может оказаться полезным в случаях, например, работы в 3d редакторе, где можно будет таким образом вращать и передвигать объекты максимально интуитивным способом, управляя ими контроллером в своих руках.

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

Синхронизация Android-устройства с компьютером

Для соединения Android-устройства с компьютером-сервером рассматривались следующие варианты:

  • При помощи кабеля
  • Bluetooth – канал
  • Wi-Fi сеть

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

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

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

Алгоритм контроллера движения

При создании приложения используется инструмент под названием Unity3d. Для отслеживания изменения ориентации устройства используется встроенный гироскоп. Для этого в Unity3d есть специализированные классы, такие как Input. У него есть свойство gyro, у которого, в свою очередь, через свойство attitude можно получить информацию о том, в каком положении находится устройство. Однако, гироскоп измеряет ориентацию не в привычной нам системе координат, так что приходится делать конвертацию координат, полученных от гироскопа к координатам, в которых работает Unity3d.

Для отслеживания ускорения устройства используется акселерометр, и для работы с ним в Unity3d также есть специальные инструменты, а именно Sensor.linearAcceleration. [1] При его использовании, опять же, необходимо приводить координаты к системе, используемой в Unity3d. Однако, точность акселерометра намного хуже, чем у гироскопа, который, в свою очередь, определяет изменение ориентации очень точно, чего нельзя сказать об акселерометре.

Алгоритм контроллера движения в общем виде состоит из следующих шагов:

  1. Считывание данных с гироскопа
  2. Конвертация полученных данных в систему координат Unity3D
  3. Проверка наличия соединения с сервером. Если соединение закрыто, то переход к пункту 5.
  4. Передача сконвертированных данных серверу. Переход к пункту 1.
  5. Завершение работы клиента приложения

Алгоритм сервера контроллера движения

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

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

Для передачи данных использовался механизм Unity3d, называемый RPC – Remote Procedure Calls [2]. Это своего рода аналог Remoting в .NET, однако не требующий кропотливой настройки и описания объектов, участвующих в маршалинге. Здесь достаточно указать ip и порт сервера, и пометить вызываемые функции специальным атрибутом [RPC]. После этого функции сервера можно вызывать с любого из подключенных клиентов, передавая необходимые параметры, которыми в нашем случае являются данные с датчиков устройства.

Алгоритм сервера контроллера движения в общем виде содержит следующие этапы:

  1. Проверка активности канала связи с клиентом приложения. Если канал связи закрыт, то переход к пункту 6.
  2. Получение данных с клиента через канал связи.
  3. Анализ данных и применение их к объектам на сцене.
  4. Обновление сцены в соответствии с новыми входящими данными и физическими свойствами объектов.
  5. Проверка условия завершения. Если условие не выполнено, то переход к пункту 1.
  6. Завершение работы сервера контроллера движения.

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

 

Список литературы:

  1. Герасимов В. Unity 3.x Scripting. – Packt Publishing, 2011. – 292 с.
  2. Сведения о RPC // Документация Unity. — 2016. — [электронный ресурс] — Режим доступа. — URL: http://docs.unity3d.com/ru/current/Manual/net-RPCDetails.html (дата обращения 25.05.2016)
  3. Playstation Move // Wikipedia. — 2016. — [электронный ресурс] — Режим доступа. — URL: https://ru.wikipedia.org/wiki/PlayStation_Move (дата обращения 25.05.2016)
  4. Razor Hydra // Wikipedia. — 2016. — [электронный ресурс] — Режим доступа. — URL: https://ru.wikipedia.org/wiki/Hydra_(контроллер) (дата обращения 25.05.2016)
  5. Wii remote // Wikipedia. — 2016. — [электронный ресурс] — Режим доступа. — URL: https://ru.wikipedia.org/wiki/Wii_Remote (дата обращения 25.05.2016)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.