JoVE Logo

S'identifier

Un abonnement à JoVE est nécessaire pour voir ce contenu. Connectez-vous ou commencez votre essai gratuit.

Dans cet article

  • Résumé
  • Résumé
  • Introduction
  • Protocole
  • Résultats
  • Discussion
  • Déclarations de divulgation
  • Remerciements
  • matériels
  • Références
  • Réimpressions et Autorisations

Résumé

La rotation physique contrôlée d’un observateur humain est souhaitable pour certaines applications expérimentales, récréatives et éducatives. Cet article décrit une méthode pour convertir une chaise pivotante de bureau en un support pour une rotation physique contrôlée dans un environnement de réalité virtuelle.

Résumé

Le faible coût et la disponibilité des systèmes de réalité virtuelle (RV) ont soutenu une accélération récente de la recherche sur la perception et le comportement dans des conditions plus naturalistes, multisensorielles et immersives. Un domaine de recherche qui a particulièrement bénéficié de l’utilisation des systèmes de RV est l’intégration multisensorielle, par exemple, l’intégration d’indices visuels et vestibulaires pour donner lieu à un sentiment d’auto-mouvement. Pour cette raison, une méthode accessible pour la rotation physique contrôlée d’un observateur dans un environnement virtuel représente une innovation utile. Cet article présente une méthode pour automatiser la rotation d’une chaise pivotante de bureau ainsi qu’une méthode pour intégrer ce mouvement dans une expérience vr. À l’aide d’un exemple d’expérience, il est démontré que le mouvement physique, ainsi produit, est intégré à l’expérience visuelle d’un observateur d’une manière conforme aux attentes; intégration élevée lorsque le mouvement est congruent avec le stimulus visuel et faible intégration lorsque le mouvement est incongru.

Introduction

De nombreux indices se combinent dans des conditions naturelles pour produire un sentiment d’auto-mouvement1. Produire un tel sens est un objectif dans de nombreuses applications de RV récréatives, de santé et éducatives 2,3,4,5, et le simple fait de comprendre comment les indices se combinent pour donner un sentiment d’auto-mouvement a été une entreprise à long terme des neuroscientifiques 6,7,8,9,10,11 . Les trois classes d’indices les plus importantes pour la perception de l’auto-mouvement sont visuelles, vestibulaires et proprioceptives1. Tous les trois se combinent de manière congruente lors d’un mouvement actif naturel dans le monde réel pour fournir un sens robuste et riche de l’auto-mouvement. Pour comprendre le rôle de chaque classe d’indices et avoir une idée de la façon dont les indices se combinent, les chercheurs ont traditionnellement privé les observateurs expérimentaux d’un ou plusieurs indices et/ou placé des indices en conflit les uns avec les autres 1,12. Par exemple, pour fournir des signaux vestibulaires rotatifs en l’absence de signaux proprioceptifs, un observateur peut être tourné passivement par une chaise motorisée 13,14,15,16. Il a été démontré qu’un tel mouvement passif fournit des indices très convaincants à l’auto-mouvement17. Les repères visuels contrôlés fournis par un casque VR peuvent être congruents ou incongrus avec le mouvement de la chaise ou complètement absents. Des signaux proprioceptifs peuvent être ajoutés en demandant à l’observateur de faire pivoter la chaise par ses propres moyens, par exemple en poussant la chaise avec ses pieds.

Présenté ici est une méthode pour convertir une chaise pivotante de bureau en un support pour faire pivoter physiquement le corps d’un observateur et intégrer ce mouvement dans une expérience virtuelle visuelle (et potentiellement auditive). La rotation de la chaise peut être sous le contrôle de l’observateur, d’un programme informatique ou d’une autre personne telle que l’expérimentateur. La rotation contrôlée par l’observateur peut être passive en faisant de la rotation entraînée par le moteur une fonction de la position du contrôleur portatif de l’observateur ou active en éteignant la chaise et en faisant tourner la chaise lui-même par l’observateur.

Une application psychophysique pour ce système de chaise/RV est également présentée. Cet exemple d’application met en évidence l’utilité de la rotation passive contrôlée d’un observateur pour comprendre comment les signaux d’auto-mouvement interagissent pour produire des expériences perceptuelles globales. L’objectif spécifique était d’avoir un aperçu d’un mouvement induit par l’illusion visuelle longtemps étudié18,19. En mouvement induit, une cible stationnaire ou en mouvement est perceptuellement « repoussée » loin d’un arrière-plan en mouvement. Par exemple, si un point cible rouge se déplace verticalement vers le haut contre un champ de points bleus se déplaçant vers la droite, le point cible semblera se déplacer vers le haut, comme prévu, mais aussi vers la gauche, loin de la direction de l’arrière-plan en mouvement20,21. L’objectif était de vérifier si la répulsion est le résultat de l’interprétation du mouvement de fond comme étant causé par l’auto-mouvement22,23.

Si tel est le cas, l’ajout d’une rotation physique compatible avec le mouvement visuel d’arrière-plan devrait donner un sentiment plus fort que le mouvement d’arrière-plan est dû à l’auto-rotation dans un environnement stationnaire. Ceci, à son tour, devrait conduire à une plus grande tendance à soustraire le mouvement d’arrière-plan du mouvement cible pour obtenir le mouvement cible par rapport au monde stationnaire23. Cette tendance accrue à soustraire entraînerait une plus grande répulsion perçue de la cible. L’auto-rotation physique qui était compatible ou incompatible avec le mouvement d’arrière-plan a été ajoutée pour tester cela. Le système présenté ici a permis le contrôle précis du mouvement physique et du mouvement visuel correspondant pour tester cette hypothèse. Dans l’exemple, le mouvement de la chaise était sous le contrôle direct de l’observateur à l’aide du contrôleur portatif du système VR.

