Собираем VR очки с трекингом головы на базе RTD2660


Добрый день (опционально вечер/ночь).

Сегодня расскажу Вам о том, как можно изготовить очки виртуальной реальности своими руками, без телефонов (Трафик!):


ПРЕДИСЛОВИЕ

На данный момент НЕТ официального стандарта для VR очков/маски и тому подобных вещей. Про Oculus, HTC, Samsung, Sony и тд. нет смысла говорить и сравнивать. Это просто устройства с отличающимся функционалом + / -, какие-либо примочки. Тут нет смысла спорить о том, что такое VR, все видят по-своему.

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

В процессе работы над своим экспериментом было выделено 2 нюанса важных для меня:

1. Трекинг головы.
2. Дисплей вместо телефона.

Исходя из этих нюансов я и занялся постройкой агрегата.

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

КОМПЛЕКТУЮЩИЕ

Для очков мне понадобились следующие комплектующие:

1. arduino Leonardo (можно использовать китайские платы Pro Micro, для уменьшения размеров, об этом я узнал много позже иначе бы применил именно ее);
2. гироскоп GY521;
3. самые дешевые очки для телефона с линзами и механизмом подгонки под глаза;
4. матрица для вывода изображения;
5. контроллер для матрицы с портом HDMI.

МАТЧАСТЬ

Первым делом будет предупреждение:



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

Корпус:

Корпус придется собирать под матрицу отдельно, в связи с тем, что матрица довольно объемная и требуется другое фокусировочное расстояние. Требуется замена линз. Из этого корпуса будет взята прикладывающаяся к голове и носу часть.







Контроллер:



Основная задача стоит в синхронизации контроллера с матрицей, то что контроллер и матрица заработают я знал, а вот получу ли я нужное разрешение — это другой вопрос.

PDF Datasheet на контроллер

Я же приведу вырезку из даташита:


Мой дисплей имеет соотношение сторон 16:9 и разрешение, которое укладывается в диапазон 1920х1440.

Проблема состоит в том, что контроллер имеет не то разрешение, и его надо прошить.

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

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

При прошивке перебрал не один десяток и остановился на данной версии:

Прошивка.

До этого сделал бекап.



Теперь при подключении к компьютеру, дисплей отображает информацию, о том, что подключен разъем HDMI и предлагает разрешение 1024х600. При это дисплей активно пытается получить сигнал с VGA, при этом выходит сообщение — «Подключите кабель VGA».

Пришлось снова чесать голову. Данный контролер является прямым аналогом плат с большим количеством разъемов, например:



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



На всякий случай прикладываю схему чипа RTD2660:



После прошивки и переключения контроллера в режим HDMI. Дисплей стал стартовать из под WIndows 7, велико было мое удивление, когда помимо родного, наитивного разрешения 1024х600, я смог установить разрешение 720p и 1080p. При 720р работает отлично не искажается, а вот в 1080р уже шрифты не читаются, но точно так же держит его, сюрприз, запускать игры в 720р веселей чем в 1024х600 (не все игры поддерживают низкие разрешения).



Матрица :

Я уже игрался в очках на телефоне, разрешение составляло 960Х540. Запускал Half-life 2, Portal, но не нравилось, то что это телефон и то что нельзя осмотреть пространство головой, вращал мышью + задержки по Wi-fi, просто бесили и не давали играть. В целом пиксели видно, но мне все-равно понравилось.

Из ящика с запчастями была извлечена матрица 1024х600 размером 7 дюймов, парт номер 7300130906 E231732 NETRON-YFP08. Исходя из доступного разрешения матрицы можно сделать вывод, что для каждого глаза разрешение будет составлять 512х600, что чуть больше чем разрешение экрана телефона и самое важное, будут отсутствовать задержки.



Коннектор матрицы имеет 50 пин и полностью совместим с контроллером дисплея.


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



Доработка матрицы осуществляется в 7 этапов:

1. разбираем матрицу по краю рамки;



2. кладем модуль на подкладку (тут можно прихватить скотчем края модуля к подкладке, чтобы вода не попортила деталь);

3. сверху на дисплей кладется влажная салфетка, желательно по размеру матовой пленки;



4. салфетка аккуратно пропитываются малым количеством воды градусов около 25;

5. выжидаем около 2 — 3 часов, все зависит от качества нанесения покрытия. (клей у матовых пленок чувствителен к воде);

6. аккуратно поддеваем край и медленно, без рывков, снимаем матовый слой;



7. проверяем.







Если Вы захотите собрать очки на 2К дисплее, то я дам Вам ссылку:

Полностью готовый модуль с HDMI для очков в 2К, 6 дюймов


За эту цену на али можно купить готовое устройство с FullHD -> готовое устройство

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

Ардуино и гироскоп:

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

