Top Banner
Universidade de Brasília - UnB Faculdade UnB Gama - FGA Engenharia de Software Sistema de Auxílio Fisioterapêutico: Uma proposta de produto para reabilitação Motora Autor: Ricardo Gonçalves Teixeira Orientadora: Profa. Dra. Carla Silva Rocha Aguiar Brasília, DF 2017
84

Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

Dec 16, 2018

Download

Documents

dokhanh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

Universidade de Brasília - UnB

Faculdade UnB Gama - FGA

Engenharia de Software

Sistema de Auxílio Fisioterapêutico: Umaproposta de produto para reabilitação Motora

Autor: Ricardo Gonçalves Teixeira

Orientadora: Profa. Dra. Carla Silva Rocha Aguiar

Brasília, DF

2017

Page 2: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável
Page 3: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

Ricardo Gonçalves Teixeira

Sistema de Auxílio Fisioterapêutico: Uma proposta de

produto para reabilitação Motora

Monografia submetida ao curso de graduaçãoem (Engenharia de Software) da Universi-dade de Brasília, como requisito parcial paraobtenção do Título de Bacharel em (Enge-nharia de Software).

Universidade de Brasília - UnB

Faculdade UnB Gama - FGA

Orientador: Profa. Dra. Carla Silva Rocha Aguiar

Brasília, DF

2017

Page 4: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

Ricardo Gonçalves Teixeira

Sistema de Auxílio Fisioterapêutico: Uma proposta deproduto para reabilitação Motora

Monografia submetida ao curso de graduaçãoem (Engenharia de Software) da Universi-dade de Brasília, como requisito parcial paraobtenção do Título de Bacharel em (Enge-nharia de Software).

Trabalho aprovado. Brasília, DF, 01 de julho de 2017:

Profa. Dra. Carla Silva Rocha Aguiar

Orientadora

Prof. Dr. Fábio Macedo Mendes

Convidado

Prof. Roberto de Souza Baptista

Convidado

Brasília, DF2017

Page 5: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

Agradecimentos

Agradeço primeiramente a minha família por todo apoio e compreensão durante

toda a jornada até aqui. E todos os meus amigos por sempre me apoiarem nas minhas

decisões e torcerem por mim.

Agradeço a minha orientadora, Carla Silva Rocha Aguiar, por me ajudar e me

guiar com toda a paciência e ajuda, durante não só o desenvolvimento deste trabalho,

quanto no curso como um todo. Ao Roberto de Souza Baptista pela inspiração ao tema.

E aos demais professores do curso de Engenharia de Software.

Page 6: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável
Page 7: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

Resumo

Dificuldades e limitações são encontradas por indivíduos que apresentam deficiências mo-

toras, físicas e também a doenças sistêmicas, articulares, neurológicas e musculares, se-

quelas a traumas e acidentes. Desse modo, repercutem na estrutura e função do corpo

do indivíduo, de forma global, além de influenciar na atividade e participação do mesmo

frente a sociedade. Para diminuir ou até sanar tais problemas é necessário uma reabili-

tação motora. Para uma reabilitação eficiente necessita-se de uma avaliação eficaz para

identificar os déficits encontrado nas disfunções do indivíduo e assim proporcionar um tra-

tamento apropriado. Por conseguinte, a medida da amplitude de movimento é um critério

determinante utilizado na avaliação e no acompanhamento fisioterapêutico. O objetivo

deste trabalho é a proposta de um produto de software que auxilie fisioterapeutas a pre-

escrever programas de reabilitação motora, e permita os pacientes executar tais programas

sem supervisão física.

Palavras-chaves: reabilitação motora, reabilitação remota, jogo sério.

Page 8: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável
Page 9: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

Abstract

Difficulties and limitations are encountered by individuals with motor, physical disabilities

and also to systemic diseases, articular, neurological and muscular, sequelae to trauma

and accidents. Thus have repercussions on the structure and also on the individual’s body

function, globally, as well as to influence the activity and participation of the same in the

society. To decrease or to solve such problems a motor rehabilitation is necessary. For

an effective rehabilitation an effective assessment is needed to identify the deficits found

in the individual’s dysfunction and thus provide appropriate treatment. Therefore, the

measure range of motion is a decisive criterion in the physical therapy monitoring. The

objective of this work is the proposal of a software product that helps physiotherapists

to prescribe motor rehabilitation programs, and allows patients to execute such programs

Without physical supervision.

Key-words: motor rehabilitation, remote rehabilitation, serious game.

Page 10: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável
Page 11: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

Lista de ilustrações

Figura 1 – Sentar-para-levantar-para-sentar. Fonte: (BAPTISTA, 2016). . . . . . . 25

Figura 2 – Reprodução do movimento. Fonte: (BAPTISTA, 2016). . . . . . . . . . 28

Figura 3 – Movimento Correto. Fonte: (BAPTISTA, 2016). . . . . . . . . . . . . . 28

Figura 4 – Movimento Incorreto. Fonte: (BAPTISTA, 2016). . . . . . . . . . . . . 29

Figura 5 – Dados das articulações . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Figura 6 – Fluxo de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Figura 7 – Esqueleto Kinect. Fonte: (MICROSOFT, 2016). . . . . . . . . . . . . . 40

Figura 8 – Diagrama de classe referente ao sistema . . . . . . . . . . . . . . . . . 48

Figura 9 – Diagrama de sequência referente ao uso do fisioterapeuta . . . . . . . . 48

Figura 10 – Diagrama de sequência referente ao uso do paciente . . . . . . . . . . . 49

Figura 11 – Gerenciador de Dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . 52

Figura 12 – Menu do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Figura 13 – Gravar movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Figura 14 – Gravar movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Figura 15 – Ler Arquivo de Movimento . . . . . . . . . . . . . . . . . . . . . . . . 56

Figura 16 – Praticar Movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Figura 17 – Praticar Movimento com esqueleto para auxílio ao desenvolvimento . . 57

Figura 18 – Movimento com presença de falhas . . . . . . . . . . . . . . . . . . . . 61

Figura 19 – Movimento correto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Figura 20 – Instabilidade com o usário sentando de lado em uma cadeira . . . . . . 63

Figura 21 – Instabilidade com o usuário sentando de frente em uma cadeira . . . . 64

Figura 22 – Pouca fidelidade com o real movimento . . . . . . . . . . . . . . . . . . 65

Figura 23 – Movimento sendo exercitado de forma incorreta propositalmente para haver correção do

Figura 24 – Movimento sendo exercitado de forma correta para não haver correção do sistema. 67

Figura 25 – Movimento sendo exercitado de forma incorreta propositalmente para haver correção do

Figura 26 – Movimento sendo exercitado de forma correta para não haver correção do sistema. 68

Figura 27 – Movimento sendo exercitado de forma incorreta propositalmente para haver correção do

Figura 28 – Movimento sendo exercitado de forma incorreta propositalmente para haver correção do

Figura 29 – Movimento sendo exercitado de forma correta para não haver correção do sistema. 70

Figura 30 – Movimento sendo exercitado de forma correta para não haver correção do sistema. 71

Figura 31 – Movimento sendo exercitado de forma incorreta propositalmente para haver correção do

Figura 32 – Movimento sendo exercitado de forma incorreta propositalmente para haver correção do

Figura 33 – Movimento sendo exercitado de forma correta para não haver correção do sistema. 73

Figura 34 – Movimento sendo exercitado de forma correta para não haver correção do sistema. 74

Figura 35 – Diagrama de sequência responsável pela troca das mensagens do sistema ao gravar um mo

Figura 36 – Diagrama de sequência responsável pela troca das mensagens do sistema ao exercitar um

Page 12: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

Figura 37 – Desenho da arquietura completa. . . . . . . . . . . . . . . . . . . . . . 77

Page 13: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

Lista de tabelas

Tabela 1 – Articulações no corpo. Fonte: (MARQUES, 2003). . . . . . . . . . . . . 31

Tabela 2 – Cronograma de atividades TCC_1. . . . . . . . . . . . . . . . . . . . . 44

Tabela 3 – Cronograma de atividades TCC_2. . . . . . . . . . . . . . . . . . . . . 44

Tabela 4 – Histórias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Tabela 5 – Estruturação dos Dados . . . . . . . . . . . . . . . . . . . . . . . . . . 59

Tabela 6 – Rotulação da complexidade do Movimento . . . . . . . . . . . . . . . . 60

Tabela 7 – Rotulação da complexidade do Movimento . . . . . . . . . . . . . . . . 60

Tabela 8 – Teste 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

Tabela 9 – Teste 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Tabela 10 – Teste 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Tabela 11 – Teste 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

Tabela 12 – Teste 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

Tabela 13 – Teste de junta referente a cabeça . . . . . . . . . . . . . . . . . . . . . 66

Tabela 14 – Teste de junta referente a coluna . . . . . . . . . . . . . . . . . . . . . 67

Tabela 15 – Teste de junta referente a cabeça . . . . . . . . . . . . . . . . . . . . . 69

Tabela 16 – Teste de junta referente ao braço . . . . . . . . . . . . . . . . . . . . . 72

Page 14: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável
Page 15: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

Lista de abreviaturas e siglas

ADM Amplitude de movimento

GUI Graphical User Interface

JIT just in time

XP Extreme Programming

HPC High Performance Computing

DPC Distributed/Parallel Computing

MPP Massively Parallel processing

SDK Software development kit

Page 16: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável
Page 17: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

Sumário

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.1 Contextualização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.2 Definição do Problema . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.3 Soluções Existentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.4 Solução Proposta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.5 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1.5.1 Objetivos Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1.5.2 Objetivos específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1.6 Organização do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . 22

2 REVISÃO TEÓRICA . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.1 Importância da análise do movimento humano . . . . . . . . . . . . . 23

2.1.1 Análise de dados cinéticos e cinemáticos . . . . . . . . . . . . . . . . . . . 24

2.1.2 Automatizando a análise do movimento . . . . . . . . . . . . . . . . . . . 25

2.2 Engenharia de Software . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.2.1 Manifesto Ágil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.2.2 Kanban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.2.3 Extreme programing - XP . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.3 Aquisição de dados com Sensores . . . . . . . . . . . . . . . . . . . . 30

2.4 Processamento de sinais . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.5 Articulações no corpo humano . . . . . . . . . . . . . . . . . . . . . . 31

2.5.1 Articulações no Unity 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.6 Restrição - Streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.6.1 Sistema distribuído . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.6.2 Sistema multiprocessado . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.6.3 Processamento massivamente paralelo . . . . . . . . . . . . . . . . . . . . 33

2.7 Trabalho relacionado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.7.1 Protótipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.8 Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.9 Arquitetura de software . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3 SUPORTE TECNOLÓGICO . . . . . . . . . . . . . . . . . . . . . . 39

3.1 Unity 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.2 Kinect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.2.1 kinect for windows SDK V1.8 . . . . . . . . . . . . . . . . . . . . . . . . 40

3.3 Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Page 18: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

3.3.1 GIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.3.2 Github . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.3.3 Gitlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.3.4 Linux Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.3.5 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.3.6 Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.3.7 Atom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.3.8 Astah community . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.3.9 Trello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.1 Caracterização da Pesquisa . . . . . . . . . . . . . . . . . . . . . . . . 43

4.2 Metodologia Adotada no Desenvolvimento do sistema . . . . . . . . 43

4.2.1 Planejamento das atividades . . . . . . . . . . . . . . . . . . . . . . . . . 43

5 O SISTEMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

5.1 Contextualização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

5.1.1 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

5.1.2 KinectManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

5.1.3 HandletCsv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

5.1.4 AvatarController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.1.5 StoredMovimentAvatarController . . . . . . . . . . . . . . . . . . . . . . . 50

5.1.6 GetJointPosition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.1.7 KinectGesture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.1.8 KinectWrapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.1.9 GlobalVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.1.10 Requisitos do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.2 Configuração e Integração das Tecnologias . . . . . . . . . . . . . . . 52

5.2.1 Instalação do SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.2.2 Instalação do Unity 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.2.3 Utilizando o Unity 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

5.2.4 Histórias de usuário do sistema . . . . . . . . . . . . . . . . . . . . . . . . 53

5.3 Funcionalidades do sistema - features . . . . . . . . . . . . . . . . . . 54

6 ANÁLISE DOS RESULTADOS . . . . . . . . . . . . . . . . . . . . . 59

6.1 Casos de testes funcionais . . . . . . . . . . . . . . . . . . . . . . . . . 59

6.1.1 Levantar braço direito . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

6.1.1.1 Relatório de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

6.1.2 Levantar dois braços . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

6.1.2.1 Relatório de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Page 19: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

6.1.3 Sentar e levantar em uma cadeira de lado para o sensor . . . . . . . . . . . 62

6.1.3.1 Relatório de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

6.1.4 Sentar e levantar em uma cadeira de frente para o sensor . . . . . . . . . . 63

6.1.4.1 Relatório de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

6.1.5 Agachamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

6.1.5.1 Relatório de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

6.2 Casos de testes funcionais por junta . . . . . . . . . . . . . . . . . . . 65

6.2.1 Cabeça . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

6.2.1.1 Relatório de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

6.2.2 Coluna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

6.2.2.1 Relatório de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

6.2.3 Pernas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

6.2.3.1 Relatório de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

6.2.4 Braços . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

6.2.4.1 Relatório de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

6.3 Fontes de Erro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

6.4 Outros resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

6.4.1 Arquitetura completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

6.5 Análise dos resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

7 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Page 20: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável
Page 21: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

19

1 Introdução

1.1 Contextualização

Segundo a WCPT - World Confederation for Physical Therapy (THERAPY,

2016), a Fisioterapia é a área da saúde responsável por desenvolver, manter e reabili-

tar as capacidades de mobilidade e funcionalidade das pessoas ao longo de toda a sua

vida.

Seu objetivo é identificar e maximizar a qualidade de vida e de potencial de movi-

mento de cada pessoa, dentro das áreas da promoção, prevenção, tratamento/intervenção,

habilitação e reabilitação da saúde.

Tratando-se de reabilitação motora, lida-se com dificuldades e limitações encontra-

das por indivíduos que apresentam deficiências motoras e ou físicas, bem como, a doenças

sistêmicas, articulares, neurológicas e musculares, sequelas a traumas e acidentes.

Problemas mais graves, repercutem na estrutura e função do corpo do indivíduo, de

forma global, além de influenciar na atividade e participação do mesmo frente a sociedade.

Afeta também, o ambiente em que se encontra e a forma como ele lida com sua rotina.

Dessa maneira, torna-se ainda mais importante a eficácia do tratamento fisioterapêutico.

1.2 Definição do Problema

Para uma reabilitação eficiente, necessita-se de uma avaliação eficaz, para identi-

ficar os deficits encontrados nas disfunções do indivíduo e proporcionar um tratamento

apropriado, e também a cadência na realização dos exercícios propostos pelo profissional.

Contudo, este último é um desafio, principalmente pela ausência dos pacientes nas

sessões de fisioterapia. Tal ausência se dá por diversos fatores, desde fatores socioeconô-

micos, já que sessões de fisioterapia não costumam ser acessíveis para todos níveis sociais,

a questões de disponibilidade de tempo.

Desse modo, vê-se a necessidade de uma soulção que auxilie no tratamento fisiote-

rapêutico e facilite na cadência da realização dos movimentos do tratamento apropriado,

não necessitando de supervisão profissional e que possa ser executado a qualquer momento.

1.3 Soluções Existentes

Entre algumas soluções para o auxílio da reabilitação motora estão:

Page 22: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

20 Capítulo 1. Introdução

• Kinect Training: É um jogo eletrônico para o console de videogame xbox 360, com o

auxílio do kinect para captação do movimento, que tem como objetivo auxiliar em

determinados exercícios físicos, substituindo o personal trainer.

– Dificuldade: A limitação desse programa que queremos superar é a análise da

qualidade da execução do movimento. Assim podemos dar um feedback para

o usuário seja na prática de exercícios de condicionamento físico ou em sessões

de fisioterapia.

• Goniometria: O termo é formado por duas palavras gregas, gonia, que significa

ângulo, e metron, que significa medida. Referindo-se à medida de ângulos articulares

presentes nas articulações dos seres humanos. O instrumento mais utilizado para

medir a amplitude de movimento é o goniômetro universal. Este pode ser de plástico

ou metal e de diferentes tamanhos, mas com o mesmo padrão básico(MARQUES,

2003).

– Dificuldade: Os dados medidos variam entre os examinadores devido ao modo

como é feito a avaliação, dando pouca confiabilidade para este sistema.

• Qualisys Track Manager (QTM): É um software para coleta de dados de um sistema

que captura o movimento. O software integra com placas de força, EMG e uma série

de outros dispositivos e permite medir o movimento, no ar ou debaixo d’água, passivo

ou ativo(QUALISYS, ).

– Dificuldade: Sistema pouco acessível para pequenas e médias clínicas, sendo

necessário também um espaço grande e muitos sensores de custo elevado.

• Inclinômetro Digital: O inclinômetro digital é um instrumento da engenharia para

medir inclinação (em graus) de superfícies, após ser captada por sensores sensíveis

a gravidade(FELICIOIV, 2012)

– Dificuldade: Assim como o goniômetro os dados medidos variam entre os exa-

minadores, porém com uma disparidade de valores um pouco menor.

1.4 Solução Proposta

A partir do contexto apresentado, observando a dificuldade da regularidade dos

exercícios, e o alto custo de soluções mais precisas, o objetivo deste trabalho é tomar

como inspiração a tese de doutorado do Roberto de Souza Baptista, em um produto mais

acessível tanto em termos de custo, quanto a mobilidade e praticidade.

O trabalho apresentado pelo Baptista (BAPTISTA, 2016), investiga técnicas para

análise automática do movimento humano. Assim, apresenta uma nova contribuição de

Page 23: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

1.5. Objetivos 21

um novo procedimento para avaliação automática do movimento humano, que executa

segmentação e extração de parâmetros de desempenho motor, em séries temporais de

medidas de uma sequência de movimentos.

O sistema proposto, apresenta três etapas, sendo elas:

1. Etapa de aquisição dos dados: movimento do usuário ser capturado pelo sistema

(leitura dos ângulos das articulações):

a) Realizar o movimento de referência;

b) Salvar arquivo referente ao movimento realizado.

2. Etapa de importação do arquivo de movimento:

a) Importar o movimento.

3. Etapa de visualizar e praticar os movimentos:

a) Visualizar lista com os movimentos cadastrados;

b) Visualizar e praticar o movimento, de acordo com a animação do avatar;

c) Usuário realiza o movimento selecionado;

d) Sistema lê os movimentos das articulações do usuário em tempo real;

e) Comparar as articulações de referência com os realizados pelo usuário;

f) Mostra no avatar 3D as discrepâncias entre o movimento desejado e o movi-

mento realizado.

1.5 Objetivos

1.5.1 Objetivos Gerais

Desenvolver uma proposta de um produto de software, que auxilie fisioterapeutas

a preescreverem programas de reabilitação motora, e permita o paciente executar tais

programas sem supervisão física.

1.5.2 Objetivos específicos

• Levantar os requisitos da solução;

• Propor uma solução de software;

• Apresentar a viabilidade da proposta.

Page 24: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

22 Capítulo 1. Introdução

1.6 Organização do Trabalho

Este trabalho de conclusão de cusro está organizado em capítulos, cada capítulo

contendo seções, sendo eles:

• Introdução: Capítulo referente à contextualização, justificativa e definição dos obje-

tivos do trabalho;

• Revisão teórica: O objetivo deste capítulo é fornecer ao leitor o conhecimento ne-

cessário para compreender o trabalho realizado.

• Suporte tecnológico: Apresenta as ferramentas e tecnologias utilizadas para auxiliar

o desenvolvimento deste trabalho, desde a pesquisa bibliográfica e documentação,

até o desenvolvimento do sistema e apresentação;

• Metodologia: Este capítulo busca apresentar as técnicas utilizadas para a realização

do trabalho, definindo as atividades a serem desempenhadas para conclusão do

trabalho;

• O sistema: Neste capítulo é apresentado o produto desenvolvido, assim como as

características e configuração do mesmo.

• Análise dos Resultados: Neste capítulo são apresentados os testes para análise da

viabilidade da utilização.

• Conclusão: Capítulo responsável pelas conclusões do desenvolvimento do trabalho;

• Considerações finais: Capítulo com o objetivo de apresentar as considerações finais

do trabalho.

Page 25: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

23

2 Revisão Teórica

Esse capítulo irá apresentar alguns conceitos que irão sustentar o objetivo deste

trabalho. Desse modo este capítulo está dividido nas seções: Importância da análise do

movimento humano (2.1), Engenharia de Software (2.2), Aquisição de dados com Sensores

(2.3), Processamento de sinais (2.4), Articulações no corpo humano (2.5), Restrição -

Tempo real (2.6), Trabalho relacionado (2.7), Requisitos (2.8) e Arquitetura de software

(2.9).

2.1 Importância da análise do movimento humano

A mensuração do movimento humano é uma forma de observação, através da

utilização de dispositivos, para descrever os fenômenos em termos de variáveis a serem

analisadas. Os dados adquiridos a partir da mensuração podem elucidar deficiências mo-

toras após trauma ou esclarecer os efeitos de intervenção externa controlada. Eles são

usados para descrever, caracterizar, medir o impacto dos fatores externos e analisar o

movimento humano. Dados cinemáticos e cinéticos podem ser combinados e analisados

para explicar as características do movimento.

Além da qualidade das medições, tem-se que considerar a complexidade da me-

dição feita por determinado dispositivo, tais como a necessidade do paciente se despir,

necessidade de uma grande área para a medição, entre outros.

Em estudos do movimento humano, existem essencialmente três tipos de variáveis

de medição: tempo, cinemática e cinética. O tempo pode ser utilizado isoladamente para

medir a duração de um determinado movimento , mas fornece mais informações quando

associado a uma variável cinemática ou cinética. As variáveis cinemáticas descrevem o

movimento do corpo, que são lineares (deslocamento, velocidade e aceleração) ou angular

(deslocamento, velocidade e aceleração). As variáveis cinéticas são ou o momento de força

ou força que gera o movimento (BAPTISTA, 2016).

A análise do movimento humano é imprescindível não somente para a avaliação

e a reabilitação do indivíduo, mas também para prevenção de lesões. Vale ressaltar que

lesões recorrentes em esportistas é extremamente prejudicial não somente a sua saúde mas

também ao seu desempenho no esporte influenciando diretamente ao seu retorno a prática

do mesmo. A Biomecânica permite analisar as causas e efeitos produzidos em relação a

otimização do rendimento do atleta, o comportamento da sobrecarga articular e os efeitos

dos mecanismos motores no processo de aprendizagem são fatores, que se relacionam com o

diagnóstico da técnica esportiva, e o trabalho preventivo principalmente em atletas de alto

Page 26: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

24 Capítulo 2. Revisão Teórica

rendimento. Para a investigação deste movimento, torna-se necessário, pela complexidade

estrutural do mesmo, a aplicação simultânea de métodos de mensuração nas diversas

áreas do conhecimento da ciência. O estudo do movimento permite-nos verificar, avaliar,

reabilitar e prevenir por exemplo:

1. Esporte de alto nível de rendimento: sistematização e otimização do rendimento

esportivo, diagnostico da técnica de movimento e condição física, redução de sobre-

cargas excessivas ao aparelho locomotor, regime de treinamento preventivo e que

maximize o desempenho do atleta e relação estímulo-resposta;

2. Esporte escolar, de baixo rendimento e atividades de recreação/musculação: estudo

da eficiência de processos de aprendizagem, adequação de sistemas e equipamen-

tos com “feedback” pedagógico; otimização de desempenho em pratica esportiva;

prevenção de lesões em atletas que reproduzem movimentos repetitivos; indivíduos

saudáveis com o objetivo de hipertrofia;

3. Prevenção e reabilitação orientados à saúde: desenvolvimento de métodos, procedi-

mentos e técnicas aplicados à terapia, descrição de padrões “patológicos” e depen-

dências clinicas, adequação e desenvolvimento de equipamentos;

4. Atividades do cotidiano e do trabalho: estudo da postura e da locomoção humana,

classificação e sistematização de grupos de movimentos em dependência de esta-

ções de trabalho, interface homem, máquina e meio ambiente, eficiência, saúde e

segurança nas tarefas da vida diária e do trabalho (CERCA, 2007).

2.1.1 Análise de dados cinéticos e cinemáticos

Quando os dados de cinemática ou cinética é indexado com o tempo, o resultado é

uma série temporal cinemático ou cinético. A ferramenta mais comum para analisar essas

séries temporais são os gráficos resultantes, pois é mais fácil visualizar o padrão de mo-

vimento. A inclinação e curvatura do gráfico de séries temporais indicam características-

chave de uma execução do movimento e fornece uma poderosa ferramenta para análise

de movimento. A Figura 1 tirada do trabalho do Baptista (BAPTISTA, 2016),mostra

o deslocamento angular do joelho e do tronco durante um ciclo de marcha sentar-para-

levantar-para-sentar. Analisando as encostas e pontos de inflexão, é possível determinar

o início e o fim de cada flexão ou extensão para esta determinada articulação.

Partindo da premissa de que o mesmo movimento executado por diferentes indiví-

duos irão ter um padrão semelhante, as medições de séries temporais de dados cinemáticos

e cinéticos podem ser anotados para a extração de informações de desempenho quantita-

tivo. Exemplo de tais análises pode ser encontrado em diagramas de ciclo de marcha, que

são os mais comuns.

Page 27: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

2.1. Importância da análise do movimento humano 25

A análise da marcha é um campo bem estabelecido de estudo, principalmente

devido ao uso do diagrama de ciclo de marcha, como uma ferramenta para descrever,

relatar e comparar o desempenho da marcha em diferentes resultados da investigação.

Devido ao sucesso do diagrama de ciclo de marcha, os investigadores propuseram igual-

mente descrições padronizadas para outros tipos de movimento, tais como o movimento

senta-levanta-senta e também atividades esportivas.

A Figura 1 mostra os diagramas de ciclo de movimento para a marcha e sentar-

para-levantar-para-sentar .

Figura 1 – Sentar-para-levantar-para-sentar. Fonte: (BAPTISTA, 2016).

2.1.2 Automatizando a análise do movimento

É muito comum sistemas de análise automático de movimento. Um exemplo disso é

o kinect da microsoft que se encaixa como sendo de baixo custo, que extrai as coordenadas

Page 28: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

26 Capítulo 2. Revisão Teórica

das articulações nos usuários e são usados como sinal de entrada de jogos e aplicativos.

Além do Kinect, outros sensores são disponíveis no mercado para obtenção de precisão de

dados da cinemática humana, fazendo com que essa informação seja hoje acessível e dis-

seminado. Porém, as técnicas de pós-processamento para extração de recurso automático

de dados cinemáticos ainda estão surgindo.

Uma vez extraído dados das articulações no decorrer do tempo, esses dados devem

ser identificados para segmentar/classificar movimentos pré-definidos. No contexto da

segmentação do movimento humano e classificação para a reabilitação, uma importante

distinção deve ser feita sobre o significado da tarefa de segmentação e classificação. Um

problema é segmentar uma sequência de movimentos desconhecidos e individuais, seguidos

pela classificação do tipo de movimento (rotulando cada única execução de acordo com

um conjunto de possíveis candidatos). Este problema foi recentemente investigada com

resultados importantes, tais como feito por (LIN; KULIC, 2014) e (CHUNG; MENG,

2014). Outro problema é: dada uma única execução (ou uma sequência repetitiva) de

um tipo conhecido do movimento (uma sequência de passos, ou uma sequência de senta-

levanta-senta), identificar os principais eventos, a fim de extrair informações úteis, ou seja,

características espaço-temporais (BAPTISTA, 2016).

O trabalho apresentando em (BAPTISTA, 2016) investiga técnicas para análise

automática do movimento humano. Sua principal contribuição é um novo procedimento

para avaliação automática do movimento humano que executa segmentação e extração

de parâmetros de desempenho motor em séries temporais de medidas de uma sequência

de movimentos. Nele, utiliza os elementos de um modelo de Sistema Linear Dinâmico

Chaveado como componentes de base para traduzir definições formais e procedimentos

utilizados na análise de movimento tradicional. Sua abordagem estabelece um método

que permite usuários sem experiência em processamentos de sinais criarem modelos para

movimentos a partir de dados rotulados e usá-los posteriormente para avaliação auto-

mática. No trabalho é validado o procedimento com conjunto de dados coletados de seis

indivíduos sadios que executaram movimentos comuns em testes funcionais e sessões de

exercícios de reabilitação, tais como o sentar-e-levantar e elevação lateral dos braços.

Existe três estágios para utilização do sistema. Primeiro uma pessoa qualificada

executa um exercício ou uma sessão de exercício que é armazenado. Neste estágio, o Ki-

nect é controlado através de uma função matlab, que foi escolhido por ser otimizado para

resolução de problemas científicos e de engenharia e onde a linguagem MATLAB é a ma-

neira mais natural do mundo para expressar matemática computacional (MATHWORKS,

1994 - 2017), e é especificamente desenvolvida para GUI (Graphic User interface - Inter-

face gráfica do usuário). Esta função baseia-se em tarefas periódicas para captar e armaze-

nar os pontos 3D, bem como as imagens capturadas pelo Kinect. Os pontos 3D compõem

a representação de um esqueleto do usuário, que estão em referência a posição do Kinect.

Page 29: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

2.1. Importância da análise do movimento humano 27

Estes pontos são obtidos utilizando a função NITE (PRIMESENSE, 2010) chamado pelo

Matlab via C++ wrapper. Até o fim da captura, os dados dos pontos são armazenados

em um arquivo .mat e disponível para uma visualização posterior.

No segundo estágio, o usuário pode ver a reprodução do movimento previamente

armazenado antes de começar a sessão. Isso é feito em Matlab com funções especiais nova-

mente baseado em tarefas periódicas e usando GUI. Uma vez que a reprodução começa, o

usuário pode parar em qualquer momento, para evitar situações tediosas em caso de exer-

cício repetitivo. A reprodução do esqueleto se destina a dar uma primeira impressão visual

e permitir que o usuário compreenda os movimentos na sessão de exercício. Para manter

a coerência entre os dados armazenados e os dados do usuários nos outros estágios, uma

mudança de quadros de referência foi executado. O novo quadro de referência é centrado

no ponto 3D que representa o quadril do esqueleto. Esta escolha conveniente permite a

correspondência dos dados registados e os dados do usuário quando o ele está posicionado

de forma diferente em relação ao Kinect de quando os dados gravados foram adquiridos.

Além disso não há necessidade de referências externas como por exemplo o nível do solo.

Foram considerados outros pontos do esqueleto para ser utilizado como a origem do sis-

tema de referência, mas o quadril pareceu mais estável durante o acompanhamento de

esqueleto.

Finalmente o sistema é usado em tempo real para um feedback visual em uma

sessão de treino. Através do GUI, o usuário começa o processo. Inicialmente a função

do OpenNI Skeleton deve detectar o usuário e calibrar o rastreio do esqueleto. Uma vez

que é feita a calibração uma função períodica para o feedback é chamada. Durante essa

fase, a captura do esqueleto do usuário é periodicamente atualizado e plotados junto os

dados de exercício gravados por especialiasta no primeiro estágio. Combinando as origens

de ambos os quadros de referência permite a correspondência dos pontos 3D dos dados

gravados com o quadro capturado em tempo real. Um gráfico é exibido na GUI. Dados

capturados em tempo real do usuário é plotado em primeiro lugar em verdes e os de

reprodução em preto.

Durante a execução de uma comparação do padrão de um membro específico do

corpo é comparado com o padrão da mesma parte do corpo do usuário. Se este padrão está

dentro de mais ou menos 10% dos dados registados a exibição gráfica da parte do corpo

de interesse permanece verde, caso contrário, a parte torna-se vermelho. A comparação é

feita em cada quadro em função periódica. Como resultado, este simples cálculo é capaz

de capturar erros de execução em matéria de amplitude e tempo do movimento pretendido

(BAPTISTA, 2016).

Na imagem 2 podemos ver a reprodução do movimento, já na imagem 3 podemos

ver a correta execução do movimento e no conjunto de imagens 4 vemos os principais

erros de movimentação.

Page 30: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

28 Capítulo 2. Revisão Teórica

Figura 2 – Reprodução do movimento. Fonte: (BAPTISTA, 2016).

Figura 3 – Movimento Correto. Fonte: (BAPTISTA, 2016).

Page 31: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

2.2. Engenharia de Software 29

Figura 4 – Movimento Incorreto. Fonte: (BAPTISTA, 2016).

2.2 Engenharia de Software

Para o desenvolvimento de qualquer produto, necessita-se de um processo, plane-

jamento e projeto do produto. Para isso algumas técnicas e metodologias de engenharia

de software aprendidas e utilizadas durante o curso, serão empregadas em auxílio do

desenvolvimento deste trabalho.

2.2.1 Manifesto Ágil

Afim de utilizar melhores maneiras para o desenvovlimento deste trabalho, foram

utilizados alguns valores ágeis, onde podem ser encontrados no manifesto ágil. O manifesto

ágil foi criado em 2001 e descreve um conjunto de abordagens para desenvolvimento de

software. Seus principais valores são:

• Indivíduos e interações a processos e ferramentas;

• Software funcionando a documentação compreensiva;

• Colaboração do cliente a negociação por contrato;

• Responder a mudanças a seguir um plano (THOMAS, 2001).

Page 32: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

30 Capítulo 2. Revisão Teórica

2.2.2 Kanban

O Kanban é uma metodologia popular usada por equipes que praticam o desenvol-

vimento ágil de software. Ele é extremamente proeminente entre as equipes de software

ágil de hoje, mas sua metodologia de trabalho remonta a mais de 50 anos.

No fim dos anos 1940, a Toyota começou a otimizar seus processos de engenharia

com base no mesmo modelo que os supermercados usavam para abastecer suas prateleiras.

Os supermercados abastecem apenas a quantidade de produtos suficiente para atender à

demanda dos consumidores, uma prática que otimiza o fluxo entre o supermercado e o

consumidor.

Com o kanban, as equipes de desenvolvimento ágil de software são capazes de

aproveitar os princípios do JIT - just in time, combinando a quantia do trabalho em

andamento com a capacidade da equipe (RADIGAN, 2017).

O Kanban eletrônico (e-Kanban) é utilizado em substituição ao método físico,

evitando alguns problemas como a perda de cartões e proporcionando mais rapidez na

atualização do quadro de tarefas (SIGNIFICADOS, 2017).

2.2.3 Extreme programing - XP

Extreme Programming (XP) é uma metodologia ágil de desenvolvimento de soft-

ware, nascida nos Estados Unidos ao final da década de 90. Tais objetivos são alcançados

através de um pequeno conjunto de valores, princípios e práticas, que também são base-

ados no manifesto ágil. Dentre seus princípios e práticas, serão utilizados neste trabalho:

• Reuniões frequentes com os stakeholders (orientador).

• Design Incremental: O objetivo é criar a solução mais simples possível que seja

suficiente para implementar as funcionalidades de cada iteração (TELES, 2006).

• Versionamento de código (TELES, 2006).

2.3 Aquisição de dados com Sensores

Sensor pode ser entendido como dispositivo eletrônico que é sensível a determinada

condição do ambiente, desde luminosidade, temperatura até a aceleração própria. No

sistema desenvolvido junto a este trabalho é usado o kinect (3.2).

Page 33: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

2.4. Processamento de sinais 31

2.4 Processamento de sinais

Processamento de sinais consiste na análise e/ou modificação de sinais (sequências

discretas de números) de forma a extrair informações dos mesmos e/ou torná-los mais

apropriados para alguma aplicação específica (ARAUJO, 2017).

2.5 Articulações no corpo humano

A posição anatômica é uma posição de referência, que dá significado aos termos di-

recionais utilizados na descrição das partes e regiões do corpo. As discussões sobre o corpo,

o modo como se movimenta, sua postura ou a relação entre uma e outra área assumem

que o corpo como um todo está numa posição específica chamada posição anatômica.

A tabela 1 mostra a articulação, seus movimentos e sua capacidade máxima em

graus de movimentações.

Tabela 1 – Articulações no corpo. Fonte: (MARQUES, 2003).

Articulação Movimento Grau de MovimentoFlexão 0-180

Extensão 0-45Adução 0-40

Abdução 0-180Rotação medial 0-90

Ombro

