UPDATE: controlando a intensidade da luz com o Kinect http://wp.me/p1pSXR-2I
Estou sumido do blog hein (como se alguem sentisse falta, kkkk). Tive alguns problemas de saude (enxaqueca + stress) que me afastaram um pouco dos meus projetos mas agora estou retomando as coisas, muito mais relax.
E dando continuidade ao meu projeto de automação domestica, eu acabei de terminar a primeira versão (mais cheia de bugs que o windows millenium) do programa que liga e desliga a luz do meu escritório usando o Kinect.
Segue um video da bagaça funcionando (mira la camiseta no video… VAI CURINTIA!!!):
Em poucas palavras, o que eu fiz:
- Desenhei a planta do meu apto em um mundo 3D*.
- Capturei o plano de profundidade do kinect
- Alinhei o plano na posição correta (fazendo os devidos ajustes de abertura de câmera do kinect)
- Adicionei uma entidade que representa a lampada no mundo 3D*.
- Obtive os esqueletos das pessoas “trackeadas” pelo Kinect
- Estendi alguns vetores do braço do esqueleto
- Fiz um controle pra quando esses vetores atingissem a lampada, que gerasse um evento (só se apontar por 400ms)
- Com o evento de seleção da lampada, usei meu Framework de automação para enviar os comandos corretos para a unidade de processamento junto ao interruptor, via radio.
I see a computer display as a window on Alice’s Wonderland in which a programmer can depict either objects that obey well-known natural laws or purely imaginary objects that follow laws he has written into his programIvan Sutherland, Scientific American, 1970 ( 1970 O.o )
Fiz isso mais por fazer, como um desafio, pq ainda não me parece a interface ideal, prática, para controlar a casa. Acho que a interface ideal é a voz, mais mexer com voz, principalmente português, não é facil (se alguem quiser fazer, o pessoal da faculdade federal do Pará tem material sobre o assunto de voz – http://www.laps.ufpa.br/falabrasil/ ). Porem, se fosse robusto, talvez ajudassem pessoas com alguma deficiencia ou dificuldade de locomoção a fazer simples tarefas, como ligar uma luz, uma tv, de forma mais descomplicada, sem se mover até o interruptor por exemplo.
Se você quiser ver os outros progressos do projetinho, tem mais dois tópicos recheados de videos sobre algumas funcionalidades do sistema:
- Controlando a casa do celular android (inclusive por voz) – http://wp.me/p1pSXR-1j
- Ligando Luz e Controle Universal através do JAVA e da WEB – http://wp.me/p1pSXR-1f
Abaixo algumas fotenhas do desenvolvimento do programa:

Primeiro teste com o Kinect + Java. Utilizei como exemplo o código do Arnies Tracker -> http://fivedots.coe.psu.ac.th/~ad/jg/nui15/

Testes iniciais. O plano de profundidade do Kinect não esta ajustado pela abertura de câmera (veja a diferença nas próximas fotos) e o esqueleto não estava alinhado com o plano/comodo.

Veja o plano ajustado pelo angulo de abertura da camera. Se você reparar na imagem anterior, vai ver que os cantos estão deformados. Nessa foto, a luz já estava representada por esse quadrado flutuante.

Meus esqueletinho Wolverine. Aumentei os bracinhos para ele alcançar a luz. (na verdade, usei varias retas para aumentar as chances de atingir a luz, mas elas são retas infinitas.. só estão renderizadas para exemplificar o funcionamento)

Só uma palavra para descrever isso. GAMBI! Esse é o modulo que controla a luz do escritório. O que tem dentro é segredo comercial (começa com AR e termina com DUINO)
Se alguém tiver alguma duvida sobre o negócio, pode postar um comentário que minha secretária selecionará as melhores duvidas, pois esse é um blog muito acessado (cof cof) e eu ganho muito dinheiro com ele (vejam os anuncios invisiveis!!! mensagem subliminar manolos)!
PS: Eu tenho um Kinect, mas não tenho um Xbox. Nada contra, é que como detentor de uma coleção da Nintendo, tenho que manter minha honra. Alias, próximo bost vai ser sobre a coleciones (como prometido, post sobre a coleção da Nintendo -> http://wp.me/p1pSXR-2M) .
Porra, Fábio! A camiseta do curíntia estragou o vídeo! AHuHAuHA
Mas achei bem massa… vc tinha que fazer para aumentar e diminuir o volume da tv… aí sim ia ser fmz
Fala Bozoh! Valeu!!! Po, a camiseta do curíntia é a peça fundamental, sem ela o esquema não funciona. KKKK
Sobre a TV, acho que esse fim de semana eu termino um esquema de mudar canal e volume pela TV com o Kinect.
Parabéns pelo projeto , muito legal. Eu tô começando a utilizar o Arduino, também estou querendo fazer um projeto de automação, tenho algumas dúvidas, você fará um grande favor, se puder me ajudar. A primeira dúvida que tenho é como controlar uma lâmpada com o Arduino mantendo os interruptores funcionando, quero poder ligar a lâmpada pelo interruptor e desligá-la pelo Arduino, ou vice-versa, é possível ? Outra dúvida é quanto a comunicação sem fio o que você utilizou, ZigBee ?
Fala Rafael, tudo bem?
Acho que para você manter os interruptores, vc tem que tratar os interruptores no arduino, ler seus estados e fazer a lógica a contento. o problema eh se o arduino queimar. sobre a rede, não uso o zigbee, uso um placa de radio da Nordic.
Espero ter ajudado
Fábio
olá fábio,
gostei muito do seu trabalho , bem legal!
Mas tem a possibilidade de fazer comunicação serial kinect+ Arduíno neste projeto?
Olha, você precisa de um computador ai no meio, para fazer o meio de campo entre o arduino e o Kinect. Existem vários motivos para isso, ao meu ver (mesmo que houvesse a possibilidade de ligar o kinect direto no arduino): a quantidade de dados e a velocidade que o kinect manda para o pc as informações da câmera e de profundidade; a complexidade dos algoritmos para inferir e reconstruir os esqueletos das pessoas; etc.
Eu comprei um Rapsberry PI para tentar fazer esse meio de campo, mas preciso ver se existe um driver de kinect para Linux e que rode em arquitetura ARM.
Hi,
I don’t speek your language so I hope you understand English 🙂
I really like your way of using the kinect with this.
I am looking at using z-wave for my home automation but I was looking for a good person detector, that is why I found the kinect and now you and your project.
Is it possible for you to share your code? I am no programmer but I would like to see how it works.
thanks in advance,
Aaron
Hi,
I’m really pleased that you liked my project!
I don’t share my code very often by many reasons. But there is no secret about what I’ve done there. I’ve used the example from http://fivedots.coe.psu.ac.th/~ad/jg/nui15/ to detect my skeleton. Then, I’ve syncronized the skeleton and the depth information in a representation of my house in 3D. Finally, I traced a ray from my arms that selects things in the 3D space, such as my TV, Lights, etc. Once selected, I just sent the commands to the selected device throught my home automation framework, built using arduino and radio network.
Hope I’ve helped.
Fábio
Hi Fabio,
Yes you have helped and I understand that you don’t want to share your hard work.
I am going to have a look and see how far I can come.
Thanks,
Aaron
Boa noite fabio, gostaria de saber qual é seu kinect, estou querendo fazer minha monografia usando kinect para acionar equipamentos, no caso tive procurando para comprar porem tem varios tipos, sensor microsoft,kinect adventures.
Grato
Allan
Opa! Olha, eu usei o kinect para xbox. Parece que tem um agora para windows tb, que teve algumas melhorias inclusive na detecção a curtas distancias. Porem, não usei o SDK da Microsoft, usei o driver feito pela comunidade e, na época, só existia o Kinect para Xbox. O meu Kinect veio com o jogo Kinect Adventures, que está mofando aqui pq não tenho xbox ;-). Espero ter ajudado, Fábio
Valew ajudou sim,e o computador precisa ter um bom desempenho? Estou com um notebook positivo (sim +) horroroso ai estou fazendo uma lista do que comprar,acha que devo comprar outro para rodar os programas e fazer o controle?
Acho que seu note é ok. Faz o seguinte, ve se consegue um kinect emprestado com algum amigo, usa algum programa de teste e vê se dá certo.
Boa noite fabio,comecei a comprar as coisas e pensar na minha monografia como havia dito, quanto a comunicaçao,como que o sinal é enviado para a placa de radio da Nordic. No caso eu conheço zigbee e para eu conseguir fazer a comunicaçao de envio de dados eu precisaria de 2 zigbees um para mandar o pacote de informaçao e o q recebe.No caso dessa placa de radio nao sei como funciona pode dar uma ajuda?Essa placa é facil de mexer?
AA outra pergunta,esse mundo 3D roda em windows?
E ai Fabio.
Curti dmais o video.
Quero saber mais detalhes do projeto, achei muito interessante e estou estudando o assunto. Estou muito perdido! Não sei por onde começar.
Pode me dar uma força???
Primeiro, você precisa quebrar o problema em partes e atacar uma a uma. No fim, você junta tudo o que aprendeu em um projeto único.
Qual seu principal interesse? Mexer com o Kinect? Eletrônica? Computação Gráfica?
Priorizando as áreas, você pode atacar uma a uma. A mais simples dessas três é Eletrônica com Arduino. Você pode começar ligando e desligando um led. Depois, ligando e desligando um relay (que funciona como se fosse uma tomada, de um lado o interruptor funciona com 5V, mas liga 110v). Com isso, você já consegue ligar uma lâmpada pelo arduino. Próximo passo, fazer como que o computador se comunique com o Arduino através de comunicação serial, para o computador ligar e desligar a luz. Nesse ponto, você já pode acoplar o que você quiser ao seu sistema, um servidor web para ligar e desligar a luz pela internet, um sistema com kinect para dizer se liga e desliga, um servidor que escuta comandos vindo do celular, a aplicação que você quiser.
Fechou a eletrônica, passe a brincar com o Kinect. E assim por diante.
Bom dia Fábio, estou com um projeto parecido, poderia me explicar um pouco mais sobre como fez esse “mundo 3D” e qual programa usou? Desde já obrigado!
“mundo 3D” é uma expressão que usei para exemplificar o uso de computação gráfica 3D para visualizar problemas computacionais (ou jogos, ou filmes, etc). Quanto ao programa que usei, na verdade, eu programei a criação dos polígonos 3D que representam a planta de casa. Eu usei a API Opengl, que é uma biblioteca que produz gráficos acelerados em 3D junto as placas gráficas. O legal do Opengl é que ele tem uma API em javascript, a webGL. Programar em javascript é bem mais simples (e consequentemente + rápido) do que programar em java e C++.Fiz meu site http://www.heycontrol.me usando webGL. Se você estiver na faculdade, eu sugeriria que você puxasse a disciplina de “Computação Gráfica”, vai esclarecer bastante coisa. [ ]s .