Desenvolvendo para o Microsoft Kinect. Parte 2 – Cont. Introdução

Bom, vamos continuar com a nossa série de artigos sobre o desenvolvimento para o Kinect, espero que estejam gostando do que estamos produzindo. Nessa segunda parte vamos continuar com a introdução, mas isso não quer dizer que não veremos nada interessante. Na parte 3 já iniciaremos o desenvolvimento, então aguardem atentos =). E conforme solicitado, estou escrevendo essa segunda parte um pouco mais “fora” dos moldes acadêmicos, para promover uma leitura menos cansativa.

Vocês sabiam que existe um Kinect para Xbox e outro para Windows? É interessante conhecermos um pouco das diferenças entre o Kinect para Xbox e o Kinect para Windows.

De acordo com a Microsoft, o sensor Kinect para Windows foi totalmente testado sobre o sistema operacional Windows, para a plataforma ele ainda traz um recurso adicional chamado “Near Mode” (recurso para capturar movimentos a curtas distancias) e melhoramentos no seu algoritmo de rastreamento esquelético, API (Interface para programação de aplicativos) aprimorada para desenvolvimento e uma conexão USB sem a necessidade de adquirir o adaptador.


O sensor para Windows foi concebido especificamente para ser utilizado com os computadores, e inclui um cabo USB encurtado. O Kinect para Xbox 360 foi construído e testado apenas com o Xbox 360, deixando de lado as demais plataformas, por isso o dispositivo não está licenciado para uso comercial, suporte, ou garantia, quando utilizado em qualquer outra plataforma.

A Microsoft possui ainda uma grande equipe de engenheiros que se dedica a aprimorar e promover uma melhoria contínua do hardware e do software associado ao Kinect para Windows, e está empenhada em fornecer acesso contínuo ao grande investimento no rastreamento humano e reconhecimento de voz, fornecendo atualmente o kit de ferramentas de software para desenvolvimento 1.8.

Certo, mas como funciona sobre o Windows? Quais as APIs? A resposta disso segue na arquitetura lógica do Kinect.

Para entender melhor o funcionamento do dispositivo, a figura a seguir contém uma ilustração da arquitetura lógica e um pouco das características de seus componentes.

 


  1. Hardware Kinect – os componentes de hardware, incluindo o Kinect e o conector USB no qual o sensor está ligado ao computador.
  2. Drivers do Kinect – são instalados no processo de instalação do SDK (Software Development Kit ou Kit de desenvolvimento de aplicativos).
  3. O microfone do Kinect permanece como um dispositivo de áudio em modo kernel (núcleo) que pode ser acessado por meio de APIs de áudio do Windows.
  4. Funções de enumeração do dispositivo que permitem que um aplicativo use mais de um Kinect.
  5. Componentes de Áudio e Vídeo – Rastreamento do esqueleto, áudio, imagens de vídeo e profundidade.
  6. DirectX Media Object (DMO) – Faz a formação de feixe e da localização da fonte de áudio.
  7. APIs do Windows – SDK do Windows e do Microsoft Speech.

 

Tá certo, são vários recursos que parecem consumir muitos recursos do PC. De fato, consomem muito processamento, por isso, verifique se o seu PC possui os requisitos mínimos para tal, claro que hoje é difícil encontrar PCs sendo vendidos com menos de 4GB de RAM e processadores single-core, mas ainda existem muitos desses por ai.

Os requisitos mínimos do sistema exigem uma configuração mínima de hardware e software para ser executado, pois o processamento de cada aplicação consome uma quantidade de recursos. Não diferente, o SDK fornecido pela Microsoft também exige recursos mínimos de hardware e software para ser executado:

  • Sistemas operacionais
    • Windows 7 / Windows 8 (x86/x64) ou superior.
    • Obs: A Microsoft não fornece suporte para o Linux, mas existem vários tutorias sobre o KinectHack (geralmente em ingles), para rodar no Linux.
  • Hardware
    • Processador Dual-core de 2,66 GHz ou superior
    • Barramento USB 2,0 dedicado ao Kinect
    • 2 GB de RAM
    • Placa de vídeo compatível com DirectX 9.0c
    • Sensor Microsoft Kinect
  • Software
    • Microsoft Visual Studio 2010 Express ou outra edição do Visual Studio 2010 ou superior.
    • .NET Framework 4 ou superior.

