Project Hike - Walking in Virtual Reality

I love Virtual Reality but hate VR sickness, I decided to take a look at some options.... and a possible cure

Similar projects worth following
I have been a user of VR for over two years now, and one thing has always bothered me. That is the motion sickness you feel when in an environment that lets you "walk". The issue lies in how the brain interprets motion, and for some reason, it simply rejects a smooth glide that most games perform. Unlike most FPS, you cannot add a "head bob" effect either, as this would lead to serious issues.

There are other options out there, some that hold you in place as you run with your body being held back by some sort of sling or cradle. I simply do not have the room for such a large device in my home.

My solution uses a simple MCU + accelerometer + Bluetooth transmitter to send data from each foot to enable tracking. After clipping to your shoe laces, this device is then calibrated by allowing you to run in place for each of the actions it supports. These actions will be initially forward, backward, jump forward, jump backward, and kicks.

This idea came about after a long day of checking out some of the VR options that are out there. Many of the demos would have you simply "slide" or "glide" around the environment. This left me with a great deal of nausea.

There has to be something better.... so I looked into the options.

Most of the devices out there that allow you to walk in a virtual world require some sort of platform that you stand on and some sort of restraint system. This seemed overly complex and bulky.

None of these seamed to track your foot location in real time and appeared to work on some sort of friction system, much like standing on a giant 8 way joypad. I wanted something different.

The solution I came up with is tracking each foot using an accelerometer and relaying that data back to the computer where it is received and interpreted by a host program that sends either direct input or x-input data to the game as needed.

During brainstorming I came up with the following options:

Walking/Running: You walk or run in place, not only is this a good workout, but it lets your body have some actual motion with matching "head movement" that you are already used too. By calculating how high you lift your feet a stride distance can be calculated. This data combined with impact data and the relative position of the foot (that is how fast you run in place) can be used to calculate speed.

Jumping: This will be simply when both feet leave the ground, you hop a little forward. This data is then exaggerated to fit the game as needed. That is, a little hop in the real world can be amplified to be a huge leap in the virtual world.

Kicking: I have seen some pretty impressive devices that track your hand movement, and those devices must be very precise, foot movement however does not require this. However, since we are already tracking individual foot movement, why not add the ability to kick as well. Just be sure of your surroundings in the real world before attempting. :)

Turning: This is handled by the headset as it tracks your motion, simply face the direction you want to go. Other options could be added later such as possibly adding a "yaw" control to the device that tracks the angles of each foot off axis in order to calculate a change in direction while facing the other way... like running from an enemy in game and looking over your shoulder while you do so.

The trick is going to be to develop the software to be able to interpret the differences in how humans move their legs and then to use that data to translate those movements into a control scheme that can be used inside of virtual reality games. In just moving in place and observing those movements it became apparent that the sensors will need to be able to detect some very subtle changes. While this detection does not need to be as accurate as tracking individual fingers on the hand, it does need enough accuracy to not cause a conflict between the optical nerves and the inner ear.

I hope one day to be able to "walk" inside VR games without fear of nausea, and perhaps one day be able to go for a lovely run (with a treadmill) or a bike ride (with a stationary bike) anywhere on earth.... or on the moon :)

pic16F1459 datasheet.pdf

Adobe Portable Document Format - 6.91 MB - 04/23/2016 at 00:32


LSM303C datasheet.pdf

Adobe Portable Document Format - 1.29 MB - 04/23/2016 at 00:32



Adobe Portable Document Format - 1.05 MB - 04/23/2016 at 00:32


  • 1 × pic16lf1459 Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollerspicm
  • 1 × LSM303C Semiconductors and Integrated Circuits / Misc. Semiconductors and Integrated Circuits
  • 1 × 47K ohm resistor
  • 1 × .47uF capacitor
  • 1 × 6 pin header Programming header

View all 9 components

  • A look at some of the tools used while I wait for parts: Programmer

    ThunderSqueak04/26/2016 at 00:32 0 comments

    I decided to take an image of some of the tools that are going to be used for this project while I wait for the rest of the parts to arrive in the mail... and explain a bit about them.

    This is the ICD 3 made by Microchip. I had to add a couple adaptors to make it usable but it has some very nice advantages over the pickit programmers. The first one is that it is a lot faster, the wait time is almost half when programming a device with new code. Something that I seriously appreciate.

    The other primary advantage this device has is that you can set complex breakpoints when you are ready to debug your project.

    In other news, I should hopefully have the parts I ordered for this project in the next couple days. I am seriously looking forward to their arrival. :)

  • Basic Schematic for first version

    ThunderSqueak04/22/2016 at 19:53 0 comments

    Using my favorite CAD software, I drew up the initial schematic. As you can see, the circuit itself is pretty small, but this is good. Fewer components means smaller package and lower battery usage. There are also still pins left over on the chosen micro controller and if I want to add a USB functionality later it can be done with minimal changes. In a future revision I may also add a recharge circuit for a standard LiPo battery.

    One of the ideas that I had was to build the circuit itself using the smallest components possible and building them into the actual battery enclosure.

  • Ordered Bluetooth components

    ThunderSqueak04/21/2016 at 03:00 0 comments

    I ordered the components to make each foot wireless, so far the block diagram will look like this ..

  • Scrounging for parts

    ThunderSqueak04/21/2016 at 01:43 0 comments

    Today, I decided to scrounge around my parts bin for components to get the ball rolling. I found an old board I made featuring the pic16lf1459 MCU by picmicro, a battery holder, and after a quick trip to the local electronics shop, a couple sparkfun LSM303C. The final components and layout will be on a dedicated board eventually, however for now, this will let me begin development of the underlying code.

    I still need to track down a bluetooth module to do the interface, and will be picking up a couple of those soon.

    The LSM303C was a great find as it also has a 3-axis accelerometer and a 3-axis magnetometer in the same small package. The plan is to have this interfaced to the SPI bus and then using the USB features that the pic16lf1459 sports, send the data to a standard terminal on the PC.

    Link for the LSM303C sparkfun breakout board:

    Link for the pic16lf1459 MCU:

    The schematic for the above is very simple with some basic supporting circuitry for the USB functionality. Programming for this is to be done with an ICD3, however you could also use a pickit 3 programmer with no problem. Code is to be written using the XC8 compiler suite.

    You can find the IDE and XC8 compilers on microchips website here:


View all 4 project logs

Enjoy this project?



AVR wrote 04/26/2016 at 18:05 point

Always enjoy your bold/challenging projects!

  Are you sure? yes | no

ThunderSqueak wrote 04/26/2016 at 18:07 point

Thanks!  I hope it goes somewhere :)  This is a project that I am definetly excited about :)

  Are you sure? yes | no

Gabriel wrote 04/21/2016 at 12:27 point

you get a skull for your choice in micro!

Nice to see people use PIC.

  Are you sure? yes | no

ThunderSqueak wrote 04/23/2016 at 00:41 point

Thanks :)  They really are great micros :D

  Are you sure? yes | no

Gabriel wrote 04/23/2016 at 01:02 point

what compiler are you using?

I use CCS (paid)....LOVE IT.

  Are you sure? yes | no

ThunderSqueak wrote 04/23/2016 at 01:41 point

I use the paid version of XC8 Pro

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates