Awarded MVP 2015

This morning I awoke to an email:

Microsoft MVP Banner
Dear Dwight Goins,
Congratulations! We are pleased to present you with the 2015 Microsoft® MVP Award! This award is given to exceptional technical community leaders who actively share their high quality, real world expertise with others. We appreciate your outstanding contributions in Kinect for Windows technical communities during the past year.

Advertisements

Quick Note: What’s New with Kinect v2 For Windows (Technical Dive)

A couple of weeks ago I did a user group session in NYC at Microsoft’s office in TimeSquare http://www.meetup.com/AzureNYC/events/158352992/.

I have another one coming up on June 17th At the Colorado Springs Dot Net User’s group – come join me to hear about what’s happening with the Kinect v2 For Windows!!!
http://www.southcolorado.net/

Kinect Heart Rate Detector

Kinect Heart Rate Detector

As my brother so nicely puts it… ” The first Goins Collaboration…” presents to you the Kinect Heart Rate Detector sample application. In the next few coming days I will blog in detail how this application works and provide you with insight on how to make the Kinect v2 device measure your heart rate. For now just view the video here: http://youtu.be/LnX0qko-OOk and get the sample application from the link here: https://k4wv2heartrate.codeplex.com/

Happy Kinecting!!!

Kinect Minilogs: Building a Kinect 4 Windows 8 App part 1

Greetings all,

It has been a while since I wrote about the Kinect for Windows (K4W). The reason is because I’ve been busy learning all about the Kinect, and thanks to the Kinect for windows team at Microsoft, I’ve also been learning about the upcoming changes and additions to the K4W toolkit, SDK, and device.

Let me say this without saying much… It’s an exciting time to be a device developer, especially a Kinect Device developer.

With the recent rumor about the Kinect 2.0 device, and soon to be released Kinect Fusion
(1), developing applications for the Kinect Device and K4W couldn’t be more fun and entertaining!

While I can’t specifically speak about any other upcoming changes and additions let me just say again… It’s an exciting time to be a device developer, especially a Kinect for Windows device developer.

As some of you already know, Microsoft recently release it’s flagship OS and products line: Windows 8, Windows 8 Surface RT and Windows 8 Surface Pro devices. This OS and these devices once again are making a splash into IT industry. I won’t argue the goods and bads, being you all know I’m a Linux Gentoo Geek since 2009. I will say that both the OS and line of devices have changed the way developers develop and design applications. Simply put, it is another game changer, much like the Apple IPods, IPhones, and IPads, not as major, but still a changer none the less. It is not as much a game changer like the Xbox Kinect device but again a changer none the less.

Understanding the development changes, and design changes of Windows 8 and its devices will require a learning curve which I too am not excused of its effects. Thus the purpose of this posting is to talk about my experiences when developing an application for the Kinect 4 Windows device on a Windows 8 OS and its many devices.

First off right out of the box, there are many things to think about when designing and developing a K4W application for Windows 8. There are too many things to discuss in this one post alone, however I will briefly bring them up in a bullet points. As I develop applications, I will go back through these bullets and most likely talk about my experiences with them in many posts during the year.

Design Challenges:

  • Windows 8 devices are Touch Devices
  • K4W is a Touchless Device
  • Windows 8 has areas outside of the pixel for user interactions
    • Such as Swiping from Top to bottom
    • Swiping from Left to right
    • Swiping from Right to left
  • K4W has no pixel representations of “Area”, it’s area is the whole space surrounding the user (within the device limits of course)

Development Challenges:

  • Windows 8 RT devices can only install applications from a Windows Store
    • Currently no driver exists for K4W device and its many sensors
    • There are currently no Windows Store applications which contain the K4W device and drivers
    • There are currently no Windows Store applications that are compatible with K4W
  • Windows 8 Pro devices do support the K4W device and drivers however depending on the GPU of the Pro device, it may not be powerful enough to support Kinect Fusion
  • Windows 8 requires the WinRT libraries for development
    • VS.Net 2012 is the only development tool for WinRT which by default doesn’t support K4W
  • K4W can be developed with C#, VB.Net, C++, DirectX, and XNA
    • No library exists right now to work with WinRT

These challenges are just a few as more will probably be added to this post as I develop my Kinect for Windows 8 application.

In part 2 of this post, I will talk about the steps I have used thus far to get the bare minimal framework working for K4W based applications.

Getting the Kinect (not K4W) To Work on Windows 8 RC with OpenSource drivers

…Step by step….

How to get LibFreeNect and OpenKinect working on Windows 8 RC

– first install Visual Studio .Net 2011 – Express C++ should be fine.
– Next install .Net framework 2.0 – 3.5 from here https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=21

– Next install Git Extensions from here: http://gitextensions.googlecode.com/files/GitExtensions232SetupComplete.msi

– Once git extensions are installed, run the following commands inside a Git Bash Shell prompt:

$ git clone git://github.com/OpenKinect/libfreenect.git //downloads the project, creates local master
$ cd libfreenect //cd to source directory
$ git branch –track unstable origin/unstable //creates a local unstable branch for remote unstable
$ git checkout master //check out the master or unstable branch
$ or
$ git checkout unstable
$ git pull

– Next download libusb-win32 from here: http://sourceforge.net/projects/libusb-win32/files/libusb-win32-releases/1.2.6.0/
– Extract this file into a folder of your choice