Bien qu’il existe de nombreux exemples de chaises tournantes motorisées pour diverses applications de RV dans la littérature 24,25,26,27,28,29, les auteurs ne sont pas au courant d’un ensemble concis d’instructions pour fabriquer une telle chaise et l’intégrer dans une expérience de RV interactive. Des instructions limitées sont disponibles pour le SwiVRChair29, dont la structure est similaire à celle présentée ici, mais qui est conçu dans un but différent, c’est-à-dire être piloté par un programme informatique pour améliorer l’immersion dans un environnement VR, où le mouvement de la chaise peut être remplacé par l’utilisateur en plaçant ses pieds sur le sol. Compte tenu du coût des chaises disponibles dans le commerce30,31, en faire une « à l’interne » peut être une option plus viable pour certains chercheurs. Pour ceux qui se trouvent dans cette situation, le protocole ci-dessous devrait être utile.

Vue d’ensemble du système
Le protocole consiste en des instructions pour convertir une chaise de bureau en une chaise rotative à entraînement électrique et intégrer le mouvement de la chaise dans une expérience de réalité virtuelle. L’ensemble du système, une fois terminé, est composé de quatre parties : les sous-systèmes mécanique, électrique, logiciel et VR. Une photographie de l’ensemble du système est illustrée à la figure 1. Le système montré était celui utilisé dans l’exemple d’expérience.

Le travail du sous-système mécanique consiste à faire pivoter physiquement l’arbre supérieur d’une chaise pivotante via un moteur. Il se compose d’une chaise de bureau à laquelle deux choses sont attachées: une poulie fixée à l’arbre rotatif supérieur de la chaise de bureau et un cadre de montage réglable attaché à la partie fixe inférieure de l’arbre. Un moteur pas à pas électrique est fixé au support, qui a une poulie attachée à son arbre qui s’aligne avec la poulie sur l’arbre supérieur de la chaise de bureau. Une courroie couple la poulie du moteur à la poulie de la chaise, ce qui permet au moteur de faire tourner la chaise.

Le sous-système électrique alimente le moteur et permet le contrôle électronique du moteur. Il se compose d’un pilote de moteur, d’une alimentation pour le moteur, d’une carte Arduino pour l’interfaçage du pilote avec un ordinateur et d’une alimentation pour l’Arduino (en option). Une carte Arduino est une petite carte populaire parmi les amateurs et les fabricants professionnels de tout ce qui est électronique, qui contient un microprocesseur programmable, des contrôleurs, des broches d’entrée et de sortie et (dans certains modèles) un port USB (requis ici). Tous les composants électriques sont logés dans une boîte isolée électriquement modifiée sur mesure. Comme l’alimentation secteur est requise pour le transformateur qui alimente le moteur et pour l’alimentation Arduino (en option), et que le moteur nécessite des tensions de fonctionnement élevées, tous les travaux électroniques sauf la basse tension (étapes de protocole 2.5 à 2.10 ci-dessous) doivent être effectués par une personne qualifiée.

Le sous-système logiciel se compose du logiciel Arduino pour la programmation de l’Arduino, du logiciel Unity pour la création de l’environnement VR, du logiciel Steam pour piloter le système VR et d’Ardity, un plugin Unity qui permet à Unity de communiquer avec la carte Arduino. Ce logiciel a été installé sur un ordinateur portable Gygabyte Sabre 15WV8 exécutant Microsoft Windows 10 Enterprise pour l’exemple d’expérience (Figure 1).

Le système VR se compose d’un casque d’affichage (HMD), d’un contrôleur portatif et de stations de base permettant de déterminer la position et l’orientation du HMD et du contrôleur dans l’espace. Le système VR utilisé pour ce projet était le HTC Vive Pro (Figure 1).

Vous trouverez ci-dessous la procédure permettant de combiner ces composants pour obtenir une expérience virtuelle qui intègre une rotation physique (expérimentale ou autre) avec le mouvement de la chaise contrôlé par l’observateur via le contrôleur portatif ou par l’hôte / expérimentateur via une souris d’ordinateur ou un potentiomètre. La dernière partie du protocole consiste en les étapes nécessaires pour initier l’expérience VR. Notez que la méthode de codage de Unity pour permettre les essais et la collecte de données dépasse le cadre de ce manuscrit. Certaines étapes, en particulier pour le sous-système mécanique, nécessitent certains équipements d’atelier et un certain niveau de compétence. En principe, les méthodes présentées peuvent être ajustées en fonction de la disponibilité de ces ressources. Des alternatives sont proposées pour certaines des étapes les plus techniques.

Protocole

AVERTISSEMENT : Les travaux électriques doivent être effectués par une personne qualifiée.

