dp.kinect: external using Microsoft Kinect SDK

dp.kinect is a native external for the Kinect which can be used within the Cycling ’74 Max development environment to control and receive data from your Microsoft Kinect.

Full details, beta releases, downloads, etc. are at http://hidale.com/dp-kinect/

  • It is based on the Microsoft Kinect SDK.

  • Depth, color, playermap, infrared, and accelerometer data streams are available

  • Speech recognition and sound position streams are available

  • Pointclouds, face tracking/modeling streams are available.

  • Supports multiple Kinects on the same PC.

  • 32 and 64-bit support

  • OSC or native-Max messages

  • It was developed and tested primarily with Max 6.x. Casual testing also demonstrates it works on Max 5.1.9.

  • There is good compatibility with the output of the external as compared to my other external jit.openni. All output is supported and should be equivalent except the optional joint rotations are in a new format.

Julien Bayle's icon

I didn't know if it would work on osx.
it doesn't.
I'd love to test it on osx, btw :)

diablodale's icon

@Julien, unfortunately, Microsoft does not support Osx with their Microsoft Kinect SDK. Until that happens, it is impossible.
I have written an open source version that could be recompiled for Osx. Details are at http://hidale.com/jit-openni/
All it needs, is a Mac developer to recompile it and address any porting issues.

diablodale's icon

We have completed a port of jit.openni to OSx. It is available at http://hidale.com/jit-openni/

clement-montreal's icon

hi , I was trying to isntall it but it says that Kinect10.dll is missing when opening the dpkinect.maxpat , and it is not included in the ZIP I donwload from http://hidale.com/dp-kinect/

Thanks!

I've got OpenNI drivers installed as well as PrimeSense NITE , would that work OK ?

diablodale's icon

@Clement, please read the documentation provided on the same website from which you downloaded. It will provide you installations instructions and answer your question.

endrek's icon

hi!! Is there any kin of guide to understand how to run the dp.kinect???
I don't seem to get along using only the wiki provided....

Never used kinect before....then I'm even more lost.... if I include MAX in between = ) = )

is there any walkthrough? or something similar??

thanks for your help and time.
Appreciate it.

diablodale's icon

The wiki explains the setup; follow the steps there to setup your computer and Kinect.
After that, then run the patcher included with dp.kinect. Play with it. Learn from it and the wiki.
If you need help learning Max, I recommend the Forums here on the cycling74 website.

endrek's icon

Sorry!!!
I didn't realise, for example, the Berling speech, and slides you had, would be nice, to include them as documentation, I think.

I apologise, for my doubts.
Really nice work.
Much appreciate it.
Now having fun with it = )

Again, sorry. You kick ass!! = )

diablodale's icon
ygreq's icon

Hey Diablodale,

I have a Kinect for XBox 360. It works fine on OSX with jit.openni. But it does not work with dp.kinect on Windows. It gives me the error: "No Kinect chosen for output"

Do you think it might be related to the fact that I need a Kinect for Windows? Do you know if I can in some way use it with Kinect for Xbox 360?

I wanted to buy your external, but I am stuck :S

luxi's icon

hi Diab

no Kinect 1 xbox 360 ?
no kinect 2 x window ?

thank

Jed Lankitus's icon

I have this same issue. I am using Kinect for Xbox 360, when I choose open it outputs: "No Kinect chosen for Output"
I have not yet installed the Kinect SDK, could this be the problem?

dtr's icon

The setup instructions on the dp.kinect wiki are very clear. You need to install the Kinect SDK.

Jed Lankitus's icon

I use the 1.5 sdk and it crashes, and I cannot use the 1.7 as the tools do not install. What is the confirmed sdk that would work that is not 1.7?

Jed Lankitus's icon

And just for future reference, sdk is not mentioned in the setup. The 1.7 runtime is what is said to be required, which did not work for me. 1.5 SDK worked, but crashes.

dtr's icon

Why aren't you using the latest, 1.8? That works.

luxi's icon

I like to buy this App but i cannot understand

Stupid question i have2 Kinect v1 + v2, can instal sdk 1.8 and sdk 2 in the same Pc ?

I'd want said in Windows 8.1 is possible have the 2 sdk w/o compatibility issue ?

MrMaarten's icon

Yeah, you can install 1.8 and 2.0 on the same PC. I did this and it works fine.

MrMaarten's icon

Just for information: (after a virus on my PC) I tried to use the Kinect via a VM (Virtual Machine) on Mac OS X, but this doesn't work. It is not supported by Microsoft.

(Kinect for Windows v1 might work, but I don't have that one, so I can't confirm)

Ed's icon

Windows 7 Professional x64
Max 6.1.9
Kinect for Windows Runtime, SDK, Drivers v1.5.2
Kinect Xbox360
dp.kinect-v1.0.6

As I understand it, only Kinect for Windows v1.5.2 works for the XBox360 Kinect. Developer Toolkit sample programs run properly showing the Kinect is working. But dpkinect.maxpat crashes every time.

CrossingParalells's icon

hi,

Just to inform that in windows 10 the kinect x360 model 1414 works perfectly with dp.kinect and kinect sdk 1.8...
On another hand, im gonna buy a kinect v2 and a dp.kinect2, but i need to pass the licence of the de.kinect1 to another computer so it can be useful as well... How do i go about of acomplishing this?

chrislos's icon

hey dale.

I'm trying to geht your dp.kinect running.

I just setup a bootcamp windows 7 partition.

I did download/installed the Microsoft Runtime v1.7.
It seems it doesn'r work with my kinect 360 1414 model... :(

When I try to toggle your example patch max-console throws me the following error out:
"No Kinect chosen for output"

... where can I chose my Kinect ?

Is there a way to check if my kinect is initalized correctly in windows 7?
When I plug in the kinect it's listed as two devices under system preferences.
1. IR Receiver
2. Kinect USB Audio.

I'm really frustrated and kind of stuck because I'm not used to work on windows.
Maybe you have an Idea?

Greets from berlin.
Christian

diablodale's icon

Christian and I solved it over email. It was a Microsoft licensing issue with the xbox360 kinect.
For best performance, I recommend the Kinect for Windows (v1 and v2). They both have better depth cameras and have the full set of features.

mirrijakys's icon

Dear all,

I am using dp.kinect to get the coordinates of various people. I am struggling on how to do this, and how to get hold of the IDs and position information that dp.kinect feeds onto max.

For two people, I manage to get hold of two skeletons by using the min and max objects and selecting the minimum and maximum ids, but this gets messy when a third person enters in the frame.

Anyone has an idea of how can I make to get the coordinates of more skeletons?

Kind regards,

Marcos

diablodale's icon

Hello, the full reference documentation is at https://github.com/diablodale/dp.kinect/wiki/
If you want only the general person location, you can use https://github.com/diablodale/dp.kinect/wiki/Message-based-Data#skeleton-joints
If you want all the joints in the body you can use https://github.com/diablodale/dp.kinect/wiki/Message-based-Data#user-location

Look at the included demo file with dp.kinect. Bottom right of it. You can see how to get the "user" message and unpack the data to get the location in XYZ coordinates.

If you have a specific question, they I'll need more details or a patch.

mirrijakys's icon

Hello,

Thanks for your reply.

At the moment I am getting information for two skeletons, by selecting the min and max of the skeletons indices that the external outputs. However, if a third person enters into the camera the min and max skeleton indices may change, and I want to avoid that. I attach the patch I use as a reference.

My problem is how to build the logic to select more skeletons on a robust way. I am having problems on understanding how to use the signal flow of Max to distinguish different skeleton IDs for different users. And If I use "if" objects to build any logic, the "if" object always selects the minimum of all the IDs...So I am a bit lost in all of this.

What I would like is to have a robust way of getting the position information of various skeletons, from 1 to 4... And get hold of the skeleton IDs in such a way that is robust and does not get altered if new people enter into the frame.

Any help or suggestion is welcome.

Thanks in advance,

Marcos

Kinect2.maxpat
Max Patch
diablodale's icon

@Marcos, you are inquiring about high-level application logic. You are asking how to implement your interaction model without knowing your interaction model. This isn't a Kinect question.

I recommend you think deeply about the rules for your application; the rules for your interaction model. Compare it to how a worker at a meat market (Fleischerei) helps customers...when and which customer does the worker help? The worker "sees" all the customers that want to buy meat. However...which do they help?
Is it the first customer?
Is it the customer closest to the meat?
Is it the loudest customer?
It is the repeat/loyal customer?
etc.

All of these questions and answers is called the "interaction model". Different interactions models will have different code/patches. Therefore, I can't give you suggestions until you know your own model and its rules.

Here are examples of topics/question to think about. Then you can code your rules in the patch.
1) What is the rule for when your application starts interaction with a person? This is distinct from when the Kinect recognizes and tracks their joints. However, your answer could be "immediately after the Kinect tracks the joints" or it could be "when they are tracked by the Kinect for at least 5 seconds" or it could be "when they wave their hands" or something else.
2) What is the rule for when your application stops interacting with a person?
3) What is the rule for how many persons (min and max) with which you interact?
4) If you have less than your min -or- more than your max, what is the rule? Do you ignore people? Which people do you ignore? Do you ignore the people furthest away? Do you ignore the people not moving?
5) What happens when a person disappears (behind someone else, outside the camera, etc.)? Do you stop interacting with this person immediately? Do you wait 5 seconds for them to reappear? Do you remember them and wait forever for them?
6) and more...

When you have these and more answers, you will be able to create your patch to match them.

I have shared two example patches for two different interaction models. They are part of the help file with dp.kinect2. You can download the ZIP file at http://hidale.com/shop/dp-kinect2/ and then look at the help file inside it. Many of the examples will work by changing "dp.kinect2" -> "dp.kinect". Look on the "tips" tab for the two interaction model examples.

mirrijakys's icon

Hi Dale,

Thanks for your explanation. I will think about all this requirements for my interaction model deeply.

Regards,
Marcos

Published

Creative Commons License

Author