#Myo – #Windows 10, #UWP Apps, #Myo and Visual Studio 2015

Hi !

Myo series

  1. Getting started, #Windows10 configuration
  2. Starting as a developer with some C++ basic code
  3. MyoSharp a C# SDK implementation for the Myo armband
  4. Working with the Orientation and Gyroscope in C# and a 3D Cube
  5. Working with the #Emg data in C# (electromyography sensors)

Today I’ll write on how to interact with the Myo armband with a Universal Windows Platform App. Based on the previous posts contents, on this one I will create an example and I’ll show you the basic options of connection, capturing poses, and more in a UWP App.

The first thing to do is to create a UWP with .net Framework 4.6.1

 

image

So, at this point, we have to find a SDK for Myo which support UWP. MyoSharp, the one I used before in my posts, is not is designed for Universal Apps. Lucky for us, our MVP MVP Sebastiano Galazzo (@galazzoseba), has created and published on NuGet a package for Myo which we can use in UWP.

image

Once we have added the package, we need to initialize the device. In this case, I do this in the constructor of a view and also subscribe me to the fist pose detection event. When it detects the pose of a fist, a vibration notification is sent to the cuff and displays a message in the Visual Studio Output pane.

image

If for example, we want to work with EMG information, we will see that in the event of EMG data capture, available 8 electrical sensors the device values.

image

Finally, if we want to work with the values of the accelerometer, gyroscope and orientation, the DataAvailable() event provides us this information.

image

So we have the opportunity to create Universal Windows Apps that can also interact with the Myo armband!

Greetings @ Toronto

El Bruno

References

Advertisements

#Myo – #Windows 10, #UWP Apps, #Myo y Visual Studio 2015

Hola !

Serie de posts sobre Myo

  1. Configurando Myo en Windows 10
  2. Primeros pasos como Developer con un poco de C++
  3. MypSharp, un SDK en C# para el brazalete Myo
  4. Cómo trabajar con el Giroscopio y la orientación C# con un Cubo 3D
  5. Trabajando con los datos de los sensores #Emg en C# (sensores de electromiografía)

Hoy veremos como interactuar con el brazalete Myo desde una Universal Windows Platform App. Teniendo en cuenta lo que he comentado en posts anteriores, en este crearé un ejemplo y mostraré las opciones básicas de conexión, captura de gestos y más desde unw UWP.

Lo primero será crear una UWP con .Net Framework 4.6.1

image

En este punto, tenemos que buscar un SDK para Myo que soporte UWP. MyoSharp del que hablé en posts anteriores no está pensado para Universal Apps. Por suerte, el amigo MVP Sebastiano Galazzo (@galazzoseba), ha creado y publicado en NuGet un paquete para Myo que podemos utilizar.

image

Una vez que hemos agregado el paquete, debemos inicializar el device. En este caso, lo hago en el constructor de una vista y además me suscribo al evento de detección de la pose de PUÑO. Cuando se detecta la pose de un puño, se envía una notificación de vibración al brazalete y se muestra un mensaje en el panel de Output de Visual Studio.

image

Si por ejemplo, queremos trabajar con la información de EMG, veremos que en el evento de captura de datos de EMG, tenemos disponibles los valores de los 8 sensores eléctricos del device.

image

Finalmente, si queremos trabajar con los valores del acelerómetro, del giroscopio y con la orientación, el evento DataAvailable() nos proporciona esta información.

image

Así que ya tenemos la oportunidad de poder crear Windows Universal Apps que también puedan interaccionar con el brazalete Myo!

Saludos @ Toronto

El Bruno

References

#Myo – Trabajando con los datos de los sensores #Emg en C# (sensores de electromiografía)

Hi !

Serie de posts sobre Myo

  1. Configurando Myo en Windows 10
  2. Primeros pasos como Developer con un poco de C++
  3. MypSharp, un SDK en C# para el brazalete Myo
  4. Cómo trabajar con el Giroscopio y la orientación C# con un Cubo 3D

Voy a escribir una app de consola simple para mostrar cómo consumir y trabajar con la información de los 8 sensores eléctricos (EMG) que posee el brazalete Myo. No estoy muy seguro pero la traducción de “electromyography sensors” parece que es sensores de electromiografía (EMG).

El brazalete de Myo tiene 8 sensores eléctricos, y estos sensores miden las señales eléctricas que viajan a través del brazo del usuario. Posteriormente el brazalete de Myo traduce estas señales en gestos y poses del brazo (wave in, wave out, fist, etc).

En la siguiente imagen puede ver una representación viva de este datos de EMG en una tabla y cómo cambia basado en los movimientos de un brazo.

