• Nenhum resultado encontrado

2 Enquadramento teórico

2.5 Tecnologias de reconhecimento 3D para o Kinect

2.5.1 Microsoft Kinect for Windows SDK

O Microsoft Kinect for Windows SDK (Software Development Kit) é um software de desenvolvimento de aplicações que permite aos programadores aceder e processar a informação recolhida pelo Kinect, permitindo assim a construção de interfaces controladas por gestos. O

Kinect, aquando da sua conceptualização e desenvolvimento inicial, não foi pensado para

funcionar na plataforma Windows. O Kinect foi desenvolvido para funcionar na consola de jogos Xbox. Existem muitas diferenças ao nível do suporte e implementação de software entre a plataforma Xbox e o Windows. Assim, de forma a ser possível aceder aos dados recolhidos pelo sensor, foi necessário adaptar um conjunto de aspetos relacionados com o software de forma a permitir aceder às informações no computador (Microsoft, 2011b).

O Microsoft Kinect SDK para o Windows permite aceder às informações recolhidas pelo sensor, como as imagens a cores, imagens em profundidade e áudio. A Figura 16 mostra a arquitetura do funcionamento do Kinect no Windows.

“The kit makes it easier for the academic research and enthusiast communities to create rich experiences by using Kinect for Xbox 360 sensor technology on a PC that is running the Windows 7 operating system. This beta SDK is provided by Microsoft Research to enable researchers and programmer enthusiasts to explore the development of natural user interfaces.” (Microsoft,

2011).

Os requisitos de hardware para o funcionamento do Microsoft Kinect SDK num computador são os seguintes:

• Processador 32 bit (x86) ou 64 bit (x64) • Processador Dual-core 2.66-GHz ou superior • USB 2.0 bus

• 2 GB RAM

Kinect para a Xbox 360

Requisitos de software:

Microsoft Visual Studio 2010

.NET Framework 4.0

No caso de se pretender aceder ao funcionamento do Microsoft Kinect SDK no computador é necessário conectar-lhe o sensor via USB. A Microsoft disponibiliza a informação relativa ao

Skeletal Viewer (visualização da estrutura em “esqueleto” atribuída ao corpo de cada utilizador,

formada através da imagem proveniente do sensor) sendo necessária a instalação dos seguintes componentes:

Microsoft DirectX SDK – a versão mais recente

Runtime for Microsoft DirectX 9

O Microsoft Kinect SDK possibilita desenvolver as aplicações com as linguagens de programação C++, C# ou Visual Basic. De momento, o licenciamento do SDK é limitado a aplicações não comerciais.

2.5.2 OpenNI (Open Natural Interaction)

OpenNI ou Open Natural Interaction (Figura 17) é uma framework de desenvolvimento de

aplicações controladas por gestos. Esta framework caracteriza-se essencialmente por ser multiplataforma (Windows, Linux e Mac OS X) e tem suporte para a programação em varias

32

linguagens de programação. A framework foi tornada pública em Novembro de 2010. O seu principal objetivo foi o de melhorar a compatibilidade e interoperabilidade de dispositivos de interface natural, aplicações e middleware42, ou seja, a disponibilização de uma API (Application

Programming Interface) para permitir o desenvolvimento de aplicações que façam recurso a voz e

gestos para a interação. A forma como esta framework está estruturada e desenvolvida permite ser independente do sensor que está a ser utilizado (“Open NI User Guide,” n.d.).

Figura 17 – Logótipo OpenNI (“OpenNI,” n.d.).

A Figura 18 apresenta a estrutura em camadas da framework OpenNI. A camada dos sensores (Hardware Device Sensor) representa os dispositivos de hardware necessários para a captura de áudio e vídeo. A camada correspondente à interface OpenNI, representa a OpenNI e as interfaces de comunicação entre os sensores e as interfaces de middleware que analisam os dados dos sensores. A última camada representada no esquema é a de aplicação e representa o software que permite desenvolver aplicações controladas por gestos e voz para a interação.

Figura 18 – Estrutura da framework OpenNI (“Open NI User Guide,” n.d.).

42 Middleware - Software essencialmente utilizado permitir a troca de informações e dados entre programas

de diferentes protocolos de comunicação, plataformas ou sistemas operativos. O middleware permite criar uma ponte de troca de dados entre dois softwares distintos.

A framework open source OpenNI permite escrever aplicações para interação natural. Esta

framework está escrita originalmente em C++ mas agora também permite programar em C#. A API

serve como uma camada intermediária entre dispositivos de baixo nível (câmaras, sensores, microfones e etc.) e soluções middleware de alto nível (algoritmos de visão por computador, por exemplo).

Os drivers fornecidos pela OpenNI permitem aceder às informações provenientes dos sensores de áudio, vídeo e profundidade do sensor do Microsoft Kinect.

“OpenNI supplies a set of APIs to be implemented by the sensor

devices, and a set of APIs to be implemented by the middleware components. By breaking the dependency between the sensor and the middleware, OpenNI’s API enables applications to be written and ported with no additional effort to operate on top of different middleware modules (“write once, deploy everywhere”).

“The OpenNI standard API enables natural-interaction application developers to track real-life (3D) scenes by utilizing data types that are calculated from the input of a sensor (for example, representation of a full body, representation of a hand location, an array of the pixels in a depth map and so on). Applications can be written regardless of the sensor or middleware providers” (“Open

NI User Guide,” n.d.).

2.5.3 OpenKinect

O OpenKinect é uma comunidade aberta que desenvolve bibliotecas que permitem aceder aos dados recolhidos pelo sensor de movimento da Microsoft. O OpenKinect foi um resultado do concurso realizado pela empresa Adafruit, onde Héctor Martin apresentou a sua solução para aceder aos dados do Kinect através do computador. A Figura 19 mostra o logótipo da comunidade de desenvolvimento.

Figura 19 – Logótipo do OpenKinect (OpenKinect, 2011).

Ao vencer o concurso, Héctor continuou o desenvolvimento destas bibliotecas às quais chamou

34

Github43,o que permitiu à comunidade consultar, partilhar e colaborar no desenvolvimento (Giles, 2010).

“OpenKinect is an open community of people interested in making use of the amazing Xbox Kinect hardware with our PCs and other devices. We are working on free, open source libraries that will enable the Kinect to be used with Windows, Linux, and Mac.”

(OpenKinect, 2011).

Esta framework está em contínuo desenvolvimento e sempre que possível novas funcionalidades são adicionadas por forma a criar uma framework mais estável e completa.

2.5.4 ZigFu

O ZigFu é um software de apoio ao desenvolvimento de aplicações controladas por gestos com

base em sensores de movimento, como os sensores PrimeSense, Microsoft Kinect para a Xbox e

Asus Xtion Sensor.

Este pacote de drivers permite instalar vários componentes necessários para a recolha da informação proveniente do sensor. O pacote de instalação (tal como disponível em 18 de Janeiro de 2012) inclui a última versão dos seguintes componentes: OpenNI, NITE, Sensor, SensorKinect. Esta última versão do NITE permite o desenvolvimento de aplicações sem ser necessário fazer calibração do utilizador, ou seja, o utilizador não necessita de estar numa pose específica para o sensor fazer a deteção.

O pacote ZigFu inclui os componentes identificados nas seguintes versões:

• NITE: 1.5.2.21 • OpenNI: 1.5.2.23

Sensor: 5.1.0.41 (Asus Xtion)

SensorKinect: 5.1.0.25 (Kinect)

No site do ZigFu44 está disponível um conjunto de pacotes de acordo com as diferentes necessidades de desenvolvimento dos utilizadores. Se o desenvolvimento for orientado para a

Web, o pacote de instalação ZigJS (Client-side JavaScript) permite desenvolver aplicações para a Web controladas por gestos. O pacote de instalação ZigUnity3D permite instalar os componentes

43

Website da comunidade Github https://github.com/ , consultado a 7/09/2012

44

necessários para o desenvolvimento de aplicações controladas por gestos no Unity3D. Esta nova versão do pacote de instalação funciona simultaneamente com a framework OpenNI e com o

Kinect SDK. Está, ainda, disponível um pacote direcionado para aplicações desenvolvidas com o software adobe flash, o ZigFlash.

O pacote relativo ao Unity3D contém um conjunto de scripts que podem ser anexados aos componentes 3D presentes no Unity3D, criando assim a ligação entre os dados provenientes do sensor e o modelo 3D. Através da comunicação Sensor – Pacote ZigFu – Unity3D é possível efetuar a captura de movimentos do utilizador que será representada no avatar.