1. Procédure de configuration du système mécanique

  1. Fixez la poulie principale à l’arbre supérieur de la chaise pivotante.
    1. Retirez l’arbre supérieur.
      REMARQUE: Cela implique généralement de placer la chaise sur le côté et de retirer une épingle à la base de la chaise qui empêche l’arbre supérieur de glisser hors de l’arbre inférieur.
    2. Ajustement par friction de la poulie à l’arbre.
      1. Utilisez des étriers Vernier pour obtenir le diamètre de l’arbre. Utilisez un tour pour percer le trou de poulie en fonction du diamètre de l’arbre.
      2. Créez des trous filetés pour les vis qui fixeront la poulie à l’arbre. Percez des trous supplémentaires dans le moyeu de la poulie pour faire un total de 4, en faisant correspondre le diamètre à celui des vis. Filetez les trous à l’aide d’un robinet afin que des vis puissent être utilisées pour fixer la poulie à l’arbre, en faisant correspondre le filetage à celui des vis
        REMARQUE: Une ALTERNATIVE si la création d’un filetage n’est pas possible est de percer tout le chemin à travers le moyeu de la poulie et l’arbre de la chaise, et de faire passer un boulon jusqu’au bout une fois que l’emplacement correct de la poulie a été déterminé (après l’étape 1.4.6).
      3. Faites glisser la poulie sur l’arbre de la chaise.
      4. Insérez les vis lâchement (serrez après l’alignement des poulies principales et des petites poulies).
    3. Placez la courroie d’entraînement lâchement sur l’arbre supérieur de la chaise (pour l’adapter aux poulies principales et aux petites poulies plus tard).
    4. Reconnectez l’arbre supérieur de la chaise à la base de la chaise.
  2. Fixez le support du moteur à l’arbre inférieur de la chaise pivotante.
    1. Fabriquez une pince réglable à laquelle les supports de montage du moteur peuvent être fixés.
      1. Fabriquez les deux composants correspondants de la pince – un pour chaque côté de l’arbre (à presser ensemble avec quatre boulons). Voir la figure 2 pour les dimensions.
      2. Pour chaque composant, coupez le fer d’angle de 90° à la longueur. Fixez les 4 feuilles à travers lesquelles les boulons vont passer.
      3. Arrondissez les bords de chaque feuille (barre métallique) pour plus de sécurité. Percez des trous près de l’extrémité de chaque barre suffisamment grands pour que les boulons puissent passer. Faites un virage de 45° à la position appropriée (marquez la barre pour rendre le virage plus précis). Soudez par points chaque barre aux trous de boulon de fer d’angle vers l’extérieur.
        REMARQUE: ALTERNATIVEMENT, les feuilles peuvent être boulonnées en place, en prenant soin de ne pas provoquer de saillie qui empêchera le fer d’angle d’entrer en contact avec l’arbre de la chaise.
    2. Fabriquez deux supports de montage de moteur. Voir la figure 3 pour les dimensions. Pour chaque support, percez deux trous dans la barre pour la fixation à la pince décrite ci-dessus. Pliez de 90° à la position appropriée (marquez la barre pour rendre le virage plus précis).
    3. Fixez la pince et montez-la à l’arbre inférieur de la chaise en insérant les 4 boulons à travers les composants et les supports de la pince et en serrant. Assurez-vous que les boulons ne sont pas trop serrés si le support doit être ajusté pour s’adapter au processus d’alignement à l’étape 1.4.6.
  3. Fixez la petite poulie à l’arbre du moteur.
    1. Meulez la clé sur l’arbre du moteur à plat (ne dépassant plus).
      REMARQUE: Cela fournira une surface plane contre laquelle la vis de poulie peut être serrée pour éviter le glissement de la poulie autour de l’arbre du moteur.
    2. Percez le trou dans la poulie pour correspondre au diamètre de l’arbre du moteur.
    3. Faites glisser la poulie sur l’arbre et serrez lâchement la vis contre la surface plane de l’arbre.
  4. Fixez le moteur au support de moteur décrit ci-dessus.
    1. Préparez chacune des 4 barres de fixation du moteur en perçant deux trous dans les positions appropriées (les trous doivent s’aligner avec les trous de montage dans le moteur). Voir la figure 4 pour les dimensions.
    2. Si nécessaire pour le dégagement, coupez une section dans la partie supérieure des deux barres pour permettre à la poulie de l’arbre du moteur de tourner librement (facultatif).
    3. Placez les quatre petits supports de fixation du couvercle sur les quatre trous extérieurs. Utilisez-les plus tard pour fixer le couvercle de protection sur la ceinture et les poulies.
    4. Fixez lâchement les huit écrous et boulons, en laissant de la place entre les barres supérieure et inférieure pour faire glisser les barres de support de montage entre elles.
    5. Faites glisser les barres de montage du moteur sur le support - chaque barre supérieure au-dessus de la barre du support de montage et chaque barre inférieure en dessous.
    6. Positionnez et serrez le moteur.
      1. Déplacez la poulie principale, la petite poulie ou les deux de haut en bas jusqu’à ce que les poulies principales et les petites poulies soient alignées horizontalement. Déplacez la pince si nécessaire.
      2. Placez la courroie d’entraînement sur les petites poulies principales.
      3. Faites glisser l’ensemble moteur loin de la chaise jusqu’à ce que la courroie soit serrée.
      4. Serrez les 8 boulons sur les barres de fixation du moteur pour fixer le moteur au support du moteur.
      5. Serrez les boulons de serrage et les vis de poulie.
  5. Fixez un couvercle pour éviter que quoi que ce soit ne se coince dans le système de poulie / courroie.
    1. Pliez les côtés du couvercle de protection en acrylique conformément à la figure 5.
      REMARQUE: Une ALTERNATIVE, si un cintre acrylique n’est pas disponible, est d’utiliser une feuille de métal et un cintre de feuille.
    2. Découpez une section pour l’adapter autour de la tige de la chaise conformément à la figure 5.
    3. Percez des trous pour correspondre aux trous sur les petits supports de fixation du couvercle.
    4. Utilisez les petits boulons de fixation du couvercle pour fixer le couvercle.

