VR Underwater Welding

The concept behind this project is to provide a training simulator for underwater divers. The user wears a head mounted display and holds a tracked wiimote as their welder. They are given the task of repairing a pipe that has broken open and is leaking oil rapidly, while dealing with many difficult frustrating factors such as limited visibility. The simulator could be used by underwater welding schools to help train new students before they actually start diving in water, or for experienced divers to practice a difficult job beforehand (with the scene matching the real world as closely as possible).

For this project I implemented a walking in place algorithm called Gait-Understanding-Driven (GUD) which can be found at http://wwwx.cs.unc.edu/~eve/papers/EVEAuthored/2010-VR-Wendt.pdf. Walking in place helps to increase the presence felt in the virtual environment by allowing a more natural control of locomotion in the sim. Unfortunately it did not work as well as hoped for this project due to the combination of noisy sensors and a general mismatch between the virtual environment and the user's actions (since it is underwater).

Most of the media in this projet I found from various places on the internet, though I did make the welder and pipe entities as well as all of the particle based effects.

Features:

  • Diver moves by facing a direction and walking in place, the algorithm detects the frequency of their steps and makes the virtual diver move in the correct direction and speed in the sim.
  • The tracked WiiMote is shown in game as a working arc welder
  • Motion of the diver is controlled by the bullet physics engine, allowing for realistic movement and avoiding snags common in First Person games
  • A passive viewing program is provided for demonstrations
  • Icons are provided during welding to show progress, the leak slowly reduces based on how far the weld is proceding

Unfortunately this project did not meet my expectations due to a large amount of time spent with the walking in place algorithm. I would like to add more realistic welding, some haptics feedback, more obstacles for the diver, and automatic feedback for the diver on their performance.

Code can be downloaded here