2016 07 29 Myo Emg

Para obtener estos datos, hay que suscribirse al evento EMGDataAcquired(). En el siguiente código de ejemplo lo hago en la línea 51 con el evento EmgDataAcquired. En el mismo muestro los valores de los 8 sensores en una aplicación de consola utilizando diferentes colores.

image

El funcionamiento aplicación de salida de consola mostrará algo similar a esta imagen

image

Próximo post que escribiré sobre será sobre como utilizar Myo en una app UWP !

Saludos @ Toronto

El Bruno

References

#Myo – Working with the #Emg data in C# (electromyography sensors)

Hi !

Myo posts so far

  1. Getting started, #Windows10 configuration
  2. Starting as a developer with some C++ basic code
  3. MyoSharp a C# SDK implementation for the Myo armband
  4. Working with the Orientation and Gyroscope in C# and a 3D Cube

I’m going to write a small sample on the EMG information we can get of the Myo armband. EMG stands for electromyography (EMG) sensors. The Myo armband have 8 electrical sensors, this sensors measure electrical signals traveling across the user’s arm, which the Myo armband translates into poses and gestures. In the next image you can see a live representation of this EMG data in a chart and how it changes based on an arm movements.

2016 07 29 Myo Emg

In order to get this data, we must subscribe to the EMGDataAcquired() event. Take a look at the following sample code: in the EmgDataAcquired event, I display the values of the 8 sensors in a console app using different colors.

image

The running console output app will display something similar to this image

image

Next post I’ll write on some UWP app for Myo!

Greetings @ Toronto

El Bruno

References

#Myo – Cómo trabajar con el Giroscopio y la orientación C# con un Cubo 3D

Hola !

Llega el momento de seguir con la serie de posts sobre Myo

  1. Configurando Myo en Windows 10
  2. Primeros pasos como Developer con un poco de C++
  3. MypSharp, un SDK en C# para el brazalete Myo

Hoy escribiré sobre una de las capacidades más cool del Myo: el sensor de movimiento basado en un giroscopio. La mejor forma de mostrar esto, es mostrar como es posible “controlar” un Cubo en 3D en una App WPF con los movimientos del brazo.

gif 4

Nota: Necesito agregar un poco de de noise removal cuando traduzco la orientación del brazalete al cubo para que los movimientos no queden tan bruscos.

El SDK de Myo contiene un par de elementos que nos permiten conocer la orientación y movimientos de nuestro brazo, esto se conoce como datos espaciales o Spatial Data. Spatial data nos informa sobre la orientación y el movimiento del brazo del usuario del brazalete. El SDK de Myo ofrece dos tipos de datos espaciales:

  • La orientación que representa que la ubicación espacial del brazalete Myo. En el SDK esta orientación se ofrece como un cuaternión que se puede convertir en otras representaciones, como una matriz de rotaciones o ángulos de Euler.
  • Un vector de aceleración que representa la aceleración que el brazalete Myo está experimentando en un momento dado. El SDK ofrece esto como un vector tridimensional.

Para este ejemplo, vamos a usar los valores X, Y y Z de giroscopio y voy aplicar este valor a una cámara se centró en un cubo 3D.

Cuando se carga la ventana principal de WPF es el momento de

  • Crear un Transform3DGroup para soportar el movimiento de los 3 ejes
  • Inicializar el código para interactuar con el brazalete Myo, suscribiéndonos a los cambios de valores del giroscopio

image

Y llega el momento de la interacción entre el brazalete y el cubo 3D. Para esto tomamos la información del giroscopio y movemos la cámara en base a esos valores. Teniendo en cuenta además un poco de cross thread calling, porque toda la información de procesamiento del Myo se realiza en un thread separado.

image

Saludos @ Toronto

El Bruno

References

#Myo – Working with the Orientation and Gyroscope in c#

Hi !

I’m moving on the series of Myo posts

  1. Getting started, #Windows10 configuration
  2. Starting as a developer with some C++ basic code
  3. MyoSharp a C# SDK implementation for the Myo armband

Today I’m going to talk about one of the coolest features in the armband: the gyroscope sensor. Maybe the best way to do this, is to show how easy is to control a 3D Cube using our arm in a natural way.

gif 4

Note: I need to add some noise removal to the sample so the cube rotation is more natural.

Myo SDK provides a couple of elements which defines the orientation and location of our arm, this is know as Spatial Data. Spatial data informs the application about the orientation and movement of the user’s arm. The Myo SDK provides two kinds of spatial data:

  • An orientation represents which way the Myo armband is pointed. In the SDK this orientation is provided as a quaternion that can be converted to other representations, like a rotation matrix or Euler angles.
  • An acceleration vector represents the acceleration the Myo armband is undergoing at any given time. The SDK provides this as a three-dimensional vector.