Выдержка из официального источника для Arduino Leonardo:

В отличие от всех предыдущих плат ATmega32u4 имеет встроенную поддержку для USB соединения, это позволяет задать как Leonardo будет виден при подключение к компьютеру, это может быть клавиатура, мышь, виртуальный серийный / COM порт.

Именно это мне и надо.

Гироскоп был выбран самый простой и распространенный — GY521, на борту имеет акселерометр:

1. Accelerometer ranges: ±2, ±4, ±8, ±16g
2. Gyroscope ranges: ± 250, 500, 1000, 2000 °/s
3. Voltage range: 3.3V — 5V (the module include a low drop-out voltage regulator)

Подключение гироскопа:



#include <Wire.h>
#include <I2Cdev.h>
#include <MPU6050.h>
#include <Mouse.h>

MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int vx, vy;

void setup() {
  Serial.begin(115200);
  Wire.begin();
  mpu.initialize();
  if (!mpu.testConnection()) {
    while (1);
    }
}

void loop() {
  mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

  vx = (gx+300)/200;  
  vy = -(gz+100)/200; 
  
  Mouse.move(vx, vy);
  
  delay(2);
}




Исходя из скетча можно сделать вывод, что трекинг головы это по сути гиро-мышь.

КОНЦЕПТ

Все свелось к разделению на этапы:

1. примерка трекинга головы;
2. написание прошивки трекера;
3. заказ необходимого контроллера для дисплея;
4. настройка и запуск дисплея с контроллером;
5. примерка и общая сборка.

Так выглядела отладка трекера головы с гироскопом:





Видео работы трекера головы:


Запуск дисплея с контроллером:





Для запуска дисплея мне потребуется программа Tridef 3D, которая позволяет запускать игры и приложения с изображением Side by Side, ею я и воспользовался в качестве теста.

Причина использования вполне ясна, данные очки не будут опознаваться как очки Oculus DK1/DK2 и для того, что бы устройство опознавалось как VR очки хотя бы первых ревизий окулуса, надо менять полностью программное обеспечение контроллера дисплея, что пока я себе позволить не могу, так же потребуется либо частичное протипирование, либо создавать снова концепт платы на базе уже вот таких гироскопов, которые применяются в окулусах — гиро-модуль

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

Корпус

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

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









Собственно как и многие прототипы я выбрал гофрированный картон, как самый гибкий, легко доступный материал:





Тестирование

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

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





Недостатки такой системы:

1.Надо меньше матрицу размером, что бы уменьшить длинну корпуса.
2.Нужны качественные линзы (для своих я брал с луп в ближайшей роспечати).

В целом для себя, как нетребовательного человека пойдет.

Как наиграюсь с этим всем буду делать из этой матрицы и контроллера проектор 8D. (Следите за обзорами)

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

Беспощадный, самодельный VR






Планирую купить +29 Добавить в избранное +85 +149
+
avatar
+1
«Ground Control to major Tom...»
+
avatar
-3
Over
+
avatar
0
«очумелые ручки» :)))
+
avatar
  • gibson
  • 27 апреля 2017, 08:39
0
Полностью готовый модуль с HDMI для очков в 4К, 6 дюймов
Где вы там 4к увидели то? 1440 он
+
avatar
+1
Да кстати, ошибка.
+
avatar
  • Kila
  • 27 апреля 2017, 08:40
+1
Красиво смотрится
+
avatar
  • gibson
  • 27 апреля 2017, 08:41
0
И какой смысл выставлять не родное разрешение для матрицы — лучше она показывать не станет, только хуже
+
avatar
+2
Совместимость с играми, тот же скайрим не стартует в 1024x600, а так же например BF3. 1024x600 с этим разрешением есть определенные проблемы в Win, не самое популярное.
+
avatar
  • gibson
  • 27 апреля 2017, 13:56
0
Зато картинка или обрезается или меняется ее размер и все становится расплывчато — разобудьте матрицу тогда получше чтоли
+
avatar
+1
Почему она должна обрезаться? Ведь матрица 16:9, 720p это тоже 16:9. Картинка влезает как раз, а вот объекты уменьшаются.
+
avatar
  • dansar
  • 30 апреля 2017, 10:46
0
Наверно, имелось ввиду, что будет интерполяция в 1024x600, что приведет к потере качества. Хотя для очков это, наверно, не критично?
+
avatar
0
Ну вообще то правильный режим работы такого контроллера — это подача на него 1920*1080, а потом его скалер отмасштабирует в 1024*600. Компьютеру в принципе и ненужно знать о таком — за это отвечает именно скалер. И, конечно же, такой четкости как при входном сигнале 1024*600 не получится, но отображается Full HD вполне сносно.
+
avatar
  • aizenn
  • 27 апреля 2017, 08:42
