O kinect é uma plataforma para interação com jogos usando a interface natural (movimentos do corpo) do xbox 360, porém ele não é um dispositivo para uso somente do xbox, sendo possivel utiliza-los em outros disposivos como em um computador, neste post ensinarei como configura-lo para o uso em um computador com o sistema operacional ubuntu.
A um tempo também fizemos um posto sobre como configura-lo para o uso na pandaboard com android seu link está aqui: http://www2.decom.ufop.br/imobilis/?p=2568.
Utilizaremos 4 bibliotecas para conseguir utilizar variadas funções do kinect, vamos falar um pouco sobre elas:
OpenKinect: E uma biblioteca para programação em alto nível no kinect, ela permite utilizar as funções básicas das câmeras, tanto normal como de profundidade, porem com menos liberdade que a biblioteca OpenNI, porem ela, diferente das outras, permite controlar o motor do kinect com facilidade, podendo mover a câmera ou mudar a cor dos leds. Porem ainda não conseguimos utilizá-la no android.
OpenNI: É um SDK (Software Development Kit) livre usado para desenvolvimento de bibliotecas, middilware e aplicações para desenvolvimento em sensoriamento 3D, com grande suporte para desenvolvimento de middleware para interface natural com o kinect e aplicações de todos os tipos.
PrimeSenSe Sensor: O OpenNi e uma SDK para diversos sensores e câmeras, porem ele não faz a comunicação direta com o dispositivo, esta parte fica para os módulos de sensores, no nosso caso vamos utilizar o KinectSensor feito pelo PrimeSense.
Nite: Esta e uma middleware com base no OpenNI, ele fornece aplicações eficientes para controles baseados nos movimentos da mão ou no corpo, também fornece um eficiente algoritmo para reconhecimento do esqueleto do usuário (formando pelo ponto de articulação). Porém ele não tem compatibilidade com o android.
Agora com o conhecimento das bibliotecas vamos por a mão na massa e começar a configurar-la para nosso uso, então vamos aos trabalhos!
Primeiramente necessitamos de instalar os pacotes de pré-requisitos para instalando dos software, para isso execute o comando e o java:
>$ sudo apt-get install cmake freeglut3-dev pkg-config build-essential libxmu-dev libxi-dev libusb-1.0-0-dev python
>$ sudo add-apt-repository “deb http://archive.canonical.com/ lucid partner”
>$ sudo apt-get update
>$ sudo apt-get install sun-java6-jdk
Logo apos vamos criar uma pasta para trabalharmos e baixar o pacote de instalação do openKinect (libFreenect):
>$ mkdir kinect
>$ git clone https://github.com/OpenKinect/libfreenect
Instalando o OpenKinect:
>$ cd libfreenect
>$mkdir build
>$cd build
>$cmake ..
>$make
>$sudo make install
>$sudo ldconfig /usr/local/lib64/
Com Libfreenect instalando agora vamos dar permissão para seu uso:
>$ sudo chmod a+rw /dev/bus/usb//
>$ sudo chmod a+rw /dev/bus/usb//
>$ lsusb | grep Xbox
Caso tudo ocorreu bem apos a ultimo comando teremos a seguinte reposta:
libusb couldn’t open USB device /dev/bus/usb/001/006: Permission denied.libusb requires write access to USB device nodes. |
Agora e so rodar! Para isso faça o comando:
>$ sudo glview
ou caso o comando glview não exista
>$ sudo freenect-glview
Você vera as imagens capturadas pela câmera do kinect, no lado direito a imagem normal no esquerdo, apertando o botão ‘f’, é possível mudar o formado de visualização, sendo normal, câmera de profundidade e câmera infravermelho, e possível controlar os motores do kinect também, para isso aperte ‘w’ e ‘s’ para fazer-lo subir e descer e ‘0-6’ para mudar as cores do led.
O OpenKinect tem sua vantagem em seu controle com o motor, porem ele não é o melhor pacote para programarmos no kinect para isto e melhor utilizarmos o OpenNI juntamente com o Nite, vamos configura-lo.
Inicialmente volte para a pasta kinect (criada para este tutorial), e vamos baixar os pacotes de intalação do OpenNI 1.5.4.0, apersar desde não ser o pacote mais novo estranhamente este foi o unico pacote que não deu error ao compilar o SensorKinect, portanto para baixar-lo vamos fazer o comando:
>$ wget http://www.openni.org/wp-content/uploads/2012/12/OpenNI-Bin-Dev-Linux-x64-v1.5.4.0.tar.zip
Apos isto vamos desconpactar o pacote baixado, o qu pode ser feito manualmente ou pelo comando:
>$ unzip OpenNI-Bin-Dev-Linux-x64-v1.5.4.0.tar.zip
>$ tar -vxjpf OpenNI-Bin-Dev-Linux-x64-v1.5.4.0.tar.bz2
Agora vamos instalá-lo o OpenNi, em outras versões e nescessario uma serie de comandos mas nestas so temos quer rodar o script ./instal.sh podemos fazer isto estrando na pasta e digitando comando:
>$ sudo ./install.sh
Com isso temos o OpenNi instalado, porem ele não comunica diretamente com kinect e apenas uma estrutura de trabalho de geral para diferentes dispositivos e sensores, para conseguirmos a comunicação teremos que instalar o SensorKinect. Para baixe o pacote do kinectSensor através do seguinte comando:
>$ clone https://github.com/avin2/SensorKinect
>$ cd SensorKinect
E para instalar-lo faça os comandos abaixo :
>$ cd Platform/Linux/CreateRedist
>$ chmod +x RedistMaker
>$ sudo ./RedistMaker
>$ cd ../Redist/Sensor-Bin-Linux-[xxx] (where [xxx] is your architecture and this particular OpenNI >$ release)
>$ sudo chmod +x install.sh
>$ sudo ./install.sh
Com isso temos o Kinect instalado e pronto para uso, o que pode ser testado através dos exemplos de presentes do OpenNi, encontrados na pasta (OpenNI/Platform/Linux-x86/Bin/Release) neles existem vários exemplos básicos, para testá-los rodar o scripts.
Um dos exemplos desde exemplos e o Sample-NiSimpleViewer que demonstra a visão da câmera de profundidade de Kinect, a imagem abaixo demonstra sua saida:
Porem para termos uma experiência com kinect mais semelhante a que temos no xbox vamos instalar também o pacote Nite, com ele temos um mapeamento do corpo dos usuário retornando um esqueleto similar ao que visto no xbox, sua instalação e simples bastas fazer um download através do site (http://www.openni.org/files/nite/), é rodar o scrip de instalação com o comando a: sudo ./instal.sh.
Pronto! Agora temos um ambiente completo de desenvolvimento para kinect, com a instalação do Nite temos uma número mais de exemplos e com uma complexidade maior, podemos encontra-los dentro da pasta (Nite/cd Samples/Bin/x64-Release), la temos exemplos que vão desde do rastreamento de pessoas com demonstração do esqueleto (linhas que traçam os braços, pernas, pescoço e tronco das 8pessoas mostrando seus movimentos), até demonstrações do poder da interface natural podendo mover imagens com a mão.
Bom, em primeiro lugar parabéns pelo post, em dois dias foi o único que encontrei que funcionou à primeira, e ainda por cima em português 🙂
Eu sou novo no assunto, e estou a iniciar um projeto que prevê a implementação de algumas funcionalidades do kinect, num computador de arquitetura ARM (Odroid U3), no sistema operativo Linux (Xubunto 13.10). Gostava de o desenvolver em c#, e atualmente estou a testar o monodevelop.
Qual a melhor forma de o fazer?
Qual o melhor wrapper? Como faço a instalação e começo a construir as minhas aplicações kinect?
Obrigado