Outils pour utilisateurs

Outils du site


wiki:projet:lunettes_vr

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
wiki:projet:lunettes_vr [2015/09/17 12:43]
drenaux [Phase 1]
wiki:projet:lunettes_vr [2016/09/11 10:59] (Version actuelle)
Ligne 1: Ligne 1:
-====== VR (site en construction) ======+====== Casque de réalité virtuelle ======
  
 Date de début : 09/2015\\ Date de début : 09/2015\\
-Porteur de projet [[wiki:Utilisateurs:drenaux | Demir Renaux]] (contact : [[demirrenaux@hotmail.com]]) \\ +Porteur de projet [[:wiki:utilisateurs:drenaux|Demir Renaux]] (contact : [[demirrenaux@hotmail.com|demirrenaux@hotmail.com]])\\ 
-Suivi par [[wiki:Utilisateurs:matthiasblanc | Matthias Blanc]] (contact : [[matthias_blanc@yahoo.fr]]) \\+Suivi par [[http://pmclab.fr/index.php/contacts/1-arthur-hennequin|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. +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 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. +Dans un début, on n'utilisera qu'un écran pour les deux yeux.
  
-{{http://i.imgur.com/hZmLCkY.png?400}}+{{http://i.imgur.com/hZmLCkY.png?direct&400}}
  
-date de fin estimée : mois/année \\+date de fin estimée : mois/année
  
 ===== Composants ===== ===== Composants =====
Ligne 35: Ligne 35:
 ==== Phase 1 ==== ==== Phase 1 ====
  
-{{http://g02.s.alicdn.com/kf/HTB1kLLCHpXXXXakXFXXq6xXFXXXH/222479958/HTB1kLLCHpXXXXakXFXXq6xXFXXXH.jpg?400}}\\ +{{http://g02.s.alicdn.com/kf/HTB1kLLCHpXXXXakXFXXq6xXFXXXH/222479958/HTB1kLLCHpXXXXakXFXXq6xXFXXXH.jpg?direct&400}}
-  * Écran de petit format (de 5 à 7 pouces) 1440p avec alimentation par USB et entrée HDMI. +
  
-{{http://upload.wikimedia.org/wikipedia/commons/3/38/Arduino_Uno_-_R3.jpg?200}}\\ +  * Écran de petit format (de 5 à 7 pouces) 1440p avec alimentation par USB et entrée HDMI. 
-  * 1 arduino Uno ou similaire [[(http://www.electrodragon.com/product/arduino-uno-r3/?added-to-cart=6067|fournisseur : Electrodragon]] 9.64 €\\+ 
 +{{http://upload.wikimedia.org/wikipedia/commons/3/38/Arduino_Uno_-_R3.jpg?direct&200}} 
 + 
 +  * 1 arduino Uno ou similaire [[:http:www.electrodragon.com_product_arduino-uno-r3?added-to-cart=6067|fournisseur : Electrodragon]] 9.64 € 
 + 
 +{{http://i.ebayimg.com/00/s/MzM2WDUwMA==/z/q50AAMXQzr1R0OO-/$(KGrHqR,!o4FHFC(ZbB5BR0OO-MJ8!~~60_35.JPG?direct&}}
  
-{{http://i.ebayimg.com/00/s/MzM2WDUwMA==/z/q50AAMXQzr1R0OO-/$(KGrHqR,!o4FHFC(ZbB5BR0OO-MJ8!~~60_35.JPG}}\\ 
   * 2x Lentilles convergentes de grande taille   * 2x Lentilles convergentes de grande taille
  
-{{https://cdn.sparkfun.com//assets/parts/9/4/4/0/12700-01.jpg?200}}\\+{{https://cdn.sparkfun.com//assets/parts/9/4/4/0/12700-01.jpg?direct&200}} 
   * Breakout board USB (femelle)   * Breakout board USB (femelle)
  
-{{http://playground.arduino.cc/uploads/Main/mpu-6050.jpg?200}}\\+{{http://playground.arduino.cc/uploads/Main/mpu-6050.jpg?direct&200}} 
   * Accéléromètre de précision. Image: Invensense MPU-6050. De préférence avec breakout board, pour pouvoir communiquer avec l'Arduino.   * 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...).+  * É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 HDMI de bonne longueur, pour transmettre l'image depuis l'ordinateur jusqu'à l'écran.
Ligne 60: Ligne 65:
 ==== Phase 1 ==== ==== Phase 1 ====
  
-{{http://i.imgur.com/bz2Zv8c.png}}+{{http://i.imgur.com/bz2Zv8c.png?direct&}}
  
 ===== Journal de bord ===== ===== Journal de bord =====
  
-==== État du 10/09/2015 ====+==== Objectifs actuels ====
  
-{{http://i.imgur.com/NlHR7XT.png}}+Nous avons réussi à transmettre des données d'orientation de l'Arduino au PC par le port SerialCependant, les mouvements enregistrés par l'ordinateur sont peu continus.
  
-__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 DSICe 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.+  * 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-à-direcré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 ====+=== Objectifs actuels (obsolète depuis 30/10/2015) ===
  
   * Être à l'aise avec l'utilisation avancée d'Arduino et libraries   * Être à l'aise avec l'utilisation avancée d'Arduino et libraries
Ligne 76: Ligne 85:
   * Faire contrôler avec Arduino l'accéléromètre par SPI   * 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   * 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
-===== Calcul du débit de données, pixel clock,  =====+ 
 +==== Avancée du 01/11/2015 ==== 
 +  * [[:wiki:projet:lunettes_vr:cv_head_tracking|Utilisation d'opencv pour estimer la position de l'utilisateur]] 
 + 
 +==== 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 ==== 
 + 
 +{{http://i.imgur.com/NlHR7XT.png?direct&}} 
 + 
 +__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 ==== ==== Une sortie à 5.3Gbps ====
  
-8 bits pour chacune des 3 couleurs donne 24bpp (bits per pixel). Résolution écran de 2560x1440. 60 images par seconde minimum.+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 24×60×1440×2560 = 5308416000 bits par seconde
Ligne 86: Ligne 131:
 ==== HDMI: l'entrée à 6.6Gbps ==== ==== 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.
-Le protocole HDMI utilise code 8 bits de couleur en 10 bits de manière à permettre de corriger des erreurs de transmission dans le câble.+
  
 30×60×1440×2560 = 6635520000 bits par seconde 30×60×1440×2560 = 6635520000 bits par seconde
Ligne 103: Ligne 147:
 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: 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 +221184000 Hz, ou environ 222MHz
-222MHz+
  
 ===== Utilisation de l'écran du LG G3 ===== ===== Utilisation de l'écran du LG G3 =====
  
-Il s'agit d'un écran de smartphone d'une résolution de 2560x1440. Cet écran utilise le protocole MIPI de transfert d'image, comme la majorité des écrans de smartphone actuels.+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. 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.
Ligne 114: Ligne 157:
 Grâce au manuel de service du smartphone LG G3, on a trouvé la fonction de chaque pin du connecteur de l'écran: Grâce au manuel de service du smartphone LG G3, on a trouvé la fonction de chaque pin du connecteur de l'écran:
  
-{{http://i.imgur.com/XwcsraU.jpg}}+{{http://i.imgur.com/XwcsraU.jpg?direct&}}
  
 ===== Documents et Datasheets ===== ===== Documents et Datasheets =====
  
-  * Accéléromètre: [[http://store.invensense.com/datasheets/invensense/MPU_6500_Rev1.0.pdf|Invensense MPU-6500]]+  * Accéléromètre: [[http://store.invensense.com/datasheets/invensense/MPU_6500_Rev1.0.pdf|Invensense MPU-6500]] [[http://www.bt2000.co.uk/datasheets/invensense/RM-MPU-6500A-00.pdf|Liste de registres]] 
 +  * FPGA MIPI DSI <> HDMI [[https://hackaday.io/project/364-mipi-dsi-display-shieldhdmi-adapter|https://hackaday.io/project/364-mipi-dsi-display-shieldhdmi-adapter]] 
 +  * [[http://www.electricstuff.co.uk/nanohack.html|R.E. of iPod Nano V6 MIPI LCD - Mike's Electric Stuff]] 
 +  * [[http://doc-ok.org/?p=1138|Explication sur le fonctionnement du head tracking de l'occulus]] 
wiki/projet/lunettes_vr.1442493784.txt.gz · Dernière modification: 2016/09/11 10:46 (modification externe)