Final Project Proposal
Amphibian: Terrestrial scuba diving harness using virtual reality
Amphibian: Terrestrial scuba diving harness using virtual reality
I only saw ocean two years ago in my life and was extremely fascinated by it. I am now a master scuba diver, and I wish for others to experience the underwater world from the comforts of their home. It is truly a magnificent world out there, but we know more about the moon. As I mentioned in my final-idea at the beginning, I built a terrestrial scuba diving harness using virtual reality and suspension system over the course of the semester. The project employs a full-body mechanical harness coupled with a head-mounted display to let the user 'swim through' the underwater world on land. The head-mounted display employing oculus rift and headphones, delineates the ocean scene and sound. Swim gesture is done though an acceleromter board situated on the wrist.
The objective of this work is to recreate the sensations and physical conditions of SCUBA diving in a convenient terrestrial setting, leading to an immersive experience.
Since I am a scuba diver, I have firsthand experience with sensory distortions experienced while in the ocean. The underwater environment is inhospitable for humans. Due to differences in reflectivity, light transmission and varied magnification, we experience poor contrast, severely reduced visual range and impaired object magnification. Additionally, our hearing underwater is quite distorted. Sound travels five times faster in water than in air. As a result, we cannot localize sound effectively underwater. Our other senses are also severely muted too. We cannot smell at all underwater and we avoid tasting things. Our sense of touch is considerably reduced since water causes fingertips to prune, thereby reducing sensitivity.
Other sensory modalities like thermoception (sense of temperature), equilibrioception (sense of balance), and proprioception (sense of kinesthesia) are relatively unaltered, but are nevertheless stimulated. For example, the temperature decreases as the diver goes deeper in water, the pressure increases, and when a diver stretches out underwater, balancing and motionless, their breathing gently lifts them up and lets them fall.
The project contains three parts: mechanical harness containing the user, head-mounted display assembly containing oculus-rift and noise cancelling headphones and the wrist band to track the user's gestures. The video at the top shows one of my friends using the system. I will explain each section in detail here.
First off is the most important skill I learned in the class. Building the mechanical harness. During the ideation (first month of the class), I started thinking about the mechanical system and drew some sketches (shown in Figure 1). The underwater environment involves a different physical environment. There are three forces that are acted on the body- buoyancy, drag and viscous. My efforts were mainly directed towards simulating buoyancy and drag underwater. After multiple interactions, I concluded into two separate components of the system: 1) a torso support with springs and water bed to simulate buoyancy and, 2) a wooden structure with elastic bands attached to guide rails, that extend to the human body limbs as an suspension, to simulate drag force. It is a free swimming apparatus and the bands and torso support provide counter forces to the body as if the user was diving in the viscous underwater environment.
So, I started buliding the harness according to my thoughts. In a line, I would say it turned out good but a little worse than I expected. The harness design turned out more or less as I thought, but there are still some friction problems and non-smooth sliders. But apart from that, it looks and feels good. I researched first on the type of woods that would be good for this and bought a bunch of whitewood stud from the home depot. I started cutting them and aligning to the way that I thought they would be in my sketches (Figure 2). I used wood blue to join them togeher resulting in a harness support. Next job was to make the sliders that would hold the limbs of the person and make him swim inside. I cut those wood again using the band saw and made those sliders. Next job was to attach some sort of the wheels to the sliders. How to choose an appropriate slider mechanism. As you can see in my designs, I wanted to use a drawer sliding mechanism but when I procured some drawer sliders from home depo, they didn't look very compelling and smooth. Better sliders would be something like thomson bearings, or so I was told. But, they costs a couple of thousands, something that I couldn't have afforded. So, I just went to a hardware store in central square and bought some wheels. Those were attached to the x-y sliders that I made (Figure 3). Now the harness is ready. Move on to the torso part.
As I already designed, the torso was supposed to provide 6DOF to make it feel more realistic. In order to do that, I bought heavy springs online (the most expensive part of the project). Those springs were then attached to the 3D printed holders that I created in the Edgerton fab lab (Figure 4). Once done, everything was placed on the MDF wooden base that I milled with the shopbot. Now, I wanted the user to feel more buoyant. So, I procured and placed a water bed on top of the base and filled it with water. The base is ready now. When I tested with my friend, it seemed very unstable to me. So, I secured it with little clamps that I designed and 3D printed. With the base and the harness the assembly is complete.
I procured elastic bands and hooks to match with my design from Amazon (Figure 5). These would be attached to the users limbs and give support and drag force to them when the user moves. Those would be attahed to the sliders in the assembly on the other end. This completes the mechanical harness side. I painted the harness brown earlier (see the video). But, people didn't like the color much, so I changed it to grey. The paints were procured from the hardware store.
Next up was the Oculus Rift VR application. I used Rift because I wanted to give a more immersive expereince. The app coding would have took a long time. But, fortumately, I would able to procure a demo app. It is called ocean-rift and I modified it a little bit with the permission of the developer. I am not allowed to share the code publicly, I am sorry but the app is very visible online here. This is one thing I regret. I didn't have time to completely code the app. This app has a lot of features like flora and fauna and underwater rocks and caverns that are pretty to see.
The last part is interfacing with the accelerometer board for gesture tracking . In this ocean-rift app, the person moves in the ocean full of flora and fauna. The person is actually moved with the keyboard strokes. Up, down, right, left for moving in the horizontal plane and shift and control for moving up and down respestively. I decided to move the person more naturally, using the swim gestures that move the person. So, naturally, I decided to use the accelerometer, make my custom board and then try to interface it serially with the unity application. The board was wrapped in a laser cutted housing and velcro was appended on it to attached to the user's wirst (Figure 6). For interfacing, I faced a couple of problems, but finally got the code working. The problems were:
1. Controlling application layer with hardware layer: Board sends the code bit by bit over serial (See code, Figure 7). Unity reads the code using the readline (See code, Figure 8) which is much more complex than the hardware layer. It took a while to get the interface correctly.
2. I had to modify the unity app a bit to receive data from the serial port. Being new to Unity, it took a while for me to get comfortble with the application.
3. There was a certain lag caused in the application when I tried to receive data from the serial port. I figured it was due to the fact that I was reading data from multiple points in the app. Also, I couldn't find an event to check if the data is received in the serial port from Unity, so I decided to check for and read the new data every frame. The app runs at approximately 30 frames per second which is doable.
Once everything was working it looked great. For now, I only have two gestures, press down to move up and swim forward to move forward. On showing it to my friend wearing the oculus rift, he mentioned that the gestures do feel realistic but he'll be happy if there were more gestures. That completes my system.
Evaluation and Implications
I evaluated the prototype with 6 of my friends, the video for one is shown. The feedback was informal and in a think aloud manner. I asked them to lie down in the harness for about 10 mins with the oculus rift and gesture tracking and they navigated their way in the application. The overall feedback was positive. People appreciated how they were able to fee buoyant and navigate in the underwater environment. Some people commented that the combination of the waterbed with the 6DOF torso base made them feel weightless as they swam through the VR application.
I also received some constructive critique and suggestions. The primary concern that emerged from the feedback was the restricted movement in a confined region. Also, the swim gesture was not smooth as the wooden sliders attached to the bands had a lot of friction. This was indeed a limitation since being underwater is effortlessly elegant with gliding movements. Some participants claimed that the torso support only enabled movement in one direction. Though this was not entirely true, since the base provides 6DOF, we interpreted it to mean the lack of horizontal movement in multiple directions. Future prototype would resolve these problems.
Virtual Reality Scuba Diving Simulations
There are many PC games that simulate maritime environments. For example, World of Diving. These games usually include a player that navigates within interactive visuals in the form of enchanting marine wildlife, vast shipwrecks and other underwater elements like rocks, caves etc. Though the visuals and graphics of these games are compelling—and also inspire visuals used in our system—the games are designed to primarily stimulate the visual and auditory human senses. A more immersive simulation would include other additional senses like kinesthetic, temperature, or balance.
Frohlich and Takala et al. used cave-like simulation systems for depicting an underwater environment. They enclose the user in a room and project 3D images of the marine world onto the walls. . In Takala et al.’s simulation, the user wears gesture detection gloves, which recognize the swimming arm gestures allowing the user to “swim” among 3D plants and fish, something that we also employ in our system. With Amphibian, users navigate with their arms and hands, moving them slowly similar to movements in a breaststroke helps them move forward. This movement is detected by gloves worn by the user while the Oculus Rift displays a fish’s-eye view of their surroundings. Fish, coral, and rocks are some of the things that are visible from within the underwater environment. Besides motion, the user can interact with fish by scaring them with a clap, or attracting them with feeding gestures. These environments are more inclusive, as they completely enclose the users in a virtual world. However, more human senses can be targeted to make it more extensive, which is what Amphibian does.
There are also systems that immerse users in a pool or tank of water to simulate the experience of being in the ocean. For instance, Blum et al. used AR on a waterproof HMD to visually enhance a regular swimming pool with virtual maritime objects projected onto the pool floor. AquaCAVE is a computer-augmented water tank with rear-projection acrylic walls that surround a swimmer, providing a cave-like immersive stereoscopic projection environment. These systems feel realistic because the user is actually immersed in water, something that is difficult to simulate on land. In Amphibian, the user is not actually immersed in water but we create a feeling of being immersed in water by using various methods and targeting multiple senses.
Virtual Reality Suspension Systems
Structurally, our system has elements similar to those in Birdly and Swimming Across the Pacific.
Birdly is an art installation that simulates flying using an Oculus Rift headset paired with an inverted massage chair like surface and a fan for the wind effect, creating a full-body VR experience. The user mimics the bird by resting their torso on the chair and their arms stretched out and resting on a plastic hand-rest with buttons for starting or stopping flight. Users navigate by using their arms and hands, flapping them slowly to gain altitude while the Oculus Rift displays a bird’s-eye view of their virtual surroundings. The system relies on sensory-motor coupling to map the nick, roll and heave movements of the bird to the corresponding physical movements.
Swimming Across the Pacific (SAP) is another artistic installation that simulates swimming. It suspends the user in an 8ft cubic frame via a hand-gliding harness. The pulleys and cords provide counter forces to the user’s movement. The graphic system renders the virtual swimmer and the scenery. Preliminary user experiences suggested the system was capable of providing realistic swimming sensations. Amphibian seamlessly combines the best of the two suspension designs used in Birdly and SAP to create a physical rest for the user’s torso that stays on the ground, and a frame suspension with elastic bands to hold the user's limbs. The torso provides the buoyant force to the user and the frame provides the drag force, two important forces exerted on the moving body under water.
Cost and Services
Whitewood stud from Home Depot: 25.20
MDF from Home Depot: 9.95
Slider wheels from Cambridge Hardware Store: 29.64
Springs from Century Springs: 97.35
Water bed from Amazon: 28.88
Elastic band and hooks from Amazon: 63.88
Paint and other Hardware from Cambridge Hardware Store: 38.19
Oculus-rift and other parts were owned already: 0
Total Cost: USD 293.09
Processes used: Milling shopbot, laser cutting, band saw, 3-D printing, eletronics design.
Figure 1: Sketches and models of the project from the ideation stage , with various 'mechanics' thoughts, dimension and force calcualations.
Figure 2: Cutting the harness' wood with band saw.
Figure 3: Roller wheels, attached to the x-y sliders
Figure 4: Torso-rest assembly containing milled wooden basess, procured springs, with 3D printed spring holders and clamps, and water bed on the top.
Figure 5: Procured elastic bands with hooks at the end to attach to user's limbs and the suspension harness
Figure 6: The accelerometer board to be attached to the wrist, for swim gesture tracking.
Figure 7: Arduino IDE code sent to the Unity app for gesture tracking
Figure 8: C# code to receive gesture traking information from acceleromter board
Figure 9: The final harness
Figure 10: Scene from the ocean-rift app that runs on Oculus-rift.