Kinect in LabVIEW

Saudações,

como sempre de costume, tenho mais um projeto da faculdade, mas esse é bem especial pois pode ser meu TCC. Bem, no segundo semestre de 2011 fiz um projeto do Braço Robótico Digitorr (http://www.youtube.com/watch?v=Fum_yxm7v9I), ele é controlado via Arduino e PC, no video podemos observar que quando coloco um barril de óleo  nos quadradinhos frontal, automaticamente o braço se move e pega o barril e o deposita nos quadrados ao lado. Todo essa transação é visualizada e controlada no computador, cada barril que é colocado na "mesa" é salvo data/hora/local no banco de dados. 

O projeto foi um sucesso, todos gostaram. No primeiro semestre de 2012, eu e 2 amigos tivemos a proposta de desenvolver um projeto com Kinect para RA ou Reconhecimento de Gestos. Então tive a idéia de usar meu projeto anterior, bom, falar e pensar é fácil, o difícil é fazer. Projeto já definido, comecei a pesquisar como programar o kinect, qual SDK? Qual Linguagem? Qual SO? Não foi nada fácil, tive que aprender C#, que no entanto só tinha conhecimento básico em C, Java e VB, depois de aprender um pouco da linguagem C# comecei a programar para o kinect, sua API não é nada fácil, tive que usar a versão beta porque não foi fácil achar material na internet sobre a programação. Altos e baixos, depois de alguns meses o projeto ficou pronto, funcionando perfeitamente, lindo. Fomos apresentar no SIT Uniube (Simpósio de Inovações Tecnológicas ), e por incrível que pareça, nossa banca ficou lotada, todo mundo ficou impressionado, ninguém tinha visto uma coisa assim. O sucesso foi tão grande que apresentamos nosso artigo em várias Universidades e workshop's. E ainda estamos apresentando. Video feito no dia do SIT, bem no final da noite: http://www.youtube.com/watch?v=34eT4T5KX2k&feature=plcp

Blocos Programação Kinect LabVIEW
O kinect é uma ferramenta incrível, ele possui 2 câmeras uma RGB e outra infravermelho, a câmera infravermelha trabalha em conjunto com um emissor infra vermelho. O emissor emite pontos infravermelhos no ambiente que é captado pela câmera, a intensidade dos pontos capturados indicam a profundidade do ambiente, transformando esses dados em uma imagem de 3Dimensões. Possui também vários microfones para anular ruídos do ambiente. Não vou dar detalhes sobre o projeto que estou em mente, mas já comecei a criar blocos em LabVIEW para programar o Kinect, esses códigos foram distribuídos na internet de forma muito complexas, todos os blocos que fiz foram modificações dos originais, modificações para melhorar o entendimento e utilizar os recursos que eu preciso que não tinham. Esses são alguns blocos que já comecei a fazer.

Código para Teste
Quero usar o LabVIEW porque estou cansado de utilizar códigos contextuais, para fazer a função ou método para ler a câmera RGB preciso no mínimo 10 linhas de código C#, em labVIEW eu utilizo 2 blocos, um para leitura e outro para exibir a imagem. Não que o labVIEW seja mais fácil, cada bloco possui uma série de códigos dentro tão complexos quanto em C#, os blocos são como classes em linguagens orientada a objeto. Alem disso, o labVIEW me da suporte a conexão serial, banco de dados,  mult-loop (Threads) com maior velocidade, PID, GUI, Gauges, etc. Esse é um código que fiz para testar uma parte dos blocos que criei.


A imagem acima foi o resultado que obtive com os blocos que criei, a primeira imagem é o Frame em 3D, eu posso rotacionar a tela para ver as dimensões, observando, podemos ver meu braço e a mão, no fundo minha guitarra encima da cama. A segunda tela é a tela de cores para a profundidade, quanto mais longe o kinect mais branco fica, quanto mais perto mais escuro fica, isso é muito interessante, pois podemos calcular a distancia do kinect a um objeto pela cor. A terceira tela é a imagem da câmera RGB. 

Logo mais, posto atualizações.!


Um comentário: