Methodenartikel

Gecontroleerde rotatie van menselijke waarnemers in een virtual reality-omgeving

DOI:

10.3791/63699

21 april 2022

In dit artikel

Samenvatting

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

De gecontroleerde fysieke rotatie van een menselijke waarnemer is wenselijk voor bepaalde experimentele, recreatieve en educatieve toepassingen. Dit artikel schetst een methode voor het omzetten van een bureaustoel in een medium voor gecontroleerde fysieke rotatie in een virtual reality-omgeving.

Samenvatting

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

De lage kosten en beschikbaarheid van Virtual Reality (VR) -systemen hebben een recente versnelling van onderzoek naar perceptie en gedrag onder meer naturalistische, multisensorische en meeslepende omstandigheden ondersteund. Een onderzoeksgebied dat vooral heeft geprofiteerd van het gebruik van VR-systemen is multisensorische integratie, bijvoorbeeld de integratie van visuele en vestibulaire signalen om aanleiding te geven tot een gevoel van zelfbeweging. Om deze reden is een toegankelijke methode voor de gecontroleerde fysieke rotatie van een waarnemer in een virtuele omgeving een nuttige innovatie. Dit artikel presenteert een methode voor het automatiseren van de rotatie van een bureaustoel, samen met een methode om die beweging te integreren in een VR-ervaring. Met behulp van een voorbeeldexperiment wordt aangetoond dat de aldus geproduceerde fysieke beweging is geïntegreerd met de visuele ervaring van een waarnemer op een manier die consistent is met de verwachtingen; hoge integratie wanneer de beweging congruent is met de visuele stimulus en lage integratie wanneer de beweging incongruent is.

Inleiding

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

Veel signalen combineren onder natuurlijke omstandigheden om een gevoel van zelfbeweging te produceren1. Het produceren van een dergelijk gevoel is een doel in veel recreatieve, gezondheids- en educatieve VR-toepassingen 2,3,4,5, en eenvoudigweg begrijpen hoe signalen combineren om een gevoel van zelfbeweging te geven, is een langetermijninspanning van neurowetenschappers 6,7,8,9,10,11 . De drie belangrijkste klassen van signalen voor zelfbewegingsperceptie zijn visueel, vestibulair en proprioceptief1. Alle drie combineren congruent tijdens natuurlijke actieve beweging in de echte wereld om een robuust en rijk gevoel van zelfbeweging te bieden. Om de rol van elke klasse van signalen te begrijpen en een idee te krijgen van hoe signalen combineren, hebben onderzoekers experimentele waarnemers traditioneel beroofd van een of meer signalen en / of signalen in conflict met elkaar geplaatst 1,12. Om bijvoorbeeld roterende vestibulaire signalen te geven in afwezigheid van proprioceptieve signalen, kan een waarnemer passief worden gedraaid door een gemotoriseerde stoel 13,14,15,16. Van een dergelijke passieve beweging is aangetoond dat ze zeer overtuigende aanwijzingen geeft voor zelfbeweging17. Gecontroleerde visuele aanwijzingen van een VR-headset kunnen congruent of incongruent zijn met de beweging van de stoel of helemaal afwezig zijn. Proprioceptieve signalen kunnen worden toegevoegd door de waarnemer de stoel op eigen kracht te laten draaien, bijvoorbeeld door de stoel met zijn voeten rond te duwen.

Hier wordt een methode gepresenteerd voor het omzetten van een bureaustoel in een medium voor het fysiek roteren van het lichaam van een waarnemer en het integreren van die beweging in een visuele (en mogelijk auditieve) virtuele ervaring. De rotatie van de stoel kan onder controle staan van de waarnemer, een computerprogramma of een andere persoon zoals de experimentator. Waarnemergestuurde rotatie kan passief zijn door de motoraangedreven rotatie een functie te maken van de positie van de handcontroller van de waarnemer of actief door de stoel uit te schakelen en de waarnemer de stoel zelf te laten draaien.

Ook wordt een psychofysische toepassing voor deze stoel/VR-systeem gepresenteerd. Deze voorbeeldtoepassing benadrukt het nut van de gecontroleerde passieve rotatie van een waarnemer bij het begrijpen hoe zelfbewegingssignalen op elkaar inwerken om algemene perceptuele ervaringen te produceren. Het specifieke doel was om inzicht te krijgen in een lang bestudeerde visuele illusie-geïnduceerde beweging18,19. Bij geïnduceerde beweging wordt een stationair of bewegend doelwit waarneembaar "afgestoten" weg van een bewegende achtergrond. Als een rode doelpuntpunt bijvoorbeeld verticaal omhoog beweegt tegen een veld met blauwe stippen die naar rechts bewegen, lijkt de doelpuntpunt naar boven te bewegen, zoals verwacht, maar ook naar links, weg van de richting van de bewegende achtergrond20,21. Het doel was om te testen of de afstoting het gevolg is van het interpreteren van de achtergrondbeweging als veroorzaakt door zelfbeweging 22,23.

Als dit het geval is, moet de toevoeging van fysieke rotatie die consistent is met de visuele achtergrondbeweging leiden tot een sterker gevoel dat de achtergrondbeweging te wijten is aan zelfrotatie door een stationaire omgeving. Dit zou op zijn beurt moeten leiden tot een grotere neiging om de achtergrondbeweging van de doelbeweging af te trekken om doelbeweging te krijgen ten opzichte van de stationaire wereld23. Deze verhoogde neiging om af te trekken zou resulteren in een grotere waargenomen doelafstoting. Fysieke zelfrotatie die consistent of inconsistent was met de achtergrondbeweging werd toegevoegd om dit te testen. Het hier gepresenteerde systeem maakte de precieze controle van fysieke beweging en bijbehorende visuele beweging mogelijk om deze hypothese te testen. In het voorbeeld stond de stoelbeweging onder de directe controle van de waarnemer met behulp van de handcontroller van het VR-systeem.

Hoewel er veel voorbeelden zijn van gemotoriseerde roterende stoelen voor verschillende VR-toepassingen in de literatuur 24,25,26,27,28,29, zijn de auteurs niet op de hoogte van een beknopte reeks instructies voor het maken van een dergelijke stoel en het integreren ervan in een interactieve VR-ervaring. Er zijn beperkte instructies beschikbaar voor de SwiVRChair29, die qua structuur vergelijkbaar is met de hier gepresenteerde, maar die is ontworpen met een ander doel in gedachten, dat wil zeggen, aangedreven door een computerprogramma om de onderdompeling in een VR-omgeving te verbeteren, waar stoelbewegingen door de gebruiker kunnen worden overschreven door hun voeten op de grond te plaatsen. Gezien de kosten van commercieel verkrijgbare stoelen 30,31, kan het maken van een "in-house" voor sommige onderzoekers een meer haalbare optie zijn. Voor degenen in deze situatie zou het onderstaande protocol van nut moeten zijn.

Systeemoverzicht
Het protocol bestaat uit instructies voor het ombouwen van een bureaustoel tot een elektrisch aangedreven draaistoel en het integreren van de stoelbeweging in een VR-ervaring. Het hele systeem, eenmaal voltooid, bestaat uit vier delen: de mechanische, elektrische, software- en VR-subsystemen. Een foto van het complete systeem is weergegeven in figuur 1. Het getoonde systeem was het systeem dat werd gebruikt in het voorbeeldexperiment.

De taak van het mechanische subsysteem is om de bovenas van een draaistoel fysiek te draaien via een motor. Het bestaat uit een bureaustoel waaraan twee dingen zijn bevestigd: een katrol bevestigd aan de bovenste roterende as van de bureaustoel en een verstelbaar montageframe bevestigd aan het onderste vaste deel van de as. Een elektrische stappenmotor is bevestigd aan de houder, die een katrol aan de as heeft bevestigd die in lijn is met de katrol op de bovenste as van de bureaustoel. Een riem koppelt de motorpoelie aan de stoelpoelie, waardoor de motor de stoel kan laten draaien.

Het elektrische subsysteem levert stroom aan de motor en maakt de elektronische besturing van de motor mogelijk. Het bestaat uit een motordriver, een voeding voor de motor, een Arduino-bord voor het koppelen van de driver met een computer en een voeding voor de Arduino (optioneel). Een Arduino-bord is een populair klein bord onder hobbyisten en professionele makers van alles wat elektronisch is, dat een programmeerbare microprocessor, controllers, invoer- en uitgangspennen en (in sommige modellen) een USB-poort bevat (hier vereist). Alle elektrische componenten zijn ondergebracht in een op maat gemaakte elektrisch geïsoleerde doos. Aangezien netstroom vereist is voor de transformator die de motor van stroom voorziet en voor de (optionele) Arduino-voeding, en omdat de motor hoge bedrijfsspanningen vereist, moeten alle behalve de laagspanningselektronica (protocolstappen 2.5 tot 2.10 hieronder) worden uitgevoerd door een gekwalificeerd persoon.

Het softwaresubsysteem bestaat uit Arduino-software voor het programmeren van de Arduino, Unity-software voor het maken van de VR-omgeving, Steam-software voor het besturen van het VR-systeem en Ardity - een Unity-plug-in waarmee Unity kan communiceren met het Arduino-bord. Deze software is geïnstalleerd op een Gygabyte Sabre 15WV8-laptop met Microsoft Windows 10 Enterprise voor het voorbeeldexperiment (figuur 1).

Het VR-systeem bestaat uit een Head-mounted Display (HMD), een draagbare controller en basisstations voor het bepalen van de positie en oriëntatie van de HMD en controller in de ruimte. Het VR-systeem dat voor dit project werd gebruikt, was de HTC Vive Pro (figuur 1).

Hieronder wordt de procedure beschreven voor het combineren van deze componenten om een virtuele ervaring te bereiken die fysieke rotatie (experiment of anderszins) omvat met stoelbewegingen die worden bestuurd door de waarnemer via de draagbare controller of door de gastheer / experimentator via een computermuis of een potentiometer. Het laatste deel van het protocol bestaat uit de stappen die nodig zijn om de VR-ervaring te initiëren. Merk op dat de methode voor het coderen van Unity om proeven en gegevensverzameling mogelijk te maken buiten het bereik van dit manuscript valt. Sommige stappen, met name voor het mechanische subsysteem, vereisen bepaalde werkplaatsuitrusting en een bepaald vaardigheidsniveau. In principe kunnen de gepresenteerde methoden worden aangepast aan de beschikbaarheid van die middelen. Voor enkele van de meer technische stappen worden alternatieven aangeboden.

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Protocol

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

WAARSCHUWING: Elektrische werkzaamheden moeten worden uitgevoerd door een gekwalificeerd persoon.

1. Mechanische systeem setup procedure

  1. Bevestig de hoofdpoelie aan de bovenas van de draaistoel.
    1. Verwijder de bovenas.
      OPMERKING: Dit houdt meestal in dat de stoel op zijn kant wordt geplaatst en een pin aan de basis van de stoel wordt verwijderd die voorkomt dat de bovenste schacht uit de onderste schacht glijdt.
    2. Wrijving-fit de katrol op de as.
      1. Gebruik Vernier remklauwen om de diameter van de as te verkrijgen. Gebruik een draaibank om het katrolgat te boren om overeen te komen met de diameter van de as.
      2. Maak gaten met schroefdraad voor schroeven die de katrol aan de as bevestigen. Boor extra gaten in de naaf van de katrol om er in totaal 4 te maken, waarbij de diameter overeenkomt met die van de schroeven. Rijg de gaten met een kraan zodat schroeven kunnen worden gebruikt om de katrol aan de as te bevestigen, waarbij de schroefdraad overeenkomt met die van de schroeven
        OPMERKING: Een ALTERNATIEF als het maken van een draad niet mogelijk is, is om helemaal door de naaf van de katrol en de schacht van de stoel te boren en een bout helemaal door te laten lopen zodra de juiste plaatsing van de katrol is bepaald (na stap 1.4.6).
      3. Schuif de katrol op de schacht van de stoel.
      4. Plaats de schroeven losjes (draai vast nadat de hoofd- en kleine katrollen zijn uitgelijnd).
    3. Plaats de aandrijfriem losjes op de schacht van de bovenstoel (om later op de hoofd- en kleine katrollen te worden gemonteerd).
    4. Bevestig de schacht van de bovenstoel opnieuw aan het stoelonderstel.
  2. Bevestig de motorsteun aan de onderas van de draaistoel.
    1. Fabriceer een verstelbare klem waaraan de motorbevestigingsbeugels kunnen worden bevestigd.
      1. Fabriceer de twee bijpassende componenten van de klem - één voor elke kant van de as (samengeperst met vier bouten). Zie figuur 2 voor afmetingen.
      2. Snijd voor elk onderdeel het 90° hoekijzer op lengte. Bevestig de 4 bladeren waar de bouten doorheen lopen.
      3. Rond de randen van elk blad (metalen staaf) voor de veiligheid. Boor gaten aan het einde van elke staaf die groot genoeg zijn om de bouten erdoorheen te laten passen. Maak een bocht van 45° op de juiste positie (scoor de stang om de bocht preciezer te maken). Punt-las elke staaf aan de hoek ijzer-bout gaten naar buiten.
        OPMERKING: ALS ALTERNATIEF kunnen de bladeren op hun plaats worden vastgeschroefd, waarbij u voorzichtig moet zijn om geen uitsteeksel te veroorzaken dat voorkomt dat het hoekijzer contact maakt met de stoelas.
    2. Fabriceer twee motorbevestigingsbeugels. Zie figuur 3 voor afmetingen. Boor voor elke beugel twee gaten in de stang voor bevestiging aan de zojuist beschreven klem. Buig 90° op de juiste positie (scoor de stang om de bocht nauwkeuriger te maken).
    3. Bevestig de klem en monteer deze aan de onderas van de stoel door de 4 bouten door de klemcomponenten en beugels te steken en aan te spannen. Zorg ervoor dat de bouten niet te strak zitten als de houder moet worden aangepast aan het uitlijnproces in stap 1.4.6.
  3. Bevestig de kleine katrol aan de motoras.
    1. Slijp de sleutel op de motoras plat (steekt niet meer uit).
      OPMERKING: Dit zorgt voor een vlak oppervlak waartegen de katrolschroef kan worden aangedraaid om slippen van de katrol rond de motoras te voorkomen.
    2. Boor het gat in de katrol uit om overeen te komen met de diameter van de motoras.
    3. Schuif de katrol over de as en draai de schroef losjes vast tegen het vlakke oppervlak op de as.
  4. Bevestig de motor aan de hierboven beschreven motorbeugel.
    1. Bereid elk van de 4 motorbevestigingsstaven voor door twee gaten in de juiste posities te boren (gaten moeten in lijn liggen met de montagegaten in de motor). Zie figuur 4 voor afmetingen.
    2. Snijd indien nodig voor de speling een gedeelte uit de bovenkant van de twee staven zodat de katrol op de motoras vrij kan draaien (optioneel).
    3. Plaats de vier kleine bevestigingsbeugels over de vier buitenste gaten. Gebruik ze later om de beschermhoes over de riem en katrollen te bevestigen.
    4. Bevestig de acht moeren en bouten losjes, zodat er ruimte overblijft tussen de bovenste en onderste staven om de montagebeugelstangen ertussen te schuiven.
    5. Schuif de motorbevestigingsstangen op de beugel - elke bovenste balk boven de montagebeugelbalk en elke onderste eronder.
    6. Plaats en klem de motor.
      1. Beweeg de hoofdpoelie, de kleine katrol of zowel op als neer totdat de hoofd- en kleine katrollen horizontaal zijn uitgelijnd. Verplaats de klem indien nodig.
      2. Plaats de aandrijfriem over de kleine en belangrijkste katrollen.
      3. Schuif de motor van de stoel af totdat de riem strak zit.
      4. Draai de 8 bouten op de motorbevestigingsstangen vast om de motor aan de motorbeugel te bevestigen.
      5. Draai de klembouten en katrolschroeven vast.
  5. Bevestig een afdekking om te voorkomen dat er iets vast komt te zitten in het katrol/ riemsysteem.
    1. Buig de zijkanten van de acryl beschermhoes volgens figuur 5.
      OPMERKING: Een ALTERNATIEF, als een acryl bender niet beschikbaar is, is om een metalen plaat en plaat bender te gebruiken.
    2. Knip een gedeelte uit om rond de schacht van de stoel te passen volgens figuur 5.
    3. Boor gaten om overeen te komen met de gaten op de kleine afdekbevestigingsbeugels.
    4. Gebruik de kleine bevestigingsbouten om de hoes te bevestigen.

2. Procedure voor het instellen van het elektrische systeem

  1. Sluit de aan/uit-schakelaar en de nooduitschakelingsschakelaar aan op het lichtnet. Gebruik de juiste spannings- en stroomkabels om de IEC-connector (mannelijke connector voor de netvoedingskabel) in serie aan de noodstop- en aan/uitschakelaar te bevestigen (zodat het verbreken van het circuit met een van beide de stroom naar de rest van de componenten zal onderbreken).
    OPMERKING: Solderen kan nodig zijn.
  2. Sluit de 5 V DC voeding voor de Arduino aan op de aan/uit schakelaar (optioneel).
    OPMERKING: Solderen en netkabel vereist.
  3. Sluit de 48 V DC voeding voor de stoeldriver aan op de aan/uit schakelaar parallel aan de 5 V voeding.
    OPMERKING: Netkabel vereist.
  4. Zorg voor de juiste DIP-schakelaarinstellingen voor de hybride stappenmotordriver. Bijvoorbeeld:
    1. Stel schakelaars 1-4 in op AAN, UIT, AAN en AAN, respectievelijk, voor 1.600 pulsen per omwenteling voor de stappenmotor (hoe hoger het getal, hoe fijner de regeling, maar hoe lager de limiet op rotatiesnelheid, afhankelijk van hoe snel de Arduino pulsen kan produceren).
    2. Schakel 5 naar UIT voor de standaardrotatierichting tegen de klok in.
    3. Schakel 6 naar AAN voor de drive Point Motion (PM) -modus in tegenstelling tot de ruimtevectorbesturingsmodus (of Field-oriented Control, FOC).
    4. Stel schakelaars 7 en 8 in op UIT en UIT om de controller af te stemmen op de 86-serie 12 NM closed-loop motor.
  5. Sluit de hybride stappenmotordriver aan op de voedingskabels en stoelaandrijving.
    1. Bevestig de juiste nominale kabels van de 48 V-voedingsuitgangsklemmen op de behuizing van de voedingsingang van de motordriver en plaats de behuizing.
    2. Sluit de twee motorkabels via hun connectorbehuizingen aan op de driver.
  6. Sluit de Arduino aan op de hybride stappenmotordriver.
    1. Gebruik vastgemaakte springdraden om de PUL + ("pul" +), DIR + ("richting" +) en ENA + ("inschakelen" +) terminals op de behuizing van de motordriverconnector aan te sluiten op pinnen 2, 3 en 5 (pincodes optioneel, maar hier vermeld als voorbeelden die overal moeten worden gebruikt) op de Arduino.
    2. Gebruik korte draden om de PUL-, DIR- en ENA-terminals van de connectorbehuizing van de motordriver aan te sluiten en een langere vastgepinde springdraad om ENA- aan te sluiten op een GND (ground) pin op de Arduino.
    3. Steek de connectorbehuizing in de motordriver.
  7. Sluit de Arduino aan op de 5 V DC voeding (optioneel). Gebruik vastgemaakte springdraden om pinnen GND en Vin op de Arduino aan te sluiten op de 5 V-uitgangen van de 5 V-voeding.
  8. Sluit de potentiometer aan op de Arduino. Gebruik vastgemaakte springdraden om de A1 (een "analog in" terminal) GND en 5 V pinnen op de Arduino aan te sluiten op de drie aansluitingen van de potentiometer.
    OPMERKING: Solderen vereist.
  9. Sluit de tuimelschakelaar aan op de Arduino. Sluit pin 6 en GND op de Arduino aan op de twee tuimelschakelaars met behulp van vastgemaakte springdraden.
    OPMERKING: Solderen vereist.
  10. Sluit de LED aan op de Arduino.
    1. Soldeer de weerstand aan een aansluiting van de LED (om de spanning op het LED-circuit te laten vallen).
    2. Bevestig pinnen 7 en GND op de Arduino aan het uiteinde van de weerstand en de andere LED-terminal met behulp van vastgepinde springdraden.
      OPMERKING: Solderen vereist.
  11. Isoleer en huisvest de elektrische /elektronische componenten. Zie figuur 6 voor een afbeelding van een voltooid gehuisvest systeem.
    OPMERKING: Er zijn veel manieren om de hoogspanningscomponenten van het elektrische systeem te isoleren, de fragiele elektronische componenten te beschermen tegen schade en al deze componenten in een beheersbare ruimte te bevatten. Hieronder is een voorgestelde methode.
    1. Boor /snijd gaten in de zijkant van de instrumentbehuizing voor de IEC-voedingsconnector, de hoofdschakelaar, de twee motorbesturingskabels, de kleine tuimelschakelaar, de LED, de potentiometer en de USB-poort van de Arduino (maak deze groot om lucht in de behuizing te laten stromen voor koeling).
    2. Bevestig elk van deze componenten met behulp van de juiste middelen (bijv. Schroeven, bouten, hete lijmpistool).
    3. Knip ventilatiegaten (één boven de ventilator in de 48 V-voeding) en een gat voor de noodschakelaar in het deksel van de behuizing; bevestig vervolgens de ventilatiefilters en de schakelaar.
    4. Bevestig de Arduino aan de basis van de behuizing met behulp van afstandhouders en schroeven. Plaats de USB-poort zo dat deze wordt uitgelijnd met het GAT van de USB-poort in de behuizing.
    5. Bevestig de 48 V en 5 V voedingen en de motordriver aan de basis van de behuizing met behulp van klittenband en schuimblokken.