0
Пропустил, наверное. А стоимость всего комплекта можете озвучить?
+
avatar
+3
Без дисплея все обошлось в 1200р. Дисплей от 700 до бесконечности.
+
avatar
  • rus1983
  • 27 апреля 2017, 09:30
0
ТС молодец!
Запускал Half-life 2, Portal

Не увидел в обзор, что за телефон у Вас?
+
avatar
0
Старый Zopo ZP100.
+
avatar
  • rus1983
  • 27 апреля 2017, 09:43
0
Тогда, я недопонял? Вы на нем запускали Half-life 2, Portal?
+
avatar
+1
Да, через wifi соединялся посредством приложения Splashtop
+
avatar
  • rus1983
  • 27 апреля 2017, 09:58
0
Понятно. Стрим с компа))))
+
avatar
0
Он самый, отсюда и бесячие задержки
+
avatar
0
Надо через USB версию Splashtop. Задержек почти нет вроде. Использую в машине планшет в качестве дисплея для CarPC. Вроде картинку выводит без задержек по USB. Есть еще подобная программа TwomonUSB, но Splashtop нравится больше
+
avatar
  • SinuX
  • 27 апреля 2017, 09:44
+2
Для полноценного VR-а здесь, как я понял, не хватает еще одной степени свободы головы (вращение вокруг оси взгляда наклонами головы). И эмуляцией мыши это похоже не решить. Я особо не вникал в эту тему, может уже есть какие-нибудь открытые VR спецификации для сопряжения самодельных очков и контроллеров и полноценных VR игр?
+
avatar
+2
Нет таких спецификаций нет, все базируется на прошивке Okulus dk1, на ее базе клепают такие очки. Да одной свободы нет, но это не сильно ощущается. Эффект вау в том же самом BF3 обеспечивает с лихвой, по новому воспринимаются старые игры, скайрим тоже очень хорош.
+
avatar
  • Dimon_
  • 27 апреля 2017, 10:06
0
платы Pro Micro, для уменьшения размеров, об этом я узнал много позже иначе бы применил именно ее
Используйте тогда уж Pro Mini. Она ещё на миллиметр короче. И легче. :)
+
avatar
0
Ну это только для всяких следующих проектов, сейчас уж я не буду ничего менять, скажем так удовлетворился результатом и определенным, полученным опытом. Пока вопросы очков больше меня не беспокоят. В любом случае вывод один, ждать когда это все станет более массовым и брать готовы продукт. Ради интереса, фана или просто ради того что бы опыт получить можно, на повседневку не думаю.
+
avatar
  • fjod
  • 27 апреля 2017, 10:10
0
купил себе bobo vr z4 + телефон le max 2 с 2к экраном. подключил через trinus vr. запустил скайрим через vireo perception. все работает, только качество графики на уровне дума 2. смотрю на мониторе — вроде прилично. на телефоне через wifi приходит уже что-то совсем печальное. это сжатие из-за беспроводного соединения? как вы конвертировали игры в 3д?
+
avatar
0
Да для получения быстрого отклика качество картинки пережимается, я играл без сжатия но блин отлик был просто ужасный. С сжатием норм но графика совсем дерьмовая получалась. По этому у меня и вылилось все это в полноценный монитор. В любом случае лучше и стабильнее всего получилось запускать именно через Splashtop и обязательно через кабель usb.
+
avatar
  • Oxide
  • 27 апреля 2017, 10:20
+8
+
avatar
  • TGeka
  • 30 апреля 2017, 20:05
0
Пожалуйста, сообщите подоплёку этого рисунка! Просто шикарная иллюстрация!
+
avatar
0
www.simonstalenhag.se/
Смотреть СНИЗУ — наверх.
+
avatar
  • bunny64
  • 27 апреля 2017, 10:23
-9
+
avatar
+4
О, черт!!! Наверняка автор уже посыпает голову пеплом)
+
avatar
0
Молодец, надо почитать, хочу в скайрим)
+
avatar
0
Увидев модуль и матрицу, сразу возникла мысль про проектор.
Как по мне, толку с проектора будет больше.
Хотя и за очки, РЕСПЕКТ!
+
avatar
+2
ты крут, кулибин
+
avatar
  • ringo
  • 29 апреля 2017, 11:08
0
можно подробнее про проектор из маленькой матрицы монитора?
+
avatar
0
А подробней, будет потом. Очки я решил оставить и заказать снова RTD2660 и дисплей тот же.
+
avatar
-1
ringo, сходите на сайт diyprojector.info/ — там много чего найдете по этой тематике
+
avatar
  • Faster
  • 29 апреля 2017, 14:52
0
ХРЕНА се!!! Молодца
+
avatar
  • PASAf
  • 30 апреля 2017, 10:45