Tá, tá, tá, mas Artur, você está falando muito e mostrando pouco… Então o que acham de ficar com os seguintes vídeos de possibilidades de desenvolvimento / aplicações já desenvolvidas para o Kinect? Espero que gostem. Obs: Deixarei apenas os links para que abram todos, realmente vale a pena, acreditem, são projetos incríveis que vocês podem nunca ter imaginado. Existem muitos outros que eu infelizmente não consegui mais localizar, enfim, se localizar eu virei aqui postar para vocês.

 

http://www.youtube.com/watch?v=FCw38l3rHW4

http://vimeo.com/channels/nui/17358021

http://vimeo.com/45417241

http://vimeo.com/36892768

http://www.youtube.com/watch?v=rQVycUmeqB4

http://www.youtube.com/watch?v=Mr71jrkzWq8

http://www.youtube.com/watch?v=3MnDAWlhegw

http://www.youtube.com/watch?v=chHI30_stQg

http://www.youtube.com/watch?v=b2kqRv1WdEM

http://www.youtube.com/watch?v=1Oom_5YTZQU

http://www.youtube.com/watch?v=KBHgRcMPaYI

http://www.youtube.com/watch?v=re1EatGRV0w

http://www.youtube.com/watch?v=r5-zZDSsgFg

http://www.youtube.com/watch?v=KG1qq8pRtPY

E no Xbox One? J

http://www.youtube.com/watch?v=3frThD9A6ew

 

Espero que tenham gostado, e até a próxima =D.

Desenvolvimento para o Microsoft Kinect – Parte 1. Introdução

 

Olá, este é o primeiro de muitos artigos sobre o desenvolvimento para o dispositivo Microsoft Kinect, nele vamos abordar recursos, inovação, códigos, e tudo relacionado ao dispositivo para todos aqueles que desejam adquirir conhecimento, aprender a desenvolver e utilizar o aparelho no âmbito do desenvolvimento de software. E o que podemos falar sobre o dispositivo assim, de primeira mão? Simplesmente sensacional! Não percam essa série de artigos preparados com muito carinho e dedicação ao desenvolvedores.

 

Vamos conhecer um pouco da história das interfaces e do dispositivo?

 

Segundo Kuniavsky (2010) a interface é o elemento que carrega a bagagem histórica mais importante em um projeto de software, ele define o design de interface como um modo único de funcionalidade, que fará com que o projeto tenha sentido e funcionalidade, podendo ser esta uma única forma de apresentação de um software, aplicativo, web site ou outros, definindo a forma única como este dispositivo opera. Ao mesmo tempo é a organização imediata e direta dos elementos dispostos na tela, geralmente um conjunto estreitamente interligados, que visam um determinado fluxo de tarefa (uma determinada ação que o usuário realizará no software) de forma consistente.

A História das interfaces “digitais” inicia na Interface por Linha de Comando.

De acordo com Jhonson (2012) a Command Line Interface (CLI) ou interface por linha de comando, surgiu em 1975. Ela foi considerada a primeira interface a operar sobre um sistema operacional, o que facilitava a interação do usuário com o computador.

Ele ainda afirma que estes dispositivos fossem capazes de realizar apenas uma operação por vez e necessitavam de apenas um dispositivo de entrada, sendo este o teclado. Apesar de toda a limitação a CLI se mostrou uma grande evolução no segmento da computação, devido a ela surgiram novos sistemas operacionais como o DOS e o Unix por exemplo.

 


Figura 1: Command Line Interface

Fonte: (ArtGraphic, 2005)

Interface Gráfica de Usuários

