The controlled physical rotation of a human observer is desirable for certain experimental, recreational, and educational applications. This paper outlines a method for converting an office swivel chair into a medium for controlled physical rotation in a virtual reality environment.
The low cost and availability of Virtual Reality (VR) systems have supported a recent acceleration of research into perception and behavior under more naturalistic, multisensory, and immersive conditions. One area of research that has particularly benefited from the use of VR systems is multisensory integration, for example, the integration of visual and vestibular cues to give rise to a sense of self-motion. For this reason, an accessible method for the controlled physical rotation of an observer in a virtual environment represents a useful innovation. This paper presents a method for automating the rotation of an office swivel chair along with a method for integrating that motion into a VR experience. Using an example experiment, it is demonstrated that the physical motion, thus produced, is integrated with the visual experience of an observer in a way consistent with expectations; high integration when the motion is congruent with the visual stimulus and low integration when the motion is incongruent.
Many cues combine under natural conditions to produce a sense of self-motion1. Producing such a sense is a goal in many recreational, health, and educational VR applications2,3,4,5, and simply understanding how cues combine to give a sense of self-motion has been a long-term endeavor of neuroscientists6,7,8,9,10,11. The three most important classes of cues for self-motion perception are visual, vestibular, and proprioceptive1. All three combine congruently during natural active movement in the real world to provide a robust and rich sense of self-motion. To understand the role of each class of cues and get a sense of how cues combine, researchers have traditionally deprived experimental observers of one or more cues and/or placed cues in conflict with one another1,12. For example, to provide rotational vestibular cues in the absence of proprioceptive cues, an observer can be rotated passively by a motorized chair13,14,15,16. Such passive motion has been shown to provide very convincing cues to self-motion17. Controlled visual cues provided by a VR headset can be congruent or incongruent with the chair motion or absent altogether. Proprioceptive cues can be added by having the observer rotate the chair under their own power, e.g., by pushing the chair around with their feet.
Presented here is a method for converting an office swivel chair into a medium for physically rotating the body of an observer and integrating that motion into a visual (and potentially auditory) virtual experience. The rotation of the chair can be under the control of the observer, a computer program, or another person such as the experimenter. Observer-controlled rotation can be passive by making the motor-driven rotation a function of the position of the observer's hand-held controller or active by turning the chair off and having the observer rotate the chair themselves.
Also presented is a psychophysical application for this chair/VR system. This example application highlights the usefulness of the controlled passive rotation of an observer in understanding how self-motion cues interact to produce overall perceptual experiences. The specific goal was to gain insight into a long-studied visual illusion–induced motion18,19. In induced motion, a stationary or moving target is perceptually "repulsed" away from a moving background. For example, if a red target dot moves vertically upwards against a field of blue dots moving to the right, the target dot will appear to move upwards, as expected, but also to the left, away from the direction of the moving background20,21. The aim was to test whether the repulsion is a result of interpreting the background motion as being caused by self-motion22,23.
If this is the case, then the addition of physical rotation that is consistent with the background visual motion should lead to a stronger sense that the background motion is due to self-rotation through a stationary environment. This, in turn, should lead to a greater tendency to subtract the background motion from the target motion to get target motion relative to the stationary world23. This increased tendency to subtract would result in greater perceived target repulsion. Physical self-rotation that was either consistent with or inconsistent with the background motion was added to test this. The system presented here allowed for the precise control of physical motion and corresponding visual motion to test this hypothesis. In the example, the chair motion was under the direct control of the observer using the VR system's hand-held controller.
Although there are many examples of motorized rotating chairs for various VR applications in the literature 24,25,26,27,28,29, the authors are unaware of a concise set of instructions for making such a chair and integrating it into an interactive VR experience. Limited instructions are available for the SwiVRChair29, which is similar in structure to the one presented here but that is designed with a different purpose in mind, that is, to be driven by a computer program to improve immersion in a VR environment, where chair movement can be overridden by the user by placing their feet on the ground. Given the expense of commercially available chairs30,31, making one "in-house" may be a more viable option for some researchers. For those in this situation, the protocol below should be of use.
The protocol consists of instructions for converting an office chair into an electrically driven rotating chair and integrating the chair movement into a VR experience. The entire system, once complete, is composed of four parts: the mechanical, electrical, software, and VR subsystems. A photograph of the complete system is shown in Figure 1. The system shown was the one used in the example experiment.
The job of the mechanical subsystem is to physically rotate the upper shaft of a swivel chair via a motor. It consists of an office chair to which two things are attached: a pulley fixed to the upper rotating shaft of the office chair and an adjustable mounting frame attached to the lower fixed part of the shaft. An electric stepper motor is attached to the mount, which has a pulley attached to its shaft that lines up with the pulley on the upper shaft of the office chair. A belt couples the motor pulley to the chair pulley, allowing the motor to spin the chair.
The electrical subsystem provides power to the motor and allows the electronic control of the motor. It consists of a motor driver, a power supply for the motor, an Arduino board for interfacing the driver with a computer, and a power supply for the Arduino (optional). An Arduino board is a popular small board among hobbyists and professional makers of anything electronic, which contains a programmable microprocessor, controllers, input and output pins, and (in some models) a USB port (required here). All the electrical components are housed in a custom-modified electrically insulated box. As mains power is required for the transformer that provides power to the motor and for the (optional) Arduino power supply, and as the motor requires high operating voltages, all but the low-voltage electronic work (protocol steps 2.5 to 2.10 below) should be performed by a qualified individual.
The software subsystem consists of Arduino software for programming the Arduino, Unity software for creating the VR environment, Steam software for driving the VR system, and Ardity–a Unity plugin that allows Unity to communicate with the Arduino board. This software was installed on a Gygabyte Sabre 15WV8 laptop running Microsoft Windows 10 Enterprise for the example experiment (Figure 1).
The VR system consists of a Head-mounted Display (HMD), a hand-held controller, and base stations for determining the position and orientation of the HMD and controller in space. The VR system used for this project was the HTC Vive Pro (Figure 1).
Described below is the procedure for combining these components to achieve a virtual experience that incorporates physical rotation (experiment or otherwise) with chair motion controlled by the observer via the hand-held controller or by the host/experimenter via a computer mouse or a potentiometer. The final part of the protocol consists of the steps necessary to initiate the VR experience. Note that the method for coding Unity to allow for trials and data collection is beyond the scope of this manuscript. Some steps, particularly for the mechanical subsystem, require certain workshop equipment and a certain level of skill. In principle, the presented methods can be adjusted to suit the availability of those resources. Alternatives are offered for some of the more technical steps.
WARNING: Electrical work should be performed by a qualified person.
1. Mechanical system setup procedure
- Attach the main pulley to the upper shaft of the swivel chair.
- Remove the upper shaft.
NOTE: This typically involves placing the chair on its side and removing a pin at the base of the chair that prevents the upper shaft from sliding out of the lower shaft.
- Friction-fit the pulley to the shaft.
- Use Vernier calipers to obtain the diameter of the shaft. Use a lathe to bore the pulley hole to match the diameter of the shaft.
- Create threaded holes for screws that will fix the pulley to the shaft. Drill additional holes in the hub of the pulley to make a total of 4, matching the diameter to that of the screws. Thread the holes using a tap so that screws can be used to fix the pulley to the shaft, matching the thread to that of the screws
NOTE: An ALTERNATIVE if creating a thread is not possible is to drill all the way through the hub of the pulley and the shaft of the chair, and run a bolt all the way through once the correct placement of the pulley has been determined (after step 1.4.6).
- Slide the pulley onto the chair shaft.
- Insert the screws loosely (tighten after the main and small pulleys are aligned).
- Place the drive belt loosely on the upper chair shaft (to be fit to the main and small pulleys later).
- Reattach the upper chair shaft to the chair base.
- Remove the upper shaft.
- Attach the motor mount to the bottom shaft of the swivel chair.
- Fabricate an adjustable clamp to which the motor mounting brackets can be attached.
- Fabricate the two matching components of the clamp–one for each side of the shaft (to be squeezed together with four bolts). See Figure 2 for dimensions.
- For each component, cut the 90° angle iron to length. Attach the 4 leaves through which the bolts will run.
- Round the edges of each leaf (metal bar) for safety. Drill holes near the end of each bar large enough for the bolts to fit through. Make a 45° bend at the appropriate position (score the bar to make the bend more precise). Spot-weld each bar to the angle iron-bolt holes outwards.
NOTE: ALTERNATIVELY, the leaves may be bolted in place, being careful not to cause a protrusion that will prevent the angle iron from contacting the chair shaft.
- Fabricate two motor mounting brackets. See Figure 3 for dimensions. For each bracket, drill two holes in the bar for attachment to the clamp just described. Bend 90° at the appropriate position (score the bar to make the bend more precise).
- Attach the clamp and mount to the bottom shaft of the chair by inserting the 4 bolts through the clamp components and brackets and tightening. Ensure that the bolts are not too tight if the mount needs to be adjusted to accommodate the aligning process in step 1.4.6.
- Fabricate an adjustable clamp to which the motor mounting brackets can be attached.
- Attach the small pulley to the motor shaft.
- Grind the key on the motor shaft flat (no longer protruding).
NOTE: This will provide a flat surface against which the pulley screw can be tightened to prevent slippage of the pulley around the motor shaft.
- Drill out the hole in the pulley to match the diameter of the motor shaft.
- Slide the pulley over the shaft and loosely tighten the screw against the flat surface on the shaft.
- Grind the key on the motor shaft flat (no longer protruding).
- Attach the motor to the motor bracket described above.
- Prepare each of the 4 motor attachment bars by drilling two holes in the appropriate positions (holes need to line up with the mounting holes in the motor). See Figure 4 for dimensions.
- If required for clearance, cut a section out of the upper of the two bars to allow the pulley on the motor shaft to rotate freely (optional).
- Place the four small cover attachment brackets over the four outer holes. Use them later to attach the protective cover over the belt and pulleys.
- Loosely attach the eight nuts and bolts, leaving room between the upper and lower bars to slide the mounting bracket bars between them.
- Slide the motor mounting bars onto the bracket-each upper bar above the mounting bracket bar and each lower one below.
- Position and clamp the motor.
- Move the main pulley, the small pulley, or both up and down until the main and small pulleys are horizontally aligned. Move the clamp if required.
- Place the drive belt over the small and main pulleys.
- Slide the motor assembly away from the chair until the belt is tight.
- Tighten the 8 bolts on the motor attachment bars to secure the motor to the motor bracket.
- Tighten the clamp bolts and pulley screws.
- Attach a cover to prevent anything from getting caught in the pulley/belt system.
- Bend the sides of the acrylic protective cover as per Figure 5.
NOTE: An ALTERNATIVE, if an acrylic bender is not available, is to use a metal sheet and sheet bender.
- Cut out a section to fit around the shaft of the chair as per Figure 5.
- Drill holes to match the holes on the small cover attachment brackets.
- Use the small cover attachment bolts to attach the cover.
- Bend the sides of the acrylic protective cover as per Figure 5.
2. Electrical system setup procedure
- Connect the on/off switch and the emergency shut-off switch to mains power. Use appropriate voltage- and current-rated cables to attach the IEC connecter (male connector for the mains power cable) to the emergency shut-off and on/off switch in series (so that breaking the circuit with either one will cut power to the rest of the components).
NOTE: Soldering may be required.
- Connect the 5 V DC power supply for the Arduino to the on/off switch (optional).
NOTE: Soldering and mains rated cable required.
- Connect the 48 V DC power supply for the chair driver to the on/off switch in parallel to the 5 V power supply.
NOTE: Mains rated cable required.
- Make appropriate DIP switch settings for the Hybrid stepper motor driver. For example:
- Set switches 1-4 to ON, OFF, ON, and ON, respectively, for 1,600 pulses per revolution for the stepper motor (the higher the number, the finer the control but the lower the cap on rotation speed depending on how quickly the Arduino can produce pulses).
- Switch 5 to OFF for the anticlockwise default rotation direction.
- Switch 6 to ON for drive Point Motion (PM) mode as opposed to space vector control mode (or Field-oriented Control, FOC).
- Set switches 7 and 8 to OFF and OFF to match the controller to the 86 series 12 NM closed-loop motor.
- Connect the Hybrid stepper motor driver to the power supply and chair driver cables.
- Attach appropriately rated cables from the 48 V power supply output terminals to the motor driver power input connector housing and insert the housing.
- Connect the two motor cables via their connector housings to the driver.
- Connect the Arduino to the Hybrid stepper motor driver.
- Use pinned jump wires to connect the PUL+ ("pulse" +), DIR+ ("direction" +), and ENA+ ("enable" +) terminals on the motor driver connector housing to pins 2, 3, and 5 (pin numbers optional but stated here as examples to be used throughout) on the Arduino.
- Use short wires to connect the PUL-, DIR-, and ENA- terminals of the motor driver connector housing and a longer pinned jump wire to connect ENA- to a GND (ground) pin on the Arduino.
- Insert connector housing into the motor driver.
- Connect the Arduino to the 5 V DC power supply (optional). Use pinned jump wires to connect pins GND and Vin on the Arduino to the 5 V out terminals of the 5 V power supply.
- Connect the potentiometer to the Arduino. Use pinned jump wires to connect the A1 (an "analog in" terminal) GND and 5 V pins on the Arduino to the three terminals of the potentiometer.
NOTE: Soldering required.
- Connect the toggle switch to the Arduino. Connect pin 6 and GND on the Arduino to the two toggle switch terminals using pinned jump wires.
NOTE: Soldering required.
- Connect the LED to the Arduino.
- Solder the resistor to one terminal of the LED (to drop the voltage on the LED circuit).
- Attach pins 7 and GND on the Arduino to the end of the resistor and the other LED terminal using pinned jump wires.
NOTE: Soldering required.
- Insulate and house the electrical/electronic components. See Figure 6 for an image of a completed housed system.
NOTE: There are many ways to insulate the high voltage components of the electrical system, protect the fragile electronic components from damage, and contain all these components in a manageable space. Below is one suggested method.
- Drill/cut holes in the side of the instrument case for the IEC power connector, the main on/off switch, the two motor control cables, the small toggle switch, the LED, the potentiometer, and the USB port of the Arduino (make this one large to allow air to flow into the case for cooling).
- Attach each of these components using the appropriate means (e.g., screws, bolts, hot glue gun).
- Cut ventilation holes (one above the fan in the 48 V power supply) and a hole for the emergency switch in the lid of the case; then, attach the ventilation filters and the switch.
- Attach the Arduino to the base of the case using spacers and screws. Position so that the USB port aligns with the USB port hole in the case.
- Attach the 48 V and 5 V power supplies and the motor driver to the base of the case using Velcro and foam blocks.
3. VR setup procedure
- Set up the VR system as per the manufacturer's instructions.
4. Software setup procedure
- Install and set up the Arduino software.
- Download and install the Arduino program as per the developer's instructions.
- Connect the Arduino to the computer using a USB cable.
- Under the Tools dropdown menu, select the port to which the Arduino board is attached.
- Under the same menu, select the appropriate board and processor. Make sure it matches the board and processor used in section 2 above, e.g., "Arduino Mega 2560" board and "ATmega2560" processor.
- Program the Arduino board to allow rotation of the chair 1) by means of the potentiometer and 2) by means of commands from the computer via USB.
- Write the code to be uploaded to the Arduino processor.
NOTE: Example code from the example experiment is included in Supplemental File 1 (filename: hybrid_motor_controller.ino).
- Take note of the baud rate (argument to the Serial.Begin() command), e.g., 9,600.
- Save the code and upload it to the Arduino board using the upload button.
- Write the code to be uploaded to the Arduino processor.
- Test that the system is working so far.
- Plug in and turn on the Electrical subsystem.
- Flick the small toggle switch to a position where the small LED indicator light turns on.
- Turn the potentiometer to ensure that it controls the speed and direction of the chair.
- Install and configure Steam and SteamVR as per the developer's instructions.
- Install and set up Unity.
- Install and configure Unity as per the developer's instructions.
- Open a new or existing Unity project (choose a type, e.g., "3D" that is appropriate for the application).
- Set up SteamVR for use in the project.
- Open the asset store (click on Window | Asset Store).
- Search for SteamVR and select SteamVR Plugin.
- Click Add to Assets.
- In Unity, open the Package Manager (click on Window | Package Manager).
- Find SteamVR under the My Assets tab.
- Click Import and follow the prompts to complete the import.
- Click Accept All if prompted to make configurational changes.
- Import the Steam VR Camera Rig into the scene. Look for a new Asset called Steam VR in the project window on the inspector screen. Open Steam VR | prefabs.
- Drag the [Camera Rig] asset into the hierarchy or scene window to allow the use of the VR headset and controllers in the game.
- Remove the default Main Camera from the hierarchy or scene as it will interfere with the SteamVR camera.
- Install and set up Ardity.
- Search for Ardity in the Unity Asset Store and select it for download (step 18.104.22.168 above).
- Update the API compatibility level.
- Open Project Settings under the Edit menu.
- Click on Player | Other Settings.
- Choose .NET 4.X in the dropdown menu for API Compatibility Level.
- Exit Settings and wait for error messages to disappear.
- Set up the Unity game environment.
NOTE: The following minimum steps will be required for the user to have control of the chair and have the chair motion integrated with their VR experience.
- Create the objects and functions needed for the specific application.
- Create objects by clicking on GameObject and selecting either 2D Object or 3D Object.
- Add functionality to the created object by clicking the Add Component button in the Inspector window for the object and selecting one of the options. Select New Script to create a C# script similar to the one in Supplemental File 3 (filename: SetUpTrial.cs).
- Import the Serial Controller script into the game.
- Under the Assets folder in the Project window, open the Ardity folder | Scripts folder.
- Drag the SerialController script into the desired game object in the Heirarchy window, e.g., the Background game object.
- Click on the object and scroll down the list of components in the Inspector window to locate the SerialController script.
- Make sure the Port Name and Baud Rate match those for the Arduino program set in steps 4.1 and 4.2 above.
- Drag the object to which the SerialController script is attached from the hierarchy window into the input box next to Message Listener in the Inspector window.
- Write and import the chair controller script into the game.
- At the bottom of the Inspector window for the same game object, click on Add Component and select New Script. Name the new script ChairController.
- Write the code required to take controller and mouse commands and turn them into numbers to be sent via USB to the Arduino.
NOTE: A minimal example of the code required is included in Supplemental File 2 (filename: ChairController.cs).
- Save the script.
- Fill the empty boxes in the Inspector window. Drag the HMD object from the Hierarchy window into the input box next to Head under the Chair Controller script in the Inspector window. Similarly, drag the Controller (right) object into the box next to Hand.
- Create the objects and functions needed for the specific application.
5. Experiment (or experience) procedure
- Select the input method.
NOTE: The provided example ChairController code refers to a script called SetUpTrial where the public integer variable inputType is set (where inputType 3 is VR controller, and inputType 4 is mouse). This script/variable arrangement has been assumed in the steps below.
- Click on the game object to which the SetUpTrial script is attached, e.g., Background.
- Scroll down in the Inspector window to find the SetUpTrial script public variables.
- Set inputType to 3 for VR controller or 4 for mouse control.
- Press the Play button in Unity to begin the VR experience with motion controlled by the controllers or the mouse.
The aim of the example experiment was to determine whether the addition of physical rotation–either congruent or incongruent with the visual background motion in a scene–affected the perceived direction of a moving target in that scene. A difference between congruent and incongruent physical motion was expected based on the hypothesis that the background motion affects the perceived target direction according to how readily the visual system of a participant assigns the cause of background motion to self-motion32,33. If the background and physical motions were congruent, then a greater sense of causal link was expected and, thus, a greater deviation of the perceived target direction from its actual direction in the visual display.
An observer controlled the rotation speed and direction of the chair using a VR controller. The further left or right the controller was from the HMD's facing direction, the greater the speed of rotation. In the congruent condition, if the target pattern, which always had a positive vertical motion component, appeared to be drifting rightward of vertical, the observer would move the controller to the left. This caused the chair to rotate to the left (anticlockwise) and the HMD on the observer to rotate anticlockwise, which caused the background in the visual scene to move rightward at the appropriate speed (as if it were a stationary background against which the observer was rotating, Figure 7A). This rightward background motion "repulsed" the target, adding a leftward motion component to the perceived target motion, as expected by the induced motion illusion. The target direction was controlled by the computer, always upwards but randomly stepping either clockwise or anticlockwise of its current direction at small regular intervals (achieving a random walk, starting at vertical and spanning the upper two quadrants of Euclidean space). The aim of the observer was to adjust their own rotational speed and direction and, thus, the speed and direction of the background, so that the induced motion caused by the background exactly canceled any leftward or rightward component of motion in the target.
In the incongruent condition, leftward controller movement caused the chair to rotate to the right (clockwise) and the background to move rightwards via clockwise HMD rotation (Figure 7B). Thus, leftward controller movement caused rightward background motion just as in the congruent condition, but the chair moved in the opposite direction to what it did in the congruent condition, that is, it moved incongruently with the background. Rightward rotation, for example, was accompanied by rightward background motion, which is inconsistent with an observer rotating against a stationary background.
A screenshot of the visual stimulus is shown in Figure 8. The patterns on each small circular stimulus element moved at the same speed and direction as the other patterns of the same object (target or background) without the elements themselves moving, as if each element were a stationary window through which could be seen the motion of a large underlying object. This allowed a sense of motion without the target and background moving off the display area. The display area was a plane set at 8 m away from the observer in the virtual scene and locked in position relative to the HMD. The target elements lay on a ring with a radius of 5° visual angle, and the background elements were scattered randomly over a 20° x 20° area on the display plane. The speed of the target was held at 6°/s, and its direction varied from -10° around to 190° (i.e., generally remained in the top two quadrants of Euclidean space). The background direction was always horizontal, and the speed varied according to how fast the observer's head rotated clockwise or anticlockwise. The continuously collected data were analyzed by a method previously developed in the laboratory for analyzing continuous psychophysical data. This method is an extension of an existing approach to analyzing continuous tracking data33.
The strength of the induced motion effect under the congruent and incongruent motion conditions was represented by the value of the parameter β in Eq (1):
Where p is a vector representing the perceived target velocity, t represents the actual target velocity, and b represents the background velocity. β controls the extent to which the background velocity is subtracted from the target motion to produce the perceived target velocity. When an observer is rotating in the real world, and a target is moving within their visual field, the background motion must be subtracted completely from the target motion to get the target motion relative to the stationary world32. A β value of 1 is, thus, conducive with the visual system assigning the cause of the background motion completely to self-motion, and a lower value indicates partial assignment. The mean β values of nine observers for the two conditions are shown in Figure 9.
For all but one observer, the mean β value decreased because of the chair moving incongruently with the visual stimulus (although the change was significant for only one observer, t(4) = 13.6, p = 0.000). The data were analyzed with a two-way ANOVA using observer and congruency as the two factors. Both factors were significant with observer F (8, 32) = 2.857, p = 0.016 and congruency F (1, 32) = 8.236, p = 0.007 indicating a significant difference between observers and a significant effect of the chair rotation direction. The predicted mean β value for the congruent condition was 1.03 and 0.87 for the incongruent condition. These results match the expectations presented above. A β value close to 1 for the congruent condition indicates a readiness to assign background motion to self-motion. A significantly lower value for the incongruent condition indicates a diminished readiness to do so. This, in turn, indicates that the experience of motion provided by the chair matched expectations; the chair provided an effective means of giving observers a sense of physical motion in the expected way.
Figure 1: A photograph of the complete system. Please click here to view a larger version of this figure.
Figure 2: Clamp for attaching motor to the base of the chair. (A) The whole clamp assembly. (B) Dimensions for angle iron and leaves combined. (C) Leaf dimensions. (D) Angle iron dimensions. All dimensions in mm. Please click here to view a larger version of this figure.
Figure 3: Bracket for attaching the motor to the clamp. (A) Assembly. (B) Dimensions in mm. Abbreviation: dia = diameter. Please click here to view a larger version of this figure.
Figure 4: Attaching the motor to the motor bracket. (A) How to attach the motor attachment bars. (B) Motor attachment bar dimensions in mm. (C) How to attach the cover brackets. Please click here to view a larger version of this figure.
Figure 5: Attaching the cover. (A) Cover attachment process. (B) The completed mechanical system. (C) Cover dimensions in mm. Please click here to view a larger version of this figure.
Figure 6: All electrical and electronic components in instrument case. Note that the 5 V power to the Arduino is disconnected in this photo. Please click here to view a larger version of this figure.
Figure 7: A schematic representation of the actions of the observer and the resulting chair and scene changes during the experiment. (A) Congruent condition: if the controller was moved anticlockwise, the chair moved anticlockwise also, and the visual background moved in the opposite direction as if it were a stationary scene against which the person was rotating. (B) Incongruent condition: the same as the congruent except that the chair moved in the opposite direction making the chair motion incongruent with the visual background motion. In the diagram, the observer rotates clockwise, and the scene rotates further clockwise relative to the motion of the observer, which is inconsistent with natural experience. Please click here to view a larger version of this figure.
Figure 8: A screenshot of the motion stimulus-containing area of the visual display. This 2D image plane was placed at 8 m away from the observer occupying a 35° x 35° area of the visual scene in the VR environment. The target ring had a radius of 5° visual angle and the background area subtended 20° x 20°. Abbreviation: VR = virtual reality. Please click here to view a larger version of this figure.
Figure 9: Mean beta values for each observer in the congruent and incongruent conditions. For all but one observer, the beta value decreased for the incongruent chair/visual motion condition, indicating a decreased likelihood to view the visual background motion as being caused by the observer's physical motion. A 2-way ANOVA revealed that the group change in beta value was significant (see text for details). Please click here to view a larger version of this figure.
Supplemental File 1: Example Arduino code, hybrid_motor_controller.ino. Please click here to download this File.
Supplemental File 2: Example Unity C# script, ChairController.cs. Please click here to download this File.
Supplemental File 3: Example Unity C# script, SetUpTrial.cs. Please click here to download this File.
This paper presents a method for adding automated rotation to an office chair under the control of an observer or experimenter, and an accompanying method for integrating that motion into a virtual experience. Critical steps include the mechanical attachment of the motor to the chair, setting up the power to and electrical control of the motor, then configuring the Arduino and computer to drive the motor controller. The mechanical attachment step requires some specialized equipment and skills, although workarounds have been suggested for the most difficult tasks. Further modifications may be called for depending on the availability of hardware.
The high-voltage electrical work should be completed by a qualified individual and, if required by law, be certified by the relevant body. The low-voltage work can be done by a person with limited experience. Above are instructions specific enough to allow reproduction if the same equipment is used, but different equipment will require slight modifications of the procedure.
Arduino code has been provided to complement the specific electronic configuration suggested here. Note that the Arduino and other software instructions provided work with Arduino version 1.8.12, SteamVR version 1.18.7, Unity version 2020.2.7f1, and Ardity version 1. Other software versions may require modifications of the protocol.
One limitation of the method is that angular acceleration needs to be damped. A method for doing so is provided in the Arduino code. This is because the hybrid servo will try to "catch up" on missed motor steps (if friction or inertia prevents the motor from accelerating as fast as it is instructed to), which can lead to overshooting and rotational "bouncing." Dampening the acceleration commands coming from the computer is a way of dealing with this; this is the approach taken in the provided example code. A brushed or brushless DC motor may be used to alleviate this issue, but these motors tend to have low torque at low speeds, making rotation control at low speeds very difficult. The authors first tried a brushless DC motor before switching to the hybrid stepper motor.
Alternatives to the approach presented here exist. It is possible to buy premanufactured rotating chairs30 and chairs that move in other directions31, for example, chairs that make small translational34,35 or rotational36,37 movements all the way up to strap-in chairs and cages that perform large multidimensional motions38,39,40. These systems are generally built for recreational applications but can, in principle, be adapted for conducting experiments, although "unlocking" the system to allow it to work with an experimenter's software may prove difficult in some circumstances. These systems also tend to be expensive. It was, in the end, expense that led the authors to develop their own system. For comparison, the cost of the kit used to automate the motion of the office chair in this project was approximately AUD$540 (cost of laptop, office chair, and VR system not included).
The data presented in the representative results section indicates that the physical motion of an observer on the motorized chair can have a significant impact on their experience of the visual scene. Specifically, spin direction–congruent versus incongruent-was a highly significant factor in driving β values for the group, producing an average β value of 1.03 when the chair spun in a direction congruent with the visual background motion and a significantly lower β value (0.87) when the chair spun incongruently. There were variations in the strength of the effect among individuals (even producing the opposite effect in one individual, albeit insignificant). However, the average change caused by switching the spin direction was highly significant, as revealed by the ANOVA (p = 0.007). Further support for the effectiveness of the chair is that the average β value for the group in the congruent condition was close to 1 (not significantly different from 1; p = 0.89, paired t-test), indicating that the observers were, on average, viewing the visual scene as if they were actually rotating in the real world, fully subtracting the motion of the background from the target motion to get the true motion of the target relative to the stationary world.
The experimental applications for the method presented here are expansive, given the increased interest in VR-mediated experimentation. Wherever automated rotational motion in a virtual environment is desirable, the method is applicable. The chair provides vestibular and small kinesthetic rotational cues such as pressure, vibrational, and inertial cues. Controlling such cues is important in understanding the mechanisms of the sense of self-motion and in understanding how vestibular cues generally integrate with other sensory cues. The example experiment indicates that the physical cues provided by the chair combine with visual cues to produce a scene interpretation, i.e., the perceived direction of the target, which is consistent with real-world experience when the cues are congruent and inconsistent when they are not.
There are no conflicts of interest.
This work was supported by Australian Research Council grants DP160104211, DP190103474, and DP190103103.
|48 V DC power supply (motor)||Meanwell||RSP-320-48||https://www.meanwellaustralia.com.au/products/rsp-320|
|5 V DC power supply (arduino)||Jaycar||MP3295||https://www.jaycar.com.au/15w-5v-3a-enclosed-power-supply/p/MP3295?pos=5&queryId=dda344422ab16c6
|Ardity plugin for Unity||Open Source||https://ardity.dwilches.com/|
|Arduino MEGA 2560||Jaycar||XC4420||https://www.jaycar.com.au/duinotech-mega-2560-r3-board-for-arduino/p/XC4420?pos=2&queryId=901771805f4bf6e0
|Belt||Motion Dynamics||RFTB10010||Choose 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 Factory||161260||x 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 Factory||161258||x 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 Iron||Austral Wright Metals||50004813||x 2. https://www.australwright.com.au/products/stainless-steel/stainless-steel-bar-round-flat-angle-square/|
|Clamp bolts||The Fastner Factory||161265||x 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 Metals||50004687||x 8. https://www.australwright.com.au/products/stainless-steel/stainless-steel-bar-round-flat-angle-square/|
|Cover (acrylic)||Bunnings Warehouse||1010489||https://www.bunnings.com.au/suntuf-900-x-600-x-5mm-grey-acrylic-sheet_p1010489|
|Cover bolts/nuts||Bunnings Warehouse||247292||x 4. https://www.bunnings.com.au/pinnacle-m3-x-16mm-stainless-steel-hex-head-bolts-and-nuts-12-pack_p0247292|
|Cover brackets||Bunnings Warehouse||44061||x 4. https://www.bunnings.com.au/zenith-20mm-zinc-plated-angle-bracket-16-pack_p0044061|
|Emergency shut-off switch||Jaycar||SP0786||https://www.jaycar.com.au/latching-emergency-stop-switch/p/SP0786?pos=1&queryId=5abe9876cf78dc3d
|Hybrid stepper motor and driver||Vevor||?||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 connector||RS components||811-7213||https://au.rs-online.com/web/p/iec-connectors/8117213|
|Instrument case (housing)||Jaycar||HB6381||https://www.jaycar.com.au/abs-instrument-case-with-purge-valve-mpv2/p/HB6381|
|Main pulley (chair)||Motion Dynamics||ALTP10020||Choose 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 Metals||50004687||x 4. https://www.australwright.com.au/products/stainless-steel/stainless-steel-bar-round-flat-angle-square/|
|Mounting brackets (stainless flat bar)||Austral Wright Metals||50004687||x 2. https://www.australwright.com.au/products/stainless-steel/stainless-steel-bar-round-flat-angle-square/|
|Nuts||The Fastner Factory||161989||x 12. https://www.thefastenerfactory.com.au/stainless-steel-hex-nylon-insert-lock-nut-m6-100pc|
|Pulley screws||The Fastner Factory||155856||x 5. https://www.thefastenerfactory.com.au/stainless-steel-hex-socket-head-cap-screw-m4-x-25mm-100pc|
|resistor 150 Ohm||Jaycar||RR2554||https://www.jaycar.com.au/150-ohm-1-watt-carbon-film-resistors-pack-of-2/p/RR2554?pos=19&queryId=48c6317c73fd361
|Small pulley (motor)||Motion Dynamics||ALTP10020||Choose 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 switch||Jaycar||ST0555||https://www.jaycar.com.au/sealed-mini-toggle-switch/p/ST0555?pos=14&queryId=066b989a151d83
|Steam software||Valve Corporation||https://store.steampowered.com/|
|SteamVR plugin for Steam||Valve Corporation||https://store.steampowered.com/app/250820/SteamVR/|
|Unity software||Unity Technologies||https://unity3d.com/get-unity/download|
|VR system||Scorptec||99HANW007-00||HTC Vive Pro with controllers and base stations. https://www.scorptec.com.au/product/gaming-peripherals/vr/72064-99hanw007-00?gclid=Cj0KCQiA5OuNBhCRARIsA
- 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).
- 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).
- 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).
- 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).
- 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).
- Riecke, B. E., Sigurdarson, S., Milne, A. P. Moving through virtual reality without moving. Cognitive Processing. 13, Suppl 1 293-297 (2012).
- 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).
- 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).
- Gibson, J. J. The perception of the visual world. Houghton Mifflin. (1950).
- 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).
- 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).
- 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).
- 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).
- 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).
- Tremblay, L., et al. Biases in the perception of self-motion during whole-body acceleration and deceleration. Frontiers in Integrative Neuroscience. 7, 90 (2013).
- 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).
- Harris, L., et al. Simulating self-motion I: Cues for the perception of motion. Virtual Reality. 6, (2), 75-85 (2002).
- Carr, H. A., Hardy, M. C. Some factors in the perception of relative motion: A preliminary experiment. Psychological Review. 27, 24-37 (1920).
- Reinhardt-Rutland, A. H. Induced movement in the visual modality: An overview. Psychological Bulletin. 103, 57-71 (1988).
- Zivotofsky, A. Z., et al. Tracking of illusory target motion: Differences between gaze and head responses. Vision Research. 35, (21), 3029-3035 (1995).
- 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).
- 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).
- 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).
- 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).
- 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).
- Koenig, E. A new multiaxis rotating chair for oculomotor and vestibular function testing in humans. Neuro-ophthalmology. 16, (3), 157-162 (1996).
- Mowrey, D., Clayson, D. Motion sickness, ginger, and psychophysics. The Lancet. 319, (8273), 655-657 (1982).
- 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).
- 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).
- Roto VR Ltd. Roto VR Chair. Available from: https://www.rotovr.com/ (2021).
- Yaw VR Ltd. Yaw Motion Simulator. Available from: https://www.yawvr.com/ (2021).
- 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).
- 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).
- SimXperience. Available from: https://www.simxperience.com/ (2021).
- 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).
- DOF Reality Motion Simulators. Available from: https://www.dofreality.com/ (2021).
- Next Level Racing. Available from: https://nextlevelracing.com/ (2022).
- Motion Systems. Available from: https://motionsystems.eu/ (2022).
- Redbird Flight Simulations. Available from: https://simulators.redbirdflight.com/ (2022).
- 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).