0
Стандартов аппаратной части действительно нет, но сущесвтует Oculus SDK и OSVR SDK. Их линзы кстати можно заказать из osvrstore.com/collections/frontpage/products/dual-element-optical-module-with-focus-mechanism-for-5-5-display
+
avatar
  • dansar
  • 30 апреля 2017, 10:49
0
А вот вопрос. На видео демонстрации работы гироскопа по экрану гуляет туда-сюда указатель мышки. Т.е. в играх очки будут управлять мышкой-обзором-прицелом. Как же целиться в BF3, головой?
+
avatar
0
Именно, прицеливание головой, а именно взглядом происходит быстрее чем руками.
+
avatar
0
Пара вопросов:
1. Что за «матовая пленка»? Я так подозреваю, что это не просто пленка, а поляризатор. Я отродясь не слыхивал, чтобы в такой дешманской матрице как Netron была бы какая то «матовая пленка»… Ха!!! Догнал… Это транспортировочная что ли? Так она в любом случае должна убираться…
2. Прошивок на контроллер PCB800168 существует всего 9 штук, и только одна на 1024*600 TTL. Интересно узнать, что вы там «перебрали не один десяток»? Прошивки на RTD2660H вообще? Это как минимум пустое занятие. Или именно на эту плату? Тогда я уже сказал, сколько на нее существует прошивок. А вообще — мой вам совет: прошивку (поскольку она всего одна подходящая) надо переделать — заново собрать EDID (чтобы компьютер «знал» про разрешение 1024*600). Как — вэлкам на pccar, найдете там мою тему про EDID и сделайте. Это несложно. Но зато у вас будет честный натив, а не абы что…
+
avatar
  • TGeka
  • 30 апреля 2017, 20:08
0
а в современных жк-мониторах матовая плёнка — тоже поляризатор? или же нет? Судя по всему вы разбираетесь…
+
avatar
-1
В мониторах — однозначно поляризатор! Не вздумайте сдирать!
Пленку можно купить и отдельно с последующей наклейкой (после того, как осознаете, что вы натворили), но она уже не будет того качества, как ее сделали на заводе AUO, CPT, Hannstar, Innolux, LG и т.д. И после этого ваш монитор будет по углам обзора сильно смахивать на самый дешевый ноут…
+
avatar
  • TGeka
  • 30 апреля 2017, 21:47
0
никто ещё не собирался сдирать, это так для развития)
+
avatar
+1
Там две пленки, верхний слой мат, второй поляризатор. Хватит вводить людей в заблуждение.
+
avatar
0
Что же если вы считаете меня настолько дураком, не сведущим в транспортировочных плёнках это ваше дело. Пленка именно что матовая, если бы я отодрал поляризатор, то изо можно было бы видеть если только поляризационные пленку вставить в глаза себе, ТК показывал бы он белый фон. Дисплей отображает изначальный нетив в в 1024*600, а эдид как вы сказали править не обязательно о причине вам все на тот же сайт, который вы указали сами.
+
avatar
0
Последнее предложение вообще не понял, особенно в конце… Но насчет натива — да. Глянул сейчас прошиву — китайцы все почистили перед выпуском в свет: . Молодцы, значит с едидом проще оказалось. Да и кстати, я ошибся — не ваше это было сообщение…
Насчет матовой пленки — специально расковыряю нетроновскую матрицу, посмотрю. У других такого не встречал. В мониторах — нет, в бучных — тоже, в других планшетных матрицах — тоже не видел. Хотя, в планшетах матовые и редко попадаются.
И все же, мне очень интересно (я вполне серьезно) — я знаю под эту матрицу для этого контроллера только одну прошивку, а вы — десятки. Расскажите — может я что то упустил…
Ну и мое предложение насчет матрицы с контроллером — в силе.
+
avatar
0
У меня коллега несколько лет назад делал шлем под FPV для коптера. Он взял велошлем в качестве основы «шапки», потом взял матрицу+ контроллер, пластиковую сдвоенную линзу взял от козырька


Применил два зеркала, чтобы уменьшить вынос матрицы в перёд и расположил саму матрицу почти на макушке (можно было применить только одно зеркало, если в контроллере можно было включить зеркальное отображение по горизонтали). Потом уравновесил аккумулятором, питающим это всё. он выкладывал в теме на rcdesign.
+
avatar
0
Интересно в целом расположение, тогда зеркала надо брать с зеркальным слоем наружу, как в проекторах, что бы не было искажений изо.
+
avatar
0
Именно так, попросил коллегу напылить алюминий на стекляшку.
Поискал, не нашёл фотку на всего этого добра (была на форуме rcdesign)
+
avatar
  • tatul
  • 19 сентября 2021, 17:23
0
А ты знаешь как создать или как работает VR джойстики?