How to use VRidge with Kinect

Yesterday I’ve told you what VRidge is and wrote a review about this cool product that lets you use virtual reality PC experiences with your Cardboard mobile headset.

Today I want to focus on one of its features: the ability to use a Microsoft Kinect to emulate positional tracking of the headset: this way you can have what mobile headsets really lack, that is the positional tracking, the room-scale functionality. The system works in a very simple manner: they use the head position detected by the Kinect as the position of the headset in the virtual world, in a way very similar to what we do in our ImmotionRoom solution. But how to make it work? And is it really working well? I’ll try to answer these questions in this article.

UPDATE: I’ve written a new article that offers a more elegant way of using VRidge with Kinect using ImmotionRoom system. You can find it here. Otherwise, go on to keep reading on how to use the standard way involving opensource software like OpenTrack.

Making the Kinect v2 work with VRidge has not been that simple and that’s why a tutorial proves to be useful. First of all, you have to set up VRidge as I explained yesterday and have a Kinect connected to your PC. Then, you have to download opentrackkinect from GitHub. Opentrackkinect is a little Java application that you can use to retrieve your head position read from a Kinect and pass it to Opentrack application (more on this later). You can download the source code and build it using Eclipse (as I made it, the super-nerdy way) or you can download the release execuables from here (naaaah). Launch Opentrackkinect: you should see a very simple window with the first three numbers expressing the position of your head  in a frame of reference that you can recenter at any time.

OpenTrackKinect window: not so nice to see, but effective
OpenTrackKinect window: not so nice to see, but effective

Ok, now you have to download OpenTrack. What is opentrack? It is an opensource program to read the tracking position of a point from any source and transform it in any kind of output. So, for example, you can read position from a marker seen by the camera of your PC and transform it to a mouse position. Very cool! Download Opentrack from releases page, taking care of choosing the correct version. I’m talking about correct version because at the time of writing the last version is 2.3-rc99-p11, but if you use it with opentrackkinect, it won’t work, so you have to use 2.3-rc49p10. At the time that you’ll read this article, start downloading latest release and then, if it doesn’t work, try to downgrade. After downloading it, give a look at its wiki, if you want, and then start OpenTrack.

OpenTrack window
OpenTrack window: it could seem strange to you, but that little octopus is your head

Now we have to say to opentrack to take its input data (the tracked point position) from opentrackkinect: to do that, select as Input “UDP sender” (as in the picture). Check that settings of UDP sender are using port 4242. To make OpenTrack send data to VRidge, set as Output “freetrack 2.0 Enhanced” and that’s it. The chain should be clear: opentrackkinect reads your head position and sends it to opentrack, which sends it to VRidge to use it as positional tracking. Cool, isn’t it?

Start OpenTrack streaming pushing the Start button (You don’t say?): you should see all numbers changing while you move, with that little pink octopus moving following your head. If the little octopus doesn’t move, it can mean that you are not visible to the kinect, that your firewall is blocking the data streaming or that you’ve made something wrong.

Last step: launch VRidge application on phone and PC, than go to VRidge PC application settings and set it to use position from freetrack and orientation from headset. All done! Now if you launch a Riftcat or SteamVR experience, you’ll have positional tracking from Kinect… super-awesome! Full room scale games with a Cardboard! Oculus games are still not supported but it’s a work in progress.

But…how is this tracking? It is comparable to Oculus one? Well, absolutely not. It’s a good start, but since it uses filtered data from an external tracking sensor, it’s quite slow and imprecise. Our ImmotionRoom solution tracking is better, but we all suffer from same problem: Vive dedicated laser tracking is ultra fast and precise, while Kinect one has to be improved. The problem that we have really solved is that using our solution you can use multiple Kinect and so have a complete 360-degree playground. Using only one Kinect, you’re forced to look in that direction, or Kinect tracking becomes unusable: if you try to play a VRidge+Kinect game and you look in the opposite direction of the Kinect, the tracking may get crazy. Maybe a ImmotionRoom services + VRidge could be a solution for this 😉

Now, go and try VRidge + Kinect… and if you liked this tutorial like it and share it with your friends!

UPDATE: I returned experimenting on this and I have to add two important things to this article.

The first one is about centering. When you select to start your VR experience through VRidge (for example, when you click on “Play SteamVR games”, put your phone so that it looks frontally your Kinect (I mean, the screen parallel to the one of the Kinect, with phone camera pointing towards the Microsoft sensor). Otherwise your phone will consider one direction as the forward one, while your Kinect will use one other and the positional tracking will become a complete mess.

The second one is about gyroscope. If you use VRidge through a Cardboard-like headset, you won’t have stabilized gyroscopes, so the rotation perceived by the headset will start drifting over time. In the end you’ll end seeing the forward direction to be another one from the starting one. Since you’re using Kinect that has instead a fixed reference frame, you’ll end up having a screwed up positional tracking. You can mitigate this using simple experiences that won’t require you to make abrupt head rotations. Again, it’s another problem we too have in our full body virtual reality solution.

Join my super-exclusive club!

Receive for free AR/VR articles like this + a weekly roundup of the most important XR news of the week straight in your inbox!

4 e-mails/week circa. No spam, no ads, no GIFs of kitten (not sure about the last point, though)


AR/VR developer, startupper, zombie killer. Sometimes I pretend I can blog, but actually I’ve no idea what I’m doing.

I tried to change the world with my startup Immotionar, offering super-awesome full body virtual reality, but now the dream is over. But I’ve still not waken up…

0 thoughts on “How to use VRidge with Kinect

  • November 2, 2016 at 2:48 am

    I’ve got your little app working but it doesn’t detect the kinect 2 which is connected to the pc, kinect studio works okay. Any thoughts

    • November 2, 2016 at 4:26 pm

      What little app are you talking about? ImmotionRoom (that’s actually mine) or the apps that should work with VRidge (that are not made by me)?
      I think that you’re talking about the second case. Which one is not working: opentrack or opentrackkinect?

      • November 2, 2016 at 9:28 pm

        its the opentrackkinect.jar app. The app starts but says there isn’t a kinect on my windows 10 64bit system and no coords change from 0 values. The kinect studio works and connects to the sensor and works properly.

        • November 3, 2016 at 3:40 pm

          I tested their project with a Windows 10 64-bit PC (pre and post Anniversary Update) too and everything works like a charm. I have no clear idea on how to help you.
          As suggestions I can tell you to:
          – Try with some older release of the app (maybe they’ve added a bug in new releases);
          – Try to not download the release, but to build the executables using Eclipse (this is the way I usually execute it).

          • November 3, 2016 at 10:23 pm

            Thanks, I did build it using eclipse, could I have missed linking anything into the program. It does start up okay…

          • November 3, 2016 at 11:44 pm

            Further update on my situation : It works (new and old versions) when run from eclipse but not from a standalone .exe as I created. Would’ve been nice if I could have a simple executable, PS: I’m no Java or eclipse expert.

          • November 4, 2016 at 7:06 pm

            Me neither… don’t know what could be the reason, but hope these comments will help someone else in understanding it…

  • Pingback: The difference between Kinect v2 and v1 – The ghost howls

  • December 27, 2016 at 12:01 am

    Hi!! I search for this for a long time.. and finally I found! very good post! thanks! And its important put this solution in reddit from vridge.. bye!

  • Pingback: VRidge + SteamVR: VR Server has stopped working – The ghost howls

  • March 4, 2017 at 2:26 am

    Its me again. Haven’t touched this for a while. Apart from crouching, I never got good positional tracking although all software etc works okay. Now I’m trying again, is it possible for you to tell me optimum mappings and settings etc in opentrack that made it work for you. Thanks in anticipation.

    • March 6, 2017 at 3:09 pm

      Well, I’ve just played with it a bit, I don’t have optimal mappings, sorry.
      As you may have seen, I’ve updated the article because I discovered that there are orientation issues when using Kinect with VRidge.
      Things are a bit better with our integration VRIdge + ImmotionRoom, but at the moment it is available only in our internal labs. I can keep you updated when this will become public

  • Pingback: How to use Riftcat VRIdge with Kinects: ImmotionRoom Iridge server – The ghost howls

Leave a Reply

Your email address will not be published. Required fields are marked *