2. Procédure de configuration du système électrique

  1. Connectez l’interrupteur marche/arrêt et l’interrupteur d’arrêt d’urgence à l’alimentation secteur. Utilisez des câbles de tension et de courant appropriés pour connecter le connecteur IEC (connecteur mâle pour le câble d’alimentation secteur) à l’interrupteur d’arrêt d’urgence et à l’interrupteur marche/arrêt en série (de sorte que la rupture du circuit avec l’un ou l’autre coupe l’alimentation du reste des composants).
    REMARQUE: La soudure peut être nécessaire.
  2. Connectez l’alimentation 5 V CC de l’Arduino à l’interrupteur marche/arrêt (en option).
    REMARQUE: Câble de soudure et de secteur requis.
  3. Connectez l’alimentation 48 V CC du conducteur de la chaise à l’interrupteur marche/arrêt parallèlement à l’alimentation 5 V.
    REMARQUE: Câble secteur requis.
  4. Définissez les paramètres de commutateur DIP appropriés pour le pilote de moteur pas à pas hybride. Par exemple:
    1. Réglez les commutateurs 1 à 4 sur ON, OFF, ON et ON, respectivement, pour 1 600 impulsions par tour pour le moteur pas à pas (plus le nombre est élevé, plus le contrôle est fin, mais plus le capuchon sur la vitesse de rotation est bas en fonction de la vitesse à laquelle l’Arduino peut produire des impulsions).
    2. Basculez 5 sur OFF pour le sens inverse des aiguilles d’une montre par défaut.
    3. Basculez de 6 sur ON pour le mode Drive Point Motion (PM) par opposition au mode de contrôle vectoriel spatial (ou Field-oriented Control, FOC).
    4. Réglez les commutateurs 7 et 8 sur OFF et OFF pour faire correspondre le contrôleur au moteur en boucle fermée 12 NM de la série 86.
  5. Connectez le pilote du moteur pas à pas hybride à l’alimentation et aux câbles du pilote de la chaise.
    1. Fixez des câbles de qualité appropriée entre les bornes de sortie de l’alimentation 48 V et le boîtier du connecteur d’entrée d’alimentation du pilote du moteur et insérez le boîtier.
    2. Connectez les deux câbles du moteur au pilote via leurs boîtiers de connecteur.
  6. Connectez l’Arduino au pilote du moteur pas à pas hybride.
    1. Utilisez des fils de saut épinglés pour connecter les bornes PUL+ (« pulse » +), DIR+ (« direction » +) et ENA+ (« enable » +) sur le boîtier du connecteur du pilote du moteur aux broches 2, 3 et 5 (numéros de broche en option mais indiqués ici comme exemples à utiliser partout) sur l’Arduino.
    2. Utilisez des fils courts pour connecter les bornes PUL, DIR et ENA du boîtier du connecteur du pilote du moteur et un fil de saut épinglé plus long pour connecter ENA à une broche GND (terre) sur l’Arduino.
    3. Insérez le boîtier du connecteur dans le pilote du moteur.
  7. Connectez l’Arduino à l’alimentation 5 V DC (en option). Utilisez des fils de saut épinglés pour connecter les broches GND et Vin de l’Arduino aux bornes de sortie 5 V de l’alimentation 5 V.
  8. Connectez le potentiomètre à l’Arduino. Utilisez des fils de saut épinglés pour connecter le GND A1 (un terminal « analogique in ») et les broches 5 V de l’Arduino aux trois bornes du potentiomètre.
    REMARQUE: Soudure requise.
  9. Connectez le commutateur à bascule à l’Arduino. Connectez la broche 6 et GND de l’Arduino aux deux bornes de commutation à bascule à l’aide de fils de saut épinglés.
    REMARQUE: Soudure requise.
  10. Connectez la LED à l’Arduino.
    1. Soudez la résistance à une borne de la LED (pour faire baisser la tension sur le circuit LED).
    2. Fixez les broches 7 et GND de l’Arduino à l’extrémité de la résistance et de l’autre terminal LED à l’aide de fils de saut épinglés.
      REMARQUE: Soudure requise.
  11. Isolez et hébergez les composants électriques/électroniques. Voir la figure 6 pour obtenir une image d’un système hébergé terminé.
    REMARQUE: Il existe de nombreuses façons d’isoler les composants haute tension du système électrique, de protéger les composants électroniques fragiles contre les dommages et de contenir tous ces composants dans un espace gérable. Vous trouverez ci-dessous une méthode suggérée.
    1. Percer / couper des trous sur le côté du boîtier de l’instrument pour le connecteur d’alimentation IEC, l’interrupteur principal marche / arrêt, les deux câbles de commande du moteur, le petit interrupteur à bascule, la LED, le potentiomètre et le port USB de l’Arduino (faites-le grand pour permettre à l’air de circuler dans le boîtier pour le refroidissement).
    2. Fixez chacun de ces composants à l’aide des moyens appropriés (p. ex., vis, boulons, pistolet à colle chaude).
    3. Couper des trous de ventilation (un au-dessus du ventilateur dans l’alimentation 48 V) et un trou pour l’interrupteur d’urgence dans le couvercle du boîtier; ensuite, fixez les filtres de ventilation et l’interrupteur.
    4. Fixez l’Arduino à la base du boîtier à l’aide d’entretoises et de vis. Positionnez de sorte que le port USB s’aligne avec le trou du port USB dans le boîtier.
    5. Fixez les blocs d’alimentation 48 V et 5 V et le pilote du moteur à la base du boîtier à l’aide de blocs velcro et mousse.

