by Dr Mike
Posted on December 2017
It was two months back when my trusted ally and a close personal friend, Kinect, passed away. It was a moment of sadness, despite the fact that the death had been pending for quite some time. You see, Kinect was suffering from Never-Ending Preview Syndrome (NEPS). Microsoft didn’t develop Kinect SDK 2.0 for Windows beyond Preview version (for various reasons you can read about elsewhere). Few applications developed by others made it really big. Yet, that SDK, Preview or not, was so well made that I came to miss those beautiful APIs. We had good years together.
Although game shops and other retailers still have shelves full of Kinect sensors, and my pipeline of Kinect projects is as long as ever, Microsoft’s decision of not producing any new devices will effectively stop new cool applications from emerging at the speed we had before. No serious product development would pick a dead platform to start something new with. Obviously.
Is there afterlife for Kinect? Yes, sort of. The core technology remains somewhere inside HoloLens and the origin of Kinect’s skeletal tracking is still available in other libraries, for instance Nuitrack is being developed further.
Just now, the developers of the most well-designed 3D sensor hardware, Orbbec, pierced through the markets with their OpenNI enabled body tracking SDK with Unity support. Now things get practical! I got Orbbec Astra and Persee long ago and the only way to get any apps going was to do some good old C++. This won’t do for a modern application developer simply because of the trouble piecing the old SDK together with any modern front-end technology, Unity being the de facto choice. Of course it’s doable in a couple of ways, but hardly a pleasure. So now, finally, Orbbec supports Unity!
At this moment, there is a huge bunch of Kinect applications out there needing an update to a newer hardware, Orbbec being the closest thing. But what’s the difference when moving on from Kinect to Orbbec? Let’s take a look at the specifics from application development point of view with focus on porting an old Kinect-driven game app developed originally with Unity to an Orbbec sensor.
Here is Orbbec’s Persee and Astra Pro side by side. But what’s the difference and which one would you need? Other Orbbec’s Astra models are similar but with lower specs or smaller size, so typically you’d pick either one of these.
First, let’s compare the technical specs: Microsoft’s Kinect vs. Orbbec’s Astra Pro and Persee.
Kinect for Xbox One | Orbbec Astra Pro | Orbbec Persee | |
---|---|---|---|
Skeletal/body tracking | 25 joints, Microsoft’s algorithm | 19 joints, OpenNI based algorithm by Orbbec/3DiVi | 19 joints, OpenNI based algorithm by Orbbec/3DiVi |
Body count | 6 | 6 | 6 |
Face tracking | HD Face with 1000+ points | No | No |
Physical dimensions | 249 x 66 x 67 millimeters | 160 x 30 x 40 millimeters | 172 x 63 x 56 millimeters |
Effective range | 0.5–4.5 meters | 0.6–5.0 meters | 0.6–5.0 meters |
Field of view | 70.6° horizontal x 60° vertical | 60° horizontal x 49.5° vertical | 60° horizontal x 49.5° vertical |
Connectivity | USB3.0 to PC | USB2.0 to PC | HDMI to display, WiFi, LAN, Bluetooth |
Power input | 100–240V power cable | USB cable | 100–240V power cable |
Depth image resolution | 512 x 424 pixels | 640 x 480 pixels | 640 x 480 pixels |
Depth image frame rate | 30 fps | 30 fps | 30 fps |
Video image resolution | 1920 x 1080 pixels | 1280 x 720 pixels | 1280 x 720 pixels |
Video image frame rate | 30 fps | 30 fps | 30 fps |
Operating system | Windows (primarily) | Windows (for now) | Android (built-in) |
Usage model | PC with peripheral | PC with peripheral | Like Android TV with remote control |
The price I won’t consider that much since each of the sensors are in the class of US$100-240. But one thing is worth highlighting here. If we look at the cost of a full stand-alone installation, Persee has the obvious advantage as you can skip having any laptop on site entirely. You can get the whole thing going with any HDMI-enabled display using Persee sensor/CPU combo. Could you run Kinect on a hundred dollar laptop? Probably no.
A couple of notions on the specs:
So that was the basics. Now, let’s take an example, our classic Fishing game installation for starters. How would this installation look like using Orbbec sensors?
I’d definitely pick Persee which would enable our installation to:
It looks like there wouldn’t be any significant drawback in porting the Fishing game to Persee. Only advantages, actually. Persee is the way to go!
Even though the above may look rosy in the world of Persee, things are not all perfect. Here’s a short list of capabilities that would probably face some problems combined with a few issues I’ve encountered so far:
To summarize, although all these sensors discussed here look pretty similar at first glance, there are some fundamental differences, especially in terms of practicality of installations. We can take this simple rule of thumb for selecting the replacement for Kinect that I apply in project planning phases with my clients:
Obviously, the thinking behind this is the aim of minimizing the cost of swapping the sensor in a typical product development process. You can keep most of the Unity content and only change the middleware connecting your Unity app with the sensor. Some rework will be needed on joint tracking, color and depth image dimensions and specific differences in API level method calls between the middleware components. But it shouldn’t be a huge job, unless you really must port a large application where the 3D sensor is just one small part from Windows to Android altogether. That would get heavy especially if you have custom inter-connected components working outside Unity.
But that’s enough for starters. The next couple of articles will show you how to get started with Orbbec+Unity and get knee-deep into coding Kinect-like apps on Orbbec’s superior hardware.
© 2014-2018 Improventions. All rights reserved.
Created by MGWalton
Powered by coconuts