Rotação lateral 0-90Flexão 0-145

CotoveloExtensão 145-0Pronação 0-90

RadiulnarSupinação 0-90

Flexão 0-90Extensão 0-70Adução 0-45

Punho

Abdução 0-20Flexão 0-125

Extensão 0-10Adução 0-15

Quadril

Abdução 0-45Joelho Flexão 0-140

Flexão dorsal 0-20Flexão plantar 0-40

Adução 0-40Tornozelo

Abdução 0-20

Page 34: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

32 Capítulo 2. Revisão Teórica

2.5.1 Articulações no Unity 3D

Também chamadas de character joint elas são usadas para o chamado efeito boneco

de pano (ragdoll effects). A posição inicial de Referência é a a posição em T (T pose). O

unity não limita a angulação da articulação, deixando isso na mão do desenvolvedor, porém

eles orientam ângulos máximos para estabilizar melhor seu avatar 3D (TECHNOLOGIES,

).

2.6 Restrição - Streaming

Todo o processo, desde a aquisição do movimento ao processamento do sinal e

a resposta para o usuário, deve ser em streaming, para que o usuário possa corrijir a

movimentação e se aproximar da correta execução do movimento. Para isso, temos que

levar em conta a frequência de aquisição do sensor usado, o tempo do processamento de

sinal e a frequência de atualização do monitor.

O sensor kinect (MICROSOFT, 2016), tem uma frequência de aquisição de qua-

dros de 30Hz, junto a um monitor com taxa de atualização de imagem para o usuário a

30Hz, assim a aproximadamente 33 milisegundos o sistema recebe um input do sensor e

tem que em seguida apresentar um output. Isso restringe o processamento do sinal a 33

milissegundos de um input a outro, e também no tempo de atualização da imagem exibida

para que não haja perda na fluidez e nem atraso na correção. As possíveis soluções para

processamento de sinal nesse contexto serão apresentados nas seções seguintes.

2.6.1 Sistema distribuído

Um sistema distribuído, sistema de processamento distribuído ou paralelo, é um

sistema que interliga vários nós de processamento (computadores individuais) de maneira

que um processo de grande consumo seja executado no nó mais disponível, ou mesmo sub-

dividido por vários nós. Assim um sistema de processamento distribuído é uma "coleção de

computadores independentes entre si que se apresenta ao usuário como um sistema único

e coerente"(TANENBAUM, 2001). A nomenclatura geralmente utilizada neste contexto é

HPC (High Performance Computing) e/ou DPC (Distributed/Parallel Computing).

2.6.2 Sistema multiprocessado

Um multiprocessador ou sistema multiprocessado é um sistema integrado de com-

putação com as seguintes características:

• Envolve dois ou mais processadores físicos (sejam processadores separados ou múl-

tiplos núcleos encapsulados no mesmo chip) ou lógicos (processador(es) com a tec-

nologia HyperThreading da Intel) com o mesmo poder computacional e cada um

Page 35: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

2.7. Trabalho relacionado 33

capaz de executar processos autonomamente. Isto implica que não há nenhuma uni-

dade central de controle, cada processador contém sua própria unidade de controle.

Assim, efetivamente, a lógica de controle é distribuída pelo sistema.

• Os processadores compartilham um único espaço de endereçamento de memória.

• O sistema de hardware é como um todo gerenciado por um único sistema operacio-

nal.

O sistema operacional com suporte a multiprocessamento deve ser capaz de:

• Suportar multitarefa;

• Manter múltiplas filas de processos, uma para cada processador (GAGNE, 2004).

2.6.3 Processamento massivamente paralelo

MPP (Massively Parallel processing - Processamento Massivamente Paralelo), é o

processamento coordenado de um programa por vários processadores que funcionam em

diferentes partes do programa, com cada processador usando seu próprio sistema ope-

racional e memória. Normalmente, os processadores MPP se comunicam usando alguma

interface de mensagens.

Em algumas implementações, até 200 ou mais processadores podem funcionar

no mesmo aplicativo. Um arranjo de "interconexões"de caminhos de dados permitem que

mensagens sejam enviadas entre os processadores. Normalmente, a configuração para MPP

é mais complicada, exigindo pensar sobre como particionar um banco de dados comum

entre processadores e como atribuir trabalho entre eles. Um sistema MPP também é co-

nhecido como um sistema "vagamente acoplado"ou "nada compartilhado"(ROUSE, 2011).

2.7 Trabalho relacionado

O desenvolvimento deste trabalho foi inspirado no algoritmo do Roberto de Souza

Baptista (BAPTISTA, 2016). e podemos afirmar que ele pertence a área da engenharia

biomédica. "Classicamente, a Engenharia Biomédica é vista como a aplicação dos métodos

de distintas áreas das Ciências Exatas e de Engenharia no campo das Ciências Médicas

e Biológicas"(COPPE/UFR, 2016). Ele desenvolve uma abordagem inovadora aplicado

a terapia de doenças/acidentes motores, aplicado a fiosioterapia. Onde desenvolve uma

nova abordagem para análise de movimentos.

Page 36: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

34 Capítulo 2. Revisão Teórica

2.7.1 Protótipo

Junto com o algoritmo citado anteriormente (BAPTISTA, 2016), foi desenvolvido

um protótipo no software matlab (MATHWORKS, 1994 - 2017). Esse sistema inicial im-

plementou algumas das teorias do exame. Ele possui três etapas: rotular os dados, para-

metrização e utilizar para segmentação automática.

• Rotulação: Na etapa de rotular os dados,começando pelo arquivo ’

SCRIPT_labelAndIndexMultivariateFile_WBM21.m ’. Neste script estão duas fun-

ções, labelAndIndexUnivariateFile que por sua vez chama a função labelAndIndexU-

nivariateStructDataset que chama a função labelAndIndexUnivariateDataset e tran-

sitionIndexMultivariateFile.Os dados de entrada são puxados dos arquivos da pasta

’PreProcessedData’,’/’,DecRateN_Filter,’/’,Movement,’/’,Subject,’/’,Trial,’.mat’.

Esses dados foram coletados previamente por sensores. Os dados são uma struct

.mat com os ângulos de algumas articulações e o tempo. Esses ângulos são dados

em radianos e são divididos em articulações e em uma única coluna como podemos

observar em 5.

Figura 5 – Dados das articulações

Quando o script é executado primeiro um gráfico é traçado com várias curvas para

selecionar o início e fim de cada conjunto de dados, depois cada curva é apresentada

separadamente. Essa é a etapa para rotular os dados de cada curva. No prompt

ele pergunta qual o “Switch Variable”, em seguida ele pede para marcar o início

e o fim do intervalo com esse rótulo. A seguir pergunta se é o fim do conjunto de

dados. Caso não seja o fim ele volta a perguntar qual a “Switch Variable”. Esse

procedimento se repete para todas as curvas. Logo após, vem a parte que rotula os

dados multivariáveis dependendo do conjunto de rótulos de cada variável separada.

O resultado é a struct “thisLabeledIndexStructDataSet” salvo na pasta LabeledDa-

taMultivariate’/‘,DecRateN_Filter,’/’,Movement,’/’,Subject,’/’,Trial,’.mat’.

• Parametrização: Na etapa de parametrização do modelo a função:

S̈LDS_Univariate_ParameterDataSetBuilder2.mp̈ega os dados rotulados da

Page 37: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

2.7. Trabalho relacionado 35

etapa anterior, ou seja os dados segmentados automaticamente e com as funções

“parametersCteVelSpaceStateModel2” e “hmmTransitionMatrix2” calcula os

parâmetros do Modelo Oculto de Markov. Esta função é a base para o script

"SLDS_Univariate_IntraSubject_ParameterDataset_Script.m” que pega diversos

conjuntos de dados rotulados, de diferentes sujeitos ou diferentes execuções do

mesmo sujeito e chama a função “SLDS_Univariate_ParameterDataSetBuilder2.m”

para cada um deles e no fim temos os parâmetros do modelo oculto de Markov

ajustado para vários conjuntos de treinamento.

• Segmentação: Esse é o programa que faz a estimação dos rótulos associado com

cada medida. A principal função é a “SLDS_Filter_Univariate” ela recebe as structs

ValidationTrialThisVariable e FittedModelThisVariable e a variável InitialSwitch-

VariableState. A ValidationTrialThisVariable contém os dados a serem classificados

e pode conter também os rótulos. São as medidas do movimento, os mesmos dados

usados na parte de rotulação. O FittedModelThisVariable são todos os parâme-

tros do modelo (análogo aos parâmetros do ModeloOculto de Markov). A variável

InitialSwitchVariableState indica o símbolo da primeira medida.

Na imagem 6 podemos ver todo o fluxo de dados do protótipo.

Figura 6 – Fluxo de Dados

Page 38: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

36 Capítulo 2. Revisão Teórica

2.8 Requisitos

Um requisito é definido como "uma condição ou uma capacidade com a qual o

sistema deve estar de acordo". Existem vários tipos de requisitos. Um modo de categorizá-

los é descrito como o modelo FURPS+ (GRADY, 1992).

FURPS+ é um sistema para a classificação de requisitos, o acrônimo representa ca-

tegorias que podem ser usadas na definição de requisitos, assim como representa atributos

de Qualidade de Software, sendo ele parte do Rational Unified Process (RUP):

• Functionality (Funcionalidade) – Representa todo aspecto funcional do software,

seus requisitos. É uma categoria com diversas subcategorias que variam de acordo

com a aplicação. Sua medição considera, principalmente, o cumprimento dos reque-

sitos especificados.

• Usability (Usabilidade) – É o atributo que avalia a interface com o usuário. Pos-

sui diversas subcategorias, entre elas: prevenção de erros; estética e design; ajudas

(Help) e documentação; consistência e padrões.

• Reliability (Confiabilidade) – Refere-se a integridade, conformidade e interoperabi-

lidade do software. Os requisitos a serem considerados são: freqüência e gravidade

de falha; possibilidade de recuperação; possibilidade de previsão; exatidão; tempo

médio entre falhas (MTBF).

• Performance (Desempenho) – Avalia os requisitos de desempenho do software. Po-

dendo usar como medida diversos aspectos, entre eles: tempo de resposta, consumo

de memória, utilização da CPU, capacidade de carga e disponibilidade da aplicação.

• Supportability (Suportabilidade) – os requisitos de suportabilidade agrupam várias

características, como: testabilidade, adaptabilidade, manutenibilidade, compatibili-

dade, configurabilidade, instalabilidade, escalabilidade, localizabilidade entre outros.

O “+” do acrônimo engloba outros requisitos não-funcionais que devem ser lembrados:

• Requisitos de design (desenho) – Um requisito de design, freqüentemente chamado

de uma restrição de design, especifica ou restringe o design de um sistema. Exemplos

podem incluir: linguagens de programação, processo de software, uso de ferramentas

de desenvolvimento, biblioteca de classes, etc.

• Requisitos de implementação – Um requisito de implementação especifica ou res-

tringe o código ou a construção de um sistema. Como exemplos, podemos citar:

– padrões obrigatórios;

– linguagens de implementação;

Page 39: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

2.9. Arquitetura de software 37

– políticas de integridade de banco de dados;

– limites de recursos;

– ambientes operacionais.

• Requisitos de interface – especifica ou restringe as funcionalidades inerentes a inter-

face do sistema com usuário.

• Requisitos físicos – especifica uma limitação física pelo hardware utilizado, por exem-

plo: material, forma, tamanho ou peso. Podendo representar requisitos de hardware,

como as configurações físicas de rede obrigatórias (EELES, 2014).

2.9 Arquitetura de software

De acordo com a ISO/IEEE 1471-2000 - Arquitetura é a organização fundamental

de um sistema incorporada em seus componentes, seus relacionamentos com o ambiente,

e os princípios que conduzem seu design e evolução.

A arquitetura de software, consiste na definição dos componentes de software,

suas propriedades externas, e seus relacionamentos. A documentação da arquitetura do

software facilita: a comunicação entre os stakeholders, e permite o reúso do projeto.

Page 40: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável
Page 41: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

39

3 Suporte Tecnológico

Esse capítulo irá apresentar as principais tecnologias e ferramentas envolvidas no

desenvolvimento deste trabalho. Desse modo, este capítulo está dividido nas seções: Unity

3D (3.1), Kinect (3.2) e Ferramentas (3.3).

3.1 Unity 3D

O Unity 3D é uma ferramenta, criado para jogos em três e duas dimensões, além de

ser multiplataforma. Com ênfase na portabilidade ele tem como alvo o maior número de

APIs gráficas possíveis, desde o sistema operacional da microsoft, o windows, ao android.

Tem suporte para programação em C# e JavaScript. O unity 3D também possui uma

licença pessoal, livre de custo (TECHNOLOGIES, 2017).

Para a criação de um produto acessível, o matlab não seria viável pois sua licença é

paga e ele é geralmente usado para prototipação. Com isso foi usado o Unity 3D, um motor

gráfico muito usado na indústria de software para desenvolvimento de jogos comerciais e

livres.

3.2 Kinect

O kinect é um sensor de movimentos, desenvolvido inicialmente para as platafor-

mas de jogos eletrônicos da microsoft. Ele possui uma camara RGB (Red, Green, Blue),

um sensor de profundidade, um microfone embutido, e a versão mais recente, chamado

de kinect 2.0, consegue detectar 25 articulações esqueletais por pessoa (MICROSOFT,

2016).

Page 42: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

40 Capítulo 3. Suporte Tecnológico

Figura 7 – Esqueleto Kinect. Fonte: (MICROSOFT, 2016).

3.2.1 kinect for windows SDK V1.8

O kinect for windows SDK V1.8, fornece ferramentas e APIs necessários para

desenvolver aplicações Kinect nas linguagens C++, C#, Visual Basic, ou outra linguagem

.NET. Hoje em sua versão 2.0, entre seus recursos estão o acesso completo ao Kinect:

vídeo, profundidade, áudio, motor e funções de alto nível e também criar aplicativos para

o sistema operacional da microsoft e seu console para jogos.

O SDK é necessário, pois o sistema operacional reconhece o sensor, permitindo

aos desenvolvedores criar aplicativos que suportem o uso do kinect, e disponibiliza a

comunicação com o Unity3D.

Além disso, o SDK envolve uma variedade de classes e métodos com algoritmos já

produzidos e disponibilizados para utilização durante o desenvolvimento. Com a utilização

da SDK, o desenvolvedor não se preocupa com a implementação de algoritmos comuns,

como a obtenção de dados dos sensores.

A tecnologia Unity3D é multiplataforma, possibilitando sua utilização em vários

Sistemas operacionais porém o SDK é somente suportado no windows.

3.3 Ferramentas

Para o desenvolvimento do sistema foram usadas diversas ferramentas, a seguir

serão apresentadas junto dos artefatos gerados.

Page 43: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

3.3. Ferramentas 41

3.3.1 GIT

A ferramenta GIT1 foi desenvolvida por Linus Torvalds, mesmo criador do Linux,

sendo uma ferramenta open-source. Disponibiliza uma eficiente forma de versionamento

de códigos e gerenciamento de projetos.

3.3.2 Github

O Github2 é uma ferramenta utilizada para hospedagem remota de projetos GIT.

Neste trabalho o Github foi utilizado para hospedar a versão escrita do documento e pode

ser acessado aqui3.

3.3.3 Gitlab

O Gitlab4 é outra ferramenta utilizada para hospedagem remota de projetos GIT.

Esta ferramenta foi utilizada para hospedar o código e pode ser acessado aqui5.

3.3.4 Linux Debian

O sistema operacional utilizado durante este trabalho é o Linux Debian6 sistema

livre e utilizado, neste projeto, para documentação do trabalho.

3.3.5 Windows

Sistema operacional da Microsoft 107 , utilizado para implementação do código

por possibilitar configuração simplificada da comunicação entre o Kinect e o computador.

3.3.6 Visual Studio

Para a edição e criação do código foi usado o Micorosoft Visual Studio8 uma

IDE(Integrated development enviroment) disponibilizada pela microsoft e possui apoio

para várias linguagens de programação, principalmente C#.

1 https://git-scm.com/2 https://github.com3 https://github.com/ricardogtx/Tcc4 https://gitlab.com5 https://gitlab.com/ricardogtx/Tcc6 https://www.debian.org/7 https://www.microsoft.com/pt-br/8 https://www.visualstudio.com/pt-br/

Page 44: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

42 Capítulo 3. Suporte Tecnológico

3.3.7 Atom

O Atom9 é um editor de texto, possui apoio para diversas linguagens de progra-

mação, incluindo textos em LaTeX, além de ter um núcleo hackeável e muito configurável.

3.3.8 Astah community

É um software para modelagem uml - Linguagem de Modelagem Unificada, neste

trabalho esta ferramenta foi usado para criação do diagrama de sequências, que consiste

em um diagrama que tem o objetivo de mostrar como as mensagens entre os objetos são

trocadas no decorrer do tempo para a realização de uma operação(GIL, 2002).

Como pode ser visto em 9 e 10, existe dois momentos de trocas de mensagens, uma

com o usuário como fisioterapeuta e outra como paciente. A ferramenta Astah community

pode ser encontrada aqui10.

3.3.9 Trello

Ao longo do desenvolvimento foi utilizado o trello11 que é uma espécie de kanban

eletrônico (2.2.2).

9 https://atom.io/10 http://astah.net/download11 https://trello.com/

Page 45: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

43

4 Metodologia

Este capítulo irá descrever a metodologia utilizada no desenvolvimento deste tra-

balho. Desse modo este capítulo está dividido nas seções Caracterização da pesquisa (4.1),

Metodologia Adotada no Desenvolvimento do sistema (4.2) e Planejamento das atividades

(4.2.1).

4.1 Caracterização da Pesquisa

Toda e qualquer classificação se faz mediante algum critério. Com relação às

pesquisas, é usual a classificação com base em seus objetivos gerais. Assim, é possível

classificar as pesquisas em três grandes grupos: exploratórias, descritivas e explicativas

(FOWLER, 1997).

A classificação deste trabalho em relação aos objetivos da pesquisa é definida como

exploratória. A pesquisa exploratória tem como objetivo principal o aprimoramento de

ideias ou a descoberta de intuições, já a descritiva a descrição das características de de-

terminada população ou fenômeno e as explicativas identificar os fatores que determinam

ou que contribuem para a ocorrência dos fenômenos (FOWLER, 1997).

O uso da pesquisa exploratória, neste trabalho, se dá pela necessidade do conheci-

mento sobre a avaliação de movimento, com o objetivo de analisar a viabilidade do sistema

no auxílio da reabilitação motora.

4.2 Metodologia Adotada no Desenvolvimento do sistema

Para o desenvolvimento do sistema, adotamos algumas práticas ágeis e o kanban

(RADIGAN, 2017) para gerenciamento. O kanban e o Product Backlog, fonte das histórias

de usuário, pode ser encontrado no trello (3.3.9).

As Sprints tiveram duração de duas semanas e foram discutidas com os responsá-

veis por desempenhar os papéis de Product Owner.

4.2.1 Planejamento das atividades

Esta seção, descreve um cronograma de todas atividades. Cronograma é uma re-

presentação de um plano de execução das atividades do trabalho, incluindo outras infor-

mações de planejamento.

Page 46: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

44 Capítulo 4. Metodologia

O TCC, segundo as regras da UnB, é realizado em duas fases: uma chamada de

TCC_01 e outra chamada de TCC_02. Durante o TCC_01, o foco desse trabalho foi

estabelecer os pilares teóricos para embasamento do projeto como um todo. Já durante o

TCC_02, o trabalho estará focado desenvolver um sistema para análise motora, atingindo

uma prova de conceito, visando a viabilidade da proposta, com base nas fundamentações

teóricas - conquistados ao longo do TCC_01.

O TCC_01 pôde ser sub-dividido em sete atividades: selecionar tema, realizar

pesquisa bibliográfica, definir proposta, escrever referencial teórico, estabelecer suporte tec-

nológico, evoluir metodologia e apresentar TCC 1. As mesmas estão distribuídas de acordo

com o cronograma disposto na Tabela 2.

Tabela 2 – Cronograma de atividades TCC_1.

Cronograma Março Abril Maio Junho

Selecionar Tema X

Realizar pesquisa bibliográfica X X X X

Definir proposta X

Escrever referencial teórico X X

Estabelecer suporte tecnológico X X X

Evoluir metodologia X X

Apresentar TCC 1 X

Já a segunda etapa do trabalho, durante a realização do TCC_2, o cronograma

de atividades segue o apresentado na Tabela 3.

Tabela 3 – Cronograma de atividades TCC_2.

Cronograma Março Abril Maio Junho Julho

ConfigurarKinect/PC e ambiente

X X

Desenvolver solução 4 X X XTestar solução X X X

Analisar resultados X XApresentar TCC_2 X

• Propor tema:

A atividade de propor tema engloba desde a escolha do contexto em que se deseja

trabalhar, até a definição dos orientadores do trabalho. Após a escolha do contexto e

dos orientadores, buscou-se definir um escopo que será abordado durante o trabalho,

ou seja, o tema. Os orientadores devem validar o tema escolhido para concluir a

atividade.

Page 47: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

4.2. Metodologia Adotada no Desenvolvimento do sistema 45

• Levantar bibliografia base:

Esta atividade refere-se à definição de pilares para o estudo proposto, ou seja, es-

tabelecer o marco teórico do trabalho. Este levantamento garante o entendimento

do contexto trabalhado e as possibilidades de atuação, especificando mais adequa-

damente o escopo.

• Definir proposta:

Documentar a proposta de pesquisa para este trabalho. A proposta inclui, não ape-

nas, mas, principalmente, uma introdução com a contextualização do tema, o obje-

tivo geral e específicos, a justificativa e uma metodologia de pesquisa.

• Realizar pesquisa e análise bibliográfica:

A pesquisa bibliográfica foi feita a partir do algoritmo do Baptista (BAPTISTA,

2016)

• Realizar referencial teórico:

O mesmo descreve o referencial teórico do trabalho em andamento.

• Estabelecer suporte tecnológico:

Nesta atividade, são definidas as principais ferramentas e tecnologias utilizadas para

a execução deste trabalho.

• Apresentar TCC_1:

Apresentar os resultados obtidos até o momento para a banca examinadora.

• Desenvolver solução:

Desenvolvimento das histórias de usuário4 levantandas ao longo do TCC_1.

• Testar solução:

Esta atividade ocorre em sicronia com a atividade de desenvolvimento, é essencial

para analisar acordo com as histórias de usuário.

• Analisar resultados:

Registrar e analisar informações relevantes que foram obtidas ao longo do desenvol-

vimento.

• Apresentar TCC_2:

Apresentar os resultados obtidos para a banca examinadora.

Page 48: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável
Page 49: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

47

5 O sistema

Neste capítulo, são apresentados todos os componentes presentes no sistema, a

configuração do ambiente de programação buscando padronizar as características para

que possa ser aplicada e analisada por outro pesquisador.

5.1 Contextualização

O principal incentivo em relação a esta proposta é fazer um produto que seja

de ajuda para a reabilitação motora de indivíduos que apresentam deficiências motoras

e ou físicas, que seja acessível e que possa ser executada na hora que o paciente tiver

disponibilidade.

Com isso o sistema busca analisar o movimento de um índividuo com um movi-

mento previamente armazenado, dando feedbacks em tempo real, para a correta execução.

Além disso, o sistema tem como objetivo a implementação de análise do movimento atra-

vés da primeira versão do kinect por ser mais facilmente encontrado e por não gerar

grandes custos, porém sua precisão não é perfeita, sofrendo também de limitação por

movimentos mais complexos.

Assim sendo, durante a primeira etapa deste trabalho, foram estudadas algumas

tecnologias para a implementação do sistema, ficou definido que seria usado o unity 3D

para o desenvolvimento do sistema.

5.1.1 Arquitetura

Podemos dividir o trabalho no unity em duas partes, a primeira é a parte de

visualização, onde ele disponibiliza um espaço 3D para a inserção dos gameObjects e

criação das cenas. Um projeto pode ter mais de uma cena e uma cena pode conter vários

gameObjects. A segunda é com os chamados scripts, que são os códigos que podem ser

adicionados em um gameObject dando-lhe a lógica de como se deve comportar durante

uma cena de um projeto. Esses códigos podem ser escritos nas linguagens javascript e em

C#. Podemos ver uma representação da arquitetura em 8.

Page 50: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

48 Capítulo 5. O sistema

Figura 8 – Diagrama de classe referente ao sistema

Abaixo vemos uma representação da sequência de mensagens do sistema.

Figura 9 – Diagrama de sequência referente ao uso do fisioterapeuta

Page 51: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

5.1. Contextualização 49

Figura 10 – Diagrama de sequência referente ao uso do paciente

A arquitetura dos scripts ficou focada na classe KinectManager, pois ela é a res-

ponsável pela comunicação com o kinect. Nas próximas seções, falaremos um pouco sobre

o papel de cada classe.

5.1.2 KinectManager

Classe implementada em C# e tem como principal responsabilidade gerir a comu-

nicação com o kinect. Com a ajuda da classe KinectWrapper(5.1.8), ela abstrai as funções,

estruturas e recursos do Kinect. Esta classe possui várias funções, abaixo descrevemos as

principais:

• ProcessSkeleton(): Processa os dados do "esqueleto", dados sobre as posições e

rotações das juntas do usuário;

• HandlejointPosition(): Pega os dados sobre as posições das juntas para anima-

ção do avatar 3D;

5.1.3 HandletCsv

Classe implementada em C# e tem como principal responsabilidade fazer o parser

do arquivo csv do movimento desejado. Abaixo descrevemos sua principal função:

• getSkeletonPositionFromCSV(): Processa os dados do "esqueleto"no arquivo,

estruturando essas informações em uma matriz de float.

Page 52: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

50 Capítulo 5. O sistema

5.1.4 AvatarController

Classe implementada em C# e tem como principal responsabilidade animar o

avatar 3D de acordo com a movimentação do usuário em tempo real. Com a ajuda da

classe KinectManager(5.1.2), ela converte a posição das juntas para animação do avatar.

Esta classe possui várias funções, abaixo descrevemos as principais:

• UpdateAvatar(): Processa os dados das juntas do usuário, convertendo essas in-

formações por frame para animação 3D;

• TransformBone(): Aplica as rotações monitoradas pelo kinect para as juntas do

avatar.;

5.1.5 StoredMovimentAvatarController

Classe implementada em C# e tem como principal responsabilidade movimentar o

avatar, porém de acordo com o movimento parseado. Além de possuir as mesmas funções

da AvatarController(5.1.4), essa classe também é a responsável de fazer a comparação do

movimento do usuário com o movimento salvo. A principal função responsável por fazer

esta comparação é a CalculeAngle(), que espera como argumento a posição de três juntas

interligadas ( três vetores -Vector3 ) e retorna o ângulo entre elas.

5.1.6 GetJointPosition

Classe implementada em C# e tem como principal responsabilidade escrever as po-

sições de todas as juntas e exportar para csv. Com a ajuda da classe KinectManager(5.1.2),

ela captura os dados sobre as juntas do usuário. Abaixo descrevemos sua principal função:

• Update(): Processa os dados do "esqueleto"e escreve no arquivo csv a cada frame.

5.1.7 KinectGesture

Classe implementada em C# e tem como principal responsabilidade a identificação

de gestos já mapeados.

5.1.8 KinectWrapper

Classe implementada em C# e tem como principal responsabilidade deter as várias

estruturas e importações dll. É esta classe que abstrai a comunicação com o SDK (3.2.1).

Page 53: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

5.1. Contextualização 51

5.1.9 GlobalVariables

Classe implementada em C# e tem como principal responsabilidade guardar as

informações dos movimentos parseados.

5.1.10 Requisitos do sistema

Esta seção apresentará os requisitos do sistema:

• Funcionalidade(Functionality):

– Captura do movimento do usuário pelo sistema (leitura dos ângulos das arti-

culações);

– Importação de movimento;

– Apresentação de uma lista de movimentos gravados para seleção e execução;

– Animação do avatar com o movimento correto;

– Comparação das articulações de referência com os realizados pelo usuário;

– Exibição no avatar 3D as discrepâncias entre o movimento desejado e o movi-

mento realizado.

• Usabilidade(Usability)

– O usuário do sistema será capaz de visualizar todo tipo de informação tex-

tual, imagem ou modelo 3D na aplicação , com clareza, em qualquer monitor

independente de resolução.

• Confiabilidade(Reability)

– O sistema será capaz de verificar algum erro ou inconstância entre os dados

recebidos dos sensores, podendo assim se recuperar ou informar alguma falha

na comunicação com os mesmos.

• Desempenho(Performance)

– O sistema analisará o movimento feito pelo usuário em streaming.

• Suportabilidade(Supportability)

– Em sua versão inicial será exclusivo do sistema operacional da microsoft, o

windows, podendo ser executado nas versões 7,8 e 10.

Page 54: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

52 Capítulo 5. O sistema

5.2 Configuração e Integração das Tecnologias

Nesta seção, são apresentados o passo a passo para a configuração e integração

das tecnologias utilizadas durante o desenvolvimento do sistema, incluindo a etapa de

configuração do ambiente de programação e do ambiente para a utilização do kinect,

assim podendo ser aplicada e analisada por outros interessados.

5.2.1 Instalação do SDK

Primeiramente, para possibilitar a comunicação entre o PC e o kinect, deve-se

instalar o SDK 1.8, o qual pode ser encontrado aqui1. Lembrando que o kinect é feito

para console, não é comum computadores darem suporte para o formato do cabo, sendo

assim para comunicar o PC e Kinect será preciso de uma fonte para Kinect Xbox 360.

Depois do sdk instalado, conecte o Kinect na fonte e a fonte no PC. Para verificar se seu

sitema operacional está comunicando com o sensor alguns passos devem ser seguidos:

1. Clicar em iniciar

2. Ir em Meu computador

3. Clicar com o botão direito

4. Clicar em propriedades

5. Na janela que foi aberta, ir em Gerenciador de dispositivos

6. Verificar se na lista de dispositivos se encontra "Kinect for Windows"exibido como

na imagem abaixo.

Figura 11 – Gerenciador de Dispositivo

5.2.2 Instalação do Unity 3D

Como já dito no capítulo Suporte Tecnológico(3), o Unity 3D é um motor gráfico,

criado para jogos em três dimensões e duas dimensões, sendo a principal tecnologia usado

para o desenvolvimento do sistema, para cálculos das juntas e para o feedback ao usuário.

O Unity 3D pode ser encontrado aqui2.1 https://www.microsoft.com/en-us/download/details.aspx?id=402782 https://unity3D.com/pt/get-unity/download

Page 55: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

5.2. Configuração e Integração das Tecnologias 53

Ao instalar o unity 3D, o instalador dará a opção de instalar o visual studio mais

recente, é aconselhável aceitar pois este é um editor de texto com várias funções para a

edição de arquivos C#.

5.2.3 Utilizando o Unity 3D

Após a instalação de ambas as tecnologias, na primeira vez em que se abre o unity

3D é necessário fazer um cadastro para sua utilização. Feito o cadastro:

1. Na primeira janela do unity 3D é perguntado se deseja criar um novo projeto ou

importar, clique em importar

2. Procure o local onde se encontra a pasta do projeto e importe.

Pronto, agora será possível mexer no projeto pelo unity 3D. Para abrir o projeto

no visual studio é somente clicar com o botão direito em cima da cena desejada e clicar

em "Open C# Project".

5.2.4 Histórias de usuário do sistema

Como prática ágil as User stories (Histórias de usuário), são artefatos de desen-

volvimento, utilizadas para organizar requisitos. Tem-se foco nos objetivos do usuário e

como o sistema alcança esses objetivos.

Para melhor organizar e fracionar os requisitos deste trabalho, foi adotado essa

prática ágil, podemos ver o levantamento das histórias de usuário na tabela Histórias(4).

Page 56: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

54 Capítulo 5. O sistema

Tabela 4 – Histórias

História 1Eu como FisioterapeutaDesejo Que o sistema mapeie meu movimento sendo executado corretatmentePara poder comparar com o movimento do paciente

História 2Eu como UsuárioDesejo Poder carregar movimento previamente mapeadoPara Constar no menu do sistema

História 3Eu como FisioterapeutaDesejo Que o sistema salve um novo movimentoPara Poder constar no menu do sistema e poder ser executado

História 4Eu como UsuárioDesejo Desejo escolher movimento de referênciaPara Melhor seguir receita médica

História 5Eu como UsuárioDesejo Feedback do movimento sendo executado em tempo realPara Poder melhor executar os movimentos das articulações

Tais histórias compões as funcionalidades do sistema(5.3) e foram implementadas

no Unity 3D.

5.3 Funcionalidades do sistema - features

As features no desenvolvimento ágil é um pedaço de funcionalidade que oferece

valor comercial (ONE, 2017). Geralmente as features tem uma granularidade maior que

as User Stories(Histórias de usuário 5.2.4). Podemos dizer que algumas features são com-

postas de User Stories.

O sistema possui três features, gravação de movimento, leitura de arquivo do mo-

vimento desejado e análise da repetição do movimento:

1. Gravar movimento: Essa funcionalidade permite a gravação do movimento, deve

ser feito pelo profissional fisioterapeuta para uma correta execução. Será esse mo-

vimento que o sistema usará como gabarito. O sistema retorna um arquivo csv.

Podemos observar essa funcionalidade na tela do sistema em 13.

Page 57: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

5.3. Funcionalidades do sistema - features 55

2. Ler arquivo de movimento: Essa funcionalidade espera um arquivo csv e ar-

mazena o movimento no sistema.Podemos observar essa funcionalidade na tela do

sistema em 15.

3. Praticar movimento: Essa funcionalidade mostra a correta execução do movi-

mento e analisa com o movimento do paciente.Podemos observar essa funcionalidade

na tela do sistema em 16.

Como observado na imagem 12, podemos visualizar todas as funcionalidades a

partir do menu do sistema.

Figura 12 – Menu do sistema

Abaixo será listado as telas do sistema relacionado as três funcionalidades

Figura 13 – Gravar movimento

Page 58: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

56 Capítulo 5. O sistema

Figura 14 – Gravar movimento

Figura 15 – Ler Arquivo de Movimento

Figura 16 – Praticar Movimento

Page 59: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

5.3. Funcionalidades do sistema - features 57

Figura 17 – Praticar Movimento com esqueleto para auxílio ao desenvolvimento

Podemos ver o detalhamento das features em Histórias de usuário do sistema(4).

Page 60: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável
Page 61: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

59

6 Análise dos Resultados

Este capítulo tem como objetivo discutir os resultados obtidos durante a realização

dos testes. Dentre estes resultados, estão presentes as fontes de erros levantadas com a

experiência do desenvolvimento, suas respectivas correções, dentro do possível, e a análise

dos resultados da utilização do sistema no contexto da reabilitação motora. Desse modo,

este capítulo está dividido nas seções: Casos de testes funcionais (6.2), Fontes de erro

(6.3), Outros resultados (6.4), Análise dos resultados (6.5) e Problemas enfrentados (??).

6.1 Casos de testes funcionais

O principal objetivo dos casos de testes funcionais, é a observação e a análise do

sistema. Após a realização de todos os casos de testes propostos, foi possível chegar a uma

análise dos resultados da utilização do sistema no contexto da reabilitação motora, a qual

será apresentada na seção 6.5.

Os casos de testes funcionais consistem em cinco situações, nas quais a solução foi

analisada, variando entre elas o movimento e ambiente. Buscando analisar os resultados

obtidos em cada contexto.

Os dados obtidos em cada caso de teste estão estruturados de acordo com a tabela

5.

Tabela 5 – Estruturação dos Dados

Movimento Complexidade Luz ambiente exatidão

• Movimento: O nome e descrição do movimento análisado, exemplo: Levantar e

abaixar braço direito.

• Complexidade: Essa variável é referente a complexidade da execução do movi-

mento, para o mapeamento do kinect e acompanhamento do usuário. A rotulação

dessa variável segue a tabela 7.

Page 62: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

60 Capítulo 6. Análise dos Resultados

Tabela 6 – Rotulação da complexidade do Movimento

Complexidade Descrição

AltaExecução do movimento é de difícil mapeamento para

o kinect e para acompanhamento do usuário.

MediaExecução do movimento é de dificuldade moderada para

o mapeamento para o kinect e para acompanhamento do usuário.

BaixaExecução do movimento é de dificuldade baixa para

o mapeamento para o kinect e para acompanhamento do usuário.

• Luz ambiente: Com a premissa básica de um ambiente com pelo menos um metro e

meio do sensor, essa variável diz respeito a intensidade da luminosidade do ambiente,

podendo ser boa, regular e ruim.

• Exatidão: Essa variável é referente a exatidão que o kinect acompanha e corrige o

movimento do usuário. A rotulação dessa variável segue a tabela 7.

Tabela 7 – Rotulação da complexidade do Movimento

Exatidão Descrição

BoaBom acompanhamento e correção no movimento

executado pelo usuário

RegularRegular acompanhamento e correção no movimento

executado pelo usuário.

RuimRuim ou péssimo acompanhamento e correção no movimento

executado pelo usuário.

As próximas seções apresentam os casos de testes funcionais com diferentes variá-

veis, possibilitando a ánalise do comportamento do sistema em tais casos. Todos os testes

foram feitos em um ambiente com quatro metros quadrados e o sensor kinect em uma

altura de aproximadamente um metro e meio.

6.1.1 Levantar braço direito

Os resultados obtidos com o caso de teste estão dispostos na tabela 8. Esse caso

de teste consiste no levantamento do braço direito, em uma velocidade baixa.

6.1.1.1 Relatório de teste

Como pode ser observado na tabela 8 que a luz ambiente tem grande influência

no mapeamento do kinect. Podemos observar na imagem 18, o esqueleto à esquerda é

o movimento que está sendo executado pelo usuário, assim o movimento tem que ser

Page 63: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

6.1. Casos de testes funcionais 61

executado com certa fidelidade, caso contrário os erros serão apresentados na forma de

esferas sobre as juntas que se devem ser corrigidas. E na imagem 19 a correta execução

do movimento.

Tabela 8 – Teste 1

Movimento Complexidade Luz Ambiente Exatidão

1 Levantar Braço Dir. Baixa Boa Boa

2 Levantar Braço Dir. Baixa Regular Regular

3 Levantar Braço Dir. Baixa Ruim Ruim

Figura 18 – Movimento com presença de falhas

Page 64: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

62 Capítulo 6. Análise dos Resultados

Figura 19 – Movimento correto

6.1.2 Levantar dois braços

Os resultados obtidos com o teste estão dispostos na tabela 9. Esse teste consiste

no levantamento dos dois braços , em uma velocidade baixa.

6.1.2.1 Relatório de teste

Como pode ser observado na tabela 9 a luz ambiente tem grande influência no

mapeamento do kinect, porém com uma luz ambiente boa a exatidão do sensor é boa.

Tabela 9 – Teste 2

Movimento Complexidade Luz Ambiente Exatidão

1 Levantar os Braços Baixa Boa Boa

2 Levantar os Braços Baixa Regular Regular

3 Levantar os Braços Baixa Ruim Ruim

6.1.3 Sentar e levantar em uma cadeira de lado para o sensor

Os resultados obtidos com o teste estão dispostos na tabela 10. Esse teste consiste

em sentar e levantar em uma cadeira de lado ao kinect, em uma velocidade baixa.

6.1.3.1 Relatório de teste

Como pode ser observado na tabela 10 o kinect não consegue rastrear uma pessoa

de lado, o sensor se perde nas referências mostrando isntabilidade como pode ser visto na

Page 65: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

6.1. Casos de testes funcionais 63

imagem 20.

Tabela 10 – Teste 3

Movimento Complexidade Luz Ambiente Exatidão

1 Sentar de lado em Cadeira Alta Boa Ruim

2 Sentar de lado em Cadeira Alta Regular Ruim

3 Sentar de lado em Cadeira Alta Ruim Ruim

Figura 20 – Instabilidade com o usário sentando de lado em uma cadeira

6.1.4 Sentar e levantar em uma cadeira de frente para o sensor

Os resultados obtidos com o teste estão dispostos na tabela 11. Esse teste consiste

em sentar e levantar em uma cadeira de frente ao kinect , em uma velocidade baixa.

6.1.4.1 Relatório de teste

Como pode ser observado na tabela 11 o kinect não conseguiu rastrear o movi-

mento da pessoa sentando em uma cadeira. O sensor se perde nas referências das juntas

sobrepostas, mostrando instabilidade como pode ser visto na imagem 21.

Page 66: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

64 Capítulo 6. Análise dos Resultados

Tabela 11 – Teste 4

Movimento Complexidade Luz Ambiente Exatidão

1 Sentar de frente em Cadeira Alta Boa Ruim

2 Sentar de frente em Cadeira Alta Regular Ruim

3 Sentar de frente em Cadeira Alta Ruim Ruim

Figura 21 – Instabilidade com o usuário sentando de frente em uma cadeira

6.1.5 Agachamento

Os resultados obtidos com o teste estão dispostos na tabela 12. Esse teste consiste

no usuário agachar-se em uma velocidade baixa.

6.1.5.1 Relatório de teste

Como pode ser observado na tabela 11 o kinect não conseguiu rastrear muito

bem o movimento. O sensor se perde nas referências das juntas sobrepostas, mostrando

instabilidade como pode ser visto na imagem 22.

Page 67: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

6.2. Casos de testes funcionais por junta 65

Tabela 12 – Teste 5

Movimento Complexidade Luz Ambiente Exatidão

1 Agachar Alta Boa Regular

2 Agachar Alta Regular Ruim

3 Agachar Alta Ruim Ruim

Figura 22 – Pouca fidelidade com o real movimento

6.2 Casos de testes funcionais por junta

O principal objetivo dos casos de testes funcionais por junta, é a observação e a

análise de cada junta que o kinect é capaz de rastrear, podendo validar o comportamento

do sistema para cada junta. Previamente devemos estar cientes que não é possível isolar o

comportamento de cada junta, dado que não é possível separá-las do corpo, sendo assim,

alguns casos de testes serão responsáveis pela análise de mais de uma junta.

6.2.1 Cabeça

Os resultados obtidos com o teste estão dispostos na tabela 13. Esse teste consiste

no usuário movimentar a cabeça para os lados. Esse movimento foi gravado previamente

Page 68: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

66 Capítulo 6. Análise dos Resultados

e serão apresentados as imagens referentes a comparação.

6.2.1.1 Relatório de teste

Como pode ser observado na tabela 13 o movimento foi corrigido com exatidão,

dada as limitações de luz ambiente. O sistema corrige o usuário quando este não está

fazendo o movimento correto da cabeça como pode ser visto em 23 e não apresenta

nenhum erro quando o movimento está sendo executado corretamente como pode ser

visto em 24

Tabela 13 – Teste de junta referente a cabeça

Movimento Complexidade Luz Ambiente Exatidão

1 Cabeça Baixa Boa Boa

2 Cabeça Baixa Regular Regular

3 Cabeça Baixa Ruim Ruim

Figura 23 – Movimento sendo exercitado de forma incorreta propositalmente para havercorreção do sistema.

Page 69: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

6.2. Casos de testes funcionais por junta 67

Figura 24 – Movimento sendo exercitado de forma correta para não haver correção dosistema.

6.2.2 Coluna

Os resultados obtidos com o teste estão dispostos na tabela 14. Esse teste consiste

no usuário movimentar-se com o tronco para frente, diferente do movimento do avatar.

Esse movimento foi gravado previamente e serão apresentados as imagens referentes a

comparação.

6.2.2.1 Relatório de teste

Como pode ser observado na tabela 14 o movimento foi corrigido com exatidão,

dada as limitações de luz ambiente. O sistema corrige o usuário quando este não está

fazendo o movimento correto da coluna como pode ser visto em 25 e não apresenta nenhum

erro quando o movimento está sendo executado corretamente como pode ser visto em 26

Tabela 14 – Teste de junta referente a coluna

Movimento Complexidade Luz Ambiente Exatidão

1 Coluna Baixa Boa Boa

2 Coluna Baixa Regular Regular

3 Coluna Baixa Ruim Ruim

Page 70: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

68 Capítulo 6. Análise dos Resultados

Figura 25 – Movimento sendo exercitado de forma incorreta propositalmente para havercorreção do sistema.

Figura 26 – Movimento sendo exercitado de forma correta para não haver correção dosistema.

6.2.3 Pernas

Os resultados obtidos com o teste estão dispostos na tabela 15. Esse teste consiste

na análise de várias juntas, sendo elas:

• Quadril direito;

Page 71: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

6.2. Casos de testes funcionais por junta 69

• Joelho direito;

• Pé direito;

• Quadril esquerdo;

• Joelho esquerdo;

• Pé esquerdo;

O teste consiste em levantar a perna direita e esquerda, sendo que hora o usuário

levantava, hora não.

6.2.3.1 Relatório de teste

Como pode ser observado na tabela 15 o movimento foi corrigido com exatidão,

não tendo diferença entre os lados direito e esquerdo do corpo, dada as limitações de luz

ambiente. O sistema corrige o usuário quando este não está fazendo o movimento correto

da perna como pode ser visto nas imagens 28 e 27 e não apresenta nenhum erro quando

o movimento está sendo executado corretamente como pode ser visto em 30 e 29.

Tabela 15 – Teste de junta referente a cabeça

Movimento Complexidade Luz Ambiente Exatidão

1 Quadris Baixa Boa Boa

2 Quadris Baixa Regular Regular

3 Quadris Baixa Ruim Ruim

4 Joelhos Baixa Boa Boa

5 Joelhos Baixa Regular Regular

6 Joelhos Baixa Ruim Ruim

7 Pés Baixa Boa Boa

8 Pés Baixa Regular Regular

9 Pés Baixa Ruim Ruim

Page 72: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

70 Capítulo 6. Análise dos Resultados

Figura 27 – Movimento sendo exercitado de forma incorreta propositalmente para havercorreção do sistema.

Figura 28 – Movimento sendo exercitado de forma incorreta propositalmente para havercorreção do sistema.

Figura 29 – Movimento sendo exercitado de forma correta para não haver correção dosistema.

Page 73: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

6.2. Casos de testes funcionais por junta 71

Figura 30 – Movimento sendo exercitado de forma correta para não haver correção dosistema.

6.2.4 Braços

Os resultados obtidos com o teste estão dispostos na tabela 16. Esse teste consiste

na análise de várias juntas, sendo elas:

• Ombro direito;

• Cotovelo direito;

• Mão direito;

• Ombro esquerdo;

• Cotovelo esquerdo;

• Mão esquerdo;

O teste consiste em levantar a braço direito e esquerdo, sendo que hora o usuário

levantava, hora não.

6.2.4.1 Relatório de teste

Como pode ser observado na tabela 16 o movimento foi corrigido com exatidão,

não tendo diferença entre os lados direito e esquerdo do corpo, dada as limitações de luz

ambiente. O sistema corrige o usuário quando este não está fazendo o movimento correto

da braço como pode ser visto nas imagens 32 e 31 e não apresenta nenhum erro quando

o movimento está sendo executado corretamente como pode ser visto em 34 e 33.

Page 74: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

72 Capítulo 6. Análise dos Resultados

Tabela 16 – Teste de junta referente ao braço

Movimento Complexidade Luz Ambiente Exatidão

1 Ombros Baixa Boa Boa

2 Ombros Baixa Regular Regular

3 Ombros Baixa Ruim Ruim

4 Cotovelos Baixa Boa Boa

5 Cotovelos Baixa Regular Regular

6 Cotovelos Baixa Ruim Ruim

7 Mãos Baixa Boa Boa

8 Mãos Baixa Regular Regular

9 Mãos Baixa Ruim Ruim

Figura 31 – Movimento sendo exercitado de forma incorreta propositalmente para havercorreção do sistema.

Page 75: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

6.2. Casos de testes funcionais por junta 73

Figura 32 – Movimento sendo exercitado de forma incorreta propositalmente para havercorreção do sistema.

Figura 33 – Movimento sendo exercitado de forma correta para não haver correção dosistema.

Page 76: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

74 Capítulo 6. Análise dos Resultados

Figura 34 – Movimento sendo exercitado de forma correta para não haver correção dosistema.

6.3 Fontes de Erro

Como já mencionando anteriormente, a principal fonte do erro do sistema é devido

as limitações do kinect, seja pela precisão ou pela luz do ambiente. Por este motivo, é

aconselhavel que durante a execução dos movimentos, o ambiente esteja livre de possíveis

interferências no mapeio do sensor, além de estar bem iluminado. Quanto a precisão,

