Skip to main content
Up and Coming
August 1, 2014

Walking in VR [Long, Long, Long Post]

I keep finding myself posting really long posts in random threads that start talking about locomotion in VR, so I'm going to make a big post here instead that I can just point to.

Introduction
There are lots of problems to be solved in VR. Perhaps the single most critical problem right now is the question of Input. For the purposes of this thread, I'm going to take it as a given that we need the ability to reserve our hands for doing hand-related things, and not for moving around. That is to say, we're going to need to use our feet or legs to operate the device that will allow us to move around in VR. I've been calling these locomotion devices 'Walkers'.
I should point out that I'm writing this thing for anyone to read. I realise that most of the people here will know what optical-tracking occlusion is, or well-understand the downsides to the Virtuix Omni, but I'm putting it all here just to be thorough.

The Current State of VR Walkers
Most people on this forum will be well-versed on the current state of VR input, but just in case anyone missed a device or two, I'm going to put here a list of all VR Walkers that I'm currently aware of. If I miss any, let me know and I'll add it asap.
In no particular order:
  • The Virtuix Omni
    The first of the harness-style omnidirectional treadmills. A curved, low-friction surface, special shoes, and a weight-removing harness allow the user to convert the natural walking and running motions they use everyday into virtual movement commands.

  • The Cyberith Virtualizer
    Following the Omni's example, the Virtualizer works similarly to the Omni, but allows the user to crouch and jump while remaining in the harness, allows the user to play in socks rather than special shoes, and has a flat surface rather than the Omni's curved one.

  • The Walkmouse
    A large-circular panel inset with many small rollers, this treadmill simulates a moving surface over which the user can walk.

  • The StinkyBoard
    Effectively a four-button gamepad for a single foot, this device allows the user to emulate WASD keyboard events using the feet, and so achieve simple VR locomotion

  • The Wii BalanceBoard
    Not actually a PC peripheral, with some hacking can be used as a lean-controller, allowing the user to move in VR by leaning their body forward, backwards, left and right

  • Stompz
    Implements IMUs on each feet to allow the user to make 'stomping' gestures to move forward, left and right in game

  • Infinideck
    A more traditional-style treadmill that can move in any 2D direction, that the user walks on as they would walk on a normal surface. Unfortunately, must be manually controller by a second person at the time of this writing

  • WizDish
    A low-friction surface that removes the vertical foot-motion component of walking, leaving the user to make skii-ing like gestures to control motion. At the time of this writing, lacks community support and/or funding

  • Free-Walking
    Perhaps the most immersive of them all - the user walks around a physically-large space (like a football field or warehouse), with real walked distance corresponding 1:1 to virtual walked distance

  • LocoVR
    A crowd-sourced project involving what is described as its conceiver as "basically a cross between a small bar stool and a kind of oversized joystick", able to rotate freely and respond to lean from the user to provide locomotion input

  • Pointman
    In use by the US Navy for infantry simulation, the Pointman system is actually a combination of several input devices. One of them is a device comprised of two footpedals able to move forward and backwards, as well as to be pressed down like a car acceleration pedal. At the time of this writing, a handheld controller is required for turning.


Adoption Factors
A critical thing with input devices is the degree of adoption. We obviously want a device that will be used by as many people as possible - this will give developers confidence that they aren't wasting their time by building games that support this hypothetical device, and with more content for the device, adoption will increase further, until the device is largely ubiquitous.
  • Price
    This one is a bit of a no-brainer. The cheaper something is, the more people will buy it. I would say that once the price of a device goes above about $150, it becomes a serious barrier to widespread adoption. Not that the ideal VR walker should necessarily be cheaper than this, but it's a good ballpark figure to go for.

  • Size
    Most people live in cities, meaning most people have very limited living space. That is to say, people tend to be less than impressed if asked to reserve an area the size of a double-bed for a VR input device. So the physical size of the device will be a further barrier to widespread adoption. Ideally, the system will fit onto the user, so it effectively takes up no space in and of itself.

  • Flexibility
    Keep in mind that locomotion in games isn't always human-style walking/running. For example, think of Minecraft with a Virtuix Omni. The Omni would work great while you're running around mining, building and fighting zombies. But if you want to play in creative-mode, suddenly you have this big mismatch between flying around in-game, but making walking and running motions in reality to drive this motion. For a device to become widely-used, it needs to be suited to a wide variety of locomotion applications, not just walking and running


