Implementando o Rastreamento de Esqueleto com Kinect v1 em C#

autor

João Pedro Santana Silva Santos | Dec. 21, 2023

Explicação de como desenvolver um sistema de skeleton tracking utilizando o SDK do Kinect for windows.

artigo

Introdução

Neste artigo, vamos introduzir o desenvolvimento de uma aplicação WPF feita em C# com o objetivo de tracionar as articulações do usuário. Explorar todo o potencial do sensor Kinect v1 (1414) com seu emissor IR e seu sensor IR (Infra Red). Ao longo do tutorial, vamos aprender a programar uma aplicação WPF no Visual Studio, utilizando a linguagem de programação C# e para personalizar o layout utilizaremos a linguagem de marcação XAML.

O Kinect é um dispositivo de sensor de movimento desenvolvido pela Microsoft, originalmente lançado em 2010 para o Xbox 360. Ele usa uma combinação de câmera RGB, sensor de profundidade e microfones para permitir que os usuários interajam com jogos e aplicativos por meio de movimentos corporais e comandos de voz, sem a necessidade de um controle físico.
Para mais informações sobre o Kinect, consulte aqui.

Imagem de exemplo

Sensor de movimento Kinect (Inside)

Fluxo do esqueleto do usuário

O SDK do Kinect for Windows permite o rastreamento de vinte articulações, denominadas Joints, cada uma com coordenadas tridimensionais (X, Y e Z) representando pontos cruciais no corpo do usuário.
Estas articulações, embora não possuam associação física com ossos reais, são interligadas, formando o esqueleto do usuário.

Imagem de exemplo

Representação das articulações

A partir desse esqueleto, surgem dois tipos de movimentos: Poses/Posturas e Gestos.
As poses referem-se a uma posição estática mantida por um período, como a sinalização de um assistente de arbitragem no futebol indicando uma infração.
Os gestos, por outro lado, representam movimentos propriamente ditos, como um aceno de despedida, apesar de sua aparente simplicidade, interpretar esses movimentos em uma aplicação baseada em movimentos é uma tarefa complexa.

A detecção precisa dos movimentos, independentemente do tamanho ou estrutura do usuário, apresenta desafios, as variações nas dimensões corporais das pessoas, tanto na estatura quanto no tamanho dos ossos, exigem métodos adaptativos de detecção, além disso, ao lidar com gestos, há um desafio adicional: a precisão temporal.
A detecção e resposta aos gestos devem ocorrer em tempo hábil para proporcionar uma experiência de usuário fluida e eficaz, constituindo-se em um desafio significativo na implementação de aplicativos baseados em movimento.

Pré-requisitos

Configurando o Ambiente

Nesta seção, abordaremos como instalar o SDK e configurar o ambiente de desenvolvimento do Visual Studio.

Passo 1: Instalando o SDK Kinect 1.8

Para começar, você precisa instalar o SDK do Kinect para ter seu ambiente de desenvolvimento, estarei ensinando somente para Windows.

Visite Kinect for Windows SDK, Clique em download e após isso o arquivo .exe vai começar a ser instalado, espere até finalizar a instalação e execute o arquivo.

Ao finalizar a instalação irá recomendar a instalação do toolkit para desenvolvimento, ao clicar no link será redirecionado para o site da Microsoft, instale o toolkit e execute o programa.

Passo 2: Testando o Kinect

Com o adaptador conectado no kinect plugue o sensor em uma porta USB e clique em Windows + X, e vá até “Gerenciador de Dispositivos”, e procure por “kinect devices”

Imagem de exemplo

Adptador do Kinect

Após conferir se o Kinect foi reconhecido pelo Notebook/PC, abra o kinect toolkit e execute algum sample em C# para ver se está tudo nos conformes.

Imagem de exemplo

Kinect Toolkit

Imagem de exemplo

Sample básico de tracionamento de esqueleto

