Introduction - The Problem and my Solution

A project log for Passive Virtual Reality Shoes

I'm making a shoe that allow you to walk around as much as you want in VR while staying in the same spot in real life

finallyfunctionalfinallyfunctional 01/31/2021 at 22:570 Comments

A problem with current virtual reality set ups is that you have to stand in one spot. If you walk forward, you will run into whatever is in front of you (a wall or physical object). To make the virtual reality experience more immersive, it would be ideal to be able to walk infinitely in the virtual world, in any direction, but stay in the same spot in the real world.

Solutions for this problem already exist; they are called omni-treadmills. Below are examples of omni-treadmills.

You can see that the first two consist of a platform that is slippery so that the user can slide her feet. The Infinadeck relies on conveyors. All of the treadmills are bulky and heavy. I also wonder how natural it feels to walk on a slippery surface and slide your feet back.

My Solution

At a high level, my idea is a motorized shoe that allows a person to walk while staying in the same physical location. Using this device and other VR equipment, a user can walk infinitely in a video game while staying in the same physical location in the real world.

Omni-treadmills are large and heavy contraptions, making them hard to move and store. My motorized shoes are lightweight and can easily be stored in a closet. My design will also have of a safety harness connected to a support structure or a hook in the ceiling to make sure the user does not fall over.

My Design

I have gone through many designs at this point. My current design is explained in this video.

My current design can go forward and backward, but doesn't have sideways motion. It utilizes one motor, speed control, and an ESP32 as the microcontroller. It communicates over bluetooth.

The most notable difference with my VR shoes when comparing them with others is the flexible binding. A common issue with VR shoes is weight. All the components to make a motorized shoe, especially one that can go fast and can handle heavier people, adds weight to the shoe and makes it heavy to lift and use. My design gets around that problem by making it so the user never actually lifts the shoe off of the ground. Instead, the user's foot is strapped to the flexible binding and the binding can move up and down the 2 guide rods, but is still coupled to the shoe. The user can still lift his foot like he normally would when walking and the shoe gets moved by the user. The shoe is on wheels, so the resistance is negligible. Having to lift a 10 pound shoe would feel very heavy. Rolling a 10 pound shoe on wheels is easy.

Safety Rig

In addition to the shoes, a safety rig is required. The rig is there in case the user falls. Even if I could make the shoes so perfect so that the user doesn't fall 99% of the time, there is still the 1% chance that they will. Edge cases like that include if the shoes break, run out of power, or the user falls over for some reason unrelated to the VR shoes (don't drink and use VR shoes without a harness). Given that a user will likely use the shoes for many hours, hopefully over many years, the 1% event will happen. Think of it like a seat belt. I personally have technically never needed one, but it's still smart to wear one.

My current safety rig consists of a hook in the ceiling, a safety harness, and a tether connecting the two. This was the simplest setup to get going, as all I had to do was buy off the shelf parts. It's also very easy to store when I'm not using the VR shoes. Right now I'm also using a couple of bungee cords to help me balance while using the shoes. I'm hoping I can eventually get rid of them. Additionally I have two additional hooks within reach that I hang the headset and controllers on.

My current setup makes it so that it only takes a few minutes (or less) to strap in and start playing.

  1. Put the harness on. You can do this where ever.
  2. Strap the shoes on.
  3. Hook the tether to the ceiling hook.
  4. Grab the controllers and headset.

Of course, there are many safety rigs that would also work. You could build an adult sized baby bouncer like what the virtuix omni used. You could use a power rack or portable pull-up bar. Or you could replicate safety structures from existing omni-directional treadmills. Each has it's own advantages and disadvantages. Some people would prefer to have a safety rig where they don't need to drill into the ceiling or wall, but those are bulkier. Some want a smaller, easier to store system.

The Return to Center Algorithm

You may be wondering what algorithm I'm using to control the shoes. How do the shoes know when to move? I will go over that in my next post.

Interface with a Video Game

When the motorized shoes move, the microprocessor can send the speed and direction to a driver on the user’s computer. This driver acts as a typical video game controller driver. The direction and speed that the user is moving in the real world will be communicated to a video game using the driver, so that the user’s avatar in the video game moves in the same direction and at a configured speed. The configured speed in game could, for example, be twice as fast as the user actually moves in the real world.

Right now I'm using an OpenVR controller to send commands to Steam. I go over exactly how to do it in this video.

In the future I would also like to support the Oculus Quest natively.


Crouching is already partially supported with the current safety rig setup I'm using. The tether coupling the harness and the hook is loose enough to allow for some crouching but not so loose that it won't prevent me from a fall.

I ideally want to get rid of the tether and use a mechanism very similar to how seatbelts work. With a seatbelt, you can keep pulling on the seatbelt as long as you do not pull to fast. I want to implement a similar system where you can crouch as low as you want as long as you do not drop down too fast. A fall will be prevented by locking the tether if the tether is pulled out too fast.

Jumping Support

I don't think the shoes will handle a jump. I do however think that I can implement a pseudo-jump where the user rapidly lifts his heels up while keeping his toes on the shoe.


I'm hoping I can improve the shoes up to the point where a slow jog is possible.