3. Procédure de configuration VR

  1. Configurez le système VR conformément aux instructions du fabricant.

4. Procédure de configuration du logiciel

  1. Installez et configurez le logiciel Arduino.
    1. Téléchargez et installez le programme Arduino selon les instructions du développeur.
    2. Connectez l’Arduino à l’ordinateur à l’aide d’un câble USB.
    3. Dans le menu déroulant Outils , sélectionnez le port auquel la carte Arduino est connectée.
    4. Dans le même menu, sélectionnez la carte et le processeur appropriés. Assurez-vous qu’il correspond à la carte et au processeur utilisés dans la section 2 ci-dessus, par exemple, la carte « Arduino Mega 2560 » et le processeur « ATmega2560 ».
  2. Programmer la carte Arduino pour permettre la rotation de la chaise 1) au moyen du potentiomètre et 2) au moyen de commandes de l’ordinateur via USB.
    1. Écrivez le code à télécharger sur le processeur Arduino.
      REMARQUE : Un exemple de code de l’exemple d’expérience est inclus dans le fichier supplémentaire 1 (nom de fichier : hybrid_motor_controller.ino).
    2. Prenez note du débit en bauds (argument de la commande Serial.Begin(),par exemple, 9 600.
    3. Enregistrez le code et téléchargez-le sur la carte Arduino à l’aide du bouton de téléchargement .
  3. Vérifiez que le système fonctionne jusqu’à présent.
    1. Branchez et allumez le sous-système électrique.
    2. Faites glisser le petit interrupteur à bascule vers une position où le petit voyant LED s’allume.
    3. Tournez le potentiomètre pour vous assurer qu’il contrôle la vitesse et la direction de la chaise.
  4. Installez et configurez Steam et SteamVR selon les instructions du développeur.
  5. Installez et configurez Unity.
    1. Installez et configurez Unity conformément aux instructions du développeur.
    2. Ouvrez un projet Unity nouveau ou existant (choisissez un type, par exemple « 3D » approprié pour l’application).
    3. Configurez SteamVR pour une utilisation dans le projet.
      1. Ouvrez le magasin d’actifs (cliquez sur Fenêtre | Magasin d’actifs).
      2. Recherchez SteamVR et sélectionnez SteamVR Plugin.
      3. Cliquez sur Ajouter aux ressources.
      4. Dans Unity, ouvrez le Gestionnaire de packages (cliquez sur Fenêtre | Gestionnaire de paquets).
      5. Recherchez SteamVR sous l’onglet Mes actifs .
      6. Cliquez sur Importer et suivez les invites pour terminer l’importation.
      7. Cliquez sur Accepter tout si vous êtes invité à apporter des modifications à la configuration.
      8. Importez le Steam VR Camera Rig dans la scène. Recherchez une nouvelle ressource appelée Steam VR dans la fenêtre du projet sur l’écran de l’inspecteur. Ouvrez steam VR | les préfabriqués.
      9. Faites glisser la ressource [Camera Rig] dans la fenêtre de hiérarchie ou de scène pour permettre l’utilisation du casque VR et des contrôleurs dans le jeu.
      10. Supprimez la caméra principale par défaut de la hiérarchie ou de la scène, car elle interférerait avec la caméra SteamVR.
  6. Installez et configurez Ardity.
    1. Recherchez Ardity dans l’Asset Store Unity et sélectionnez-le pour le téléchargement (étape 4.5.3.2 ci-dessus).
    2. Mettez à jour le niveau de compatibilité de l’API.
      1. Ouvrez Paramètres du projet dans le menu Edition .
      2. Cliquez sur Player | Autres paramètres.
      3. Choisissez .NET 4.X dans le menu déroulant pour Le niveau de compatibilité de l’API.
      4. Quittez paramètres et attendez que les messages d’erreur disparaissent.
  7. Configurez l’environnement de jeu Unity.
    REMARQUE: Les étapes minimales suivantes seront requises pour que l’utilisateur ait le contrôle de la chaise et que le mouvement de la chaise soit intégré à son expérience de réalité virtuelle.
    1. Créez les objets et les fonctions nécessaires à l’application spécifique.
      1. Créez des objets en cliquant sur GameObject et en sélectionnant Objet 2D ou Objet 3D.
      2. Ajoutez des fonctionnalités à l’objet créé en cliquant sur le bouton Ajouter un composant dans la fenêtre Inspecteur de l’objet et en sélectionnant l’une des options. Sélectionnez Nouveau script pour créer un script C# similaire à celui du fichier supplémentaire 3 (nom du fichier : SetUpTrial.cs).
    2. Importez le script serial Controller dans le jeu.
      1. Sous le dossier Assets de la fenêtre Projet , ouvrez le dossier Ardity | Dossier Scripts .
      2. Faites glisser le script SerialController dans l’objet de jeu souhaité dans la fenêtre Heirarchy , par exemple, l’objet de jeu Background .
      3. Cliquez sur l’objet et faites défiler la liste des composants dans la fenêtre Inspecteur pour localiser le script SerialController .
      4. Assurez-vous que le nom du port et le débit en bauds correspondent à ceux du programme Arduino défini dans les étapes 4.1 et 4.2 ci-dessus.
      5. Faites glisser l’objet auquel le script SerialController est attaché de la fenêtre de hiérarchie vers la zone de saisie en regard de Message Listener dans la fenêtre Inspector.
    3. Écrivez et importez le script du contrôleur de chaise dans le jeu.
      1. En bas de la fenêtre Inspecteur pour le même objet de jeu, cliquez sur Ajouter un composant et sélectionnez Nouveau script. Nommez le nouveau script ChairController.
      2. Écrivez le code nécessaire pour prendre les commandes du contrôleur et de la souris et transformez-les en chiffres à envoyer via USB à l’Arduino.
        REMARQUE : Un exemple minimal du code requis est inclus dans le fichier supplémentaire 2 (nom de fichier : ChairController.cs).
      3. Enregistrez le script.
      4. Remplissez les cases vides dans la fenêtre Inspecteur . Faites glisser l’objet HMD de la fenêtre Hiérarchie vers la zone de saisie en regard de Tête sous le script Chair Controller dans la fenêtre Inspector . De même, faites glisser l’objet Controller (à droite) dans la zone située en regard de Main.

5. Procédure expérimentale (ou d’expérience)

  1. Sélectionnez la méthode d’entrée.
    REMARQUE : L’exemple de code ChairController fourni fait référence à un script appelé SetUpTrial où la variable entière publique inputType est définie (où inputType 3 est contrôleur VR et inputType 4 est souris). Cette disposition script/variable a été supposée dans les étapes ci-dessous.
  2. Cliquez sur l’objet de jeu auquel le script SetUpTrial est attaché, par exemple, Background.
  3. Faites défiler vers le bas dans la fenêtre Inspecteur pour trouver les variables publiques du script SetUpTrial .
  4. Définissez inputType sur 3 pour le contrôleur VR ou 4 pour le contrôle de la souris.
  5. Appuyez sur le bouton Lecture dans Unity pour commencer l’expérience VR avec un mouvement contrôlé par les contrôleurs ou la souris.

Résultats

Le but de l’exemple d’expérience était de déterminer si l’ajout d’une rotation physique – congruente ou incongrue avec le mouvement d’arrière-plan visuel dans une scène – affectait la direction perçue d’une cible en mouvement dans cette scène. Une différence entre le mouvement physique congruent et incongru était attendue sur la base de l’hypothèse que le mouvement de fond affecte la direction cible perçue en fonction de la facilité avec laquelle le système visuel d’un participant attribu...

Discussion

Cet article présente une méthode pour ajouter une rotation automatisée à une chaise de bureau sous le contrôle d’un observateur ou d’un expérimentateur, et une méthode d’accompagnement pour intégrer ce mouvement dans une expérience virtuelle. Les étapes critiques comprennent la fixation mécanique du moteur à la chaise, la configuration de l’alimentation et du contrôle électrique du moteur, puis la configuration de l’Arduino et de l’ordinateur pour entraîner le contrôleur du moteur. L’étape ...

Déclarations de divulgation

Il n’y a pas de conflits d’intérêts.

Remerciements

Ce travail a été soutenu par les subventions du Conseil australien de la recherche DP160104211, DP190103474 et DP190103103.

matériels

NameCompanyCatalog NumberComments
48 V DC power supply (motor)MeanwellRSP-320-48https://www.meanwellaustralia.com.au/products/rsp-320
5 V DC power supply (arduino)JaycarMP3295https://www.jaycar.com.au/15w-5v-3a-enclosed-power-supply/p/MP3295?pos=5&queryId=dda344422ab16c6
7f558551ac0acbd40
Ardity plugin for UnityOpen Sourcehttps://ardity.dwilches.com/
Arduino MEGA 2560JaycarXC4420https://www.jaycar.com.au/duinotech-mega-2560-r3-board-for-arduino/p/XC4420?pos=2&queryId=901771805f4bf6e0
ec31d41601d14dc3
Arduino softwareArduinohttps://www.arduino.cc/en/software
BeltMotion DynamicsRFTB10010Choose a size that suits the application. We used 60 tooth. https://www.motiondynamics.com.au/polyurethane-timing-belts-16mm-t-10/
Bracket bolts (holding motor)The Fastner Factory161260x 4. https://www.thefastenerfactory.com.au/bolts-and-nuts/all-stainless-bolts/stainless-button-socket-head-cap-screws/stainless-steel-button-socket-head-cap-screw-m6-x-35mm-100pc
Bracket bolts (not holding motor)The Fastner Factory161258x 4. https://www.thefastenerfactory.com.au/bolts-and-nuts/all-stainless-bolts/stainless-button-socket-head-cap-screws/stainless-steel-button-socket-head-cap-screw-m6-x-25mm-100pc
Clamp Angle IronAustral Wright Metals50004813x 2. https://www.australwright.com.au/products/stainless-steel/stainless-steel-bar-round-flat-angle-square/
Clamp boltsThe Fastner Factory161265x 4. https://www.thefastenerfactory.com.au/bolts-and-nuts/all-stainless-bolts/stainless-button-socket-head-cap-screws/stainless-steel-button-socket-head-cap-screw-m6-x-70mm-100pc  
Clamp leaves (stainless flat bar)Austral Wright Metals50004687x 8. https://www.australwright.com.au/products/stainless-steel/stainless-steel-bar-round-flat-angle-square/
Cover (acrylic)Bunnings Warehouse1010489https://www.bunnings.com.au/suntuf-900-x-600-x-5mm-grey-acrylic-sheet_p1010489
Cover bolts/nutsBunnings Warehouse247292x 4. https://www.bunnings.com.au/pinnacle-m3-x-16mm-stainless-steel-hex-head-bolts-and-nuts-12-pack_p0247292
Cover bracketsBunnings Warehouse44061x 4. https://www.bunnings.com.au/zenith-20mm-zinc-plated-angle-bracket-16-pack_p0044061
Emergency shut-off switchJaycarSP0786https://www.jaycar.com.au/latching-emergency-stop-switch/p/SP0786?pos=1&queryId=5abe9876cf78dc3d
d26b9067fbc36f74
Hybrid stepper motor and driverVevor?Closed Loop Stepper Motor Nema 34 12NM Servo Motor Hybrid Driver https://vevor.com.au/products/1712oz-in-nema34-closed-loop-stepper-motor-12nm-hybrid-servo-driver-hsc86-kit?variant=33058303311975
IEC mains power connectorRS components811-7213https://au.rs-online.com/web/p/iec-connectors/8117213
Instrument case (housing)JaycarHB6381https://www.jaycar.com.au/abs-instrument-case-with-purge-valve-mpv2/p/HB6381
LEDJaycarZD0205https://www.jaycar.com.au/green-10mm-led-100mcd-round-diffused/p/ZD0205?pos=11&queryId=e596cbd3d71e86
37ab9340cee51175e7&sort=
relevance
Main pulley (chair)Motion DynamicsALTP10020Choose a size that suits the application. More teeth = slower rotation. We used 36 tooth. https://www.motiondynamics.com.au/timing-pulleys-t10-16mm.html
Motor attachment bars (Stainless flat bar)Austral Wright Metals50004687x 4. https://www.australwright.com.au/products/stainless-steel/stainless-steel-bar-round-flat-angle-square/
Mounting brackets (stainless flat bar)Austral Wright Metals50004687x 2. https://www.australwright.com.au/products/stainless-steel/stainless-steel-bar-round-flat-angle-square/
NutsThe Fastner Factory161989x 12. https://www.thefastenerfactory.com.au/stainless-steel-hex-nylon-insert-lock-nut-m6-100pc
On/off switchJaycarSK0982https://www.jaycar.com.au/dpdt-illuminated-rocker-large-red/p/SK0982?pos=4&queryId=88e0c5abfa682b74
fa631c6d513abc73&sort=relevance
PotentiometerJaycarRP8610https://www.jaycar.com.au/10k-ohm-logarithmic-a-single-gang-9mm-potentiometer/p/RP8610?pos=4&queryId=0d1510281ba100d
174b8e3d7f806a020
Pulley screwsThe Fastner Factory155856x 5. https://www.thefastenerfactory.com.au/stainless-steel-hex-socket-head-cap-screw-m4-x-25mm-100pc
resistor 150 OhmJaycarRR2554https://www.jaycar.com.au/150-ohm-1-watt-carbon-film-resistors-pack-of-2/p/RR2554?pos=19&queryId=48c6317c73fd361
a42c835398d282c4a&sort=
relevance
Small pulley (motor)Motion DynamicsALTP10020Choose a size that suits the application. More teeth = faster rotation. We used 24 tooth. https://www.motiondynamics.com.au/timing-pulleys-t10-16mm.html
Small toggle switchJaycarST0555https://www.jaycar.com.au/sealed-mini-toggle-switch/p/ST0555?pos=14&queryId=066b989a151d83
31885c6cec92fba517&sort=
relevance
Steam softwareValve Corporationhttps://store.steampowered.com/
SteamVR plugin for SteamValve Corporationhttps://store.steampowered.com/app/250820/SteamVR/
Unity softwareUnity Technologieshttps://unity3d.com/get-unity/download
VR systemScorptec99HANW007-00HTC Vive Pro with controllers and base stations. https://www.scorptec.com.au/product/gaming-peripherals/vr/72064-99hanw007-00?gclid=Cj0KCQiA5OuNBhCRARIsA
CgaiqX8NjXZ9F6ilIpVmYEhhanm
GA67xLzllk5EmjuG0gnhu4xmiE
_RwSgaAhn8EALw_wcB

Références

  1. Campos, J., Bülthoff, H., Murray, M. M., Wallace, M. T. Multimodal integration during self-motion in virtual reality. The Neural Bases of Multisensory. , (2012).
  2. Radianti, J., Majchrzak, T. A., Fromm, J., Wohlgenannt, I. A systematic review of immersive virtual reality applications for higher education: Design elements, lessons learned, and research agenda. Computers & Education. 147, 103778 (2020).
  3. Madshaven, J. M. Investigating the user experience of virtual reality rehabilitation solution for biomechatronics laboratory and home environment. Frontiers in Virtual Reality. 2, 645042 (2021).
  4. Fan, Z. Design of physical training motion simulation system based on virtual reality technology. 2021 The 13th International Conference on Computer Modeling and Simulation. Association for Computing Machinery. , 81-86 (2021).
  5. Roettl, J., Terlutter, R. The same video game in 2D, 3D or virtual reality - How does technology impact game evaluation and brand placements. PLoS One. 13 (7), 0200724 (2018).
  6. Riecke, B. E., Sigurdarson, S., Milne, A. P. Moving through virtual reality without moving. Cognitive Processing. 13, 293-297 (2012).
  7. Fauville, G., Queiroz, A. C. M., Woolsey, E. S., Kelly, J. W., Bailenson, J. N. The effect of water immersion on vection in virtual reality. Scientific Reports. 11 (1), 1022 (2021).
  8. Bernhard, E. R., Jörg, S. -. P., Marios, N. A., Markus Von Der, H., Heinrich, H. B. Cognitive factors can influence self-motion perception (vection) in virtual reality. ACM Transactions on Applied Perception. 3 (3), 194-216 (2006).
  9. Gibson, J. J. . The perception of the visual world. , (1950).
  10. Angelaki, D. E., Gu, Y., Deangelis, G. C. Visual and vestibular cue integration for heading perception in extrastriate visual cortex. Journal of Physiology. 589, 825-833 (2011).
  11. Badcock, D., Palmisano, S., May, J. G., Hale, K. S., Stanney, K. M. Vision and virtual environments. Handbook of Virtual Environments: Design, Implementation, and Applications. , 39-85 (2014).
  12. Kaliuzhna, M., Prsa, M., Gale, S., Lee, S. J., Blanke, O. Learning to integrate contradictory multisensory self-motion cue pairings. Journal of Vision. 15 (1), (2015).
  13. Wilkie, R. M., Wann, J. P. The role of visual and nonvisual information in the control of locomotion. Journal of Experimental Psychology: Human Perception and Performance. 31 (5), 901-911 (2005).
  14. Sinha, N., et al. Perception of self motion during and after passive rotation of the body around an earth-vertical axis. Progress in Brain Research. 171, 277-281 (2008).
  15. Tremblay, L., et al. Biases in the perception of self-motion during whole-body acceleration and deceleration. Frontiers in Integrative Neuroscience. 7, 90 (2013).
  16. Nooij, S. A. E., Bockisch, C. J., Bülthoff, H. H., Straumann, D. Beyond sensory conflict: The role of beliefs and perception in motion sickness. PLoS One. 16 (1), 0245295 (2021).
  17. Harris, L., et al. Simulating self-motion I: Cues for the perception of motion. Virtual Reality. 6 (2), 75-85 (2002).
  18. Carr, H. A., Hardy, M. C. Some factors in the perception of relative motion: A preliminary experiment. Psychological Review. 27, 24-37 (1920).
  19. Reinhardt-Rutland, A. H. Induced movement in the visual modality: An overview. Psychological Bulletin. 103, 57-71 (1988).
  20. Zivotofsky, A. Z., et al. Tracking of illusory target motion: Differences between gaze and head responses. Vision Research. 35 (21), 3029-3035 (1995).
  21. Farrell-Whelan, M., Wenderoth, P., Wiese, M. Studies of the angular function of a Duncker-type induced motion illusion. Perception. 41 (6), 733-746 (2012).
  22. Warren, P. A., Rushton, S. K. Optic flow processing for the assessment of object movement during ego movement. Current Biology. 19 (18), 1555-1560 (2009).
  23. Fajen, B. R., Matthis, J. S. Visual and non-visual contributions to the perception of object motion during self-motion. PLoS One. 8 (2), 55446 (2013).
  24. Duminduwardena, U. C., Cohen, M. Controlling the Schaire Internet Chair with a mobile device. Proceedings CIT: The Fourth International Conference on Computer and Information Technology. , 215-220 (2004).
  25. Ashiri, M., Lithgow, B., Mansouri, B., Moussavi, Z. Comparison between vestibular responses to a physical and virtual reality rotating chair. Proceedings of the 11th Augmented Human International Conference. , (2020).
  26. Koenig, E. A new multiaxis rotating chair for oculomotor and vestibular function testing in humans. Neuro-ophthalmology. 16 (3), 157-162 (1996).
  27. Mowrey, D., Clayson, D. Motion sickness, ginger, and psychophysics. The Lancet. 319 (8273), 655-657 (1982).
  28. Sanmugananthan, P., Nguyen, N., Murphy, B., Hossieni, A. Design and development of a rotating chair to measure the cervico-ocular reflex. Cureus. 13 (10), 19099 (2021).
  29. Gugenheimer, J., Wolf, D., Haas, G., Krebs, S., Rukzio, E. SwiVRChair: a motorized swivel chair to nudge users' orientation for 360 degree storytelling in virtual reality. 1996-2000. Proceedings of the 2016 CHI Conference on Human Factors in Computing Systems. , (2016).
  30. . Roto VR Chair Available from: https://www.rotovr.com/ (2021)
  31. . Yaw Motion Simulator Available from: https://www.yawvr.com/ (2021)
  32. Warren, P. A., Rushton, S. K. Perception of object trajectory: Parsing retinal motion into self and object movement components. Journal of Vision. 7 (11), 1-21 (2007).
  33. Bonnen, K., Burge, J., Yates, J., Pillow, J., Cormack, L. K. Continuous psychophysics: Target-tracking to measure visual sensitivity. Journal of Visualized Experiments: JoVE. (3), (2015).
  34. . SimXperience Available from: https://www.simxperience.com/ (2021)
  35. Harris, L. R., Jenkin, M., Zikovitz, D. C. Visual and non-visual cues in the perception of linear self-motion. Experimental Brain Research. 135, 12-21 (2000).
  36. . DOF Reality Motion Simulators Available from: https://www.dofreality.com/ (2021)
  37. . Next Level Racing Available from: https://nextlevelracing.com/ (2022)
  38. . Motion Systems Available from: https://motionsystems.eu/ (2022)
  39. . Redbird Flight Simulations Available from: https://simulators.redbirdflight.com/ (2022)
  40. Teufel, H. J., et al. MPI motion simulator: development and analysis of a novel motion simulator. Proceedings of the AIAA Modeling and Simulation Technologies Conference and Exhibit (AIAA 2007). , (2007).

Réimpressions et Autorisations

Demande d’autorisation pour utiliser le texte ou les figures de cet article JoVE

Demande d’autorisation

Explorer plus d’articles

Comportementnum ro 182

This article has been published

Video Coming Soon

JoVE Logo

Confidentialité

Conditions d'utilisation

Politiques

Recherche

Enseignement

À PROPOS DE JoVE

Copyright © 2025 MyJoVE Corporation. Tous droits réservés.