3. VR-installatieprocedure

  1. Stel het VR-systeem in volgens de instructies van de fabrikant.

4. Procedure voor het instellen van software

  1. Installeer en stel de Arduino-software in.
    1. Download en installeer het Arduino-programma volgens de instructies van de ontwikkelaar.
    2. Sluit de Arduino aan op de computer met behulp van een USB-kabel.
    3. Selecteer in het vervolgkeuzemenu Extra de poort waarop het Arduino-bord is aangesloten.
    4. Selecteer in hetzelfde menu het juiste bord en de juiste processor. Zorg ervoor dat het overeenkomt met het bord en de processor die worden gebruikt in sectie 2 hierboven, bijvoorbeeld "Arduino Mega 2560" -bord en "ATmega2560" -processor.
  2. Programmeer het Arduino-bord om rotatie van de stoel mogelijk te maken 1) door middel van de potentiometer en 2) door middel van commando's van de computer via USB.
    1. Schrijf de code die moet worden geüpload naar de Arduino-processor.
      OPMERKING: Voorbeeldcode uit het voorbeeldexperiment is opgenomen in Aanvullend bestand 1 (bestandsnaam: hybrid_motor_controller.ino).
    2. Noteer de baudrate (argument voor de opdracht Serial.Begin(), bijvoorbeeld 9.600.
    3. Sla de code op en upload deze naar het Arduino-bord met behulp van de uploadknop .
  3. Test of het systeem tot nu toe werkt.
    1. Sluit het subsysteem Elektriciteit aan en schakel het in.
    2. Druk op de kleine schakelaar naar een positie waar het kleine LED-indicatielampje gaat branden.
    3. Draai de potentiometer om ervoor te zorgen dat deze de snelheid en richting van de stoel regelt.
  4. Installeer en configureer Steam en SteamVR volgens de instructies van de ontwikkelaar.
  5. Installeer en stel Unity in.
    1. Installeer en configureer Unity volgens de instructies van de ontwikkelaar.
    2. Open een nieuw of bestaand Unity-project (kies een type, bijvoorbeeld "3D" dat geschikt is voor de toepassing).
    3. Stel SteamVR in voor gebruik in het project.
      1. Open het activaarchief (klik op Venster | Activawinkel).
      2. Zoek naar SteamVR en selecteer SteamVR Plugin.
      3. Klik op Toevoegen aan middelen.
      4. Open in Unity Package Manager (klik op Window | Pakketbeheer).
      5. Zoek SteamVR op het tabblad Mijn middelen .
      6. Klik op Importeren en volg de aanwijzingen om het importeren te voltooien.
      7. Klik op Alles accepteren als u wordt gevraagd configuratiewijzigingen aan te brengen.
      8. Importeer de Steam VR Camera Rig in de scène. Zoek naar een nieuw item met de naam Steam VR in het projectvenster op het inspecteursscherm. Open Steam VR | prefabs.
      9. Sleep het element [Camera Rig] naar de hiërarchie of het scènevenster om het gebruik van de VR-headset en controllers in de game toe te staan.
      10. Verwijder de standaard hoofdcamera uit de hiërarchie of scène omdat dit de SteamVR-camera zal verstoren.
  6. Installeer en stel Ardity in.
    1. Zoek naar Ardity in de Unity Asset Store en selecteer het om te downloaden (stap 4.5.3.2 hierboven).
    2. Werk het API-compatibiliteitsniveau bij.
      1. Open Projectinstellingen in het menu Bewerken .
      2. Klik op Speler | Andere instellingen.
      3. Kies .NET 4.X in het vervolgkeuzemenu voor API-compatibiliteitsniveau.
      4. Sluit Instellingen af en wacht tot foutberichten verdwijnen.
  7. Stel de Unity-spelomgeving in.
    OPMERKING: De volgende minimale stappen zijn vereist voor de gebruiker om controle over de stoel te hebben en de stoelbeweging te integreren met zijn VR-ervaring.
    1. Maak de objecten en functies die nodig zijn voor de specifieke toepassing.
      1. Maak objecten door op GameObject te klikken en 2D-object of 3D-object te selecteren.
      2. Voeg functionaliteit toe aan het gemaakte object door te klikken op de knop Component toevoegen in het infovenster voor het object en een van de opties te selecteren. Selecteer Nieuw script om een C#-script te maken dat lijkt op het script in Supplemental File 3 (bestandsnaam: SetUpTrial.cs).
    2. Importeer het script van de seriële controller in de game.
      1. Open onder de map Assets in het venster Project de map Ardity | Map Scripts .
      2. Sleep het Script SerialController naar het gewenste spelobject in het venster Heirarchie , bijvoorbeeld het spelobject Achtergrond .
      3. Klik op het object en scrol omlaag in de lijst met componenten in het Inspector-venster om het SerialController-script te vinden.
      4. Zorg ervoor dat de poortnaam en de baudrate overeenkomen met die voor het Arduino-programma dat is ingesteld in stap 4.1 en 4.2 hierboven.
      5. Sleep het object waaraan het script SerialController is gekoppeld vanuit het hiërarchievenster naar het invoervak naast Berichtlistener in het infovenster.
    3. Schrijf en importeer het script van de stoelcontroller in het spel.
      1. Klik onder aan het Infovenster voor hetzelfde spelobject op Component toevoegen en selecteer Nieuw script. Geef het nieuwe script de naam ChairController.
      2. Schrijf de code die nodig is om controller- en muisopdrachten te nemen en zet ze om in nummers die via USB naar de Arduino moeten worden verzonden.
        OPMERKING: Een minimaal voorbeeld van de vereiste code is opgenomen in Supplemental File 2 (bestandsnaam: ChairController.cs).
      3. Sla het script op.
      4. Vul de lege vakken in het infovenster. Sleep het HMD-object vanuit het hiërarchievenster naar het invoervak naast Hoofd onder het script Stoelcontroller in het infovenster. Sleep op dezelfde manier het object Controller (rechts) naar het vak naast Hand.

5. Experimenteer (of ervaring) procedure

  1. Selecteer de invoermethode.
    OPMERKING: Het gegeven voorbeeld van de ChairController-code verwijst naar een script met de naam SetUpTrial waarin de variabele inputType voor het openbare gehele getal is ingesteld (waarbij inputType 3 een VR-controller is en inputType 4 muis). Deze script/variabele rangschikking is in de onderstaande stappen overgenomen.
  2. Klik op het spelobject waaraan het SetUpTrial-script is gekoppeld, bijvoorbeeld Achtergrond.
  3. Scrol omlaag in het infovenster om de openbare variabelen van het script SetUpTrial te vinden.
  4. Stel inputType in op 3 voor VR-controller of 4 voor muisbesturing.
  5. Druk op de afspeelknop in Unity om de VR-ervaring te starten met beweging die wordt bestuurd door de controllers of de muis.

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Resultaten

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

Het doel van het voorbeeldexperiment was om te bepalen of de toevoeging van fysieke rotatie - congruent of incongruent met de visuele achtergrondbeweging in een scène - de waargenomen richting van een bewegend doelwit in die scène beïnvloedde. Een verschil tussen congruente en incongruente fysieke beweging werd verwacht op basis van de hypothese dat de achtergrondbeweging de waargenomen doelrichting beïnvloedt volgens hoe gemakkelijk het visuele systeem van een deelnemer de oorzaak van achtergrondbeweging toewijst aan ze...

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Discussie

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

Dit artikel presenteert een methode voor het toevoegen van geautomatiseerde rotatie aan een bureaustoel onder controle van een waarnemer of experimentator, en een bijbehorende methode voor het integreren van die beweging in een virtuele ervaring. Kritieke stappen omvatten de mechanische bevestiging van de motor aan de stoel, het instellen van de stroom naar en elektrische besturing van de motor, en vervolgens het configureren van de Arduino en computer om de motorcontroller aan te drijven. De mechanische bevestigingsstap...

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Openbaarmakingen

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

Er zijn geen belangenconflicten.

Dankbetuigingen

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

Dit werk werd ondersteund door de subsidies van de Australian Research Council DP160104211, DP190103474 en DP190103103.

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Materialen

Lijst van materialen gebruikt in dit artikel
NaamBedrijfCatalogusnummerOpmerkingen
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 voor 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
RiemMotion DynamicsRFTB10010Kies een maat die geschikt is voor de toepassing. We gebruikten 60 tanden. https://www.motiondynamics.com.au/polyurethane-timing-belts-16mm-t-10/
Beugelbouten (houdt motor vast)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
Beugelbouten (houdt motor niet vast)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
KlemhoekijzerAustral Wright Metals50004813x 2. https://www.australwright.com.au/products/stainless-steel/stainless-steel-bar-round-flat-angle-square/
KlemboutenThe 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  
Klembladen (roestvrij platte staaf)Austral Wright Metals50004687x 8. https://www.australwright.com.au/products/stainless-steel/stainless-steel-bar-round-flat-angle-square/
Dekking (acryl)Bunnings Warehouse1010489https://www.bunnings.com.au/suntuf-900-x-600-x-5mm-grey-acrylic-sheet_p1010489
Dekking bouten/moerenBunnings Warehouse247292x 4. https://www.bunnings.com.au/pinnacle-m3-x-16mm-stainless-steel-hex-head-bolts-and-nuts-12-pack_p0247292
DekkingbeugelsBunnings Warehouse44061x 4. https://www.bunnings.com.au/zenith-20mm-zinc-plated-angle-bracket-16-pack_p0044061
NooduitschakelaarJaycarSP0786https://www.jaycar.com.au/latching-emergency-stop-switch/p/SP0786?pos=1&queryId=5abe9876cf78dc3d
d26b9067fbc36f74
Hybride steppermotor en 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-netvoedingsconnectorRS components811-7213https://au.rs-online.com/web/p/iec-connectors/8117213
Instrumentenkoffer (behuizing)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=
relevantie
Grote katrol (stoel)Motion DynamicsALTP10020Kies een maat die geschikt is voor de toepassing. Meer tanden = langzamere rotatie. We gebruikten 36 tanden. https://www.motiondynamics.com.au/timing-pulleys-t10-16mm.html
Motorbevestigingsstaven (roestvrij platte staaf)Austral Wright Metals50004687x 4. https://www.australwright.com.au/products/stainless-steel/stainless-steel-bar-round-flat-angle-square/
Montagebeugels (roestvrij platte staaf)Austral Wright Metals50004687x 2. https://www.australwright.com.au/products/stainless-steel/stainless-steel-bar-round-flat-angle-square/
MoerenThe Fastner Factory161989x 12. https://www.thefastenerfactory.com.au/stainless-steel-hex-nylon-insert-lock-nut-m6-100pc
Aan/uit-schakelaarJaycarSK0982https://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

Referenties

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,
  1. Campos, J., Bülthoff, H. Multimodal integration during self-motion in virtual reality. The Neural Bases of Multisensory. Murray, M. M., Wallace, M. T. , CRC Press. (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, Suppl 1 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. , Houghton Mifflin. (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, Pt 4 825-833 (2011).
  11. Badcock, D., Palmisano, S., May, J. G. Vision and virtual environments. Handbook of Virtual Environments: Design, Implementation, and Applications. Hale, K. S., Stanney, K. M. , CRC Press. 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. , Wuhan, China. 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. , Association for Computing Machinery. Winnipeg, Manitoba, Canada. (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. , Association for Computing Machinery. San Jose, California, USA. (2016).
  30. Roto VR Ltd. Roto VR Chair. , Available from: https://www.rotovr.com/ (2021).
  31. Yaw VR Ltd. 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). , Hilton Head, South Carolina. (2007).

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Herprints en machtigingen

Toestemming aanvragen om de tekst of afbeeldingen van dit JoVE-artikel te hergebruiken

Toestemming aanvragen

Trefwoorden

Virtual RealityControlled RotationMultisensory IntegrationVisual Vestibular CuesObserver MotionArduino ControlUnity IntegrationSteamVR PluginInduced MotionHead Mounted Display

Gerelateerde artikelen