durante a realização do desenvolvimento buscou-se minimizar a margem de erro do sensor

aumentando a tolerância angular sobre o movimento das juntas.

6.4 Outros resultados

Nesta seção é apresentada outros resultados obtidos ao decorrer do desenvolvi-

mento deste trabalho.

6.4.1 Arquitetura completa

Em proposta apresentada na entrega do primeiro documento, foi apresentada a

arquitetura completa, uma arquitetura modular, onde cada módulo é responsável pelo

comportamento de uma parte do sistema, sendo cada módulo processado individualmente,

um sistema multiprocessado (2.6.2).

Essa arquitetura foi escolhida por não haver necessidade de várias máquinas ou

processadores, diferente de um sistema distribuído (2.6.1) ou um sistema massivamente

paralelo (2.6.3), e também pelo fato dos processos poderem ser executados ao mesmo

Page 77: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

6.4. Outros resultados 75

tempo sem queda no desempenho, em razão do sistema operacional delegar as instruções

a cada núcleo do processador.

O desempenho para o sistema é necessário, pois a solução do algoritmo do Baptista

(BAPTISTA, 2016), necessita de um grande processamento de informações. A não escolha

de um sistema multiprocessado, impactaria na solução, desencadeando o não cumprimento

de alguns requisitos, tais como na usabilidade, dado que a fluídez da movimentação do

avatar 3D e captação do movimento do usuário seriam afetados, na confiabilidade, já que

o sistema não teria desempenho suficiente para se recuperar de falhas, e principalmente

na performance do sistema (5.1.10).

Com isso foi desenvolvido uma solução, contendo 4 (quatro) módulos funcionais,

sendo multiprocessados, comunicando-se assincronicamente por memória compartilhada.

Esta arquitetura se encontra em estado inicial podendo ser encontrada aqui1, sua im-

plementação foi feita em python 3 (FOUNDATION, 2001-2017). Nela temos 4 (quatro)

módulos, sendo eles chamados de:

• Sensor: Módulo responsável pelo comportamento do sensor;

• Visualização: Módulo responsável pelo comportamento e comunicação com a parte

de visualização do avatar 3D;

• Processamento: Módulo responsável pelo comportamento de todo o processa-

mento das informações das juntas;

• Armazenamento: Módulo responsável pelo compartamento de armazenar todas

as informações do sistema.

Abaixo é apresentado um diagrama de sequências do sistema que contempla a

arquitetura modular.

1 https://gitlab.com/ricardogtx/tcc2

Page 78: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

76 Capítulo 6. Análise dos Resultados

Figura 35 – Diagrama de sequência responsável pela troca das mensagens do sistema aogravar um movimento.

Figura 36 – Diagrama de sequência responsável pela troca das mensagens do sistema aoexercitar um movimento.

Page 79: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

6.5. Análise dos resultados 77

A seguir é apresentado um desenho esquemático da solução já com o Unity 3D

integrado.

Figura 37 – Desenho da arquietura completa.

O objetivo dessa implementação foi verificar a viabilidade da arquietetura pro-

posta. Porém pela limitação de tempo, os requisitos foram priorizados, e a solução com-

pleta, usando multiprocessamento ficará como issue de melhoria da plataforma proposta.

6.5 Análise dos resultados

Apesar da análise entre as juntas está sendo realizada de maneira simplificada,

comparação angular das juntas desejadas, ela conseguiu um resultado inicial satisfatório

ao analisar os movimentos do usuário, contudo, apesar dos indicativos de bons resultados,

a solução não foi extensamente testada, e os erros nos movimentos das juntas não foram

avaliados. Logo tal proposta ainda não está madura para entrar em produção.

Page 80: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

78 Capítulo 6. Análise dos Resultados

Como foi observado ao longo dos testes, o sistema consegue fazer a leitura das

juntas que o kinect mapeia, podendo fazer a análise entre o movimento salvo com o

movimento feito pelo usuário. O sistema junto ao kinect se comportam melhor com um

ambiente favorável, livre de interferências para o mapeio do sensor e onde haja uma boa

luz ambiente. Mesmo assim não é possível fazer a análise de todos os graus de movimento

das articulações no corpo conforme apresentado em 2.5.

Trabalhando de maneira empírica com o sistema gerado com este trabalho, é pos-

sível encontrar indícios positivos quanto a proposta de um produto acessível para a reabi-

litação motora, porém não pode-se afirmar que tal solução pode ser usado em produção.

Sendo melhor aplicado a reabilitação onde envolvam idosos, já que o sistema apresenta

um funcionamento melhor com movimentos lentos, além de tornar o processo menos te-

dioso e mais lúdico. Contudo, pode-se concluir que o sistema gera resultados positivos no

processo de reabilitação motora.

Page 81: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

79

7 Conclusão

Como foi observado ao longo deste trabalho, podemos lidar com problemas de

saúde e sociais com o auxílio da tecnologia, e para tal não é necessário despendiar quantias

massivas de dinheiro. A filosofia open-source ajuda nesse quesito, incetivam a cooperação

das pessoas sem a necessidade de pagamentos, com isso podemos atacar tais problemas.

Infelizmente por questões técnicas não foi possível desenvolver este trabalho apenas com

tecnologias que compartilham essa filosofia.

Ao final, foi visto que o sistema gerado com este trabalho tem indícios de futura-

mente poder virar um produto acessível para a reabilitação motora, porém em casos onde

não é necessário fazer movimentos muito complexos e nem que exijam auxílio de objetos.

É recomendável no uso da reabilitação de idosos onde o procedimento fica menos tedioso

e mais lúdico.

Esta pesquisa obteve importantes resultados, em relação a implementação da so-

lução, identificando formas de auxílio a um problema de saúde e a problemas sociais,

além de identificar uma nova maneira de utilizar o produto da microsoft, o kinect, e a

viabilidade da aplicação no contexto fisioterapêutico.

Para que a pesquisa se complete, deve-se implementar o algoritmo do Roberto de

Souza Baptista (BAPTISTA, 2016) como forma de análise de movimento, onde não foi

possível durante o desenvolvimento. Desse modo, deve-se destacar as lacunas deixadas

pela pesquisa, apresentando os trabalhos futuros para que novos interessados possam

seguir e completar o estudo e o desenvolvimento do sistema.

• Implementar a arquitetura completa 6.4.1, junto ao algoritmo do Baptista (BAPTISTA,

2016) como módulo de processamento;

• Aplicar contextos de design no sistema, para mais engajamento ao uso;

• Possível aplicação de gameficação;

• Disponibilizar em alguma plataforma de distribuição de software.

Page 82: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável
Page 83: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

81

Referências

ARAUJO, J. M. F. R. de. Processamento digital de sinais: Conceitos e aplicações. 2017.Disponível em: <http://www.dsc.ufcg.edu.br/~pet/ciclo_seminarios/tecnicos/2012/CicloDeSeminarios2012.1_Joseana.pdf>. Citado na página 31.

BAPTISTA, R. D. S. Automatic human movement assessment with switching lineardynamic system: Motion segmentation and motor performance. Universidade de Brasília,2016. Citado 14 vezes nas páginas 9, 20, 23, 24, 25, 26, 27, 28, 29, 33, 34, 45, 75 e 79.

CERCA, A. A. C. S. J. Contextualização da biomecânica para a investigação domovimento: fundamentos, métodos e aplicações para análise da técnica esportiva. In:Revista Brasileira de Educação Física e Esporte. [S.l.: s.n.], 2007. v. 21, p. 61–85. Citadona página 24.

CHUNG, P. de D. P.; MENG, Q. Landmark-based methods for temporal align- mentof human motions. In: IEEE Conputational Intelligence Magazine. [S.l.: s.n.], 2014. p.29–37. Citado na página 26.

COPPE/UFR, P. de Engenharia Biomédica da. Definindo engenharia biomédica. 2016.Disponível em: <http://http://www.peb.ufrj.br/eb.htm>. Citado na página 33.

EELES, P. Rational library: What, no supplementary specification? 2014. Disponívelem: <https://www.ibm.com/developerworks/rational/library/3975.html>. Citado napágina 37.

FELICIOIV, C. M. dos SantosI; Gilver FerreiraI; Priscilla Lorenzatto Malac-coI; George Schayer SabinoII; Geraldo Fabiano de S. M. D. C. Confiabilidadeintra e interexaminadores e erro da medição no uso do goniômetro e inclinôme-tro digital. 2012. Disponível em: <http://www.scielo.br/scielo.php?script=sci_arttext&pid=S1517-86922012000100008>. Citado na página 20.

FOUNDATION, P. S. Python documentation. 2001–2017. Disponível em: <https://docs.python.org/3/>. Citado na página 75.

FOWLER, M. Uml distilled: A brief guide to the standard object modeling language.1997. Citado na página 43.

GAGNE, A. S. P. B. G. G. Operating system concepts. In: Operating System Concepts.[S.l.: s.n.], 2004. Citado na página 33.

GIL, A. C. Como elaborar projetos de pesquisa. p. 41–42, 2002. Citado na página 42.

GRADY, R. Practical software metrics for project management and process improvement.Prentice-Hall, 1992. Citado na página 36.

LIN, J. F. s.; KULIC, D. Online segmentation of human motion for automated reha-bilitation exercise analysis. In: IEEE Transactions on Neural Systems and RehabilitationEngineering. [S.l.: s.n.], 2014. v. 22, p. 168–180. Citado na página 26.

Page 84: Sistema de Aux■lio Fisioterap↑utico: Uma proposta de ...bdm.unb.br/bitstream/10483/19855/1/2017_RicardoGoncalvesTeixeira... · Figura 35 – Diagrama de sequência responsável

82 Referências

MARQUES, A. P. Manual de goniometria. In: Manual de Goniometria 2a EDIÇÃOREVISADA E AMPLIADA. [S.l.: s.n.], 2003. v. 2, p. 1–5. Citado 3 vezes nas páginas11, 20 e 31.

MATHWORKS. Matlab. 1994 – 2017. Disponível em: <https://www.mathworks.com/products/matlab.html>. Citado 2 vezes nas páginas 26 e 34.

MICROSOFT. kinect for windows. 2016. Disponível em: <https://developer.microsoft.com/en-us/windows/kinect>. Citado 4 vezes nas páginas 9, 32, 39 e 40.

ONE, V. Agile software feature estimation. 2017. Disponível em: <https://www.versionone.com/agile-101/agile-management-practices/agile-feature-estimation/>.Citado na página 54.

PRIMESENSE. Openni. 2010. Disponível em: <http://openni.ru/openni-sdk/openni-sdk-history-2/index.html>. Citado na página 27.

QUALISYS. Qualisys track manager. Disponível em: <http://www.qualisys.com/software/qualisys-track-manager/>. Citado na página 20.

RADIGAN, D. A metodologia kanban. 2017. Disponível em: <https://br.atlassian.com/agile/kanban>. Citado 2 vezes nas páginas 30 e 43.

ROUSE, M. Mpp (massively parallel processing). 2011. Disponível em: <http://whatis.techtarget.com/definition/MPP-massively-parallel-processing>. Citado na página 33.

SIGNIFICADOS. Siginficado de kanban. 2017. Disponível em: <https://www.significados.com.br/kanban/>. Citado na página 30.

TANENBAUM, A. S. Sistemas distribuídos - princípios e paradigmas. In: SistemasDistribuídos - Princípios e Paradigmas. [S.l.: s.n.], 2001. Citado na página 32.

TECHNOLOGIES, U. Unity 3d. Disponível em: <http://www.unity3D.com/Manual>.Citado na página 32.

TECHNOLOGIES, U. Unity 3d. 2017. Disponível em: <http://www.unity3D.com>.Citado na página 39.

TELES, V. M. Práticas do xp. 2006. Disponível em: <http://www.desenvolvimentoagil.com.br/xp/praticas/>. Citado na página 30.

THERAPY, W. C. for P. What is wcpt? 2016. Disponível em: <http://www.wcpt.org/what-is>. Citado na página 19.

THOMAS, K. B. M. B. A. van B. A. C. W. C. M. F. J. G. J. H. A. H. R. J. J. K. B.M. R. C. M. S. M. K. S. J. S. D. Manifesto Ágil. 2001. Disponível em: <http://www.agilemanifesto.org/>. Citado na página 29.