As interfaces gráficas de usuários GUI (Graphical User Interfaces), de acordo com Oliveira (2010), surgiram em 1984, apresentadas ao mundo por Stev Jobs e a Apple, que são as mais utilizadas até aos dias atuais. O Conceito foi ousado para a época, reunindo processamento de textos e imagens organizados por janelas.

 


Figura 2: Windows 8 Graphical User Interface

Fonte: (Extremetech, 2012)

Interface Natural de Usuários

Shaer et all (2001) afirma que as interfaces naturais de usuários NUI (Natural User Interfaces), surgiram inicialmente em 1984, logo após a apresentação do computador da Apple, que traz um novo contexto de interação com o computador. Nela o ponto de maior enfoque é a forma de interação com os dispositivos.

Nas interações apresentadas nos itens anteriores, a entrada de dados erra precisa, sendo basicamente processada por um teclado, mouse, scanner, ou qualquer outro dispositivo de entrada, já na NUI o aplicativo deve ser preparado para responder a ações naturais, onde a vós e o corpo prevalecem como os principais meios de utilização dos softwares.


Figura 3: Natural User Interface

Fonte: (Blondeshearch, 2012)

 

Para entender melhor essa evolução podemos analisar a figura 4 abaixo.

 


Figura 4: Evolução das Interfaces

Fonte: (3BP, 2011)

E o Kinect?

De acordo com o Microsoft
News Center (2010) o Kinect, lançado em Novembro de 2010 e originalmente conhecido como Projeto Natal, é um dispositivo com sensor de movimento desenvolvido pela Microsoft para o console de videogame Xbox 360 que visa permitir aos jogadores uma interação com os jogos sem a necessidade de um joystick, através de uma interface natural do usuário (NUI), inovando assim no campo da jogabilidade, competindo com o Wii Remote Plus da Nintendo e o Playstation Move da Sony.

LaBelle (2011) define que o Kinect é um dispositivo que vai muito além das tentativas anteriores de criar um controle baseado na captura de movimentos, usando a captura de vídeo, áudio e sensores de profundidade o Kinect é capaz de detectar movimentos, identificar rostos, reconhecer vós e sons e o discurso de jogadores, o que proporciona aos mesmos a utilização dos seus próprios corpos como controles. Ao contrário dos demais dispositivos do tipo, ele não requer um acessório com acelerômetro ou dispositivo com o qual o jogador precise manter contato físico direto para operar.

Na figura 5 abaixo, podemos identificar o dispositivo Microsoft Kinect.


Figura 5: Hardware do Microsoft Kinect

Fonte: (IFIXITI, 2011)

De acordo com o Kinect for Windows Team (2012), o sensor de profundidade consiste em um projetor de laser infravermelho combinado com um sensor monocromático que captura vídeo infravermelho sob qualquer condição de iluminação do ambiente e o transforma em dados de profundidade, como ilustrado na Figura 6.

A faixa de detecção do sensor de profundidade é ajustável e o software é capaz de calibrar automaticamente o sensor baseando na jogabilidade e no ambiente físico do jogador, ou seja, ele é capaz de se calibrar automaticamente ao seu corpo e a estrutura física (largura, altura, intensidade de luz e distancia) sobre a qual o mesmo está inserido.

 


Figura 6: Diagrama do sensor de profundidade do Kinect

Fonte: (Primesense Natural Interaction, 2010)

Bom, para o primeiro post de introdução vamos cortar por aqui, na próxima quinta-feira (10/10/2013) sairá a segunda parte da série de artigos sobre o desenvolvimento para o Microsoft Kinect. Nessa primeira parte, como dito, é apenas uma introdução e serve apenas para conhecer o dispositivo e o seu funcionamento.


Espero que tenham gostado. Abraços e até a próxima. :

 


 

Política de Privacidade – Rádio Hunter

Política de Privacidade

A Rádio Hunter informa que essa aplicação não coleta/utiliza dados de seus usuários. A política de privacidade tem como objetivo deixar claro o compromisso da Rádio Hunter em garantir a proteção dos dados solicitados.

