Outils pour utilisateurs

Outils du site


wiki:projet:lunettes_vr

Casque de réalité virtuelle

Date de début : 09/2015
Porteur de projet Demir Renaux (contact : demirrenaux@hotmail.com)
Suivi par Arthur Hennequin

Head-Mounted Display (écran monté sur la tête, ou visiocasque). Un écran est placé devant les yeux de l'utilisateur de manière à occuper entièrement son champs visuel.

Dans ce projet, on vise à fabriquer des “lunettes” qui placeront un écran 1440p à courte distance des yeux de l'utilisateur. Des lentilles de type loupe permettront à l'utilisateur de focaliser sur l'image de l'écran.

Dans un début, on n'utilisera qu'un écran pour les deux yeux.

date de fin estimée : mois/année

Composants

  • Écran
  • Entrée vidéo de l'écran
  • Accéléromètre
  • Lentilles / loupes (une pour chaque oeil)
  • Microcontrolleur
  • Sortie USB

Machines nécessaires

Phase 1

  • Ordinateur graphiquement puissant, avec sorties vidéo de haute résolution, et entrées USB.
  • Éventuellement des machines pour couper/former des plastiques qu'on utilisera pour construire la coque du casque.

Matériel nécessaire

Phase 1

g02.s.alicdn.com_kf_htb1kllchpxxxxakxfxxq6xxfxxxh_222479958_htb1kllchpxxxxakxfxxq6xxfxxxh.jpg

  • Écran de petit format (de 5 à 7 pouces) 1440p avec alimentation par USB et entrée HDMI.

upload.wikimedia.org_wikipedia_commons_3_38_arduino_uno_-_r3.jpg

i.ebayimg.com_00_s_mzm2wduwma_z_q50aamxqzr1r0oo-_kgrhqr_o4fhfc_zbb5br0oo-mj8_60_35.jpg

  • 2x Lentilles convergentes de grande taille

cdn.sparkfun.com_assets_parts_9_4_4_0_12700-01.jpg

  • Breakout board USB (femelle)

playground.arduino.cc_uploads_main_mpu-6050.jpg

  • Accéléromètre de précision. Image: Invensense MPU-6050. De préférence avec breakout board, pour pouvoir communiquer avec l'Arduino.
  • Éventuellement des matériels permettant une mesure précise de la position/orientation du casque en temps réel (triangulation, doppler, webcam + balises infrarouge…).
  • Câble HDMI de bonne longueur, pour transmettre l'image depuis l'ordinateur jusqu'à l'écran.
  • Câble USB de bonne longueur, pour transmettre les données de mouvement de l'utilisateur.

Construction

Phase 1

Journal de bord

Objectifs actuels

Nous avons réussi à transmettre des données d'orientation de l'Arduino au PC par le port Serial. Cependant, les mouvements enregistrés par l'ordinateur sont peu continus.

  • Identifier le problème de continuité des données d'orientation
  • Transmettre des données de changement de position.
  • Optionnel: Utiliser le protocole SPI au lieu du protocole I2C
  • Optionnel (♦♦): Transmettre les données de position par USB sans utiliser l'Arduino (c'est-à-dire, créer un circuit qui fasse l'interface entre la sortie USB du casque et l'accéléromètre)
  • Optionnel (♦♦♦): Savoir mesurer l'orientation et position du casque à partir du calcul de distances de points placés sur le casque.

Objectifs actuels (obsolète depuis 30/10/2015)

  • Être à l'aise avec l'utilisation avancée d'Arduino et libraries
  • Transmettre des données sur Windows générées par un Arduino, à travers un port USB
  • Faire contrôler avec Arduino l'accéléromètre par SPI
  • Finalement, transmettre les données de l'accéléromètre par USB, en réduisant au maximum la latency, et en maximisant le nombre d'updates par seconde

Avancée du 01/11/2015

Avances du 30/10/2015

  • On réussit à faire marcher un MPU-6050 (!= 6500) en I2C
  • On transmet des quaternions en flottants de 32 bits par le port sérial, contenant les données du gyroscope.
  • Les quaternions sont lus par le PC, et le simulateur d'Arthur met à jour l'image de l'environnement virtuel.

Avances du 24/10/2015

  • Séance d'essai de l'accéléromètre MPU-6500
  • Transmission de données Arduino → PC avec le port serial
  • Essai de câblage de l'accéléromètre
  • Essai d'utilisation de la librairie SPI de l'Arduino

Avances du 09/10/2015

  • Nous avons trouvé la liste des registres de l'accéléromètre MPU-6500.
  • Nous avons lu la documentation de l'accéléromètre pour déterminer le pin-out de notre accéléromètre:
    • VCC: Entrée de tension. On prévoit de connecter la sortie 3.3V de l'Arduino dessus.
    • GND: Terre
    • SCL: Horloge des données SPI, controlée par l'Arduino.
    • SDA: Data Input de l'accéléromètre.
    • XDA: Pour le magnètomètre, qu'on n'utilisera pas.
    • XCL: Pour le magnètomètre, qu'on n'utilisera pas.
    • ADO: Data Output de l'accéléromètre.
    • NCS: Chip Select de l'accéléromètre.

État du 10/09/2015

Explication: L'ordinateur utilise l'entrée clavier/souris pour mettre à jour l'image du simulateur. Les sorties HDMI et USB de l'ordinateur sont connectées au circuit HDMI-MIPI DSI. Ce circuit convertit le signal HDMI en signal vidéo MIPI DSI (protocole utilisé par les écrans de smartphones), et l'envoie à l'écran. Il alimente énergétiquement l'écran, qui affiche l'image envoyée depuis l'ordinateur.

Calcul du débit de données, pixel clock

Une sortie à 5.3Gbps

8 bits pour chacune des 3 couleurs donne 24bpp (bits per pixel). Résolution écran de 2560×1440. 60 images par seconde minimum.

24×60×1440×2560 = 5308416000 bits par seconde

HDMI: l'entrée à 6.6Gbps

Le protocole HDMI utilise code 8 bits de couleur en 10 bits de manière à corriger des erreurs de transmission dans le câble.

30×60×1440×2560 = 6635520000 bits par seconde

Calcul du pixel clock HDMI: 222MHz

Chaque couleur est transmise dans un des trois canaux du câble HDMI. Les trois couleurs de chaque pixel en 8 bits sont codées en 10 bits et transmises simultanément dans les trois canaux. Le débit de données passant par chaque canal est donc:

10×60×1440×2560 = 2211840000 bits par seconde

On peut aussi calculer le nombre de pixels transmis par seconde:

221184000 pixels par seconde

Le “pixel clock” est un canal de transmission du câble HDMI qui inverse le niveau (haut/bas) à chaque fois qu'un nouveau pixel est transmis. Le pixel clock aura une fréquence d'inversions par seconde d'environ:

221184000 Hz, ou environ 222MHz

Utilisation de l'écran du LG G3

Il s'agit d'un écran de smartphone d'une résolution de 2560×1440. Cet écran utilise le protocole MIPI de transfert d'image, comme la majorité des écrans de smartphone actuels.

Le protocole MIPI est utilisé et par un groupe d'entreprises d'électronique importantes. Les spécifications de ce protocole sont gardées en secret, mais des documents existent sur Internet décrivant le protocole.

Grâce au manuel de service du smartphone LG G3, on a trouvé la fonction de chaque pin du connecteur de l'écran:

i.imgur.com_xwcsrau.jpg

Documents et Datasheets

wiki/projet/lunettes_vr.txt · Dernière modification: 2016/09/11 12:59 (modification externe)