Se estiver tudo certo o Kinect vai conseguir reconhecer os pontos das articulações do usuário que ficar na frente do sensor, você pode testar outros samples, ler documentações e personalizar do seu jeito!
`

Passo 3: Instalando o Visual Studio

Visite Visual Studio Microsoft, Após entrar no site arraste para baixo e vá até a parte onde tem o visual studio e escolha a versão “community 2022” (ou a versão community mais recente), depois de clicar será direcionado para uma nova página e o download vai começar automaticamente.
Execute o arquivo e espere até aparecer esta tela:

Imagem de exemplo

Selecione todos os pacotes que o .NET estiver incluso, espere instalar todas as dependências e assim que acabar o visual studio estará pronto para o desenvolvimento da nossa aplicação

Nota: Pode aparecer alguns avisos falando para substituir a versão do .NET do 4.5 para a versão que possui na sua máquina, apenas clique em trocar e estará tudo nos conformes.

Passo 4: Instalando o Git

Acesse esse site Git e clique no botão “Download for Windows”

Imagem de exemplo

Escolha a opção de 64 bits: 64-bit Git for Windows Setup
Após seguir essas instruções, vamos colocar a mão na massa.

Primeiros Passos

Clique nesse link, vai redirecionar para um repositório do github onde possui o código fonte do nosso projeto, vamos acessar a branch “projeto base”, vamos fazer isso para o projeto já vim com as dependências necessárias para a sua execução.

Imagem de exemplo

Branch do projeto base

Aperte o botão “Code” e copie o link da nossa branch (https://github.com/J3ipy/Skeleton-Tracking-LABIC.git), vá para a área de trabalho da sua máquina e aperte o botão direito do mouse e clique em “Novo” e crie uma nova pasta na área de trabalho da sua máquina, coloque o nome dela de “Skeleton-tracking”, abra a sua nova pasta e aperte o botão direito dentro da nova pasta, selecione “git bash”, digite:

git clone https://github.com/J3ipy/Kinect-project-LABIC.git

e aperte Enter, pronto o projeto base já vai está na sua máquina.
Clique duas vezes no arquivo .sln (Modificar essa img):

Imagem de exemplo

O arquivo será aberto no visual studio, vai aparecer alguns erros por falta de alguns códigos, vamos dar continuidade ao desenvolvimento do nosso projeto, clique com o botão direito no “EsqueletoUsuario” e aperte em “Adicionar” e clique em “Nova pasta” e dê o nome de “Auxiliar”.

Imagem de exemplo

Vamos criar duas novas classes, uma chamada “EsqueletoUsuarioAuxiliar” e “Extensao”.

Imagem de exemplo

Criando uma nova classe

Imagem de exemplo

Classe Criada

Desenvolvendo o código das classes

Como ambas as classes possuem muitas linhas de código, optei por deixar os códigos das classes em anexo. Seguindo o passo a passo, ao final vai estar tudo compilando de forma adequada, se surgir algum erro pode recorrer ao código fonte que se encontra ao final deste artigo.

Personalizando o frame em XAML

No projeto base o frame já vem pronto e com todas as configurações necessárias, se quiser mexer no layout e alterar a estética, deve ir no “MainWindow.xaml”. Todo o frame é baseado na linguagem de marcação XAML que possuem muitas propriedades e semelhanças com o HTML.
Para modificar algo envolvendo o design do frame, vá ate o código em anexo e veja como o documento XAML é estruturado.
Para mais informações de como alterar o design de páginas feitas com XAML acesse esse link.

Testando o nosso projeto WPF

Vamos plugar o Kinect juntamente com o seu adptador para PC

Imagem de exemplo

Kinect e o adaptador

Vamos na nossa aplicação WPF e vamos apertar o botão de “Iniciar”, após isso vai abrir um novo frame onde vai aparecer a visão da câmera RGB do Kinect, levantamos e habilitamos o modo “esqueleto do usuário” no checkbox do frame, tudo funcionando perfeitamente!

Aplicação Skeleton Tracking

Considerações Finais

Agora que desenvolvemos e configuramos uma aplicação WPF para usar alguns dos sensores do Kinect, você pode dar uma olhada em um livro que estarei anexando aqui. e se surgir algum erro de compilação ou código, o código fonte da aplicação vai estar anexado nesse link, a aplicação está funcionando totalmente, então caso tenha problemas analise o código fonte e compare com o seu.
Por fim, neste artigo exploramos uma das diversas funcionalidades do sensor de movimento kinect, existe uma enorme gama de aplicações e projetos utilizando o kinect for windows.

Referências

Mr C. “Kinect Hacking” [Playlist]. Youtube. Disponível em: https://youtube.com/playlist?list=PLGaMtGsYUu_zgRu5JfU6fv30HUwKLql1R&si=rjt_2nWbSCS3GSck. Acesso em: 19 de dezembro de 2023.

OPENKINECT. Disponível em: https://openkinect.org/wiki/Main_Page/pt-br. Acesso em: 19 de dezembro de 2023.

Github. LIBFREENECT. Disponível em: https://github.com/OpenKinect/libfreenect. Acesso em: 19 de dezembro de 2023.

Free PDF Books. Kinect Books. Disponível em: https://freepdf-books.com/?s=kinect Acesso em: 19 de dezembro de 2023.

Github. Código Fonte. Disponível em: https://github.com/J3ipy/Skeleton-Tracking-LABIC. Acesso em: 19 de dezembro de 2023.

NeverNudeTobiasFunke. “Skeletal Tracking Fundamentals (Kinect Windows SDK)” . Youtube. Disponível em: https://youtu.be/V0K-TKH_gzQ?si=6rObKiaO0DT7lz2a. Acesso em: 20 de dezembro de 2023.