– Next download pthreads from here: ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip
– Extract this file into a folder of your choice, make sure its different from the libusb files previously

– Next download OpenGL Utility Toolkit (GLUT) from here: http://user.xmission.com/~nate/glut/glut-3.7.6-bin.zip
– Extract the file into another folder of your choice

– Follow the Driver Installation instructions from the OpenKinect.org web site on Windows 7: step-by-step walkthrough found here: http://openkinect.org/wiki/Getting_Started#Windows

– Download CMake for windows from here: http://www.cmake.org/files/v2.8/cmake-2.8.8-win32-x86.zip
– Extract and files and then run: cmake-gui.exe

– Set the Source Code path to the location of where you git cloned libfreenect
– Create a directory for building the VS.Net solution project for libfreenect. The CMake tool creates a VS.NET solution with all the projects for libfreenect, glut, libusb and pthreads.
– Select the Grouped and Advanced checkmarks and then click on the configure button.
– Select the Visual Studio 11 generator
– Expand the BUILD Entry and only check mark: BUILD_C_SYNC and BUILD_EXAMPLES

– Add one new path entry: GLUT_INCLUDE_DIR set the include directory to the Visual Studio VC include directory, by default it’s c:\program files (x86)/Microsoft Visual Studio 11.0/VC/include
– Add one new filepath entry: GLUT_glut_LIBRARY set its value to the glut32.lib from the GLUT Extracted files

– Set the LIBUSB values: LIBUSB_1_INCLUDE_DIR to the include directory of the libusb extracted files
– Set the LIBUSB_1_LIBRARY to the libusb.lib path from the libusb extracted files

– Set the threads values: THREADS_PTHREADS_INCLUDE_DIR to the include directory of the extracted pthread include files
– set the THREADS_PTHREADS_WIN32_LIBRARY to the pthreadVC2.lib file from the extracted pthread files

– Click the Generate button- VS.Net solution files will be created.
– Open the VS Solution from the “Where to build Binaries” folder you selected earlier.

– Inside the GLUT extracted files, create a directory named GL
– Copy the glut.h header file into the GL directory

– Inside VS.NET, for the projects: Regview, glpclview glview, hiview, inside the project properties, add an include directory path to the GLUT header file.

– Rebuild the solution.

– Copy the glut32.dll and pthreadVC2.dll into the Build output folder.

– Run glview.exe and if everything works… SUCCESS!!!

… NEXT UP, how to get the Kinect 4 Windows working… now this is a challenge!!!

Kinect Minilogs: Explaining the Kinect to the layman

Image

The Kinect device has remarkable physical capabilities. It can scan the room using its infra-red sensors, listen for sounds with its array of multiple microphones, record video from its *web cam* like camera, and move/tilt its head up and down from -27 degrees to + 27 degrees.

However when ever I tell people that I am developing applications for the Kinect, there is a pause, blank stare and then a question that is usually uttered… “Oh so you’re developing games for the Xbox now…?”

The quick and short answer is this: “No, (however if anyone is interested, that is a possibility…) I am creating designs and enterprise/business applications that can take advantage of these physical capabilities.”

InfraRed Capabilities

Image

Just stop and think for the moment. If you have an infra-red camera, and projector,which the Kinect has, you have the basis for a “See in the Dark” functionality. Which means you have a potential for guiding persons with an aid to see obstacles in the dark. From a security standpoint, you can be notified when an intruder has invaded your space in complete darkness similar to passive infrared motion detector (PIR). Now on top of this, envision the software that can be developed and run on the multitude of devices. Visualize a cloud based mobile device such as a cellphone, or tablet that can easily notify you of any impeding danger, where the Kinect is mounted. Danger such as that annoying toy car with its sticky points innocently resting on the floor which you’re about to step on in the middle of the night as you make your midnight refrigerator raid. Imagine steps before you reach this painful moment in time, a cellphone rings, or even better, a speaker embedded in the house walls yields a quick chime or sound to warn you to look down.

Microphone Capabilities

Image

The Kinect also has the ability to be trained through software to listen for sounds, speech, and other audible things. Imagine the ability to listen for when your new born starts crying in the middle of the night, where you can immediately monitor the crib, for an empty bottle, and possibly have a lullaby play through speakers in your house. What about voice recognition? This ability is also possible with a Kinect. Envision a security device which needs three factory authentication, such as a password, a security key card, and some form of biometrics: (voice, fingerprint, retina or facial scanning) to prove identity. The Kinect device can can provide the voice, facial, and password requirements by listening through its microphone, recognizing a person’s face, and using speech recognition through software to decipher words.

Camera Capabilities

Image
Lastly, the Kinect device can record video and take pictures with its VGA camera. Imagine software which can identify clothes, purses, shoes along with their styles, fabric and makers from a video or picture. With a Kinect device inside a clothing or department store, discounts, offers, advertisements can be given to a customer when the walk past the device or even queue up to purchase an item. Let’s say because I’m wearing the latest Nike Air Jordans, the Nike jumpsuit I’m about to purchase will automatically be discounted 10% due to my patronage; along with an offer to purchase a Nike Spandex body fit exercise shirt… nice!!!

So do you get it now???

In summary, Kinect development means working with the Kinect Device for its capabilities, and developing software which can propel humanity into the future, or as I like to say, bring us up to speed with the ancient cultures that existed before us 🙂

If you want to see some more ideas on the Kinect device visit Kinect Hacks.