I am having trouble locating a proper example of how to program the kinect in Labview. Please post any of your examples which can help me program kinect in labview.
We Beta Tested the Kinect and the YouTube demonstration can be seen here http://www.youtube.com/watch?v=IYhxqsj70VY
Also, once build season had started, we wrote a manual of sorts to try to help pass on our lessons learned as well as give instructions on hardware and software setup. There are some example code snippets included.
http://team1912.com/docs/kinectmanual.pdf
We have been programming our own custom routines, and that has worked out great for us. I wrote a Kinect Array to Cluster VI, that generates a Named Cluster that you can just Unbundle. This cleans up the Code, because you do not need an Index Array for every value.
I’ll include the VI, and some sample code for everyone’s convenience. It took me about 2 hours of naming and Indexing the Array to properly get the Cluster, so please give reference to Team 3130, the E.R.R.O.R.'s.
We have been programming our own custom routines, and that has worked out great for us. I wrote a Kinect Array to Cluster VI, that generates a Named Cluster that you can just Unbundle. This cleans up the Code, because you do not need an Index Array for every value.
I’ll include the VI, and some sample code for everyone’s convenience. It took me about 2 hours of naming and Indexing the Array to properly get the Cluster, so please give reference to Team 3130, the E.R.R.O.R.'s.
Did you have to do anything to get your kinect to communicate to the robot? Our driver station picks up the skeleton but the robot doesn’t seem to be able to connect to the Kinect.
Could you post your code as an example
According to the National Instruments example it shows that the kinect uses an index array to get the hand gestures but when connecting the kinect extra class it does not give that option to use the hand for the gestures.
Here is the code for the Cluster VI. This needs no modification to work.
The example code is purely example code, and has two fairly simple examples to look at. The code can be placed into the autonomous loop, and then deployed.
Please give reference to Team 3130, the E.R.R.O.R.'s.
Kinect Vertex to Cluster.vi (29.2 KB)
Example Kinect Code.vi (12.3 KB)
Kinect Vertex to Cluster.vi (29.2 KB)
Example Kinect Code.vi (12.3 KB)
As a side note, you should check out the internal workings of my VI. Now imagine having an index array everywhere that you need a vertex broken out. An unbundle by name works extremely well for this purpose.
You are correct. The Get Kinect Extra VI actually grabs extra data relating to actually tracking. What you use to get the Vertex is the Get Kinect Vertices, and then normally, you use an Index Array to get the actual vertex info. I use my VI, which converts that array into a named cluster, which can then be unbundled.
I’m happy to see that you wrote a converter to a cluster, but there are a few things worth mentioning.
You can grow the index array and it will extract the next element without an enum cluster wired up. That syntax shortcut comes in handy pretty often.
I attached an alternate implementation that keeps the original cluster order (which matches the Microsoft header file), and uses some casting to simplify the diagram. I also attached a typedef for the cluster. Because ctls are not a supported upload type, they are in a zipped folder.
Greg McKaskle
Vertex Array to Cluster.zip (23.2 KB)
Vertex Array to Cluster.zip (23.2 KB)
The only reason that I had the enums wired up was because I was not sure as to what the order of the array was going to be, and I wanted them to be in a specific order in the cluster.
If you do not know the order of the array, it is always safer to wire in all of the enums to ensure that the output is the correct value from the array.
But thanks for the code anyways!
Hey Greg, thanks for the converter VI, could be useful but noticed one thing. The array to cluster function was left at the default of 9 elements. It would have to be set to 20 if you want the whole control to be casted.