Immersion Factors
So, casting aside questions of what will get the device used, and turning our attention instead to what will make the device great, we need to think about what factors actually influence how suited the device is for VR. That is to say, how immersive is the device to use?
  • Movement similarity
    We all know what walking feels like. We know what the movements are, and how it feels when we perform them. The closer a VR Walker can get to emulating this motion, the more immersive it will be. In this way, devices like the Omni or the Virtualizer are a step-up from solutions like the StinkyBoard or Stompz. The obvious ideal is devices like the WalkMouse or InfiniDeck, the question of whether these solutions are currently realistic remains to be seen.

  • Constraints on movement
    An important thing to consider is the degree to which a VR Walker inhibits our ability to perform actions unrelated to locomotion. For example, the Omni doesn't allow users to bend down, because they're stuck in a harness that has a fixed height off the ground. Both the Omni and the Virtualizer don't allow the user to lower their hands below their waist, since the harness gets in the way. These kinds of movement constraints are non-issues in some games, especially FPS, where the user always has their hands above their waist holding a gun, but significantly annoying in games involving peaceful exploration, where the user is likely to want their hands to rest in their natural position - down by their sides.

  • Strenuousness (Spellcheck agrees with me that this is a real word)
    When we're talking about using natural motion to run around in games, obviously an issue is going to be people getting tired! I personally can't run for much more than 5 minutes before I'm completely wasted. I'm definitely not up to running around for a half-hour gaming session. This isn't only about physical capability - if people are getting tired and cramped while playing, this is an immersion-breaking experience and something to be avoided.


Friction
So that's the groundwork laid out. But the real question is 'what are the constraints under which the creator of a VR Walker must operate?'. The central constraint (if we want to use natural walking/running motion) is friction. More specifically, it's the normal component of friction.
When we walk, we are effectively applying pressure down onto the ground with our weight, and then using friction to use that weight to move us forward. If we want the users to be making the same motions in VR that they make in material reality (MR?), then we need some way of negating this forward motion. There are basically two ways of doing this:
  • Move the ground under the user
    This is the solution that WalkMouse and InfiniDeck are pursuing. This is also the solution that traditional exercise treadmills implement. All you have to do is have a device that the user stands on, and when they move, detect the speed of movement, and move the surface they're standing on in the opposite direction at that speed, negating any physical movement the user might undergo, saving them from crashing into a wall and breaking their precious precious DK2.

  • Remove the frictional force
    This is the solution that the Omni and the Virtualizer are using, and many hypothetical input devices involving suspending the user from harnesses on the ceiling etc. are also operating under this principle.
    This solution typically involves both reducing the normal force (that is, taking the user's weight off the feet so that the feet are effectively suspended), and reducing the coefficient of friction between the feet and the ground (eg. socks on a polished wood floor) so that the feet can easily slide over the surface.

There are advantages and disadvantages to both of these methods. For the following reasons, I'm going to be considering only the second option:
  • Moving the ground under the user requires many moving parts, increasing cost and reducing reliability

  • Ensuring that the dynamic surface behaves exactly as the user would expect a static surface to behave is 100% essential to avoid loss of balance leading to injury, and requires zero latency, which is an engineering challenge not likely to be solved any time soon


So the question now becomes 'how do we take the weight off the feet to allow natural input, without implementing a large mechanism to support a harness that limits the user's natural movement'?
Quite the brain teaser.

Sensors
The last thing I'll talk about is sensors, and which sensors are most applicable to the creation of a VR walker, and some considerations for using each one. I'm not really a Maker, so I'm just going to give an outline of a few that I've thought about
  • IMUs (Inertial Measurement Units)
    Specifically, I'm talking about IMUs containing an accelerometer, a gyroscope and a magnetometer. Through sensor-fusion these three devices allow us to get drift-free rotational measurements at about 1kHz. In addition, with the advent of MEMS technology, they're pretty cheap, and digital MEMS IMUs do much of the processing on the chip, so they're easy to use.

  • Optical tracking
    Optical tracking is awesome because it gives us 1:1 positional data in realtime, and this data will never drift. The main Achilles' Heel of optical tracking is occlusion - any objects between the camera and the tracked objects will interfere with tracking.

  • Pressure sensors
    These devices measure pressure applied downwards on them. Four of these are all the sensors that the Wii BalanceBoard has behind it. They're quite versatile, and can be small enough to be used in wearable devices.

  • Capacitative sensors
    These are effectively touch-sensors, that when placed in an array, allow the position and shape of an object in contact with the sensor surface to be resolved. These are the sensors behind the Omni.


The Challenge
So I hope I've summed up the state of VR Locomotion Input decently. I think what it boils down to is the following challenge:
    What device removes the weight of the user off the ground so that they can use their normal walking/running motions, but doesn't impose any other movement restrictions? Does this device take up little room, and is it cheaper than $200? Can it be used to move around in experiences that don't necessarily involve walking/running? Can it be used for multiple hours at a time without the user getting tired or sore?

I don't think it's going to be an easy nut to crack, and I don't think any of the current solutions that are either on the market, or will be coming to market in the foreseeable future are adequate.

What do you guys think - I reckon as a community we can come up with some pretty sweet ideas that will hopefully be picked up by someone with the know-how and capital to make this ideal VR-walker a reality. I think it's the one thing that stands between us and totally immersive first-person walking VR experiences.
From what people are saying, Elite:Dangerous is mind-blowing because we finally have an experience where we can match input devices to virtual reality perfectly. Once we can do that with common non-cockpit experiences, VR will have taken a huge step forward.

    89 replies

    Up and Coming
    February 26, 2015
    well I use xpadder and it works fine, it is not a script though and will not change based on where I am facing.

    I don't know what freepie is like, but if it can comminuicate with the oculus IMU, you would then just change the buttons when I change my direction, should be a very simple script.

    why would I need a ceiling mounted smartphone, I thought you were using the built in IMU, so you would not need to read in the IR dots on the HMD, forgive my lack of knowledge in this area.

    the motion of Backpedalling works really well on the ODT so I would like to add that with your future script that understands the direction I am facing.

    an update on strafing: i think you could do it okay, at least the motion, but not with the crossing of your legs, its simply too hard to do, so to strafe right you would simply swipe your right foot only, it would not feel natural like forward and backward motion, but it would be servicable, it is worth it to note this is how you do it with the virtuix omni, you can see by checking their videos.



    ----------in the below case you will NOT need your script, will only work on some Oculus rift enabled games/demos

    for oculus supported games/demos you should not ever need to strafe if you have a stem pack, you can strap a stem pack to your waist, get the stem pack to emulate the mouse, assuming the game does not turn where you are facing automatically, then you have the correct solution to walking and facing, and in this case you will NEVER strafe and you will move normally as you do IRL.

    sadly not many oculus games/demos allow you to not turn where you look, the demo 'resistance' and maybe timerifters lets you do it.
    Up and Coming
    March 1, 2015
    I still need to finish my script and will post afterwards. I use the ceiling mounted camera to decide the direction of walking, like your dance mat, but I still feel the rectangular shape of the mat may give you issues for 360 degree reassignment of walking directions.
    Up and Coming
    March 1, 2015
    I was looking over some of the dance pad ideas and they seem intriguing. I got one from the local goodwill unused in a box for $4 bucks! It's not ideal for movement by any means but who knows some experimenting might yield some interesting ways to use it. The upside is they are everywhere and cheap so it cant hurt to mess around with them some :D Anyway looking forward to hearing about stuff you come up with for it. There was a Wii fit board there also but it looked like it was missing things so I didn't get it. Anyone know what those things can do, I have never used one? Do they have like a 4 way leaning sensor or what?
    Up and Coming
    March 1, 2015
    okay thanks konstantin_lozev.

    the dance mat would work but I don't think I could get a decent diagonal movement out of it, so by that I mean only W,A,S,or D, not a combination like W+D at the same time.

    FPTE sheet works wonders, I can finally use socks now, so I've moved on from carpets with carpet skates.

    can I use an android phone attached to the ceiling to determine direction? what would you suggest is the least intrusive -for the ceiling- way to go about this.

    can the camera sit about 60cm above my head, or does it need to be higher up, if I can get away with 60cm above head I can have the camera on my curtain rail, which is where my oculus wire holder is as well.

    and with your script can I change the dancepad input based on direction, or do I not use the dance pad at all and I go forward, left/right based on distance traveled IRL, I would add that the distance from a stoped center in comparison to going forward is quite small, like 20cm.

    This video shows independant torso and head tracking in skyrim, any idea how this is possible
    Up and Coming
    March 1, 2015
    "Karlor" wrote:
    I was looking over some of the dance pad ideas and they seem intriguing. I got one from the local goodwill unused in a box for $4 bucks! It's not ideal for movement by any means but who knows some experimenting might yield some interesting ways to use it. The upside is they are everywhere and cheap so it cant hurt to mess around with them some :D Anyway looking forward to hearing about stuff you come up with for it. There was a Wii fit board there also but it looked like it was missing things so I didn't get it. Anyone know what those things can do, I have never used one? Do they have like a 4 way leaning sensor or what?

    The wii balance board measures leaning forward/back/left/right and is fully supported in GlovePIE AFAIK. However, they are really not big enough to enable you to make even a small step in one direction and remain on it. In that respect the dance mat is better. The dance mat can work pretty well for a fixed direction scenario, e.g. in front of the tv WASD. However, imagine you turn 45 degrees to the right and step forward. You will need the dance mat to pick that up as W+D and in e.g. GlovePIE, you will have to correct it back to W based on your rift's orientation. The main unknown for me is if the dance mat can reliably register that.
    Up and Coming
    March 1, 2015
    Assuming you can get the rifts orientation in freepie/glovepie and you can set gamepad inputs in that script as well, it should work perfectly.
    Up and Coming
    March 2, 2015
    I worked on the reassignment of direction on the basis of the HMD orientation in the weekend and I have a working script. Yet, it is not fully calibrated and I need to further tweak it to allow you to do on top of +/-180 degrees, also 180+ degrees without messing the trigonometry there. I nevertheless publish here the GlovePIE script as wel as a simple excel sheet that will hopefully give you an idea about the mechanics behind the dynamic reassignment of direction even if you are not comfortable with GlovePIE:
    Script: https://drive.google.com/open?id=0B_7L0 ... authuser=0
    Excel sheet: https://drive.google.com/open?id=0B_7L0 ... authuser=0
    To the earlier question - for the ceiling mounted webcam/android phone, I made a generic DIY "pocket" with a side opening for sliding the phone in and a central opening for the phone camera that I stuck velcro on the back side to. I stuck the opposite velcro on the ceiling (not intrusive at all, can be taken down at any time, or at least that's what I try to convince my wife of :)). The phone is an old Sony Xperia Mini Pro with a broken screen that transmits the capture over the home WiFi through the app DroidCam to the PC DroidCam side, which is then read by FreeTrack and used in GlovePIE.
    On the minimum distance, it depends on the FOV of the phone's camera. It is not ideal, but I am 1.88m tall and it still works OK. I have tried it with the PS Eye camera mounted to the same velcro on the ceiling. It provides a wider FOV, better FPS and less lag, but is rather cumbersome. The phone wifi cam is the least obtrusive approach for me for now, maybe if you have a taller ceiling, you could mount a wiimote and use it in FreeTrack with an IR LED.
    I am aware I have hijacked somehow the post, so if the OP wants me to move it to a separate post, I can do that too.
    Up and Coming
    March 2, 2015
    Thanks for that, does the script work without a dance mat, as in the camera senses you moving forward from center then sends the W key?

    I will try and put the camera on my curtain rail, my height isn't really a factor, more the distance between my head and the camera, which is about 60cm assuming I put it on the curtain rail, hopefully that is okay.

    so far the motion of strafing works well now that I am using FTPE sheet with socks, whereas last week when I was using carpet skates with carpet I kept hitting into my own feet, it wasn't a very viable option.

    Generally, while strafing if you have one foot slightly in front of the other it makes it much easier.

    if there was a perfect phone for you to buy for this task, which would you buy, I guess we are looking at smallness and I battery life as main factors, but you will know best, maybe I can use a rechargable web camera instead?

    Once I have bought a phone I will then know which enclosure to buy to keep the phone on the curatain rail and make the camera viewable.


    I am not sure If i follow what you are saying about your script, are you saying if you go above 180 degree the script gets lost?

    In any case a good first start would be to get backpedaling working, so at least I can move forward and backwards, if I can avoid the dance mat that would be cool as the dance mat adds a little extra noise to my steps.
    Up and Coming
    March 2, 2015
    As I said, I have not calibrated and tested extensively yet, I plan to do that next weekend. The script works without a dance mat. It tracks a single LED on your head. When the LED dot exceeds a deadzone (in the version of the script that I linked the deadzone is circular to enable seamless 360 degree navigation), it determines the yaw orientation from the x/y position and compares that to the HMD yaw orientation (play with different angles in degrees in the excel sheet to get an idea). If they are within +/- 45 degrees, it will "preload" W and click W once your wiimote on your hip senses hip movement. If the difference is > 45 degrees but < 135 degrees, it will "preload" D, etc.
    The camera must be directly above your head and when you are stationary, the IR dot must be in the center of the camera.
    I would advise against buying a special phone for this, the project is still unrefined and your particular ceiling distance may not be suitable for implementation, unless you have a very wide FOV phone camera, which I think is a real exception. Just try with your phone or the cheapest android phone that you can find, even one with a usable broken screen should do. Battery life has not been a huge issue for me since I have used it only for testing, but you can always attach a 5 EUR USB power brick next to the phone on the ceiling for added battery life.
    You can use a wifi camera instead, as long as it is compatible with FreeTrack.
    On 180+ degree, again, I have not tested extensively yet, but I ran a few > 180+ degrees and the excel simulation does not glitch.
    Maybe the best that you can do now is get a sigle bike LED and test the script on your desk holding the phone/webcam horizontally
    Up and Coming
    March 2, 2015
    oh so I need to put an LED on my head, can I put it on the top of the oculus rift instead?

    can you link me the LED's to buy to track my head position.

    the distance between not moving and moving on my ODT is 10cm, is that okay or is it too short.

    I will begin by using my own phone for testing purposes, if all works out later I will buy another phone as I would not like to have to take my phone down from the roof to reicev calls in the future :lol:

    oh I need to use a wii remote, I had no idea I needed that, anyway to not have to ues that.

    do you think if this doen'st work out that great that you could adapt the scrpit to change gamepad inputs so it works with a dance mat.

    in addition I am worried the phone will fall in which case I would be in big trouble and I don't want the sticky side Velcro residue on my phone, so with these things in mind, if there was a phone to recommend, which should I buy? maybe the smallest and cheapest phone? Maybe a certain android tablet would be better?

    my only confusion is where which side of the phone is meant to face the ground, is the the screen side or the back side.

    I will begin to try out your scripts once you have linked me the best LED to buy.