Não fornecemos suas informações pessoais para terceiros sem a sua autorização e não divulgamos informações que possam identificar os usuários. Somente dados genéricos e agregados, referentes a quantidade de pessoas que acessam as áreas dos nossos sites, podem ser divulgados para anunciantes e parceiros comerciais.

Os sites da Rádio Hunter coletam informações sobre os usuários de duas maneiras: durante a navegação pelos sites não coletamos informações armazenadas nos cookies do navegador de seu computador ou outro dispositivo (por exemplo, para saber quantas pessoas entraram em nossas páginas, quais as seções mais visitadas e quanto tempo foi gasto em cada uma delas, armazenando as preferências do usuário, melhorando os resultados das pesquisas e a seleção de anúncios) e por meio de cadastro preenchido pelo próprio usuário.

Utilizamos essas informações para melhorar constantemente o conteúdo dos nossos sites e veicular propagandas que sejam de interesse dos nossos usuários. Essas regras sobre privacidade se aplicam apenas ao site da Rádio Hunter. Elas não valem para sites que indicamos por meio de links. Você deve se informar sobre a política de cada um deles antes de fornecer qualquer tipo de informações.

Política de Privacidade – Rádio Aquarela FM

Política de Privacidade

A Aquarela FM informa que essa aplicação não coleta/utiliza dados de seus usuários. A política de privacidade tem como objetivo deixar claro o compromisso da Aquarela FM em garantir a proteção dos dados solicitados.

Não fornecemos suas informações pessoais para terceiros sem a sua autorização e não divulgamos informações que possam identificar os usuários. Somente dados genéricos e agregados, referentes a quantidade de pessoas que acessam as áreas dos nossos sites, podem ser divulgados para anunciantes e parceiros comerciais.

Os sites da Aquarela FM coletam informações sobre os usuários de duas maneiras: durante a navegação pelos sites não coletamos informações armazenadas nos cookies do navegador de seu computador ou outro dispositivo (por exemplo, para saber quantas pessoas entraram em nossas páginas, quais as seções mais visitadas e quanto tempo foi gasto em cada uma delas, armazenando as preferências do usuário, melhorando os resultados das pesquisas e a seleção de anúncios) e por meio de cadastro preenchido pelo próprio usuário.

Utilizamos essas informações para melhorar constantemente o conteúdo dos nossos sites e veicular propagandas que sejam de interesse dos nossos usuários. Essas regras sobre privacidade se aplicam apenas ao site da Aquarela FM. Elas não valem para sites que indicamos por meio de links. Você deve se informar sobre a política de cada um deles antes de fornecer qualquer tipo de informações.

Usando Tuples em C#–retornando vários parâmetros de um método

Olá pessoal,

Uma das coisas interessantes da linguagem C# é a quantidade de opções que temos para resolver o problemas do nosso dia a dia. Um caso interessante e bem comum é termos a necessidade de passar vários parâmetros para um método e às vezes também retornar vários parâmetros, e é bem provável que você se utilize de artifícios como parâmetros de saída (out) ou referência (ref).

Mas existe algo bem mais interessante, que são as tuplas (Tuples). Na prática uma tuple é um array de vários tipos de dados, que podem ser passados ou retornados por um método.

Vamos ao exemplo:

1. Crie um projeto Console no Visual Studio (no meu caso estou usando o 2010, mas você pode usar o 2008 também):

2. Vamos criar um método que retorne vários parâmetros e mostrar o use de Tuple:

class Program{
    static void Main(string[] args)
{
var retorno = RetornaVariosParametros();
Console.WriteLine(“Valor inteiro: {0}”,retorno.Item1);
Console.WriteLine(“Valor String: {0}”, retorno.Item2);
Console.WriteLine(“Valor Double: {0}”, retorno.Item3);
}
    public static Tuple<int,string,double> RetornaVariosParametros()
{
return Tuple.Create(10, “Tuple”, 100.50);
}
}

Veja como é simples: você usa uma Tuple<> identificando os tipos de dados que ela conterá e depois acessa cada valor através dos Items.

