[# TFService] A couple of good news

image

Buenas,

thanks to the great Brian Harry now we can make public some of the new features incorporated the other TFS > Team Foundation Service (for me is still and unfortunate choice of name).

  • On the one hand we have an interface much more "touch friendly", meaning that if you want to control the TaskBoard or product BackLog from a touch device is much simpler. If like me you want to do are applications of control with Kinect, also much simplifies work.
  • Vast selection of the provider of security when only there are LiveId. One form less and much more happy people.
  • Filters in some important parts and… little more.
  • Ahh and a new look & feel much more metro Risa

image

Source: http://blogs.msdn.com/b/bharry/archive/2012/04/30/tfspreview-update.aspx

Saludos @ Home

El Bruno

image image image

[#TFService] Algunas novedades de ultimo momento

image

Buenas,

de la mano del gran Brian Harry ya podemos hacer públicas algunas de las new features incorporadas al otro TFS > Team Foundation Service (me sigue pareciendo un poco desafortunada la elección del nombre).

  • Por un lado tenemos una interfaz mucho más “touch friendly”, es decir que si quieres controlar el TaskBoard o el product BackLog desde un dispositivo táctil es mucho más simple. Si como yo lo que quieres hacer son aplicaciones de control con Kinect, pues también se simplifica mucho el trabajo.
  • Basta de selección del provider de seguridad cuando solo hay LiveId. Un formulario menos y mucha más gente feliz.
  • Filtros en algunas partes importantes y … poco más.
  • Ahh y un nuevo look&feel mucho mas metro Risa

image

 

Fuente: http://blogs.msdn.com/b/bharry/archive/2012/04/30/tfspreview-update.aspx

Saludos @ Home

El Bruno

image image image

[# VIDEO] Magic with Kinect (augmented reallity)

image

Buenas,

After a couple of hours playing Kinect Star Wars with Valentino, hurts body parts that did not know. So this week is a bit of return to ALM, because I start a video that has absolutely nothing to do with ALM, but that is impressive in what refers to deployment of assets.

Link: http://youtu.be/C4pHP-pgwlI

The interesting thing about the video is that it is a technology that most of us could implement and create in our own House. I already have been "playing" with a bit of reality augmented with Kinect and the truth is that while it does need to know a little of how the images in general, is not so complicated.

This a few years ago was crazy just thinking, but thanks to Kinect and Kinect SDK, then what we now have easier.Impressive, is not it?

Saludos @ Home

El Bruno

image image image

[#VIDEO] Magia con Kinect (augmented reallity)

image

Buenas,

después de un par de horas de jugar a Kinect Star Wars con Valentino, me duelen partes del cuerpo que no conocía. Así que en esta semana que es un poco de retorno a ALM, pues empiezo por un video que no tiene absolutamente nada que ver con ALM, pero que es impresionante en lo que se refiere a despliegue de medios.

Link: http://youtu.be/C4pHP-pgwlI

Lo más interesante del video, es que es una tecnología que la mayoría de nosotros podríamos implementar y crear en nuestra propia casa. Yo ya he estado “jugando” con un poco de realidad aumentada con Kinect y la verdad es que si bien hace falta conocer un poco de como funcionan las imágenes en general, no es tan complicado.

Esto hace unos años era una locura de solo pensarlo, pero ahora gracias a Kinect y al Kinect SDK, pues lo tenemos más fácil. Impresionante, ¿no?

 

Saludos @ Home

El Bruno

image image image

[#KINECTSDK] Kinect Missile Launcher (V): Video and source code

image

Buenas,

First we go with the links of the series

  1. Identifying the Missile Launcher
  2. Moving the Rocket missile launcher
  3. Another wayt to find out the values to work in C# with the rocket launcher
  4. Using the Rocket Launcher with Kinect
  5. Video and Source code

And now a video of 30 seconds where I show you a small example of the application running

Link: http://youtu.be/ATxtYes6pBQ

Disclaimer: when I fire the missile, it comes with a power like a HALO gun, so the few frames per second of the Kinect camera can not capture the missile on its flight. I also put the missile rocket launcher in front of the Kinect camera to record the video, so the capture of the skeleton goes a bit bad, and perform some strange recognitions in the video.

And finally, the code source of the application can be downloaded from https://skydrive.live.com/redir.aspx?cid=bef06dffdb192125 & SPL = BEF06DFFDB192125! 4275 & parid = BEF06DFFDB192125! 1932 & authkey =!AOhNmp_md8XLYbo

Saludos @ Home

El Bruno

image image image

[#KINECTSDK] Kinect Missile Launcher (V): Video y codigo fuente

image

Buenas.

Primero vamos con los links de la serie

  1. Identificando el dispositivo HID
  2. Moviendo el lanza misiles
  3. Otra forma de averiguar los valores para trabajar con el lanza misiles con C#
  4. Controlando el lanza misiles con Kinect
  5. Video y código fuente de ejemplo

Y ahora un video de 30 segundos donde muestro un pequeño ejemplo de la aplicación en funcionamiento.

Link : http://youtu.be/ATxtYes6pBQ

Un detalle, el misil sale con una potencia que ni en HALO, con lo que los pocos frames de la cámara de Kinect no lo pueden capturar en su vuelo. Otro detalle es que como puse el lanza misiles delante del Kinect para poder grabar el video, la captura del skeleton va un poco así así, con lo que puede hacer unos raros.

Y para terminar, el código fuente de la aplicación se puede descargar desde https://skydrive.live.com/redir.aspx?cid=bef06dffdb192125&resid=BEF06DFFDB192125!4275&parid=BEF06DFFDB192125!1932&authkey=!AOhNmp_md8XLYbo

 

 

Saludos @ Home

El Bruno

image image image

[#KINECTSDK] Kinect Missile Launcher (IV): Using the Rocket Launcher with Kinect

image

Buenas,

today already we will create an application that allows us to control the Lance missiles using Kinect gestures. For this I have thought of the following controls

  • The right hand controls the direction of the Lance missiles. You can go to the right, left, up or down.
  • The left hand controls the firing of the missile, shoot is raise your hand above the head.
  • If both hands are below the waist stop movements of the Lance missile

On this basis, and taking advantage of Visual controls of "Microsoft.Samples.Kinect.WpfViewers" I created a WPF application with the following code in the main window

 

   1: using System.Linq;

   2: using System.Windows;

   3: using Microsoft.Kinect;

   4:  

   5: namespace ElBruno.Rocket.Ui

   6: {

   7:     public partial class MainWindow

   8:     {

   9:         private KinectSensor _sensor;

  10:         private Rocket _rocket;

  11:         public MainWindow()

  12:         {

  13:             InitializeComponent();

  14:             Loaded += MainWindowLoaded;

  15:         }

  16:  

  17:         private void MainWindowLoaded(object sender, RoutedEventArgs e)

  18:         {

  19:             InitRocket();

  20:             InitKinectSensor();

  21:         }

  22:  

  23:         private void InitRocket()

  24:         {

  25:             _rocket = new Rocket(@"vid_0a81", @"pid_ff01");

  26:             _rocket.Connect();

  27:         }

  28:  

  29:         private void InitKinectSensor()

  30:         {

  31:             // validate

  32:             if (KinectSensor.KinectSensors.Count == 0) return;

  33:  

  34:             // init Kinect

  35:             var parameters = new TransformSmoothParameters

  36:                                  {

  37:                                      Smoothing = 0.75f,

  38:                                      Correction = 0.1f,

  39:                                      Prediction = 0.0f,

  40:                                      JitterRadius = 0.05f,

  41:                                      MaxDeviationRadius = 0.08f

  42:                                  };

  43:  

  44:             _sensor = KinectSensor.KinectSensors[0];

  45:             _sensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);

  46:             _sensor.DepthStream.Enable(DepthImageFormat.Resolution320x240Fps30);

  47:             _sensor.SkeletonStream.Enable(parameters);

  48:             _sensor.Start();

  49:             colorViewer.Kinect = _sensor;

  50:             skeletonViewer.Kinect = _sensor;

  51:             _sensor.SkeletonFrameReady += SensorSkeletonFrameReady;

  52:         }

  53:  

  54:         private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)

  55:         {

  56:             Skeleton[] skeletons = null;

  57:             using (var frame = e.OpenSkeletonFrame())

  58:             {

  59:                 if (frame != null)

  60:                 {

  61:                     skeletons = new Skeleton[frame.SkeletonArrayLength];

  62:                     frame.CopySkeletonDataTo(skeletons);

  63:                 }

  64:             }

  65:  

  66:             if (skeletons == null) return;

  67:  

  68:             foreach (var kinectRocketGestures in (

  69:                 from skeleton in skeletons

  70:                 where skeleton.TrackingState == SkeletonTrackingState.Tracked

  71:                 let headJoint = skeleton.Joints[JointType.Head]

  72:                 where headJoint.TrackingState != JointTrackingState.NotTracked

  73:                 select skeleton).Select(skeleton => new KinectRocketGestures(skeleton, _rocket)))

  74:             {

  75:                 var gesture = kinectRocketGestures.ValidateGestures();

  76:                 textBlockInformation.Text = gesture;

  77:             }

  78:         }

  79:     }

  80: }

It is important to note that this window has almost nothing interesting logic only starts the sensors of the Kinect and the Lance missiles and then subscribe to the skeleton update notifications.

In this notification (line 54), it validates that the tracking of the skeleton is correct and then we use a class KinectRocketGestures that is what makes a little magic between Kinect and the Lance missiles.

This class code is as follows

   1: using Microsoft.Kinect;

   2:  

   3: namespace ElBruno.Rocket.Ui

   4: {

   5:     class KinectRocketGestures

   6:     {

   7:         private readonly Skeleton _skeleton;

   8:         private readonly Rocket _rocket;

   9:  

  10:         public KinectRocketGestures(Skeleton skeleton, Rocket rocket)

  11:         {

  12:             _skeleton = skeleton;

  13:             _rocket = rocket;

  14:         }

  15:  

  16:         public string ValidateGestures()

  17:         {

  18:             var gesture = @"Not defined";

  19:             // STOP

  20:             // Right hand and Left hand hanging at the side

  21:             if (_skeleton.Joints[JointType.HandRight].Position.Y < _skeleton.Joints[JointType.HipCenter].Position.Y &&

  22:                 _skeleton.Joints[JointType.HandLeft].Position.Y < _skeleton.Joints[JointType.HipCenter].Position.Y)

  23:             {

  24:                 _rocket.StopAll();

  25:                 _rocket.StopFiring();

  26:                 _rocket.StopMovements();

  27:                 gesture = @"STOP";

  28:                 return gesture;

  29:             }

  30:  

  31:             // FIRE

  32:             if (_skeleton.Joints[JointType.HandLeft].Position.Y > _skeleton.Joints[JointType.Head].Position.Y)

  33:             {

  34:                 gesture = @"FIRE";

  35:                 _rocket.FireOnce();

  36:             }

  37:  

  38:             // MOVE RIGHT OR LEFT

  39:             // Right hand in front of right shoulder

  40:             // Right hand below shoulder height but above hip height

  41:             if (

  42:                 (_skeleton.Joints[JointType.HandRight].Position.Z < _skeleton.Joints[JointType.ElbowRight].Position.Z &&

  43:                 _skeleton.Joints[JointType.HandLeft].Position.Y < _skeleton.Joints[JointType.HipCenter].Position.Y)

  44:                 &&

  45:                 (_skeleton.Joints[JointType.HandRight].Position.Y < _skeleton.Joints[JointType.Head].Position.Y &&

  46:                 _skeleton.Joints[JointType.HandRight].Position.Y > _skeleton.Joints[JointType.HipCenter].Position.Y)

  47:                 )

  48:             {

  49:                 // Right hand right of right shoulder

  50:                 if (_skeleton.Joints[JointType.HandRight].Position.X > _skeleton.Joints[JointType.ShoulderRight].Position.X)

  51:                 {

  52:                     gesture = @"MOVE RIGHT";

  53:                     _rocket.MoveRight();

  54:                 }

  55:                 // Right hand left of left Shoulder

  56:                 if (_skeleton.Joints[JointType.HandRight].Position.X < _skeleton.Joints[JointType.ShoulderLeft].Position.X)

  57:                 {

  58:                     gesture = @"MOVE LEFT";

  59:                     _rocket.MoveLeft();

  60:                 }

  61:             }

  62:  

  63:             // MOVE UP OR DOWN

  64:             // Right hand in front of body with Left hand hanging at the side

  65:             // Right hand between shoulders

  66:             if (

  67:                 (_skeleton.Joints[JointType.HandRight].Position.Z < _skeleton.Joints[JointType.ShoulderCenter].Position.Z &&

  68:                 _skeleton.Joints[JointType.HandLeft].Position.Y < _skeleton.Joints[JointType.HipCenter].Position.Y)

  69:                 &&

  70:                 (_skeleton.Joints[JointType.HandRight].Position.X < _skeleton.Joints[JointType.ShoulderRight].Position.X &&

  71:                 _skeleton.Joints[JointType.HandRight].Position.X > _skeleton.Joints[JointType.ShoulderLeft].Position.X)

  72:                 )

  73:             {

  74:                 // Right hand above the shoulders

  75:                 if (_skeleton.Joints[JointType.HandRight].Position.Y > _skeleton.Joints[JointType.ShoulderCenter].Position.Y)

  76:                 {

  77:                     gesture = @"MOVE UP";

  78:                     _rocket.MoveUp();

  79:                 }

  80:                 // Right hand below the chest/gut

  81:                 if (_skeleton.Joints[JointType.HandRight].Position.Y < _skeleton.Joints[JointType.Spine].Position.Y)

  82:                 {

  83:                     gesture = @"MOVE DOWN";

  84:                     _rocket.MoveDown();

  85:                 }

  86:                 return gesture;

  87:             }

  88:         }

  89:     }

  90: }

And that’s it! A bit of validation of the right hand and left hand positions and have control of the Lance missiles using Kinect.

Now I’m going fast to the MadridDotNet event and in the next post I put a video and the example of the application code.

 

Saludos @ La Finca

El Bruno

image image image