For this sample, I’ll use the X, Y and Z values from the gyroscope and I’ll apply this value to a camera focused on a 3D Cube.

When the Main WPF Window is Loaded is time to

  • create a Transform3DGroup to support the rotation in the 3 axis
  • initialize the code to interact with the Myo armband and subscribe for the Gyroscope value changes

image

And then we get to the interactive section. Get the Gyroscope data and apply some camera rotation to the cube. In the Camera Rotation we need to manage some cross thread calling, because all the information we receive from the Myo is on a different thread.

image

Greetings @ Toronto

El Bruno

References

#Myo – #MyoSharp un SDK en C# para el brazalete Myo

¡ Hola!

Es tiempo de C#! El SDK de Myo es bueno, pero seamos honestos: C++ es algo complicado para pruebas y si no estás familiarizado con el entorno es bastante lento para comenzar. Por otra parte, C# presenta una manera mucho más fácil para pruebas rápidas. Asi que, después de una búsqueda rápida he encontrado un par de SDK para Myo para .Net Framework y MyoSharp merece una revisión.

Nota: Myo también nos permite escribir script simples que son ideales ideal para llevar a cabo algunas acciones básicas. Voy a escribir algo sobre esto más adelante.

MyoSharp es una biblioteca de clases de framework .net 2.0, así que es muy fácil utilizarla en nuestras aplicaciones. La página principal en GitHub tiene una muy buena introducción al proyecto, así que iré directamente a una aplicación de consola de C#.

He descargado y compilado el código fuente completo de MyoSharp para este ejemplo. Luego he creado una aplicación de consola y agregado este este proyecto a la solución principal.

Una vez hemos creado el proyecto, necesitamos agregar una referencia a la MyoSharp.dll y copiar el myo*.dll específico de la plataforma en el mismo directorio que la aplicación. Para este ejemplo trabajaré en x86 blanco.

image

Ahora en el método Main() debemos añadir algo de código para interactuar con el brazalete. El siguiente código muestra la creación del channel y el hub, que son los componentes principales del SDK de Myo (líneas 12 y 15).

image

Ahora es momento de suscribirse a los eventos de cambio de pose, bloqueo y desbloqueo sólo cuando el Channel detecta un dispositivo Myo. En cada uno de estos eventos, lo que haré será mostrar alguna información en la aplicación de consola.

image

Y eso es todo, ahora podemos lanzar la aplicación y ver cómo mostrar nuestro plantea en la aplicación de consola.

2016 07 20 MyoSharp

En el siguiente post voy intentar profundizar un poco en el ejemplo.

Saludos @ Toronto

El Bruno

References

GitHub MyoSharp

#Myo – #MyoSharp a C# SDK implementation for the Myo armband

Hi !

It’s C# time! Myo SDK is good one, but let’s be honest C++ is kind of complicated for quick starts; and C# is a much easiest way to do this. After a quick search I’ve found a couple of .Net SDK implementation and MyoSharp deserves a review.

Note: Myo also support a simple script support which is great to perform some basic actions. I’ll write something about this later.

MyoSharp is a .Net 2.0 framework class library, so it’s very easy to include this in our apps. The main page in GitHub has a very nice introduction to the project, so I’ll go directly to a C# Console App.

I’ve downloaded and build the complete source code of MyoSharp for this sample. Then I’ve created a Console App and add this project to the main solution.

Once we have created the project, we need to add a reference to the MyoSharp.dll and copy the platform specific myo*.dll into the same directory as your application. For this sample I’ll work in x86 target.

image

Now in the main method we must add some code to interact with Myo. The following code displays the creation of the channel and the hub, which are the main components of the myo SDK (lines 12 and 15).

image

Then we subscribe to the events for pose changed, lock and unlock only when the hub detects a Myo device. In each one of this events, I’ll display some information in the Console app.

image

And that’s it, we can now launch the app and see how it display our poses in the console app.

2016 07 20 MyoSharp

In the next post I’ll go deeper into a more advanced sample.

Greetings @ Toronto

El Bruno

References

GitHub MyoSharp

#Myo – Primeros pasos con un poco de C++

¡ Hola!

Hoy es momento de ver un poco más sobre el funcionamiento interno del brazalete Myo. Este device lee señales eléctricas de su brazo y con la información de las mismas, puede detectar hasta 5 poses distintas: wave left, wave right, spread fingers, fist, y pinch. También tiene un par de sensores de movimiento, un buzzer y un led multicolor. Con esta base solo tenemos que pensar en que podemos usar el device.

 

image

El brazalete recopilar y comparte toda esta información a través de Bluetooth. Esto es genial, ya que nos permite conectar el brazalete con casi cualquier dispositivo. Como ejemplo de usabilidad, vienen apps para controlar VLC, Spotify; incluso drones o los juguetes de Sphero. Y, por supuesto, como funciona en base a gestos, podemos controlar una presentación de PowerPoint!

Para empezar a usar todas estas características como desarrollador, es necesario activar el Developer Mode. En la aplicación de preferencias de Myo, hay que acceder a la sección General y tenemos que habilitar la 5ta opción.

image

Ahora podemos acceder a la consola de debug que es algo que usaremos más adelante en nuestro proceso de desarrollo.

imageT

Y llega el momento de descargar el SDK. Hasta el día de hoy tenemos SDKs para

  • Windows
  • Mac
  • iOS
  • Android

Si quieres mas información sobre el SDK puedes dedicarle 10 minutos de lectura (here). En Windows, MYO proporciona una DLL única para ambas arquitecturas, denominadas myo32.dll y myo64.dll

image

El núcleo del SDK es una biblioteca: libmyo. Esta biblioteca permite que las aplicaciones interactuar con el brazalete de Myo. Todas las funciones en libmyo se exponen a través de una API en C++.

image

El SDK proporciona datos a la aplicación en forma de eventos. Hay tres categorías de eventos: eventos espaciales (correspondientes a datos espaciales de un brazalete mio), eventos gestuales (correspondiente a datos gestuales un brazalete mio) y eventos auxiliares.

Hay un montón de información sobre el funcionamiento interno del SDK, pero vamos a ver algo de código. En la carpeta SDK podemos encontrar los archivos de encabezado y hpp de C++ para ser utilizado en una aplicación de C++ de ejemplo..

image

En una aplicación de consola, tenemos que heredar de DeviceListener tener acceso a las características del brazalete de Myo.

image

Utilizando el Myo Hub, podemos acceder a la información de EMG, la orientación / información y también a la posición. En el ejemplo, una vez que se detecta una pose podemos notificar al usuario acerca de esta pose o realizar acciones adicionales.

image

Un buen punto de partida son los 3 proyectos de muestra de C++ incluidos en el SDK en la carpeta samples. Sin embargo sé que no muchos están acostumbrados a C++ por lo que en mi próximo post voy a cambiar a C# gracias a una de las muchas implementaciones de Myo.Net disponibles.

Saludos @ Toronto

El Bruno

References

#Myo – Starting as a developer with some C++ basic code

Hi !

Let’s get a little deeper into the Myo armband. Myo read electrical signs from your arm and it can detect up to 5 distinct poses: wave left, wave right, spread fingers, fist, and pinch. It also has a couple of motion sensors, so with all this information you can start to think into possibilities.

image

The armband collect and share all this information via Bluetooth, so nowadays we can use the Myo armband connected to almost, any device. Out of the box there are samples to control VLC, Spotify, or even drones or the Sphero toys. And, of course, because this is gesture based, you have a PowerPoint controller !

In order to start to use all these features as a Developer, we need to enable the Developer Mode. In the Myo preferences app, go to the General section and we need to enable the 5th option.

image

Now we can access the debug console which is something we can use later in our development process.

imageT

So, now is time to download the SDK. Until today Myo have released SDKs for

  • Windows
  • Mac
  • iOS
  • Android

The SDK details are a 10 minutes read (here). On Windows, MYO provides a single DLL for both architectures, named myo32.dll and myo64.dll

image

The core of the SDK is a library: libmyo. This library allows applications to interact with the Myo armband. All functionality in libmyo is exposed through a plain C API.

image

The SDK provides data to the application in the form of events. There are three categories of events: spatial events(corresponding to spatial data from a Myo armband), gestural events (corresponding to gestural data a Myo armband) and auxiliary events.

There is plenty of information about the internals of the SDK, but let’s go to see some code. In the SDK folder we can find the C++ header and hpp files to be used in a sample C++ app. So let’s go for this.

image

In a console app, we need to inherit from DeviceListener to have access to the Myo armband features.

image

Using the Myo hub, we can access to the EMG information, the orientation / position information and also the poses information. In example, once a pose is detected we can notify the user about this pose or take additional actions.

image

A nice starting point are the 3 C++ sample projects included in the SDK. However I know that not so many people are used to C++ so in my next post I’ll switch to C# thanks to one of the many Myo.Net implementations available.

 

Greetings @ Toronto

El Bruno

References