O exemplo é bem simples, mas demonstra a facilidade e a versatilidade das tuplas.

Mais referências sobre Tuple em http://msdn.microsoft.com/en-us/library/system.tuple.aspx

Um abraço e até a próxima.

Visual Studio Debugger Canvas

Olá,

Foi lançado a algum tempo um recurso muito legal para o Visual Studio 2010 Ultimate, ainda desconhecido por muitos desenvolvedores, o Debugger Canvas, que é uma maneira mais visual de fazer debug de suas aplicações.

Normalmente, ao fazer debug de uma aplicação, você executa e vai percorrendo linha a linha, entrando e saindo de rotinas dentro do código e depois de algum tempo, você acaba com diversas janelas abertas no Visual Studio.

Agora imagine que ao fazer o debug, os diferentes códigos fontes vão se abrindo e se relacionando, formando um caminho percorrido pelo fluxo de execução, mais visual, não serial muito bom ? Pois é exatamente isto que o Debugger Canvas faz.

Para começar, vamos instalar o debugger canvas, que é um plugin para o Visual Studio Ultimate e pode ser baixado aqui.

Agora abra um projeto você está acostumado a fazer debug, no meu caso, vou abrir o projeto TailspinToys, que é um projeto exemplo da Microsoft. Vamos executá-lo (F5) e ver o que acontece com o debug.

Primeiro vamos abrir o CartController.cs e colocar um break point no método AddCart()

imageimage

Agora vamos executar o programa pressionando F5. Após a aplicação abrir no browser, clique em “Model Airplanes” e depois em  em “View Plane”. Em seguida clique em “Add to Cart”.

Neste ponto o código irá parar no local onde fizemos o break point, mas com uma grande diferença no visual:

image

Veja que agora estamos no Debugger Canvas, no codigo do controller. Em cima na barra da janela está a árvore de execução, ou seja, por onde o código passou até chegar aqui e existe também um botão no canto direito da tela que mostrar as variáveis locais para o método:

image

Vamos executar o código pressionando F11 para entrar em algum outro método e logo em seguida temos esta outra janela:

image

Pressionando mais algumas vezes o F11 temos o seguinte:

image

Fazendo um pequeno ajuste visual temos o seguinte:

image

Aqui vemos a linha de execução do programa até onde paramos, ou seja, se continuarmos a execução teremos um mapa visual de todo o fluxo de execução da nossa aplicação, e o que ganhamos com isto ? Facilidade para entender como o código funciona.

Uma última coisa é que quando você instala o Debugger Canvas, ele fica como padrão para o seu debug e caso você queira ativar/desativar, basta abrir o menu Debug/Debugger Canvas/Options and Settings de desmarcar a propriedade abaixo:

image

Espero que vocês tenham gostado do potencial deste novo recurso para o Visual Studio e isto mostra mais uma vez que a ferramenta está evoluindo e tem muito mais a evoluir.

Abraços e até a próxima.

Cursos Gratuitos – Microsoft Virtual Academy

Olá, boa noite caros leitores.
Então, primeira postagem… Queria trazer algo muito interessante já de início.
Conhece o Microsoft Virtual Academy? Não? Então está na hora de conhecer!
O Microsoft Virtual Academy oferece cursos gratuitos nas tecnologias de desenvolvimento da Microsoft, que eu considero particularmente as mais completas e poderosas do mercado!
Segue o link para acesso aos cursos:
Microsoft Virtual Academy WebSite
Todos os roteiros e/ou cursos disponíveis são gratuitos e, inclusive alguns são preparatórios para os exames de certificações Microsoft, vamos falar um pouco mais sobre esses exames em uma próxima oportunidade.
 Existem hoje 31 Roteiros em PT-BR, com muitos vídeos, tutoriais e artigos, com vários “passo a passo”, se você está interessando em obter qualificações gratuitas essa é uma grande oportunidade, mas vale ressaltar que tudo dependerá do empenho e dedicação do aluno.
Boa Sorte à todos vocês! 😀