Como ganhar dinheiro na Internet
Como ganhar dinheiro na Internet

terça-feira, 30 de novembro de 2010

Um guia para hackear o Kinect


Os desenvolvedores do MIT Media Lab não perderam tempo e desenvolveram um projeto chamado DepthJS para aproveitar os recursos do Kinect. Trata-se de um software que permite controlar a navegação com gestos captados pelos sensores do Kinect. O projeto ainda está no início. Segundo um dos criadores, Aaron Zinman, o projeto ainda sofrerá modificações no sentido de ajustar os comandos e torná-lo fácil de instalar. Veja como foi a aventura para fazê-lo funcionar.

O Ambiente

Hardware
AMD Athlon(tm) 64 X2 Dual Core Processor 4200+
3GB DDR2 800MHz
Disco de 250 GB SATA II
Placa de vídeo ATI Radeon 4850
Microsoft Kinect
Software
Ubuntu 10.10 x64
DepthJS

Preparação do ambiente

Os comandos a seguir devem ser executados em terminal. Para abrí-lo vá até o menu Aplicativos, depois vá até Acessórios e por fim Terminal.

1) Instalação das dependências. Execute o comando:
$ sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev freeglut3-dev libxmu-dev libxi-dev libhighgui2.1 libhighgui-dev libcvaux2.1 libcvaux-dev libcv2.1 libcv-dev libcv2.1 libcv-dev libzmq0 libzmq-dev python-opencv

2) O segundo passo é baixar a biblioteca open source do Kinect para Linux, a libfreecnet, com o comando (assumindo que o gerenciador git já esteja instalado):
$ git clone https://github.com/OpenKinect/libfreenect.git

3) Em seguida, vamos compilar a biblioteca, com os comandos:
$ cd libfreenect && mkdir build && cd build
$ sudo cmake ..
$ make && sudo make install

Pode ser necessário incluir o caminho (path) para a bilbioteca como variável de ambiente, com o comando:
$ export LD_LIBRARY_PATH=$PATH_LD_LIBRARY:/usr/local/lib64/

4) Finalmente vamos baixar o DepthJS que faz toda a mágica acontecer, com o comando:
$ git clone https://github.com/doug/depthjs.git

Instalando e rodando o ambiente

O DepthJS funciona baseado em três componentes. O primeiro é uma interface com o hardware escrito em C++, utilizando a biblioteca OpenCV e a libfreenect. Ele captura as coordenadas da sua mão (quando você a posiciona na frente do sensor). Os movimentos capturados são então passados para um intermediário escrito em Python. Este intermediário é apenas um conector web, criado com o projeto Tornado. A terceira parte é um plugin do Google Chrome, que recebe as coordenadas e faz as ações no navegador.

1) Volte ao terminal e vá até o diretório depthjs onde está o driver:
$ cd depthjs/cv/

2) Neste diretório tive que alterar o caminho para a biblioteca libfreenect, na segunda linha do arquivo Makefile, para “-I/usr/local/include/libfreenect/”. Para gerar o arquivo executável, rode o comando:
$ make

3) Agora como root, execute o binário gerado, com o comando:
# ./ocv_freenect

Uma janela com o título “blob” deve aparecer. Esta janela mostra o que o Kinect está identificando. Posicione a mão até ficar totalmente preta. Esta é a posição correta de uso.


4) Em outra aba do terminal (Shift+Ctrl+T), vamos rodar o arquivo backend.py, com o comando:
$ cd depthjs/backend/ && python backend.py

5) Agora no Chrome vamos instalar o plugin. Vá até o menu Ferramentas, Extensões e clique no botão “Carregar extensão em desenvolvimento..”. Aponte para o diretório /depthjs/chrome-extension/ e clique em Abrir.
Pronto, agora no plugin basta selecionar a opção “Connect to Kinect” e testar as opções que aparecem abaixo da opção de conectar. Para que os comandos funcionem, é preciso tomar cuidado com a distância e você deve fazer movimentos suaves, não rápidos demais.

Navegando pelo site com a palma da mão. Fechar a mão simula um clique do mouse.
Navegando pelas abas. Ao movimentar a mão para os lados troca de aba.
Os detalhes de como funcionam os comandos e quem são os desenvolvedores, você confere no vídeo abaixo:
Os desenvolvedores do MIT Media Lab que criaram este projeto são: Aaron Zinman, Doug Fritz, Roy Shilkrot e Greg Elliott.

Nenhum comentário: