Tese

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Tese as PDF for free.

More details

  • Words: 33,497
  • Pages: 97
Marco Aurélio Machado Cardoso

Controlo de Agentes Computacionais Reactivos ao Contexto: Aplicação à Ginástica do Trabalho

Faculdade de Ciências da Universidade do Porto 2008

Marco Aurélio Machado Cardoso

Controlo de Agentes Computacionais Reactivos ao Contexto: Aplicação à Ginástica do Trabalho

Tese submetida à Faculdade de Ciências da Universidade do Porto para obtenção do grau de Mestre em Educação Multimédia

Faculdade de Ciências da Universidade do Porto 2008

Para os meus pais, irmãos e a Raquel.

3

Agradecimentos Começo por agradecer ao meu orientador por tudo que me ensinou, pelas sugestões e disponibilidade demonstrada no decorrer do presente trabalho. Especial agradecimento à minha mãe que para além de ser uma referência para mim, tem sido uma presença constante na conquista de novas metas da minha vida. Aos meus melhores amigos, os meus irmãos pelas palavras de apoio em todos os momentos de desenvolvimento deste trabalho. Por fim, agradeço à Raquel o carinho, ternura, paciência, incentivo e apoio imprescindíveis para a consecução deste trabalho.

4

Resumo Nesta tese, apresenta-se uma contribuição para o desenho e desenvolvimento de aplicações informáticas educativas com conteúdos multimédia. Concretamente, recorre-se a tecnologia de controlo e animação de agentes computacionais, propõe-se uma solução aplicacional para a didáctica e prática da educação física em contexto de trabalho (ginástica do trabalho). Como o ensino e a promoção da actividade física recorrendo a agentes computacionais pode apresentar dificuldades causadas pelo modelo de interacção utilizador-máquina mais comum, neste trabalho propõem-se mecanismos de controlo que conferem ao agente reactividade ao contexto. Designadamente, implementam-se e avaliam-se técnicas de visão computacional que permitem ao agente computacional receber feedback do comportamento do utilizador humano. Em termos práticos, utilizam-se medidas sobre o fluxo de imagem proveniente de uma câmara-de-vídeo, que quando contrastado com o fluxo de animação do agente, permite ajustar de modo informado o comportamento do agente. A partir daqui afere-se um parâmetro de correcção de velocidade de execução de movimento, que permite ao agente computacional sincronizar-se com o utilizador durante a realização de um conjunto pré-definido de exercícios físicos. Como contribuição secundária, pretende-se reforçar a ideia de que a utilização de aplicações informáticas com fins educativos constitui uma mais valia e uma forma mais criativa de formar indivíduos, neste caso no sentido de desenvolver hábitos de saúde física em contexto de trabalho.

5

Conteúdo

Resumo

5

Índice de Tabelas

9

Índice de Figuras

11

1 Introdução

12

2 Revisão da literatura

15

2.1

Contextualização teórica . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1

2.2

15

Promoção da actividade física: concretização à ginástica do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.1.2

Potencialidades do software educativo . . . . . . . . . . . . . . .

19

2.1.3

Soluções aplicacionais desenvolvidas para a ginástica trabalho e ensino do Tai Chi . . . . . . . . . . . . . . . . . . . . . . . . . .

24

Tecnologias usadas no desenvolvimento do protótipo . . . . . . . . . . .

30

2.2.1

Agentes computacionais com corporização humana . . . . . . .

30

2.2.1.1

Modelação de agentes computacionais . . . . . . . . .

31

2.2.1.2

Animação de agentes computacionais - Métodos de controle do movimento . . . . . . . . . . . . . . . . . . . .

34

Visão computacional - Aproximações ao Motion-Capture . . . .

35

2.2.2

3 Especificação do sistema

40

3.1

Arquitectura do sistema . . . . . . . . . . . . . . . . . . . . . . . . . .

41

3.2

Modelação e animação de agentes computacionais . . . . . . . . . . . .

42

6

3.3

3.2.1

Modelo genérico . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

3.2.2

Modelos 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

3.2.3

Modelos 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

3.2.4

Animação de agentes computacionais . . . . . . . . . . . . . . .

48

Reactividade ao contexto . . . . . . . . . . . . . . . . . . . . . . . . . .

50

3.3.1 3.3.2

Medidas utilizadas para a correcção de velocidade de agentes computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . .

51

Heurísticas propostas para correcção da velocidade de agentes .

53

4 Arquitectura e detalhes de implementação

56

4.1

Modelo de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

4.2

Funcionalidades da interface gráfica (GUI ) . . . . . . . . . . . . . . . .

61

4.3

Importação/exportação de actos comportamentais . . . . . . . . . . . .

65

4.4

Ferramentas e plataformas usadas . . . . . . . . . . . . . . . . . . . . .

66

5 Validação experimental

67

5.1

Protocolo experimental . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

5.2

Registo e discussão dos resultados experimentais . . . . . . . . . . . . .

69

5.2.1

Estudos preliminares . . . . . . . . . . . . . . . . . . . . . . . .

69

5.2.2

Heurística 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

Resumo de resultados experimentais . . . . . . . . . . . . . . . . . . . .

80

5.3

6 Conclusão

83

6.1

Resumo de contribuições . . . . . . . . . . . . . . . . . . . . . . . . . .

84

6.2

Trabalho futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

85

A Modelo do agente implementado

86

B Definições matemáticas

87

C Formato de importação/exportação de dados

89

7

D Estrutura de objectos e métodos principais

90

Referências

94

8

Lista de Tabelas 3.1

Sumário dos parâmetros usados no ajuste da velocidade do agente. . . .

9

55

Lista de Figuras 1.1

Instalação do sistema para agentes computacionais reactivos ao contexto. 13

1.2

Sugestões para a leitura da tese. . . . . . . . . . . . . . . . . . . . . . .

14

2.1

Classificação do software educativo de acordo com os seus objectivos pedagógicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

2.2

Janela de demonstração de um exercício proposto pelo Workrave. . . .

25

2.3

Janela de demonstração de um exercício proposto pelo Off4Fit 2.1. . .

26

2.4

Janela de demonstração de um exercício proposto pelo RSIGuard. . . .

27

2.5

Janela principal da aplicação Tai Chi 3D. . . . . . . . . . . . . . . . . .

29

2.6

Estrutura articulada e organização hierárquica do humanóide minimalista proposto em [46]. . . . . . . . . . . . . . . . . . . . . . . . . . . .

32

2.7

Janela do Blender com um esqueleto e malha seleccionados [28]. . . . .

33

2.8

Modelo de um humanóide animado segundo a cinemática directa [49]. .

35

2.9

Modelo de um humanóide animado segunto a cinemática inversa [49]. .

35

2.10 Diagrama de blocos ilustrando as componentes de um sistema de Motion-Capture através de imagens fornecidas por uma câmara-de-vídeo — mecanismo passivo. . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

2.11 Diagrama de blocos ilustrando as componentes de um sistema de Motion-Capture — mecanismo activo. . . . . . . . . . . . . . . . . . . . .

39

3.1

Arquitectura do sistema em diagrama de blocos. . . . . . . . . . . . . .

41

3.2

Diferentes posições de encaixe de um elo-filho no seu elo-pai. . . . . . .

44

3.3

Determinação da extremidade distal do elo i [x1i , yi1 , zi1 , 1]. . . . . . . . .

47

4.1

Diagrama de classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

10

4.2

Janela principal da interface gráfica da aplicação desenvolvida. . . . . .

62

4.3

Editor de frases e actos comportamentais (A), editor de configurações do agente e vista de câmara (B). . . . . . . . . . . . . . . . . . . . . . .

63

4.4

Editores dos mecanismos de sincronização. . . . . . . . . . . . . . . . .

64

4.5

Janela de visualização das séries temporais (Azul: φimg , Vermelho: φag , Verde: η). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

65

5.1

Movimento do agente durante a validação das heurísticas. . . . . . . . .

68

5.2

Resultados obtidos na experiência 1, sem sincronização. . . . . . . . . .

70

5.3

Resultados obtidos na experiência 1, com sincronização. . . . . . . . . .

71

5.4

Resultados obtidos na experiência 2, sem sincronização. . . . . . . . . .

72

5.5

Resultados obtidos na experiência 2, com sincronização. . . . . . . . . .

73

5.6

Resultados obtidos na experiência 3, com sincronização. . . . . . . . . .

74

5.7

Resultados obtidos na experiência 4, com sincronização. . . . . . . . . .

76

5.8

Resultados obtidos na experiência 5-A (gráficos da coluna da esquerda) e 5-B (gráficos da coluna da direita), com sincronização. . . . . . . . .

78

Resultados obtidos na experiência 6, com sincronização. . . . . . . . . .

80

A.1 Estrutura articulada e organização hierárquica do agente computacional implementado no protótipo. . . . . . . . . . . . . . . . . . . . . . . . .

86

5.9

11

Capítulo 1 Introdução Com o processo de modernização e o desenvolvimento tecnológico, o mercado de trabalho tornou-se cada vez mais competitivo e exigente. Este facto reflecte-se no dia a dia do cidadão activo, quando lhe é exigida maior produtividade, maior qualidade, soluções rápidas e pouco dispendiosas. Estas e outras exigências fizeram com que a protecção e manutenção da saúde e qualidade de vida do indivíduo ficasse para segundo plano. As alterações no sistema produtivo associadas a hábitos alimentares inadequados, falta de actividade física, entre outros, têm conduzido ao desenvolvimento de distúrbios físicos e psicológicos nos trabalhadores. Nos últimos anos, as pesquisas médicas têm demonstrado que a falta de actividade física é um dos factores que mais tem contribuído para a falta de saúde do homem contemporâneo [27]. Apesar de não ser um conceito recente, cada vez mais é compreendido o papel da ginástica do trabalho como um valioso instrumento na melhoria da saúde física e psicológica do trabalhador, reduzindo e prevenindo problemas ocupacionais, através de exercícios específicos que são realizados no próprio local de trabalho. Para este conhecimento muito tem contribuído diversos trabalhos de investigação que avaliam a implementação de programas de ginástica do trabalho e o seus resultados [36]. A par destes trabalhos têm sido desenvolvidas novas metodologias, entre as quais soluções aplicacionais de cariz educativo que visam a promoção da actividade física, bem como a prevenção e reabilitação de lesões e distúrbios desenvolvidos pelos trabalhadores. Com esta tese pretende-se desenvolver um protótipo para uma solução aplicacional capaz de controlar agentes computacionais reactivos ao contexto, neste caso particular, com interesse ao nível do ensino da ginástica do trabalho. Para isso, recorreu-se à utilização de técnicas de duas grandes áreas da ciência de computadores: a modelação, visualização e animação de personagens ou agentes computacionais (2D e 3D) e técnicas de visão computacional para processamento, em tempo real, da informação de vídeo sobre o utilizador humano. A figura 1.1 apresenta um diagrama da instalação do protótipo desenvolvido nesta tese.

12

13

Figura 1.1: Instalação do sistema para agentes computacionais reactivos ao contexto.

Apresenta-se de seguida um resumo do conteúdo dos diferentes capítulos desta tese. O capítulo 2 está sub-dividido em duas partes. Na primeira parte é realizada uma reflexão sobre os benefícios da actividade física na manutenção e melhoria da saúde e da qualidade de vida dos indivíduos. Em particular, salientam-se alguns estudos realizados no âmbito da ginástica do trabalho e situações concretas de instituições que implementaram programas junto dos seus funcionários. De forma a esclarecer o contributo que pode advir do uso de aplicações informáticas na ginástica do trabalho, faz-se uma breve análise do papel destas tecnologias na formação de indivíduos, bem como algumas particularidades do seu desenvolvimento. Ainda nesta parte, apresentam-se soluções aplicacionais desenvolvidas para este domínio e enumeram-se as suas principais caracterísiticas. Na segunda parte do capítulo, focam-se os aspectos técnicos envolvidos na realização deste tipo de soluções informáticas. Em particular, é feita uma referência aos aspectos envolvidos na modelação e animação de personagens (2D ou 3D) e às técnicas de captura e análise do movimento humano em tempo real —Motion-Capture. No capítulo 3 apresenta-se a especificação das várias componentes do protótipo desenvolvido, nomeadamente: a sua arquitectura geral, o método utilizado para modelação e animação de agentes computacionais (2D e 3D) e a descrição das técnicas de processamento de imagem usadas para correcção automática do comportamento do agente. No capítulo 4 apresentam-se os detalhes de implementação do protótipo, destacando-se o modelo de classes utilizado durante a sua criação e alguns detalhes de implementação. Por último apresentam-se as funcionalidades disponibilizadas pela interface gráfica do protótipo. No capítulo 5 descreve-se o protocolo experimental desenvolvido para a validação dos mecanismos de reactividade ao contexto implementados neste protótipo, registam-se os resultados obtidos juntamente com a análise crítica dos mesmos.

14

CAPÍTULO 1. INTRODUÇÃO

No capítulo 6 apresentam-se as conclusões desta tese, evidenciando os aspectos mais positivos e as limitações encontradas. Para além disso, apontam-se algumas direcções para trabalho futuro. A figura 1.2 apresenta um diagrama das sequências possíveis ou recomendadas para a leitura desta tese.

Capítulo 1

Capítulo 2

Capítulo 3

Capítulo 4

Capítulo 5

Figura 1.2: Sugestões para a leitura da tese.

Capítulo 6

Capítulo 2 Revisão da literatura Este capítulo está organizado em duas partes. Na primeira parte (secção 2.1) faz-se uma breve reflexão sobre a importância da actividade física em contexto de trabalho, referem-se as potencialidades do software educativo enquanto agente auxiliar nos processos de ensino-aprendizagem e analisam-se algumas soluções aplicacionais desenvolvidas especificamente para o domínio da educação física em contexto de trabalho. Na segunda parte (secção 2.2) enumeram-se os aspectos fundamentais na criação destas aplicações, focando a modelação e animação de agentes computacionais e mecanismos de seguimento e análise do movimento humano — Motion-Capture.

2.1 2.1.1

Contextualização teórica Promoção da actividade física: concretização à ginástica do trabalho

É do conhecimento geral que o Homem contemporâneo utiliza cada vez menos as suas potencialidades corporais e que o baixo nível de actividade física é um factor decisivo no desenvolvimento de doenças degenerativas. Este facto tem vindo a reforçar a necessidade de se promoverem mudanças no estilo de vida, levando-o a incorporar no quotidiano a prática da actividade física. Em Portugal, a relação estreita que existe entre a prática da actividade física e a conduta saudável é promovida desde cedo, durante a passagem dos indivíduos pela escola. Se fizermos uma análise breve ao Currículo Nacional para o Ensino Básico da disciplina de Educação Física, em [10], encontrámos várias competências que ilustram bem a importância desta área curricular na formação do indivíduo. Salientam-se as seguintes: • “Melhorar a aptidão física elevando as capacidades físicas de modo harmonioso e adequado às necessidades de desenvolvimento do aluno.” 15

16

CAPÍTULO 2. REVISÃO DA LITERATURA • “Promover o gosto pela prática regular das actividades físicas e aprofundar a compreensão da sua importância como factores de saúde e componente cultural, na dimensão individual e social.”

Em [27], os autores defendem que os principais benefícios para a saúde que advêm da prática de actividade física prendem-se com aspectos antropométricos, neuromusculares, metabólicos e psicológicos. No que diz respeito à dimensão psicológica, os mesmos autores afirmam que a actividade física actua na melhoria da auto-estima, do auto-conceito, da imagem corporal, das funções cognitivas e de socialização, na diminuição do stress e da ansiedade e na diminuição do consumo de medicamentos. Por sua vez, em [17], os autores afirmam que a prática habitual de exercícios físicos, além de promover a saúde, influencia a reabilitação de determinadas patologias associadas ao aumento dos índices de morbilidade e da mortalidade. Em [1], o autor refere que a tendência actual de relacionar aptidão física com a saúde representa um estado multifacetado de bem-estar resultante da participação na actividade física. Assim sendo, ultrapassa a visão tradicional do “fitness” preconizada nos anos 70 e 80, centrada no desenvolvimento da capacidade cardiorrespiratória. Diversos estudos sugerem que a prática da actividade física actua na redução da taxa de mortalidade e de risco de desenvolvimento de doenças cardiovasculares, hipertensão, osteoporose, diabetes, doenças respiratórias, entre outras. Para além disto, são mencionados efeitos positivos da actividade física no processo de envelhecimento, no aumento da longevidade, no controle da obesidade e em alguns tipos de cancro [27]. Entre os estudos mais importantes nesta área de investigação encontramos um trabalho realizado com ex-alunos da Universidade de Harvard. O autor deste trabalho verificou que a prática de actividade física reflecte-se em menores índices de mortalidade. Através da comparação de indivíduos activos e moderadamente activos com indivíduos menos activos, verificou-se que a expectativa de vida é maior para aqueles cujo nível de actividade física é mais elevado. Em relação ao risco de morte por doenças cardiovasculares, respiratórias e por cancro, o estudo sugere uma relação inversa, isto é, o risco é tanto menor quanto maior for o nível de actividade física [32]. Um movimento que não é recente mas que só nas últimas décadas tem despertado o interesse necessário para que fosse estudado cientificamente é a relação entre o trabalho, a saúde e o bem-estar dos indivíduos. Isto porque, desde a revolução industrial até à actualidade, observaram-se diversas mudanças na relação do homem com o trabalho. As actividades que antes eram essencialmente artesanais foram segmentadas e despersonalizadas, exigindo do trabalhador maior destreza para a execução de novas tarefas, que se tornaram mais mecanizadas e automatizadas. Consequentemente, ao longo do século XX assistiu-se ao desenvolvimento crescente de distúrbios físicos e psicológicos nos trabalhadores como resultado das alterações no sistema produtivo. Contudo, desde cedo se começou a perceber o contributo positivo que a actividade física poderia dar para a minimização de alguns destes problemas [3].

2.1. CONTEXTUALIZAÇÃO TEÓRICA

17

Actualmente designada de ginástica do trabalho, surgiu na Polónia em 1925, pela designação de “Ginástica de Pausa” e era destinada aos operários da altura. Até ao início dos anos 60, surgiram vários movimentos isolados, nomeadamente na Holanda, Rússia, Bulgária, antiga Alemanha Oriental, Suécia e Bélgica. Nos anos 70 cerca de 50 mil empresas nos EUA envolveram-se em programas diários de ginástica durante o período de trabalho. Entretanto no Japão, a ginática do trabalho consolidou-se e tornou-se obrigatória no universo da indústria e prestação de serviços [3]. Geralmente, a ginástica do trabalho é praticada em intervalos diários de cinco a dez minutos. O seu objectivo principal é proporcionar ao trabalhador uma melhor utilização da sua capacidade funcional através de exercícios de alongamento, de prevenção de lesões ocupacionais e dinâmicas de recreação. É importante referir que o programa de actividades deve ser desenvolvido após uma avaliação criteriosa do ambiente de trabalho, de cada trabalhador em particular e das condições da empresa [3]. Genericamente, existem dois tipos de ginástica do trabalho: preparatória e compensatória. O primeiro tipo é realizado antes ou logo no início do período de trabalho e é constituída de aquecimentos e/ou alongamentos específicos para determinadas estruturas. O objectivo fundamental é aumentar a circulação sanguínea, lubrificar e aumentar a viscosidade das articulações e tendões. A ginástica compensatória decorre durante as pausas realizadas ao longo do dia de trabalho e consiste na execução de exercícios específicos de compensação. Geralmente é praticada no próprio espaço de trabalho ou em espaço livre e permite ao trabalhador realizar exercícios de descontração muscular e relaxamento. A sua prática visa a diminuição da fadiga, prevenção de lesões por esforço repetitivo — L.E.R e distúrbios osteo-reumáticos relacionados com o trabalho — D.O.R.T. [9]. A ginástica do trabalho oferece benefícios fundamentalmente a dois níveis. Por um lado para o funcionário, visto que é uma forma de combater e prevenir as L.E.R. e as D.O.R.T, é uma arma contra o sedentarismo, stress, depressão e ansiedade. Para além disto, contribui para a melhoria da flexibilidade, força, coordenação, ritmo, agilidade e resistência. Por outro lado, temos os benefícios da ginástica do trabalho para a empresa, visto que permite a redução de despesas por ausência do trabalhador para receber apoio médico, a diminuição da probabilidade de acidentes e lesões, melhora a imagem da instituição perante os funcionários e a sociedade, além de aumentar a produtividade e qualidade [9]. Uma das profissões que corre um elevado risco de contracção das L.E.R e D.O.R.T são aquelas que implicam a utilização do computador. A utilização do computador é por si só uma actividade sedentária. O trabalho decorre em frente ao ecrã do computador e o utilizador, geralmente, adopta uma postura corporal de reduzida necessidade de movimentos, que se resumem, essencialmente, ao movimento dos olhos, mãos e cabeça. Muitas vezes, para agravar a situação, a natureza do trabalho, a responsabilidade inerente e nível de concentração exigido é de tal ordem que obriga o trabalhador a ficar horas a fio em frente ao computador. Do ponto vista anatómico, o problema reside no facto do utilizador do computador assumir, geralmente, uma posição bastante

18

CAPÍTULO 2. REVISÃO DA LITERATURA

contraída e pouco natural. A cabeça tende a permanecer imóvel, as mãos, braços, dedos e o tronco tendem a adoptar posturas de reduzida amplitude de movimento [22]. Outro aspecto que contribui para este problema resulta da actual revolução no domínio da portabilidade dos equipamentos informáticos. Cada vez mais, no momento da aquisição de um equipamento informático, o utilizador opta pelo computador portátil em detrimento dos vulgares computadores de secretária. Ainda que os fabricantes de computadores portáteis forneçam advertências e informações relativas aos problemas ergonómicos associados ao seu uso, este facto é muitas vezes desconhecido por muitos utilizadores. O principal problema dos computadores portáteis resulta de não terem um ecrã e um teclado destacáveis. Consequentemente, não há nenhuma postura que possa ser adoptada pelo utilizador que esteja completamente correcta [14]. Actualmente é completamente aceite que a manutenção da saúde dos trabalhadores de uma determinada empresa é um factor que influencia a performance da mesma. Diversas empresas e instituições desenvolvem programas de ginástica do trabalho com o objectivo principal de desenvolver hábitos de saúde em todos os colaboradores. Para isto, proporcionam a realização de actividade física durante pausas no trabalho. Ainda que estes programas, em larga medida, veiculem interesses económicos, tendo em vista que pessoas com estilos de vida saudáveis são mais eficientes e produtivas e reduzem o seu absentismo, os benefícios para ambas as partes são mais do que evidentes [3]. Em Portugal, diversas instituições reconheceram a importância destes programas de ginástica do trabalho e os benefícios que daí podem advir. Na sede da Secretaria Regional dos Assuntos Sociais, em Angra do Heroísmo - Açores, 60 funcionários cumprem um programa bissemanal de exercício físico denominado “De manhã se começa o dia com bem-estar”. O programa assenta num conceito criado pelos fisioterapeutas Eva Albuquerque e Paulo Araújo que funde os princípios do movimento em diagonal do PNF (facilitação neuromuscular proprioceptiva) com o exercício lento, gracioso e ritmado do Tai Chi Chuan [42]. Na fábrica da Pioneer Technology - Portugal, os trabalhadores da empresa cumprem em horários diferenciados um programa de ginástica do qual faz parte medidas como a realização de exercícios de alongamento. Os resultados obtidos na redução do absentismo de 3,52% em 2003 para 1,43% em 2006 demonstram os benefícios deste programa [34]. Outro exemplo é dado pela Câmara Municipal de Sintra que proporciona a cerca de 15 dos seus trabalhadores, 2 aulas/sessões semanais de um programa de ginástica do trabalho [44]. O nicho de mercado que tem vindo a ser criado nesta área, começa a proporcionar o aparecimento de empresas que oferecem programas de ginástica do trabalho dos quais fazem parte aulas com professores e técnicos de saúde especializados, com planos de exercícios variados e adaptados ao público-alvo e aos objectivos da empresa. Paralelamente, começam a surgir no mercado soluções aplicacionais gratuitas e comerciais desenvolvidos para esta área. Na sua maioria incidem na ginástica do trabalho e

2.1. CONTEXTUALIZAÇÃO TEÓRICA

19

dirigem-se a trabalhadores de escritório. Estas soluções aplicacionais educam os seus utilizadores para a adopção de hábitos de vida saudáveis. Deste modo, estes programas informáticos poder-se-ão considerar software educativo. De seguida apresentaremos alguns aspectos importantes relativamente ao contributo do software educativo nos processos de ensino/aprendizagem.

2.1.2

Potencialidades do software educativo

Para fazer face à competitividade e exigência do mundo do trabalho, os indivíduos têm que investir num processo permanente de aquisição de conhecimentos, capacidades e competências. Só desta forma poderão assegurar uma posição mais vantajosa em termos de empregabilidade e capacidade de superação das dificuldades impostas pelas constantes mudanças e necessidades do mercado de trabalho. Para isto é necessário consciencializar os indivíduos da importância da aprendizagem ao longo da vida. Na expressão aprendizagem ao longo da vida ressalta o factor tempo: aprender durante uma vida, contínua ou periodicamente [8]. Por outro lado, cada vez mais reconhecemos a importância de se focalizar e valorizar o processo de aprendizagem em detrimento da instrução e transmissão de conteúdos, lembrando que é mais relevante como se sabe do que o que e o quanto se sabe. Para isto é fundamental levar o indivíduo a aprender a aprender, o que se traduz na capacidade de reflectir, analisar e tomar consciência do que sabe e dispor-se a mudar os próprios conceitos e a procurar novos conhecimentos. Contudo, será importante referir que as pessoas só planearão actividades de aprendizagem ao longo das suas vidas se realmente quiserem aprender. Se as primeiras experiências de aprendizagem tiverem sido mal sucedidas e pessoalmente negativas, certamente não vão continuar a fazê-lo. Esta visão leva-nos a compreender que, em última instância, a motivação individual para aprender e a disponibilização de várias oportunidades de aprendizagem são os factores principais para a concretização de uma estratégia de aprendizagem bem sucedida ao longo da vida [8]. Um artefacto tecnológico que tem estado cada vez mais presente no nosso dia-a-dia e que começa a afirmar-se como um meio capaz de viabilizar mudanças no processo de ensino/aprendizagem é o computador. De facto, esta ferramenta configura-se hoje como um objecto tecnológico potencialmente promissor na iniciação e difusão de novas competências, habilidades e metodologias dentro da Educação. Isto porque, a chegada dos computadores começou a mudar a maneira de condução das pesquisas, de construção do conhecimento, a natureza das organizações e dos seus serviços. Daqui surge a necessidade de reforçar a importância dos instrumentos electrónicos e o uso de redes telemáticas na educação, de novos ambientes de aprendizagem informatizados que possibilitem novas metodologias de ensino/aprendizagem [2]. Das várias tecnologias informáticas emergentes ao dispôr da Educação destaca-se o software educativo. O software educativo pode ser considerado como a espinha dorsal

20

CAPÍTULO 2. REVISÃO DA LITERATURA

das aplicações da informática educativa e que é construído a partir de um conjunto de expectativas em relação às aplicações pedagógicas da tecnologia de computadores [19]. Do ponto de vista pedagógico, o que diferencia o software educativo de outras classes de software prende-se com o facto de ser desenvolvido com a finalidade de levar o aluno a construir determinado conhecimento relativo a um conteúdo ou área didáctica. Portanto, o que caracteriza este tipo de tecnologia é essencialmente o seu carácter didáctico e pedagógico que busca favorecer o conhecimento pelo aluno [31]. A prática educativa que recorre ao uso de software educativo, pode criar contextos mais enriquecedores, baseados em teorias de aprendizagem construtivistas, centradas no indivíduo, que propiciam o desenvolvimento do conhecimento e das funções psicológicas, por exemplo, através da sua interacção com objectos sócio-culturais do meio. Para além disto, a utilização de software educativo no processo de ensino/aprendizagem, altamente interactivo, dotado de múltiplos media (som, imagem, vídeo, etc) e particularidades tecnológicas, permite a criação de um ambiente computacional de aprendizagem mais dinâmico e mais aberto, onde o aluno pode integrar-se para desenvolver os seus planos individuais, com base nas suas habilidades, conhecimentos e interesses. Existem diversas metodologias de classificação do software educativo. Em [35], o autor classifica o software educativo em função do uso didáctico, diferenciando os que são feitos para ensinar, os que são criados para fazer aprender e os que têm outras finalidades, mas podem ser utilizados para fins didácticos. Outra forma de classificação de software educativo segue a dicotomia software fechado e aberto. O primeiro caso refere-se a uma classe de software educativo que permite pouca ou nenhuma criação de situações problemas por parte dos professores ou de soluções alternativas por parte dos alunos a partir da modificação no software. De uma forma geral, esta classe contempla soluções aplicacionais em que o paradigma de aprendizagem e de desenvolvimento subjacente à sua criação é o behaviorismo. Em contrapartida, um software aberto segue os ideais construtivistas. Desta classe fazem parte soluções aplicacionais que permitem aos professores e alunos criarem os seus próprios problemas e soluções de uma forma mais criativa [41]. Outra forma de classificar software educativo prende-se com os seus objectivos pedagógicos. A figura 2.1 apresenta as categorais principais. • Os tutoriais(1) integram um conjunto de informações pedagogicamente organizadas. A informação é apresentada ao aluno e ele tem a liberdade de escolher o que quer consultar. Neste software a informação consultada pode ter algumas características que não são permitidas no papel, tais como animação e som. O aluno pode ler o que está no ecrã ou ouvir informação áudio. Por outro lado, o aluno aprende de acordo com o seu próprio ritmo. Uma desvantagem deste tipo de software é o facto de não permitir analisar o processo de aquisição dos conhecimentos utilizados pelo aluno. • O software de programação(2) , permite a criação de protótipos de programas,

2.1. CONTEXTUALIZAÇÃO TEÓRICA

21

(1)

Tutoriais

(7)

(2)

Jogos

Programação

Categorais de Software Educativo

(6)

Simulação e modelagem

(3)

Aplicativos

5)

Multimédia e Internet

(4)

Exercícios e práticas

Figura 2.1: Classificação do software educativo de acordo com os seus objectivos pedagógicos. sem que sejam necessários conhecimentos técnicos muito avançados de programação. Podem ser relevantes como estímulo ao exercício de organização de ideias, possibilitando um ambiente cognitivo muito rico. A concretização de um programa, utilizando conceitos e estratégias, exige que o aluno processe a informação, transformando-a em conhecimento. Através da programação o aluno representa uma ideia e o computador oferece um feedback. Deste modo, torna-se mais fácil a detecção e correcção de erros por parte do aluno. A análise do programa construído pelo aluno, permite ao professor ter acesso ao processo de raciocínio do aluno. • Os aplicativos(3) apesar de não terem sido criados para o uso educacional, permitem a concretização de actividades de interesse pedagógico, em diferentes disciplinas. São programas direccionados para aplicações específicas, como processadores de texto ou geradores de bases de dados, entre outros. As aplicações do Microsoft Office são as mais populares. • Os exercícios e práticas(4) têm como principal objectivo o exercício de certas habilidades. Trata-se de um tipo de programa adequado ao treino. Permite a interacção do utilizador com o computador, sendo que esta interacção poderá ir desde o virar de uma página de um livro electrónico até à realização de exercícios em ambiente digital. Com este tipo de aplicação o professor poderá dispor de uma enorme quantidade de exercícios, organizados por grau de conhecimento.

22

CAPÍTULO 2. REVISÃO DA LITERATURA Idealmente, este tipo de programa deverá verificar a performance do aluno. Claro está que este tipo de feedback não analisa a razão pela qual o aluno acertou ou errou na execução do exercício, nem avalia o modo como os conhecimentos são adquiridos. • A utilização de aplicações multimédia e internet(5) poderá ter várias semelhanças à de um tutorial. Tal como este, apresenta a informação ao aluno, estando esta informação disponível na forma de textos, imagens, sons, ou combinações destes. O aluno tem a liberdade de escolher o que quer consultar e o computador apresenta a informação que tem disponível. É permitida uma pesquisa através de um sistema de navegação que não garante que o aluno esteja a compreender as informações visitadas. No entanto, se se tratar de um sistema de autoria em que o aluno produz o seu próprio sistema multimédia os efeitos produzidos poderão ser bem diferentes. Nesta construção o aluno é obrigado a procurar informação e a proceder ao seu tratamento. Eventualmente, também é incentivado a utilizar diferentes programas para construir o seu sistema multimédia. Numa fase final, é estimulado a realizar uma análise criteriosa da coerência da informação apresentada e da qualidade do seu sistema multimédia. • A simulação e modelagem(6) permitem a “vivência” e/ou visualização de fenómenos que jamais poderiam ser reproduzidos numa sala de aula sem o recurso a um computador. A simulação pode ser fechada ou aberta. Considerase fechada quando o fenómeno é previamente implementado no computador, não exigindo que o aluno desenvolva as suas hipóteses, testes, analise os resultados e refine os seus conceitos. Nessa perspectiva a simulação aproxima-se muito do tutorial. A simulação pode ser aberta quando fornece algumas situações previamente definidas e encoraja o aluno a elaborar as suas hipóteses que deverão ser validadas por intermédio do processo de simulação no computador. Na modelagem é o aluno que cria o modelo do fenómeno, utilizando recursos de um sistema computacional que permita implementar esse modelo no computador. Este caso é bastante semelhante à actividade de programação, uma vez que o aluno é convidado a envolver-se na definição e representação computacional de uma situação. Em ambos os casos, simulação e modelagem, para que a aprendizagem se processe é necessário que se crie um ambiente de envolvimento do aluno com o fenómeno, gerador de hipóteses que possam ser testadas pelo aluno através de experiências, outras fontes de informação e ainda usando as potencialidade do computador. • Os jogos(7) caracterizam-se por envolver o aluno numa competição com a máquina e/ou colegas. Normamente, têm um carácter de desafio e pretendem ser divertidos, mesmo quando promovem a aprendizagem, o que incentiva o aluno. Os jogos poderão dificultar a aprendizagem: a competição pode desviar a atenção do aluno do conceito envolvido no jogo, o interesse é ganhar e não a reflexão sobre os processos ou estratégias envolvidas.

Será importante salientar que muitas soluções aplicacionais educativas podem não ser

2.1. CONTEXTUALIZAÇÃO TEÓRICA

23

incorporadas numa determinada categoria mas sim em várias categorias. Salienta-se também que muitas das categorizações são horizontais, isto é, podem ser aplicadas a software criado para o ensino de qualquer área do conhecimento. Do ponto de vista tecnológico, o desafio da produção de software educativo traduz-se na construção de produtos computacionais com fins educativos, de forma que sejam atractivos, reutilizáveis e adaptáveis, sem se restringir ao domínio específico de um curso, de uma unidade curricular, de um professor ou de uma instituição de ensino [11]. Além disso, os elementos pedagógicos destes produtos devem adequar-se às diversas variáveis de um contexto educacional, de modo que propiciem situações de aprendizagem significativas aos alunos. Contudo o desenvolvimento destas aplicações depara-se com alguns constrangimentos. Destaca-se, por exemplo, a falta de frameworks que possam ser utilizadas em diversos contextos e uma excessiva quantidade de formalidades ao nível técnico e pedagógico. Para além disto, a actividade aplicada ao desenvolvimento de software educativo é complexa, visto que o processo depende da especialização do(s) responsável(eis) pelo desenvolvimento do projecto, aspectos de Engenharia de Software e a aquisição e aplicação de conhecimentos pedagógicos [12]. Para além disto, pode acarretar diversos problemas relacionados com investimentos em hardware de elevado custo e despesas com a formação do(s) responsável(eis) pelo desenvolvimento. Em diversas situações acresce ainda o custo de formação associado ao utilizador. Nesse sentido, torna-se cada vez mais desejável a estruturação de materiais educativos em pequenos segmentos para que possam ser reutilizados em diversos contextos educacionais [24]. Esses pequenos segmentos, depois de construídos, podem ser implementados, seguindo padrões para que sejam reutilizáveis no desenvolvimento de novos de produtos educativos. Do ponto de vista técnico, esta concepção é oriunda do paradigma orientado a objectos, da Engenharia de Software, fazendo referência ao processo de modularização no processo de desenvolvimento de software. O resultado de tudo isto é o aparecimento de soluções aplicacionais direccionadas para o processo de ensino/aprendizagem, altamente interactivas, dotados de múltiplas tecnologias, que disponibilizam ambientes computacionais de aprendizagem mais dinâmicos e abertos, onde os alunos podem integrar-se para desenvolver os seus projectos, com base nas suas capacidades, conhecimentos e interesses. A filosofia de desenvolvimento de software educativo segue as mesmas etapas de um processo sistemático para o desenvolvimento de software convencional (análise, desenho ou projecto, desenvolvimento, protótipo, ajustes ou adequações e implementação). No caso particular desta tese seguiremos esta filosofia não com o objectivo de desenvolver um protótipo na perspectiva do utilizador, mas antes numa perspectiva de experimentação e validação de um conceito. Esta opção prende-se com o facto de ser necessário capacitar o protótipo de determinadas funcionalidades que não têm significado do ponto de vista de um utilizador. Como o seu desenvolvimento seguirá a filosofia orientada a objectos, facilmente poderá ser criada uma versão para o utilizador.

24

CAPÍTULO 2. REVISÃO DA LITERATURA

Por outro lado, ainda que o protótipo desenvolvido tenha como finalidade principal a sua aplicação no domínio da ginástica do trabalho, a sua reutilização em outros contextos educativos é perfeitamente viável.

2.1.3

Soluções aplicacionais desenvolvidas para a ginástica trabalho e ensino do Tai Chi

A implementação de programas de ginástica do trabalho junto de empresas e instituições é um meio de formar os cidadãos, neste caso, no sentido de promover a prática de exercício físico, a adopção de hábitos de saúde e procura de bem-estar físico e psicológico. Será certamente discutível se as tecnologias informáticas podem suprimir a necessidade de programas de ginástica do trabalho totalmente independentes de uma supervisão humana especializada. Diversos estudos salientam que a tecnologia por si só não muda directamente o ensino ou a aprendizagem. No entanto, a integração destas tecnologias nos programas de ginástica do trabalho poderá ser uma mais valia. De seguida faz-se uma breve análise a três soluções aplicacionais bastante referenciados neste âmbito: dois gratuitos, designados Workrave e Off4Fit 2.1, e um comercial designado por RSIGuard. As três aplicações foram desenvolvidas no sentido de dar apoio a utilizadores do computador. Para além disto, analisa-se o software designado Tai Chi 3D que apesar de não ter sido desenvolvido para ser utilizado em ginástica do trabalho, começam a surgir programas que integram esta arte marcial.

Workrave Workrave é uma aplicação informática gratuita que ajuda na recuperação e prevenção da “lesão por esforço repetitivo”. O programa faz uma monitorização da actividade do utilizador e a partir daqui lembra-o quando deve fazer uma pausa, restringindo o seu trabalho ao tempo limite diário. Através da análise contínua da actividade do teclado e do rato, a aplicação é capaz de reconhecer se o utilizador está ausente para uma pausa. Mesmo que o utilizador mude de computador, o Workrave possibilita o funcionamento em rede, pelo que, é capaz de monitorizar todos os computadores sabendo desta forma o tempo de trabalho. Assente em estudos que revelam a importância de várias micro pausas durante uma hora de trabalho, o Workrave contribui para a manutenção da saúde do utilizador, como também permite a recuperação de possíveis lesões de uma forma mais rápida. Atingida a hora de descanso, surge automaticamente uma janela pop-up lembrando que o utilizador deve fazer uma micro pausa. Se o utilizador ignorar a mensagem, o software pode agir de uma forma menos amigável. Previamente configurado, o aparecimento desta janela desencadeia o bloqueio do computador, sendo desta forma o utilizador obrigado a realizar a micro pausa [7]. Como é possível observar na figura 2.2, durante uma micro pausa é proposto ao utilizador que realize alguns exercícios físicos

2.1. CONTEXTUALIZAÇÃO TEÓRICA

25

de alongamento.

Figura 2.2: Janela de demonstração de um exercício proposto pelo Workrave. O Workrave é um software que se encontra especialmente orientado para a monitorização do nível de utilização do computador. A monitoritazação é bastante eficaz e persuade o utilizador a realizar as micro pausas. Como aspecto que poderá ser menos positivo, destaca-se o facto de apresentar ao utilizador um número bastante reduzido de exercícios físicos. Para além disto, estes exercícios são apresentados sob a forma de imagens estáticas. Ainda que os exercícios físicos propostos sejam bastante simples, a falta de animação e apenas uma vista de câmara, poderá demonstrar-se pouco eficaz no momento do utilizador verificar se está a proceder da forma mais correcta. A este aspecto acrescenta-se o facto de não apresentar nenhum mecanismo de verificação e correcção das posturas adoptadas pelo utilizador durante os períodos de trabalho ou de exercício físico. Off4Fit 2.1 O Off4Fit 2.1 é um programa gratuito que foi desenvolvido para promover a realização de exercicio físico em contexto de trabalho. Assim sendo, poderá também ter um importante contributo para a prevenção de lesões por esforço repetitivo. Os tutoriais são variados e apresentados durante a projecção de vídeos com uma instrutora virtual que vai ensinando passo-a-passo exercícios para as mãos, olhos e corpo em geral. Os exercícios propostos são sempre os mesmos e não revelam muita dificuldade, pelo que são facilmente entendidos pelo utilizador. Após algum tempo é provável que o utilizador já tenha mecanizado os movimentos, dispensando as animações. A aplicação apresenta uma interface atractiva e também possibilita a configuração do tempo de intervalo entre pausas para realizar exercício físico. Para controlar o tempo

26

CAPÍTULO 2. REVISÃO DA LITERATURA

de utilização do computador, bem como o tempo que falta para realizar os próximos exercícios do dia, a aplicação apresentada uma janela pop-up bastante discreta [15]. Para finalizar, basta referir que a monitorização da actividade do utilizador não é tão completa como aquela que é apresentada pelo Workrave nem permite a edição de um número tão variado de parâmetros como aquele programa. No Off4Fit 2.1 apenas é possível pré-definir o tempo de intervalo entre cada pausa para realização de exercícios. Como aspecto mais positivo temos o facto de apresentar propostas de exercício físico através de vídeos. Na figura 2.3 apresenta-se a janela principal da aplicação durante a demonstração de um exercício pela instructora virtual.

Figura 2.3: Janela de demonstração de um exercício proposto pelo Off4Fit 2.1.

RSIGuard Tal como o Workrave, o RSIGuard é um software desenhado para ajudar o utilizador do computador a diminuir os efeitos do esforço repetitivo. Para isto, o software incentiva o cumprimento de hábitos de trabalho saudáveis e ajuda o utilizador a analisar os progressos conseguidos. Ainda que a utilização de equipamento informático ergonómico seja também importante, o RSIGuard defende que isto por si só não chega. Por vezes, mesmo o melhor equipamento ergonómico apresenta limitações no que respeita à alteração de diversos hábitos de trabalho prejudiciais para a saúde. A própria postura, períodos longos de trabalho sem a realização de pequenas pausas, o uso do equipamento de forma pouco eficiente ou até mesmo abusivo poderão também causar algum desconforto em qualquer ambiente de trabalho. Este software pode lembrar o utilizador sobre a forma como interage com o computa-

2.1. CONTEXTUALIZAÇÃO TEÓRICA

27

dor, a tomar atenção ao seu corpo e ao descanso quando necessário, sugere métodos de trabalho saudáveis alternativos e disponibiliza a presença regular de um técnico virtual em ergonomia. Como podemos observar na figura 2.4, a funcionalidade BreakTime analisa dinamicamente a actividade no teclado e monitoriza os padrões naturais de descanso do utilizador. A partir daqui, a funcionalidade sugere a realização de pausas para descanso tendo em conta os próprios hábitos do utilizador. Durante os períodos de descanso são mostradas gravações de vídeo que sugerem alguns exercícios físicos ao utilizador.

Figura 2.4: Janela de demonstração de um exercício proposto pelo RSIGuard. O esquema de pausas e o modo como o utilizador é alertado são configurados na primeira inicialização do software. Se o utilizador necessitar de ajuda no cumprimento das pausas, o software possibilita um esquema de restrições de forma a limitar não só o tempo de utilização do computador como também o número de teclas pressionadas ou cliques no rato. A funcionalidade ForgetMeNots é mais um mecanismo que incentiva o utilizador a alterar os seus hábitos de trabalho. ForgetMeNots alerta o utilizador para determinadas questões relativas à forma de trabalhar e interagir com o computador. Assim sendo, são lançadas no ecrã pequenas janelas pop-up com mensagens pré-definidas ou escritas pelo utilizador, como por exemplo «Se se sente desconfortável, faça agora uma pausa!». Duas das funcionalidades mais relevantes do RSIGuard são a AutoClick e KeyControl. O AutoClick permite simular o clique do rato sempre que este deixe de ser movimentado. A funcionalidade KeyControl permite simular todas as funções do rato (como por

28

CAPÍTULO 2. REVISÃO DA LITERATURA

exemplo: duplo clique, arrastar e largar, movimento do rato) através de teclas chave no teclado. As teclas chave definidas no teclado podem também ser programadas para executar aplicações, abrir ficheiros e outras numerosas tarefas com apenas um clique. Esta funcionalidade chega mesmo a possibilitar a alteração da função de cada uma das teclas, para que aquelas que são mais utilizadas sejam mais facilmente acedidas. Por último, a função DataLogger é capaz de recolher de uma forma exaustiva informações relativas ao modo de utilização do computador. As informações recolhidas passam pela extensão e intensidade de utilização do teclado e rato, a frequência de utilização de uma tecla, comportamento durante um período de pausa (isto é, se realiza ou não pausa) e outros dados estatísticos. Como é possível constatar o RSIGuard apresenta funcionalidades muito semelhantes às do Workrave. De todas as funcionalidades que contribuem para a promoção da saúde física em contextos de trabalho destaca-se a apresentação de vídeos com exercícios tipo que podem ser executados facilmente pelo utilizador. Sabemos que o texto pode ser um meio de promover a aprendizagem de exercícios físicos, contudo não consegue mostrar a posição do corpo durante um exercício tal como uma imagem. Contudo, a imagem estática não consegue mostrar as subtilezas de um movimento associado a um exercício. Ainda que, neste contexto, o vídeo apresente algumas limitações, a presença desta funcionalidade no RSIGuard é sem dúvida uma mais valia. Como aspecto menos positivo, tal como acontece com o Workrave, o RSIGuard não apresenta nenhum mecanismo de verificação e correcção das posturas adoptadas pelo utilizador durante os períodos de trabalho ou de exercício físico. Este aspecto restringe, de alguma forma, o grau de interactividade utilizador/máquina.

Tai Chi 3D Tai Chi 3D é um software comercial que ensina Tai Chi ao utilizador. Para isto descreve cada um dos 24 passos simplificados Taijiquan de Beijing. Esta solução aplicacional apresenta duas formas de utilização. Numa das formas é disponibilizado ao utilizador um conjunto de informações importantes a partir de um esquema de navegação tipo página da internet. Desta forma, são apresentadas ao utilizador informações gerais sobre o produto, os requisitos mínimos do hardware, funcionalidades básicas do menu de controlo da animação, os erros de execução mais frequentes e as respectivas propostas de resolução. São ainda apresentadas algumas referências às tecnologias utilizadas durante a concepção do produto, princípios básicos a ter em conta durante a execução de cada um dos passos de Tai Chi e a listagem de todos os passos disponibilizados. No outro caso é possível aceder directamente, a partir do menu de topo, a uma série de várias animações 3D que ilustram o movimento do corpo durante a execução de um acto. A partir de um esquema de navegação semelhante a um leitor vídeo ou CD, o utilizador pode visualizar as animações de qualquer ângulo, seleccionar e executar

2.1. CONTEXTUALIZAÇÃO TEÓRICA

29

um único exercício, todos os exercícios de uma forma sequencial, pausar, parar e avançar ou retroceder de exercício. A partir do momento que o utilizador selecciona um movimento, automaticamente a animação correspondente é executada e acompanhada por um conjunto de notas descritivas do movimento seleccionado. Tal como acontece na aplicação Off4Fit 2.1, os exercícios são realizados por um personagem 3D. Na figura 2.5 é possível visualizar os aspectos mais importantes da janela do software aqui em análise.

Figura 2.5: Janela principal da aplicação Tai Chi 3D. O aspecto mais positivo do Tai Chi 3D passa por ser uma única ferramenta de ensino que combina a eficácia individual de cada um dos media - texto, imagem e vídeo. Para além disso, consegue ultrapassar as limitações da utilização de simples gravações vídeo quando possibilita a mudança de vista e perspectiva ao utilizador. Esta funcionalidade juntamente com a opção “split screen” — divide o ecrã de visualização do personagem em dois — possibilita que o utilizador obtenha diferentes vistas de câmara durante a animação. Desta forma, o utilizador pode verificar, em cada instante do exercício, se a posição do seu corpo corresponde à do personagem do software e proceder a possíveis correcções. Como aspecto menos positivo destaca-se o baixo nível de interactividade personagem/utilizador, já que o personagem não tem capacidade de verificar se o utilizador está a proceder da forma mais correcta. De uma forma geral, podemos referir que já existem soluções aplicacionais para utilização em complemento ou em alternativa a programas de ginástica do trabalho tradicionais. De um modo geral, nas aplicações analisadas verifica-se a integração de vários media: texto e imagem e, na maior parte dos casos, o vídeo. Este aspecto é extremamente importante, visto que, o ensino da ginástica do trabalho, ou qualquer outra área da Educação Física, é uma actividade que envolve a comunicação corporal e estímulos visuais. Ainda que o texto seja uma boa forma de veicular conceitos, nesta área demonstra-se pouco eficaz, já que não consegue mostrar a configuração do corpo durante um exercício tal como uma imagem. Por outro lado, a imagem não consegue

30

CAPÍTULO 2. REVISÃO DA LITERATURA

mostrar as subtilezas do movimento durante um exercício. Este será o aspecto menos positivo que poderá ser apontado à aplicação Workrave. A integração do vídeo é um salto qualitativo visto que elimina os problemas anteriores. As aplicações Off4Fit 2.1 e RSIGuard destacam-se a este nível. Contudo, ainda que o RSIGuard seja a aplicação com maiores potencialidades do domínio da prevenção e reabilitação das L.E.R. apresenta alguns aspectos menos positivos. A integração do vídeo pode acarretar alguns constrangimentos de navegação ao longo da escala de tempo. Para além disso oferece um número limitado de vistas de câmara e de interacção de utilizador-máquina. A este nível o Tai Chi 3D parece ser mais sofisticado visto que apresenta um tutor animado pelo computador. Como aspecto menos positivo das soluções analisadas, podemos assinalar o facto de não apresentarem nenhum mecanismo que permita a correcção de postura do agente durante a execução dos exercícios em função do comportamento do utilizador. Isto é, o tutor virtual não apresenta nenhum tipo de “inteligência” que lhe permita verificar se a postura, velocidade e qualidade de execução dos exercícios pelo utilizador está correcta para assim emitir algum tipo de instrução tal como acontece com tutores humanos. Levando em conta os avanços e técnicas disponibilizadas pela Inteligência Artificial e Visão Computacional, apresenta-se como viável a incorporação de mecanismos que ofereçam alguma capacidade do tutor virtual reagir ao contexto de execução do utilizador humano.

2.2

2.2.1

Tecnologias usadas no desenvolvimento do protótipo Agentes computacionais com corporização humana

Em meados da década de 60, o computador começou a ser utilizado como ferramenta de apoio na produção de filmes criados através do processo de animação tradicional. Este facto, veio desencadear o que hoje constitui uma das maiores linhas de pesquisa dentro da computação gráfica: a animação por computador. A utilização do computador como ferramenta de animação representou um grande avanço nas técnicas de animação, já que à medida que os recursos computacionais aumentavam as suas capacidades, foi possível uma maior complexidade dos objectos que se pretendiam animar. Actualmente, a animação por computador é utilizada nos mais diversos domínios, nomeadamente na indústria de entretenimento, aeronáutica, publicidade, indústria automóvel, robótica, educação, biomecânica, entre outras. Esta é uma área muito abrangente, mas para este trabalho apenas interessa focar alguns aspectos referentes à modelação e animação de modelos de humanos virtuais. Os humanos virtuais são vistos como modelos computacionais de pessoas que podem ser usados, por exemplo, para incluir a nossa própria representação física em ambientes

2.2. TECNOLOGIAS USADAS NO DESENVOLVIMENTO DO PROTÓTIPO 31 virtuais. São diversas as razões que podem levar ao desenvolvimento de modelos humanos viruais e são muitas as áreas de aplicação destes modelos. Salientam-se, nomeadamente, a análise de características humanas (altura, capacidades, comportamento e desempenho), simulações biomédicas (para entender o comportamento humano, respostas fisiológicas e lesões) e agentes ou avatares. Dentro da nomenclatura dos humanos virtuais por vezes faz-se a distinção entre os conceitos de agente e avatar. Um agente corresponde a uma personagem com representação gráfica, controlada de forma autónoma por um módulo computacional. Avatar corresponde a um humano virtual controlado directamente por um utilizador. Entende-se por “inteligência” de um agente a capacidade de planear e executar tarefas baseadas no modelo do estado actual do mundo virtual. O que faz um humano virtual realmente “humano” não necessariamente é a sua aparência externa, mas os seus movimentos, reacções e tomadas de decisão naturais, apropriadas e sensíveis ao contexto [30]. Naturalmente, a distinção não é rígida, pelo que personagens com diferentes níveis de autonomia e complexidade de controlo e de comportamento, podem ser categorizados de ambas as formas dependente do contexto e do autor. Desta forma, agentes e avatares podem conviver juntos em mundos virtuais desenhados com intuitos variados. Nesta tese a referência ao termo agente ou personagem é atribuída a um humano virtual reactivo ao contexto, isto é com autonomia mas de inteligência limitada, pois executa sequências comportamentais fixas, mas capaz de modificar a sua velocidade de execução em função do comportamento inferido do utilizador. 2.2.1.1

Modelação de agentes computacionais

O corpo humano é uma estrutura extremamente complexa, formada por muitos segmentos rígidos e deformáveis, vários tipos de tecidos, ossos com geometria detalhada, articulações com diferentes graus-de-liberdade, onde diversas variáveis influenciam a sua morfologia e cinemática. Tentar representar toda esta complexidade num sistema informático é um processo bastante trabalhoso. Assim sendo, geralmente são utilizados modelos simplificados para representar o corpo humano que consideram, por exemplo, apenas abstracções simples dos ossos, os elos, e articulações do corpo, as juntas, deixando de lado todos os tecidos e músculos. Ainda assim, quando se procede a esta simplificação, deparámo-nos com estruturas que podem ser não triviais. Por exemplo, o pé possui mais de 20 pequenos ossos e inúmeras articulações com geometrias e número de graus-de-liberdade variados, pelo que a sua representação mais completa é bastante expansiva. Uma metodologia simples consiste na identificação dos elementos mais característicos em detrimento dos acessórios (isto é, considerar apenas elos grandes ou essenciais para não descaracterizar a morfologia geral). Em [52], o autor apresenta um modelo definido por uma linguagem que permite descrever as articulações e os segmentos do corpo humano com elas relacionadas. Feito isto construiu um interpretador para a linguagem que é capaz de gerar duas estruturas: uma árvore de transformações, onde cada nó representa uma transformação primitiva sobre os seus nós filhos e uma tabela de símbolos, com uma entrada para cada junta.

joints of the model and the degrees of freedom depend Similarly, base largely on the desired reality or quality. In this paper we angles for another p employ a relatively simple model with nineteen joints which are hierarchically defined in Fig. 1. As shown in Fig. 2, each 0m (t) = Bm 0 joint then has three degrees of freedom for rotation around x, 32 CAPÍTULO 2. REVISÃO DA LITERATURA y and z axes in the local coordinate system at each joint, where the y-axis is in the same direction as the stick Para animar asdirection figuras criadas através desta of the previous joint. representação, motores gráficos baseados em cinemática alteram dasthejuntas ao longo tempo, um Nowosweparâmetros assume that rotational jointdo angles 1 menquanto x, We use, again by processador de movimento varre a árvore de transformações e computa novas posições m m 1 y and 1 z at the m-th joint are measured for all the whereas the origina e orientações para cada junta. Neste modelo todas as juntas podem ter de um a três joints except when m = 8 and 9, with a motion capturing that of 1m. graus-de-liberdade. system. The eighth and ninth joint angles' data are not used As explained l method (see Fig.1(a)), since tiptoe's is treated in [5], our os Por sua vez, em autores desenvolveram aquilo quelanding denominaram de Hierarchy functional models differently than para other modelos parts ofhumanos the body (see 3.1). Neste The esquema, 3D, um esquema de hierarquia articulados. transition animation obtainedum data set grau-de-liberdade of the m-th joint translacional is then of a ou form like cada junta representa único rotacional. Desta as "from walking to {(1mxuma 1mz(i$t)) | i = 1, 2,..., n}, where $t com dois (i$t),articulação 1my(i$t), como forma, para construir a do pulso humano, por exemplo, graus-de-liberdade, são the necessárias duas juntas. As in juntas carregam consigo denotes time interval specified measuring with the matrizes 2.3 Interpolation, E que representam relações system, de cada junta sua9.junta pai na hierarquia e com a junta capturing and mcom x 8a or In addition, we assume obtained set represents an (almost) periodic raiz do modelo,that bemthe como as suasdata inversas e outras relações importantes armazenadas We show, in this sec such as walking andde running. para melhorar behavior, a performance dos processos edição e simulação. models are effectiv behaviors. Já em [46], os autores propuseram umFunctional método para criar animações humanas baseadas 2.2 Rescaled Fourier Model Let us conside em emoções. Tal método permite, por exemplo, que um personagem que esteja a andar s and t: normalmente passe correr com uma bastante realista os dois tipos Basedaon the discrete datatransição of the m-th joint angle, letentre us first de movimento.construct Para além disto permite, também, que um andar normal a functional model with continuous parameter ofse t, torne num 8m (s, t) = {(1- s)A andar animadowhich ou desanimado, e que a intensidade seja controlada a alto In represents the periodic behaviordo of ânimo the joint angle. nível, sem a necessidade de ajustethe directo físicos do movimento. A 3{(1- s)Am 0 + s general, however, periodnos of parâmetros the functional model is figura 2.6 apresenta modelo humanofrom articulado proposto, onde rather ohard to estimate the measured data of éthepossivel joint observar, n r 1 angle, since the original data mayque beo"noisy". também, a organização hierárquica dos elementos constitui.Then we In (3), if we suppos employ the Fourier series expansion (approximation) of the 1: waist

19 13

14

12 11 15

17

16

10 3

2 1

4

3: left-groin

2: right-groin

10: spine1

5: left-knee

4: right-knee

11: spine2

7: left-ankle

6: right-ankle

12: spine3

9: left-tiptoe

8: right-tiptoe

18

5 13: right-shoulder 14: left-shoulder

6 8

7 9

15: right-elbow

16: left-elbow

17: right-wrist

18: left-wrist

19: neck

(a) Rotational joints considered. (b) Connection of human joints. Figure 1. Skeleton model used. Figura 2.6: Estrutura articulada e organização hierárquica do humanóide minimalista proposto em [46]. Em [50], o autor apresenta um método de modelação de qualquer animal que possua um endoesqueleto articulado movido por músculos e coberto por uma pele flexível. Neste caso, o esqueleto, bastante simplificado, é formado por ossos cuja geometria é composta por três elipses, geralmente uma mais alongada e as outras duas mais

Figure 2. Lo

2.2. TECNOLOGIAS USADAS NO DESENVOLVIMENTO DO PROTÓTIPO 33 arredondadas colocadas nas extremidades da anterior. Na representação dos modelos é utilizada uma hierarquia em forma de árvore. Actualmente existem diversos métodos de modelação de humanos virtuais, cada vez mais realistas resultantes da profunda evolução do conhecimento nesta área da computação gráfica. Alguns primam pela modelação de articulações [26], outras concentram-se na modelação do sistema muscular humano [51], outros modelam personagens para ambientes de Realidade Virtual [38], jogos de vídeo ou para simulação de movimentos em actividades desportivas. Estes e outros estudos conduziram ao aparecimento de soluções aplicacionais comerciais como o Maya [49] ou gratuitas como o Blender [4], que permitem a modelação de humanos virtuais com uma enorme credibilidade e realismo. De um modo geral, nestas soluções aplicacionais, a criação de modelos articulados envolve a modelação por malha (moldar o corpo a partir de objectos simples), a aplicação de texturas e a definição da estrutura articulada através de um esqueleto virtual [28]. Os modelos criados nestas aplicações, tanto a malha poligonal do humanóide como o seu esqueleto podem ser armazenados num ficheiro XML e posteriormente utilizados por motores gráficos. Normalmente estes ficheiros definem, também, a geometria, as poses e as animações dos modelos, as malhas poligonais, a hierarquia dos ossos, bem como as suas animações, no caso dos esqueletos [38]. Este é um processo muito usual, por exemplo, no desenvolvimento de jogos-de-vídeo. 10.2. FITTING THE MODEL INTO VIEWS AND TEXTURING

63

Figure Thedo Blender window skeleton and mesh object selected. [28]. Figura 2.7:10.2: Janela Blender com with um esqueleto e malha seleccionados

Mesmo assim os order modelos maisthe simples, os que são referidos em [46], são bastante views in to cover modelcomo with textures. utilizados para estudos de caso em computação gráfica. Ainda que possam acarretar alguns constrangimentos, vantagens como a facilidade e rapidez de implementação têm 10.2 Fitting the model into views and texturing contribuído para a sua utilização frequente, não só em investigação com também no ensino desta áreaadmit da computação. Estes modelos,todefinidos graficamente por linhas ou We must it is practically impossible get precise results by manual polígonos, definem articulada hierarquicamente organizada. model fittinguma intoestrutura the specific pose in camera views. Nevertheless we did not write any function for automatic fitting. We can fit roughly the model into the desired object in camera views using the Blender interface. We can move, scale, rotate our model and bones as well, in order to match the images. The fitting process is the following. 1. Load the images into the Blender.

34 2.2.1.2

CAPÍTULO 2. REVISÃO DA LITERATURA Animação de agentes computacionais - Métodos de controle do movimento

Com a massificação da utilização da animação por computador em áreas tão diversas e o desenvolvimento de diferentes metodologias de animação, foi necessário proceder à sua classificação. Diversos autores classificam a animação por computador de acordo com as suas aplicações, os métodos de controle do movimento ou o modelo de animação utilizado. Neste trabalho, segue-se a classificação da animação por computador segundo os métodos de controle do movimento [30]. O controle de movimento de agentes pode ser conseguido através do uso de modelos cinemáticos ou modelos dinâmicos. No primeiro caso, a animação é produzida a partir da definição de posições, velocidades e acelerações dos componentes do modelo. No segundo caso, o movimento é produzido através da parametrização de forças e torques de onde derivam dados cinemáticos. Ainda que o uso da dinâmica permita a geração de movimentos mais complexos, suaves e realistas, muitas vezes impossíveis de serem representados através da cinemática, tem a desvantagem de não permitir um controle rígido dos agentes por parte do animador. Assim sendo, grande parte dos sistemas de animação por computador disponíveis actualmente fazem uso de modelos cinemáticos, já que estes são de utilização mais fácil e intuitiva. Além disso, consomem menos recursos computacionais em comparação com os modelos dinâmicos [6]. O problema da cinemática associada a agentes articulados pode ser resolvido através de duas metodologias, a cinemática directa e a cinemática inversa. A cinemática directa assenta no pressuposto que as posições dos diferentes elos de um agente articulado, num determinado momento, podem ser calculadas a partir da posição e orientação da estrututura articulada completa tendo em conta apenas a informação das suas juntas. Por exemplo, se o objecto que se pretende animar é um braço de um humanóide e este apresenta o ombro numa posição fixa, a posição da mão pode ser calculada a partir dos ângulos das juntas do ombro, do cotovelo e do pulso [33]. Nesta metodologia é necessário alterar a configuração de cada uma das juntas desde o ombro até ao pulso. A figura 2.8 apresenta um modelo animado através de cinemática directa, onde é possível observar a alteração sequencial de cada uma das juntas, desde o ombro até ao pulso. Na cinemática inversa a abordagem é bastante diferente, pelo que permite resolver outro tipo de problema. Considere-se um humanóide como uma estrutura de elos hierarquicamente organizada tal como na cinemática directa. Se se desejar que o humanóide levante o pé ligeiramente, à luz da abordagem da cinemática inversa, o animador apenas tem de especificar a posição final do pé e deixar que o algoritmo de cinemática inversa determine, automaticamente, a posição de cada um dos elos (coxa, perna e pé) ao longo da animação. Concretizando, dada uma posição desejada para um ou mais elos de um corpo articulado é necessário calcular os ângulos que estarão associados a cada uma das juntas para posteriormente serem determinadas as posições no espaço das juntas associadas a cada elo. Ainda que seja uma forma de resolver

2.2. TECNOLOGIAS USADAS NO DESENVOLVIMENTO DO PROTÓTIPO 35

Figura 2.8: Modelo de um humanóide animado segundo a cinemática directa [49]. o problema da cinemática, a cinemática inversa é uma abordagem extremamente complexa e levanta alguns problemas. O mais imediato está relacionado com o grande número e combinações de trajectórias que poderá estar associado ao movimento do corpo articulado, antes que este atinja a postura desejada [33]. A figura 2.9 apresenta um modelo animado através de cinemática inversa.

Figura 2.9: Modelo de um humanóide animado segunto a cinemática inversa [49].

2.2.2

Visão computacional - Aproximações ao Motion-Capture

A análise de movimento por visão computacional tem sido alvo de um estudo intenso, apesar da sua dificuldade intrínseca de realização, devido ao grande potencial aplicacional. Áreas como as que se dedicam à análise de movimento do corpo humano, animações em realidade virtual, estruturas em imagem médica tendo em vista o diagnóstico e estudos clínicos, entre outras, têm contribuído para esta evolução. O interesse nesta área da informática não é surpreendente visto que se trata de um

36

CAPÍTULO 2. REVISÃO DA LITERATURA

domínio aliciante e extremamente rico. Dos exemplos anteriormente referidos, salientase a análise do movimento do corpo humano pelo interesse que isso desperta no desenvolvimento de novas tecnologias de interacção homem-máquina e por ser o alvo de estudo deste trabalho. No domínio da captura e análise do movimento humano existem vários sub-domínios incluindo a análise do movimento de corpo inteiro, sendo este direccionado para a determinação de poses, ou aspectos mais específicos como expressões faciais ou gestos das mãos [29]. Os mecanimos de Motion-Capture, aplicados ao movimento humano, consistem em inferir a configuração de um utilizador no mundo real. Utilizando dados sensoriais captados do mundo real, os mecanismos de Motion-Capture recolhem informação acerca da posição de pontos-de-referência, orientação corporal, posição e orientação de membros/elos individuais do utilizador. Genericamente, estes sistemas são constituídos por mecanismos de detecção e análise movimento. A análise do movimento pode ser feita concorrentemente com a sua execução no mundo físico (isto é, em tempo real) ou sobre imagens estáticas e vídeo (off-line). A detecção pode ser feita de forma passiva ou activa. A detecção passiva é baseada em fontes ditas naturais de sinal como por exemplo a luz visível, pelo que é uma solução que não requer hardware específico para ser integrado no vestuário do utilizador. Normalmente são utilizadas imagens obtidas através de uma ou mais câmaras-de-vídeo ou de um filme em ficheiro, sobre as quais são aplicadas técnicas de processamento de imagem e visão computacional para estimar a configuração do utilizador. Os passos envolvidos neste processo são vários, e muitos deles são de complexidade e custo computacional elevado. A figura 2.10 esquematiza num diagrama as componentes envolvidas no processo de Motion-Capture baseado num método passivo de detecção do movimento. Na primeira etapa são normalmente aplicados vários algoritmos de pré-processamento de imagem para facilitar a segunda etapa. Esta última consiste na identificação de pontos de referência dos membros do utilizador. O pré-processamento (1) envolve aspectos como a remoção de ruído, segmentação por cor, segmentação por contraste, estabelecimento de correspondências entre dados em imagens consecutivas, etc [29]. Na segunda fase, a imagem pré-processada é pesquisada para identificar posições (x, y) na imagem onde se encontram pontos de referência dos membros (2) . O número de pontos identificados pode variar no tempo devido a situações de oclusão temporária causada pelo tipo de configuração do utilizador, ou simplesmente devido à incapacidade de fazer uma identificação correcta (por exemplo devido a flutuações na luminosidade). A utilização de roupa com marcadores de fácil identificação nas imagens, pode facilitar bastante este processo. Em cada instante de tempo, a lista de pontos de referência identificados é entregue a um módulo de identificação da posição das extremidades proximais e distais (3) que é responsável pela associação destes pontos bem como a identidade dos membros/elos do utilizador. Esta operação pode ser realizada ao longo da sequência de imagens, isto é em em tempo real, através de uma abordagem que

2.2. TECNOLOGIAS USADAS NO DESENVOLVIMENTO DO PROTÓTIPO 37

(1)

Pré-processamento da imagem

Imagem Câmara-de-vídeo

Identificação de pontos de referência

(2)

Identificação (3) da posição e orientação dos elos/membros

Identificação (4) da configuração do utilizador

(5)

Modelo articulado do utilizador

(8)

Configuração do agente

Motor da animação

(9)

(1)

Cinemática inversa

(6)

(7)

Comparador de configuração

Ajuste de velocidade

Figura 2.10: Diagrama de blocos ilustrando as componentes de um sistema de Motion-Capture através de imagens fornecidas por uma câmara-de-vídeo — mecanismo passivo. recupera o movimento humano através da análise espacio-temporal da silhueta [20]. Outra possibilidade é recorrer a um modelo articulado da morfologia de um humano típico (5) e a processos de segmentação das partes do corpo. Esta abordagem apesar de ter a desvantagem da perca de generalidade do algoritmo implementado, facilita a construção de sistemas mais rápidos e fiáveis. Para além disto facilita a correspondência de características entre frames consecutivos ao longo da sequência de imagens e torna possível a resolução de situações como, por exemplo, a perca de dados devido a situações de oclusão [39]. Dadas as posições no plano dos elos, um módulo adicional (4) infere as posições dos elos num espaço cartesiano 3D. Finalmente, um módulo de cinemática (6) calcula a configuração do utilizador humano num espaço de juntas comparável ao utilizado no espaço de juntas do agente. Conhecida a configuração do utilizador e dada a configuração do agente e/ou a sequência de animação em execução, é então possível averiguar se o utilizador está sincronizado com o agente usando um comparador de configuração (7) , ou se é necessário ajustar a velocidade do utilizador em algum sentido (mais rápido ou mais lento).

C

38

CAPÍTULO 2. REVISÃO DA LITERATURA

Um constrangimento relacionado com o seguimento do movimento humano através de visão computacional tem a ver com o número de câmaras utilizadas. Por exemplo, o seguimento a partir de uma sequência de imagens obtidas através de uma única câmara é dificultado pelo elevado número de graus-de-liberdade dos membros do utilizador, alguns dos quais não são detectados. Este problema resulta da ambiguidade inerente à projecção de 3D em 2D [13]. Uma forma de resolver este problema é utilizar mais do que uma câmara. Nos sistemas que têm acesso a mais do que uma câmara, o seguimento é iniciado a partir de uma só e quando o sistema prevê que a câmara activa já não tem a visibilidade adequada do objecto a seguir, o processo continua a partir de uma outra [21]. Mesmo assim, a maioria dos métodos que utilizam modelos 3D para fazer a captura do movimento, geralmente têm a desvantagem de apenas lidar com movimentos reduzidos e de necessitar de imagens de elevada qualidade para realizar devidamente a operação de segmentação [48]. A realização de Motion-Capture através de métodos de detecção activa do movimento recorre a hardware que disponibiliza as posições no espaço de pontos de referência nos membros do utilizador. Para isto, são colocados vários marcadores/sensores no vestuário do utilizador, que são controlados por um determinado número de câmaras/sensores. A distinção entre câmara/sensor vai depender do sistema de Motion-Capture utilizado. Genericamente existem quatro tipos de sistemas: acústicos, mecânicos, magnéticos e ópticos. Actualmente os sistemas mais utilizados são os ópticos. No sistema óptico, o utilizador usa uma roupa especial coberta com reflectores/marcadores posicionados nas suas principais articulações. Câmaras especiais são então posicionadas estrategicamente para fazer o seguimento desses reflectores durante o movimento do utilizador. Cada câmara gera as coordenadas 2D para cada reflector. O conjunto dos dados 2D capturados por cada uma das câmaras é então analisado por um módulo do software, que fornecerá as coordenadas 3D dos reflectores. Geralmente, sistemas de elevada performance utilizam um grande número de câmaras para que sejam minimizadas as perdas por oclusão e também para permitir a captura de objectos de grandes dimensões. Apesar de serem os mais utilizados, os sistemas ópticos estão entre os mais dispendiosos do mercado [43]. A figura 2.11 esquematiza as componentes envolvidas num processo de Motion-Capture por mecanismo activo. Notar que as componentes são semelhantes ao modelo apresentado anteriormente, exceptuando as primeiras que estão relacionadas com processamento.

2.2. TECNOLOGIAS USADAS NO DESENVOLVIMENTO DO PROTÓTIPO 39

(1)

Componentes (x,y,z) dos pontos de referência Cãmara-de-vídeo/Sensor

(2)

Identificação da configuração do utilizador

Cinemática inversa

(3)

(6)

(5)

Configuração do agente

Motor da animação

(4)

Comparador de configuração

Ajuste de velocidade

Figura 2.11: Diagrama de blocos ilustrando as componentes de um sistema de MotionCapture — mecanismo activo.

Capítulo 3 Especificação do sistema Neste capítulo propõe-se uma arquitectura para a implementação de um agente computacional reactivo ao contexto. Concretamente, utiliza-se como dispositivo uma câmara-de-vídeo que providencia ao sistema de software feedback sobre o comportamento instantâneo do utilizador humano. O sistema de software baseia-se na animação de um agente computacional com realização gráfica que executa sequências de animação fixas1 . Relativamente à sua aplicabilidade, isto corresponde tipicamente a um tutor de educação física (ginática do trabalho ou artes marciais como Tai-Chi que exibe uma série de movimentos representando exercícios). Para além de animar o agente, o sistema procura sincronizar o comportamento deste com o comportamento do utilizador no mundo real. Isto envolve a correcção da velocidade de execução dos movimentos, levando em conta a velocidade estimada dos movimentos executados pelo utilizador humano. Este capítulo está organizado em três grandes grande partes: na secção 3.1 apresenta-se a arquitectura do sistema na concepção funcional de alto-nível. Na secção 3.2, propõem-se uma solução genérica e simples para modelar e animar agentes computacionais com realização em grafismos 2D ou 3D. Na secção 3.3 propõem-se mecanismos de sincronização de movimento do utilizador humano e do agente computacional, baseado em heurísticas que relacionam o fluxo de imagem da câmara-de-vídeo com o fluxo gerado pela animação. Neste capítulo, recorremos a uma notação mais de natureza matemática do que computacional. No capítulo 4 discutimos a implementação da arquitectura, modelos de dados e algoritmos em plataformas computacionais concretas. Por esse motivo, a notação será mais computacional e menos matemática.

1

Entendendo-se um agente computacional como um elemento de software com representação visual, cujos graus-de-liberdade ficam definidos por um vector de configuração. Normalmente, procura-se utilizar motivos com grafismos de valor estético e intuitivos.

40

3.1. ARQUITECTURA DO SISTEMA

3.1

41

Arquitectura do sistema

A arquitectura geral do sistema proposto divide-se em dois sub-sistemas: um sub-sistema trata da modelação e animação do agente computacional na sua execução de movimentos da prática da educação física e um sub-sistema que tem em conta o comportamento do utilizador humano no acompanhamento e execução de movimentos no mundo real. Na figura 3.1 apresenta-se um diagrama de blocos com os dois subsistemas, usando cores diferentes para representar as suas componentes. (No diagrama faz-se também uso de identificadores numéricos quando se referencia cada componente individual.) Funcionalidades da interface gráfica

GUI

Rendering/ Visualização TXT/XML

(3)

(2)

Importação/ Exportação

(5)

Base-dados do agente e animação

Estrutura e geometria do agente

(3)

Câmara-de-vídeo

(1)

Computação do fluxo do agente

(7)

(4)

Configuração do agente

Motor da animação

(1)

(1)

Comparador de fluxos Computação do fluxo de imagem

(6)

(8)

Ajuste de velocidade

Imagem / stream vídeo

(9)

Figura 3.1: Arquitectura do sistema em diagrama de blocos. Uma componente central do sub-sistema de animação é responsável por manter uma estutura de dados (1) , cujo estado instantâneo indica, sem ambiguidade, qual a posicão e orientação de todos os elementos articulados do agente. Matematicamente, esta

42

CAPÍTULO 3. ESPECIFICAÇÃO DO SISTEMA

estrutura de dados consiste num vector com uma dimensão igual ao número de grausde-liberdade do corpo do agente. Graficamente, isto corresponde a fazer o agente assumir uma certa postura. Um motor de visualização (2) faz uso combinado de um modelo com a geometria do agente (3) e o vector de configuração, que tem a capacidade de realizar o agente na consola. Um motor de controlo (4) faz uso de uma base de dados (5) especificando valores de configuração, movimentos individuais e sequências longas de movimentos (actos comportamentais), para determinar em cada instante qual o valor que o vector de configuração deve tomar. A actividade interna do motor de controlo em simultâneo com o motor de visualização, permite realizar as animações do agente, passando por todas as configurações ou posturas especificadas na base de dados. O outro sub-sistema é responsável por processar o fluxo de imagem gerado pela câmara-de-vídeo e, se for caso disso, ajustar a velocidade de execução de movimentos do agente. Resumidamente, isto é feito computando uma medida de fluxo da imagem (6) e uma medida de fluxo de animação do agente (7) . Assumindo que as variações nas duas medidas devem estar correlacionadas, uma componente de sincronização (8) determina se a velocidade de animação do agente deve ser corrigida, para procurar não perder o estado de sincronia com o utilizador humano. A integração dos dois sub-sistemas, animação e sincronização, permite ao agente ter um comportamento reactivo ao comportamento do utilizador.

3.2

Modelação e animação de agentes computacionais

Descreve-se nesta secção a solução usada, no sistema proposto, para modelar o agente computacional cuja realização gráfica pode ser feita com grafismos 2D ou 3D. Na secção 3.2.1 apresentam-se os elementos genéricos comuns aos modelos 2D e 3D Nas secções 3.2.2 e 3.2.3 focam-se os aspectos específicos da modelação 2D e 3D, respectivamente. Em ambos os casos, apresenta-se primeiro a forma de modelar o agente e de seguida a forma de o visualizar. Na secção 3.2.4 focam-se os mecanismos de animação do agente.

3.2.1

Modelo genérico

Modelam-se agentes como estruturas geométricas articuladas, constituídas por um conjunto de elos e juntas para união ou encaixe dos mesmos. Pretende-se que seja possível modelar agentes com geometrias diferentes, por exemplo a morfologia típica de um humanóide completo ou de um torso. Formalmente, um agente articulado pode ser definido como um conjunto de elos e

3.2. MODELAÇÃO E ANIMAÇÃO DE AGENTES COMPUTACIONAIS

43

juntas:

Ag ≡ ({link(i, li , . . .)}, {joint(i, j, . . .)}),

(3.1)

onde:

• Ag designa o agente modelado, formado por um corpo articulado que está definido com um par ordenado, cuja primeira componente designa um conjunto ou lista de elos e a segunda componente um conjunto ou lista de juntas; • link(i, li , . . .) representa um elo i parametrizado com informação variada, como por exemplo o seu comprimento li ; • joint(i, j, . . .) designa um junta entre o elo i e o elo j.

Note-se que a inclusão de “. . . ” na caracterização dos elos e da juntas serve para indicar que poderão estar associados outros atributos a estas estruturas. Uma forma prática de caracterizar um agente é notar que cada junta define uma relação pai-filho entre os elos dessa junta. Tipicamente, a estrutura completa de elos e juntas define uma árvore em que o nó raiz da árvore consiste num elo sem pai. Esse elo designa-se por elo raiz ou elo principal. Cada elo-filho tem apenas um elo-pai, mas um elo-pai poderá ter vários elos-filho. Além dos elos associados, o estado de cada junta é caracterizado por um conjunto de graus-de-liberdade podendo o número concreto depender do tipo de junta e se o modelo é 2D ou 3D. Mais frequentemente, estes graus-de-liberdade indicam o(s) ângulo(s) de rotação do elo-filho em relação ao elo-pai. Por exemplo, num agente articulado que representa um esqueleto humano, a rotação do elo “pescoço” tem como consequência a rotação da cabeça. Ao conjunto de todos os graus-de-liberdade de todas as juntas, incluindo os que definem a posição e orientação do elo principal, designa-se por configuração do agente (ver secção 3.2.4). Para efeitos de visualização gráfica, é necessário calcular as coordenadas no espaço de cada elo-filho à custa das coordenadas do seu elo-pai. É importante distinguir entre a extremidade proximal e extremidade distal de um elo. A primeira é aquela que, normalmente, encaixa ou está mais próxima do encaixe com o elo-pai. A segunda é aquela que, em geral, se encontra mais afastada do elo-pai. As coordenadas e orientação do elo raiz são definidas em relação a um referencial externo ao agente, sendo usadas para determinar a posição e a orientação de todos os elos do corpo do agente.

44

CAPÍTULO 3. ESPECIFICAÇÃO DO SISTEMA

3.2.2

Modelos 2D

Definição de estrutura de agentes computacionais 2D Para modelação e visualização 2D de corpos articulados, assume-se que a orientação de cada elo i é definida pelas coordenadas de um vector (xvi , yiv ), sendo v um vectordirector. O ponto de junção de um elo i com o seu pai é definido através de um escalar, designado por ji . Este valor pertence ao intervalo [0, 1]. Para ji = 1 a extremidade proximal do elo-filho encaixa na extremidade distal do elo-pai. Quando ji = 0 a extremidade proximal do elo-filho encaixa na extremidade proximal do elo-pai. Se ji = 0.5 a extremidade proximal do elo filho encaixa no ponto médio do elo-pai. Na figura 3.2 apresenta-se cada um dos casos anteriores. elo-filho i

elo-pai

elo-pai

elo-pai

elo-filho i

elo-filho i

ji = 1

ji = 0.5

ji = 0 Extremidade proximal

Extremidade distal

Figura 3.2: Diferentes posições de encaixe de um elo-filho no seu elo-pai. Em corpos 2D todas as juntas são rotativas, sendo a configuração da junta i, entre o elo i e seu elo pai, definida por um ângulo de rotação, designado por θi . Dois parâmetros adicionais podem ser usados para restringir a amplitude de rotação ao i i ]. Para todos os elos, excepto para o elo raiz, o vector-director é , θmin intervalo [θmax calculado a partir do ângulo da junta que o liga ao elo-pai. Pode-se agora usar a definição (3.1) para refinar a descrição formal de agentes com corpos articulados: Ag ≡ ({link(li , . . .)}, {joint(i, j, θi ; ji , . . .)}), tendo sido a descrição das juntas complementada com parâmetros, como θi para designar a variável que define o ângulo entre um elo-pai e elo-filho e ji para determinar a junção/encaixe de um elo-filho no seu elo-pai. Visualização de agentes 2D Para a visualização de um agente articulado é útil definir variáveis auxiliares dos elos e das juntas. A posição da base do elo i no plano de visualização (coordenadas de

3.2. MODELAÇÃO E ANIMAÇÃO DE AGENTES COMPUTACIONAIS

45

um referencial externo), é definida por (x0i , yi0 ) e (x1i , yi1 ). No primeiro, 0 corresponde à extremidade proximal do elo i No segundo, 1 corresponde à extremidade distal do mesmo elo. Conhecidos (x0i , yi0 ) e (x1i , yi1 ) a visualização gráfica de um elo é imediata. O vector director de um elo i indica a sua orientação no plano e designa-se por vi . O ângulo que esse vector director faz com o eixo das abcissas de um referencial externo designa-se por ψi . Dado um elo-pai k, cujas extremidades proximais e distais são conhecidas como (x0k , yk0 ) e (x1k , yk1 ), e calculado o ângulo do vector director ψk , é possível determinar as extremidades proximais e distais de todos os seus elos filhos. Seja i um elo-filho de um elo k. Suponhamos que li , ji e θi são, respectivamente, a dimensão, a posição da junta e o ângulo da junta do elo i. Então, as extremidades distal e proximal do elo i e o seu vector director são calculados da seguinte forma:     

ψi vi 0  (xi , yi0 )    1 1 (xi , yi )

= = = =

θi + ψk (cos(ψi ), sin(ψi )) (x0k , yk0 ) − vi · ji · li (x0i , yi0 ) + vi · li · (1 − ji )

Designaremos o elo principal/raiz de um corpo pelo índice 0. Assim, a título de exemplo, (x0r , yr0 ) representa a posição da extremidade proximal do elo raiz no plano. Para esse elo θr , representa não o ângulo com o elo pai, mas sim o ângulo que o vector-director do elo faz com o eixo das abcissas.

3.2.3

Modelos 3D

Modelação de agentes computacionais 3D Em modelos de agentes articulados em espaços 3D a orientação e posição de cada elo i são definidas por um vector situado num referencial ortonormado. Além disso, as juntas têm normalmente mais graus-de-liberdade do que as juntas em 2D, sendo três o caso mais frequente. Usa-se a notação (xi , yi , zi ) para representar a orientação do elo i. (x1i , yi1 , zi1 ) e (x0i , yi0 , zi0 ) indicam, respectivamente, a posição das extremidades distal e proximal do elo i. Utilizam-se dois tipos de referenciais. Um referencial O, de origem ≡ (0, 0, 0), fixo no espaço e referenciais Oi colocados na extremidade distal ou proximal do elo i. O cálculo das coordenadas da extremidade distal dos elos involve o uso de matrizes de rotação e translação de referenciais. Para esse efeito, define-se um referencial Oi com 3 eixos ortonormados vectux i , vectuy i e vectuz i , para cada elo i. A origem do referencial Oi é colocada na extremidade distal desse elo, tendo o vector vectux i a direcção e sentido do elo. Primeiramente, para simplificar a apresentação iremos assumir que um elo-filho tem a sua extremidade proximal encaixada na extremidade distal do seu pai.

46

CAPÍTULO 3. ESPECIFICAÇÃO DO SISTEMA

Neste caso, para o elo i com pai j temos (x0i , yi0 , zi0 ) = (x1j , yj1 , zj1 ). Definem-se os ângulos de rotação do elo i em relação ao seu elo-pai como: θxi , θyi e θzi , para os ângulos de rotação em torno dos eixos x, y e z de um referencial isolado. Geralmente, estes ângulos designam-se por pan, tilt, roll. Para cada um destes ângulos definem-se as respectivas matrizes de rotação Mx (θx ), My (θy ) e Mz (θz ), a partir das quais é possível executar a rotação em relação aos respectivos eixos (ver apendice B). Para um elo i, define-se a matriz: Mi = Mx (θx ) · My (θy ) · Mz (θz )

(3.2)

Trata-se de uma matriz que resulta da composição da matriz Mx (θx ) com a matriz My (θy ) e o resultado disto composto com Mz (θz ). Esta composição de matrizes designa-se por matriz genérica. Como se assume que os elos-filho encaixam na extremidade distal do seu pai, é necessário estender a matriz de transformação para incluir a translação ao longo do elo-pai. Isto é feito introduzindo uma dimensão extra na matriz (3.2), com a quarta linha contendo a localização da extremidade distal de um elo. Formalmente:  Mi

  M0i =   x1i

yi1

zi1

0 0 0 1

    

Como agora temos matrizes 4 × 4, as posições dos elos passam a conter quatro componentes. Estas componentes designam-se por coordenadas homogéneas. A extremidade distal de um elo i no referencial associado ao seu elo-pai j, pode ser calculada da seguinte forma: [x1i , yi1 , zi1 , 1] = M0j · [li , 0, 0, 1]T , onde li é o comprimento do elo i. Para calcular as coordenadas da extremidade distal de um elo no referencial da base O tem-se em conta as transformações (rotações e translações) dos elos ascendentes até à raiz. Isto é feito, aplicando uma transformação linear que encadeia a sequência de tranformações lineares associadas a todos os elos ascendentes [25]. Assim: [x1i , yi1 , zi1 , 1] = . . . · M0i−2 · M0i−1 · [xi , yi , zi , 1]T , onde M0i−n é a matriz associada ao n-ésimo ancestral do elo i.

3.2. MODELAÇÃO E ANIMAÇÃO DE AGENTES COMPUTACIONAIS

47

Na figura 3.3 apresenta-se uma sequência de transformações aplicadas aos elos i, j e k.

Y

i

vectu y

---

---

---

--

-

---

----

----

----

------

----

------

----

------

----

i

vectu z

----

---

-

---

---

-----------------------------

elo j

---------------------------------------

j vectu z

----

---- ------------------

----

----

elo k

elo i

----------------------

----

j

vectu x

-----------------------------------------------

----

j vectu y

i

vectu x

X

---

-------------------------------------------------------------------------------------------------------------------------------------------------------------Z

[xi1 , yi1, zi1 ,1]= M’k M’j M’i (li ,0,0,1)

Figura 3.3: Determinação da extremidade distal do elo i [x1i , yi1 , zi1 , 1]. Para os casos onde um elo-filho i encaixa na extremidade proximal do elo-pai, modifica-se a matriz do pai para não se efectuarem translações. Visualização de agentes computacionais 3D Para realizar a visualização 3D numa tela 2D usa-se uma função de projecção: f (x, y, z) → (x0 , y 0 ) Esta função mapeia coordenadas 3D, num referencial fixo, para coordenadas de tela 2D. Uma concretização simples é a projecção cavaleira, onde temos: f (x, y, z) = (z + K · y, x + K · y) Assim, para representar um elo i como um segmento de recta no plano, mapea-se as coordenadas das suas extremidades proximal e distal segundo f para obtermos pontos 01 00 00 1 1 1 0 0 0 (x01 i , yi ) e (xi , yi ) correspondendo, respectivamente, a (xi , yi , zi ) e (xi , yi , zi ). As funções de projecção quando envolvem perspectiva e rotações de câmara tornam-se mais complicadas. No entanto, este processo pode ser simplificado quando se utiliza uma biblioteca especializada em modelação e visualização gráfica 3D. Neste caso não é necessário definir as funções de projeçção. Esta é a solução usada no capítulo. 4.

48

CAPÍTULO 3. ESPECIFICAÇÃO DO SISTEMA

3.2.4

Animação de agentes computacionais

Pretende-se que os agentes exibam movimentos e sequências comportamentais fixas ou semi-fixas. A velocidade de execução pode ser pré-definida ou calculada de forma automática tendo em conta o comportamento do utilizador-humano (ver secção 3.3). Define-se em baixo um formalismo para a especificação das sequências ou trajectórias comportamentais de agentes. Nesta secção introduz-se o conceito de vector de configuração de agentes e foca-se a interpolação de movimentos.

Vector de Configuração Define-se uma configuração de um agente como uma atribuição concreta às variáveis que definem a posição das juntas e dos seus elos. Distinguem-se dois casos: • uma postura, definida com a configuração dos ângulos das juntas em coordenadas egocêntricas — tendo o agente como o seu próprio referencial; • uma posição-orientação, definida em coordenadas alocêntricas ou em relação a um referencial externo. Para o modelo estrutural apresentado atrás, a postura é definida pelo conjunto dos ângulos de todas as outras juntas. A posição-orientação é definida pela posição no espaço das extremidades dos elos. Formalmente, define-se uma configuração como sendo um vector C, cuja dimensão é a necessária para especificar completamente uma postura e posição-orientação no espaço. Para o caso 3D temos: C ≡ [x0 , y0 , z0 , θx0 , θy0 , θz0 , . . . , θxn , θyn , θzn ], onde (x0 , y0 , z0 ) representa uma posição de referência (por exemplo o centro-de-massa ou extremidade proximal) do elo raiz do agente. As restantes variáveis são os ângulos das juntas. Define-se uma frase (comportamental) ou movimento como sendo um par ordenado de configurações, constituído por uma configuração inicial e uma configuração final do agente. Pode-se também incluir na definição de movimento uma ou mais especificações-restrições temporais para a trajectória. Formalmente, dada uma configuração inicial C0 e uma configuração final C1 , define-se um movimento como: mv ≡ (C0 , C1 , R), onde R designa uma ou mais especificações-restrições (por exemplo temporais) para o movimento. As especificações-restrições que considerámos são definidas mais à frente.

3.2. MODELAÇÃO E ANIMAÇÃO DE AGENTES COMPUTACIONAIS

49

Um acto (comportamental) 2 de um agente é definido como uma sequência (encadeamento ordenado) de movimentos. Se assumirmos que os movimentos de um acto são em número fixo, podemos caracterizar um acto com sendo um vector, caso contrário, como uma lista. Apresenta-se em baixo uma definição formal genérica para um acto: A ≡ [mv1 , mv2 , . . . , mvn ], onde A designa o acto comportamental e mvk , com k ∈ {1, ..., n} representa um qualquer movimento. Diz-se que um acto é contínuo se a configuração final de um movimento é sempre idêntica à configuração inicial do movimento seguinte, caso exista. Para descrever um acto contínuo pode-se usar uma sequência de n + 1 configurações: C0 , C1 , . . . , Cn e construir n frases/movimentos: mv1 = (C0 , C1 ), mv2 = (C1 , C2 ),. . ., mvn = (Cn−1 , Cn ). Estes movimentos quando encadeados em série, podem ser usados para definir uma acto comportamental: A ≡ [mv1 , mv2 , . . . , mvn ] representando uma execução e tomada sequencial de posturas-configurações e movimentos pelo agente. Na aplicação de agentes em contexto da ginástica do trabalho, os actos A correspodem, normalmente, a formas ou exercícios práticos concretos.

Animação por interpolação de posturas Dado um movimento com mv = [C0 , C1 , R], pode-se definir um operador de geração de trajectórias T (mv), que devolve uma função temporal C(t) para interpolação das configurações — as que o agente irá assumir em cada instante de tempo. Assume-se que em C(t), t está definido no intervalo [0, t1 ] e que C(0) = C0 e C(t1 ) = C1 . Na prática, pode-se assumir que C(t) é definida como uma lista finita L(C) com um número de elementos apropriados para o valor t1 e o incremento da simulação. Designadamente, se assumirmos que um passo-de-simulação corresponde a δt unidades de tempo, então o comprimento da lista que define C(t) será tδ1t + 1. O valor de índice i da lista, L(C)[i], representa o valor C( δit ). Iremos considerar os seguintes tipos de restrições de movimento R:

• R ≡ (linear, t1 ) — Movimento linear entre configuração C0 e configuração C1 . t1 especifica a duração do movimento. 

t C(t) = C0 · 1 − t1 2

 + C1

Uma designação alternativa no idioma inglês seria performance

t t1

50

CAPÍTULO 3. ESPECIFICAÇÃO DO SISTEMA • R ≡ (acel, a0 ) — Movimento acelerado com aceleração inicial a0 . Termina na configuração C1 com aceleração 0. Usa-se as seguintes igualdades:   C[i](t + 1) = C[i] + vi (t)       vi (t) = vi (t − 1) + ai (t) ai (t + 1) = ai (t) · (1 − t) − vi (t) · t0    ai (0) = a0     t0 = Ci (t)−Ci [t+1] C1 [i]−C0 [i] No sistema anterior, – C[i] representa o i−ésimo grau-de-liberdade da configuração; – vi (t) é a velocidade instantânea do grau de liberdade C[i]; – ai (t) define a aceleração do grau-de-liberdade de C[i]; – t0 é uma variável auxiliar que varia entre 0 e 1, tomando este valor quando o grau-de-liberdade está na posição final C1 [i].

3.3

Reactividade ao contexto

Nesta secção propõem-se mecanismos de controlo adaptativo da velocidade do agente. Concretamente, pretende-se que o agente seja capaz de modificar a velocidade para sincronizar os seus movimentos com os do utilizador humano que pratica a sequência de exercícios/formas propostas. Uma forma de realizar este tipo de sincronização recorre ao uso de técnicas para Motion-Capture. Isto envolve a inferência da posição dos membros do utilizador, orientação do corpo e posição no espaço a partir do fluxo de imagem da câmara que lhe está apontada. Como neste tipo de aproximação é conhecida a configuração instantânea do utilizador humano, torna-se imediata a correcção da configuração e/ou velocidade do agente computacional. Na secção 2.2.2 fez-se uma descrição genérica do processo de Motion-Capture. Como este processo pode implicar um custo computacional muito elevado e pode, ainda, ser difícil de realizar em tempo real num computador vulgar, sem recorrer a hardware ou vestuário especial, nesta tese iremos explorar uma aproximação heurística para correcção da velocidade do agente. Designadamente, são computados dois fluxos: o da imagem obtida através de uma câmara-de-vídeo e o do agente. A partir das variações nestes dois fluxos calcula-se um factor de correcção que actua na velocidade normal do agente. Na secção 3.3.1 descrevem-se as medidas de fluxo usadas nesta computação e a forma concreta como a velocidade do agente é ajustada. Na secção 3.3.2 apresentam-se as heurísticas implementadas e avaliadas no protótipo desenvolvido nesta tese.

3.3. REACTIVIDADE AO CONTEXTO

3.3.1

51

Medidas utilizadas para a correcção de velocidade de agentes computacionais

Nas soluções heurísticas exploradas nesta tese, calcula-se o fluxo de imagem vinda da câmara-de-vídeo apontada ao utilizador e uma medida de fluxo de movimento do agente. Relacionando variações nestes dois fluxos é possível, garantidas certas condições, inferir se o utilizador está a movimentar-se mais devagar ou mais rápido que o agente. Concretamente, iremos assumir que o caso mais frequente é o utilizador estar em sincronia quase perfeita com o agente. Nestas condições, o factor de correcção de velocidade a calcular deve convergir para a unidade (nenhuma correcção a fazer). Mais especificamente, isto é feito considerando que a razão entre o fluxo de imagem e fluxo do agente varia no mesmo sentido que o pretendido factor de correcção de velocidade. Isto é, se o fluxo de imagem aumentar, assumindo sincronia prévia, a velocidade do agente também deve aumentar. Inversamente, se o fluxo de imagem diminuir a velocidade do agente deve diminuir. Como os dois fluxos medem grandezas diferentes, é necessário aplicar um factor de correcção no sentido de se obter uma correcção unitária em condições de sincronia. De seguida, descrevem-se detalhadamente as expressões utilizadas para as computações de fluxo e de correcção de velocidade.

Aquisição de sequências de imagens Assume-se que o sistema é alimentado em tempo real por sequências de imagens RGB capturadas por uma câmara-de-vídeo vulgar ou outro dispositivo de input de imagem. Define-se img(x, y; t) como sendo o valor do pixel (x, y) da imagem gerada pela câmarade-vídeo no instante t. Define-se t = 0 como o início da execução de uma forma ou acto-comportamental do agente. O incremento de t é sincronizado com as iteracções de animação do agente. Assume-se que a imagem tem largura w e altura h (não sendo necessário que o aspect-ratio seja 1). Para além disto, assume-se que img(x, y; t) devolve uma lista com o código RGB, tendo cada pixel a componente respectiva (r, g, b). Para ter r, g, b ∈ [0, 1] realiza-se uma operação de pré-processamento.

Cálculo do fluxo de imagem obtida através da câmara-de-vídeo O fluxo de imagem da câmara-de-vídeo é calculado usando a média da diferença entre o valor dos pixels de duas imagens consecutivas. No sentido de simplificar a nomenclatura, daqui para a frente utilizaremos apenas a designação fluxo de imagem. Para garantir um custo computacional apropriado no cálculo do fluxo, o conjunto de pixels considerado pode ser um sub-conjunto (amostragem ou sampling) de todos os pixels da imagem. Representa-se esse subconjunto de pixels por D. Formalmente, o fluxo de imagem é calculado de acordo com o seguinte operador:

52

CAPÍTULO 3. ESPECIFICAÇÃO DO SISTEMA

φimg =

1 X ||img(x, y; t) − img(x, y; t − 1)||m , |D| (x,y)∈D

sendo os termos do somatório a distância de Manhattan, i.e.: ||p1 − p0 || = ||p1 [r] − p0 [r]|| + ||p1 [g] − p0 [g]|| + ||p1 [b] − p0 [b]|| No caso onde se utiliza todos os pixels das imagens tem-se |D| = wh, onde w e h são, respectivamente, a largura e altura da imagem. Como se verificou que na implementação e instalação utilizada o peso computacional associado ao uso de todos os pixels da imagem era demasiado elevado, definou-se um parâmetro Ds0 para a proporção de pixels a usar. (Nas experiências descritas no capítulo 5 usou-se Ds0 = 0.1, isto é, usam-se 10% dos pixels, separados por igual distância.) Como é possível que ocorram variações muito bruscas no valor de φimg , que dificultem o processo de correcção de velocidade ou prejudiquem a manutenção da condição de sincronia, define-se uma medida φ0img que toma o valor médio de φimg nas últimas W0 amostragens.

Cálculo do fluxo de animação de agentes O fluxo do agente é definido como o agregado da variação dos parâmetros de configuração entre dois instantes de animação. Formalmente, utiliza-se o seguinte operador: φag = ||C(t) − C(t + 1)||m , onde C(t) é a configuração do agente no instante t e C(t+1) a configuração no instante seguinte. ||.||m representa a distância de Manhattan de um vector ou da diferença entre vectores. Isto é: ||C(t) − C(t + 1)||m ≡

X

|C(t)[i] − C(t + 1)[i]|,

i

onde i representa o i -ésimo grau-de-liberdade das configurações.

Razão entre fluxos Define-se a razão entre os dois fluxos propostos acima como: φ0img Φ = φag 0

(3.3)

3.3. REACTIVIDADE AO CONTEXTO

53

Quando φ0img = 0 assume-se que Φ0 não está definido. Nesse caso, o sistema não procura sincronizar o agente com o utilizador. Define-se ainda E[Φ0 ] da seguinte forma: E[φ0img ] , E[Φ ] = E[φag ] 0

onde E[φ0img ] é média de φ0img calculada a partir das últimas W1 amostragens. De forma idêntica, E[φag ] é a média de φag calculada a partir das últimas W1 amostragens. Toma-se W1 >> W0 , isto é W1 muito maior que W0 .

3.3.2

Heurísticas propostas para correcção da velocidade de agentes

A realização de operações de sincronização envolve o cálculo de um termo ou factor de correcção de velocidade do agente. Designa-se esse termo ou factor por ∆. Diferentes heurísticas usam soluções diferentes para computar ∆. De uma forma geral, assumindo a sincronização prévia de velocidade e de fase, uma heurística deve propôr o aumento da velocidade do agente quando a velocidade do utilizador aumenta e a redução da velocidade do agente quando a do utilizador diminui. Como o movimento do agente é realizado por interpolação de configurações, sendo o valor instantâneo da configuração dependente de um parâmeto t ∈ [0, 1], o ajuste de velocidade pode ser feito alterando a variação deste parâmetro. Assume-se que na ausência de sincronização entre o agente e o utilizador humano, t é incrementado em cada passo de animação de dt = dt0 , com dt0 = N1s , sendo N s o número de passos para cada movimento de Ci para Ci+1 . Na presença de sincronização, altera-se o valor de dt. Quando ∆ é um termo isto é feito da seguinte forma: (

dt(0) = dt0 dt(t + 1) = dt(t) + ∆

Quando ∆ é um factor a alteração temos: (

dt(0) = dt0 dt(t + 1) = dt(t) × (1 + ∆)

Como é útil garantir que a velocidade do agente se mantém dentro de limites conhecidos 0 , dt0 Km ], em que Kd e Km são a máxima impôe-se, adicionalmente, que dt ∈ [ dt Kd redução e máximo aumento relativo de dt em relação a dt0 .

54

CAPÍTULO 3. ESPECIFICAÇÃO DO SISTEMA

De uma forma geral, uma heurística para computar ∆ pode ser aplicada para modificar tanto aditivamente como multiplicativamente.

Heurística 0 Na heurística mais simples que vamos considerar, temos a seguinte formulação: ∆ = K0 (φ0 (t + 1) − φ0 (t)), onde K0 é um parâmetro que relaciona as variações do fluxo de imagem com a variação da velocidade a impôr ao agente.

Heurística 1 Neste caso propõem-se valores discretos para ∆.  0 0    ← φ (t + 1) − φ (t) > β ∆= − ← φ0 (t + 1) − φ0 (t) < β .   0 ← cc onde β é um parâmetro de threshold que indica qual o valor mínimo de variação do fluxo de imagem para ocorrer variação da velocidade do agente.  é a correção que é feita em dt.

Heurística 2 Na definição da heurística 2, define-se um factor de sincronização de velocidade η da seguinte forma:

η=

Φ0 E[Φ0 ]

Quando o fluxo do agente e o fluxo de imagem são contantes, η converge para 1, visto que φ0img converge para E[φ0img ] e φag converge para E[φag ] em W1 amostragens. Observe-se que no caso de φ0img = 0 em (3.3), o valor de η toma o valor 1. O valor de ∆ é ( ∆=

(1 − η) · Kη ← η > 1 + β ∨ η < 1 − β 0 ← cc

3.3. REACTIVIDADE AO CONTEXTO

55

onde β é um parâmetro de threshold que indica qual o valor mínimo de desvio de 1 para η que se considera significativo. Kη > 0 é uma constante a optimizar experimentalmente. Tipicamente, quando o fluxo de imagem aumenta significativamente teremos η > 1 + β, pelo que ∆ > 0 logo a velocidade do agente aumenta. Inversamente, quando o fluxo de imagem diminui significativamente teremos η < 1 − β, pelo que ∆ < 0 logo a velocidade do agente diminui. Quando η ≈ 1 não ocorre correcção da velocidade do agente. Isso deve acontecer quando o utilizador humano e o agente estão completamente sincronizados.

Resumo de parâmetros A tabela 3.1 sumariza a lista dos parâmetros que influenciam a forma como a velocidade do agente é corrigida nas heurísticas propostas. Apresenta-se a sua designação e uma breve descrição da sua função. Tabela 3.1: Sumário dos parâmetros usados no ajuste da velocidade do agente. Parâmetro

Descrição

∆ K0

termo ou factor de correcção de velocidade do agente relaciona as variações do fluxo de imagem com a variação da velocidade a impôr ao agente proporção de pixels de imagem amostrados número de passos de animação para os movimentos janela de amostragens para cálculo do fluxo de imagem suavizado janela de amostragens para cálculo do valor médio do fluxo de imagem e agente threshold para desvios de η significativos factor de ajuste da velocidade do agente máximo aumento relativo de dt máxima redução relativa de dt constante de ajuste do valor de η

Ds0 Ns W0 W1 β  Km Kd Kη

Capítulo 4 Arquitectura e detalhes de implementação Neste capítulo apresentam-se os aspectos de engenharia de software associados ao protótipo, incluindo o seu desenho arquitectural e alguns detalhes de implementação. Na secção 4.1 descrevem-se os objectos e métodos implementados no desenvolvimento do protótipo desta tese. Na secção 4.2 apresentam-se as principais funcionalidades da interface gráfica, nomeadamente, os controlos de animação do agente, o editor de configurações, movimentos e actos, o editor dos principais parâmetros do mecanismo de sincronização e o visualizador de séries temporais.

4.1

Modelo de classes

Para gerir eficazmente a complexidade inerente ao protótipo, usaram-se príncipios da programação orientada a objectos, como por exemplo: modularidade, encapsulamento e separação de funcionalidades, expressas num modelo de classes e objectos concreto. A figura 4.1 apresenta o diagrama de classes em notação UML simplificado [45], no qual estão representadas as principais classes e atributos. Uma apresentação mais detalhada da estrutura de objectos e os seus métodos principais encontram-se descritos no apêndice D.

Classes para modelação de agentes • Elo O elo é a estrutura nuclear para a definição de agentes articulados. Tal como foi referido na secção 3.2, a estrutura completa de um agente articulado é definida a 56

4.1. MODELO DE CLASSES

Figura 4.1: Diagrama de classes.

57

58

CAPÍTULO 4. ARQUITECTURA E DETALHES DE IMPLEMENTAÇÃO partir de uma árvore de elos e juntas na qual o nó raiz consiste num elo sem pai. A classe Elo define um elo genérico com os seguintes atributos: nome do elo, nome do elo-pai, comprimento do elo, tipo de dof (número de graus-de-liberdade da junta) e vector director. Para além disto, incorpora métodos das classes Junta, Dof e Matriz para o processamento das matrizes associadas a cada um dos elos. Para efeito de visualização gráfica, tendo por base o elo raiz e a relação elo-pai e elo(s) filho(s) uma função recursiva computa as extremidades proximais e distais de todos os elos que compõem o agente articulado. Tendo por base o algoritmo implementado é possível a definição de agentes 2D ou 3D. • Junta Com a classe Junta representa-se uma articulação genérica que contém algumas propriedades que são comuns a todas as juntas humanas e os métodos necessários para movimentá-las. Salienta-se a implementação de métodos de definição da amplitude máxima e mínima, tipo de dof associado a cada junta e definição de rotação. • Dof Nesta classe definem-se os graus-de-liberdade disponíveis para cada uma das juntas do agente. Por exemplo, a junta que simula o joelho humano pressupõe a existência de apenas um grau-de-liberdade, ao contrário do ombro que pressupõe três graus-de-liberdade. Assim sendo, os vários de tipos de graus-de-liberdade são vistos como dados do tipo enumerado. Com este passo pretendeu-se, essencialmente, minimizar os cálculos necessários à computação de matrizes. Para além disto, evitou-se a definição de um tipo de Dof genérico com três grausde-liberdade, desnecessário em muitos casos e que poderia conduzir a um custo computacional demasiado elevado. Assim sendo, para cada um dos enumerados define-se as transformações associadas de acordo com o número de graus-deliberdade. • Matriz As matrizes são elementos básicos fundamentais para os grafismos 3D, pelo que são utilizadas para efectuar transformações entre referenciais. Para este efeito criou-se a classe Matriz que inclui métodos para operações comuns de matrizes como produto e soma de matrizes, transposição, produto por vector e definição de identidade, entre outros.

Classe para visualização de agentes • GlWidget A classe GlWidget representa um objecto OpenGL genérico para representação de elementos gráficos, neste caso o agente e o mundo onde está inserido, na tela de visualização. Dos inúmeros métodos optimizados disponíveis nesta biblioteca

4.1. MODELO DE CLASSES

59

gráfica incorporam-se funcionalidades para rotação e assim simular o movimento de câmara no cenário, translação para definir a posição do chão e personagem no cenário, projecção e desenho de elementos gráficos simples. Para representação de todos os objectos gráficos utilizou-se o comando GL Lines. O uso da biblioteca OpenGl, tem como objectivo principal acelerar todos os procedimentos de desenho e visualização.

Classes para animação de agentes • Configuracao A classe Configuracao dispõe de métodos e atributos necessários à recuperação e armazenamento das configurações definidas pelo utilizador. Durante o tempo que o programa se encontra em execução as configurações são armazenadas numa lista e a cada uma delas é atribuída uma designação simbólica, um identificador numérico — id, a sequência de elos do agente e os respectivos valores de junta. Para isto foram criados métodos para adicionar ou remover configurações a uma lista de configurações e de reajuste do respectivo id, sempre que haja alteração na sequência. • Movimentacao A classe Movimentacao dispõe de métodos e atributos necessários à criação ou eliminação de movimentos a uma lista de movimentos criada pelo utilizador. Tal como acontece com as configurações, a cada movimento é atribuído uma designação simbólica, um id e um par de configurações (C0 , C1 ). A este nível as configurações que constituem o movimento são representadas pelo respectivo id. • Acto A classe Acto dispõe dos métodos e atributos necessários à criação ou eliminação de actos. Cada vez que é criado um acto, são seleccionados os movimentos que se pretendem adicionar a este acto. Assim sendo, daqui resulta uma lista que armazena a designação simbólica do acto, o seu id e a sequência de movimentos criada e seleccionada pelo utilizador com os respectivos id’s. • Play A classe Play disponibiliza métodos que a partir de um ou mais actos, previamente definidos pelo utilizador, recuperam os movimentos desse acto, configurações, lista de elos e valores da junta. Feito isto é criada uma lista com o nome do acto, o id e a sequência de configurações respectivas. Cada uma das configurações é complementada com o conjunto dos elos do agente e os respectivos valores das juntas. • Animacao

60

CAPÍTULO 4. ARQUITECTURA E DETALHES DE IMPLEMENTAÇÃO Para definir a animação do agente é necessário, pelo menos, definir um movimento. A classe Animacao contém os métodos necessários ao cálculo das coordenadas (x, y, z) das extremidades proximais e distais de cada elo nas configurações intermédias entre C0 e C1 desse movimento. Assim sendo, inclui funcionalidades que recuperam o par de configurações de um movimento que conste no(s) acto(s) seleccionado(s). Ainda nesta classe, incluem-se funcionalidades de modificação da velocidade do agente quando o utilizador activa, a partir da janela principal da interface gráfica, o mecanismo de sincronização. Relativamente às especificaçõesrestrições para o movimento propostas na secção 3.2.3, na versão corrente do protótipo implementa-se apenas o movimento com velocidade uniforme.

Classes para captura de imagens e cálculo de fluxos • ImgCam Para aquisição de imagens em tempo real criou-se a classe ImgCam que incorpora funcionalidades da biblioteca OpenCV. Cada imagem capturada é armazenada numa lista do tipo PIL—(Python Image Library) com os valores RGB de cada pixel. Incorpora-se ainda nesta classe funcionalidades para visualizar a sequência de imagens capturadas pela câmara-de-vídeo. • FluxoCam Nesta classe incluem-se as funcionalidades necessárias ao cálculo do fluxo de imagens geradas pela câmara-de-vídeo. Para tal, implementou-se um método que a partir de duas imagens consecutivas e geradas instantaneamente pela câmara-de-vídeo, calcula a média da diferença entre o valor dos pixels. O valor do fluxo é armazenado numa lista para, posteriormente, ser visualizado graficamente e utilizado no mecanismo de sincronização. • FluxoAgente Integram-se nesta classe funcionalidades de cálculo do fluxo do agente quando este se encontra a realizar um determinado conjunto de movimentos. Para isto, implementou-se um método para determinar a variação dos parâmetros de configuração em dois instantes da animação. Em cada instante da animação, o valor do fluxo do agente é armazenado numa lista, para posteriormente ser visualizado graficamente e utilizado no mecanismo de sincronização.

Classe para sincronização agente/utilizador • Sincronizacao Incluem-se nesta classe os métodos necessários para a definição do mecanismo de sincronização agente/utilizador. Dos métodos implementados destacam-se aqueles que definem o mecanismo de sincronização imposto pela heurística 2.

4.2. FUNCIONALIDADES DA INTERFACE GRÁFICA (GUI)

61

Assim sendo, esta classe dispõe de métodos para determinação do factor de sincronização de velocidade — η. O valor instantâneo de η é armazenado numa lista, representado graficamente numa série temporal e é utilizado pela classe Animacao para a modificação da velocidade do agente.

Classe para visualização de séries temporais • Plot Integram-se nesta classe as funcionalidades necessárias para a representação de séries temporais, nomeadamente o fluxo do agente, o fluxo de imagem e o valor de η. Para isto, incorporam-se funcionalidades de desenho simples, disponíveis na bibliteca Qt.

Classe para importação e exportação de dados • XMLParse A classe XMLParse incorpora funcionalidades que permitem a importação e exportação de um ou mais actos, com os respectivos movimentos, configurações e valores das juntas de cada elo. Assim sendo, dispõe de funções básicas como a leitura e escrita de dados em ficheiro. Ver apêndice C. Para além disto, são incorporadas funcionalidades para exportação de dados para posterior realização das estatísticas de validação do(s) mecanismo(s) de sincronização. As estatísticas são realizadas em linguagem R.

4.2

Funcionalidades da interface gráfica (GUI )

Na figura 4.2 é apresentada a janela principal da interface gráfica da aplicação desenvolvida nesta tese, onde é possível observar as principais funcionalidades. De seguida faz-se uma breve descrição das principais funcionalidades da interface gráfica. Menu da aplicação O menu da janela principal da aplicação integra os seguintes comandos: • Ficheiro – Carregar — permite que o utilizador carregue um ficheiro XML que contém a estrutura de dados necessária à execução de um acto previamente definido; – Salvar — permite que o utilizador salve a estrutura de dados de um acto num ficheiro XML, para uma futura utilização;

62

CAPÍTULO 4. ARQUITECTURA E DETALHES DE IMPLEMENTAÇÃO

Figura 4.2: Janela principal da interface gráfica da aplicação desenvolvida. – Exportar estatísticas — permite ao utilizador exportar para um ficheiro os valores do fluxo de imagem, fluxo do agente, entre outros, para posterior visualização gráfica através da linguagem R; – Sair — permite ao utilizador abandonar a aplicação. • Sobre — fornece algumas informações úteis sobre as tecnologias envolvidas no desenvolvimento do protótipo.

Controlador da animação do agente A janela principal da aplicação disponibiliza uma área para controlar a animação do agente. Concretamente são suportados os seguintes comandos: • Play — acciona a animação do agente na janela do OpenGL de acordo com a sequência de configurações que constam no(s) acto(s) seleccionado(s). A este comando está também associada a actualização da janela que contém as séries

4.2. FUNCIONALIDADES DA INTERFACE GRÁFICA (GUI)

63

temporais do fluxo de imagem, do agente e outros dados relativos ao mecanismo de sincronização; • Stop — pára a animação do agente bem como a actualização da janela que contém as séries temporais; • Pause — coloca o sistema em espera durante a execução de um acto; • Play One — acciona a animação do agente na janela do OpenGL de acordo com a sequência de configurações do acto previamente seleccionado. Disponibliza ainda os seguintes widgets de controlo adicionais: • Controlo da velocidade de animação base do agente — possibilita o aumento ou diminuição da velocidade com que o agente executa o(s) movimento(s) de um ou mais actos. Editor interactivo de frases e actos comportamentais Para editar facilmente agentes com corpos articulados para exibição de actos comportamentais, recorre-se a um editor para configurações, movimentos e actos. Este editor serve-se de mecanismos de selecção do elo que se pretende transformar bem como de modificação do valor do(s) ângulo(s) de junta. Na figura 4.3 é possível observar a organização do editor de frases e actos comportamentais.

Figura 4.3: Editor de frases e actos comportamentais (A), editor de configurações do agente e vista de câmara (B). Seguidamente resumem-se as funcionalidades pretendidas:

64

CAPÍTULO 4. ARQUITECTURA E DETALHES DE IMPLEMENTAÇÃO • O editor permite atribuir nomes simbólicos a configurações correspondentes a posturas e posições que o agente toma num determinado instante. Os nomes/identificadores simbólicos (cadeias de caracteres/strings) são então armazenados numa sequência. Os botões Criar Config e Apagar Config possibilitam ao utilizador criar ou apagar uma configuração da lista que as contém. Note-se que estes widgets repetem-se para o editor de movimentos e actos. • O editor permite também criar movimentos seleccionando pares de nomes simbólicos das configurações. Os movimentos recebem também nomes simbólicos. Assim se conf1 e conf2 são nomes de configurações identificadas/criadas anteriormente, o utilizador poderá criar um movimento , sendo Ct a identificação e parâmetros do tipo de restrição. • O editor permite encadear uma lista ordenada de n movimentos para criar um acto comportamental. Assim, Mi com i ∈ [1, n] são n movimentos com nomes mv1, mv2, etc. O utilizador poderá criar um acto, em que para isso só tem de seleccionar e adicionar, sequencialmente, os movimentos anteriomente criados. Ferramentas para remoção de movimentos e alteração da sua ordem num acto são também suportadas. Os actos recebem também nomes simbólicos.

Editor de mecanismos e parâmetros de sincronização Na figura 4.4 apresentam-se os editores dos mecanismos de sincronização. editores contêm os seguintes controlos :

Estes

Figura 4.4: Editores dos mecanismos de sincronização.

• On/Off da câmara-de-vídeo; • Sincroniza — permite a activação/desactivação do mecanismo de sincronização seleccionado; • Selector de heurística — permite a selecção da heurística pretendida para o mecanismo de sincronização;

4.3. IMPORTAÇÃO/EXPORTAÇÃO DE ACTOS COMPORTAMENTAIS

65

• Selector de cálculo — permite seleccionar a forma de cálculo da actualização da velocidade do agente a partir do factor de correcção de velocidade. Para além destes, são incorporados vários controlos de manipulação dos parâmetros associados a cada heurística e do fluxo de imagem (Editor B da figura 4.4). Séries temporais de fuxo de imagem e agente Para mais facilmente analisar os resultados do mecanismo de sincronização integrou-se uma janela de visualização das séries temporais do fluxo de imagem - φimg , do agente - φag e de η. Salienta-se que esta visualização foi utilizada, essencialmente, para debug ao longo do melhoramento do algoritmo de sincronização.

Figura 4.5: Janela de visualização das séries temporais (Azul: φimg , Vermelho: φag , Verde: η).

4.3

Importação/exportação de actos comportamentais

Durante a simulação, todos os parâmetros e estruturas que definem o agente são mantidos em memória RAM de forma a optimizar a performance. Contudo, como essa informação deixa de existir quando o programa termina a execução, é necessário importar e exportar dados sobre o comportamento do agente num determinado acto. Desta forma, não é necessário definir as configurações e movimentos associados a um determinado acto. Convém que a descrição dos principais parâmetros necessários na definição de um ou mais actos seja gravada num formato que possa ser utilizado no protótipo ou então importado para outros ambientes de animação e modelação. A solução proposta passa pela utilização de arquivos XML (eXtensible Markup Language) [47]. Ainda que este padrão seja essencialmente utilizado para trocas de documentos estruturados através da Web, também se tem mostrado ideal para dados estruturados hierarquicamente, em outro tipo de situações, como é o caso de um agente articulado. Assim sendo, os dados são gravados em formato texto, com etiquetas de

66

CAPÍTULO 4. ARQUITECTURA E DETALHES DE IMPLEMENTAÇÃO

marcação, tags, para separar cada elemento, atributo ou objecto. Isto permite que os arquivos gerados possam ser facilmente compreendidos, criados e modificados em qualquer editor de texto. Para representar o esqueleto de um agente humanóide num arquivo XML é necessário definir as tags que serão usadas, o modo como estas delimitam as informações que de facto representam o agente e o movimento pretendido. No apêndice C apresenta-se a estrutura de dados, em XML, utilizada na validação do mecanismo de sincronização.

4.4

Ferramentas e plataformas usadas

A implementação foi realizada em ambiente Windows XP Service pack 2 utilizando a linguagem de programação Python. A escolha de Python não foi arbitrária. Esta opção deve-se ao facto de se tratar de uma linguagem orientada a objectos, interpretada e multiplataforma. Para além disto, Python apresenta uma vasta lista de bibliotecas para criação de interfaces gráficas de elevada potencialidade e permite a implementação de protótipos de forma mais rápida quando comparada com linguagens como o C++ ou Java [18]. Para a realização gráfica do agente recorre-se ao pacote PyOpenGL, wrapper para Python da poderosa biblioteca gráfica OpenGL. PyOpenGL é uma plataforma Python de transição, de código aberto que estabelece a ligação à API padrão OpenGL, permitindo assim a representação de gráficos 2D e 3D. Esta biblioteca tem as mesmas funcionalidades da biblioteca OpenGL já que as funções permanecem as mesmas para linguagem C++ [37]. Para a construção da interface gráfica foi utilizada a wrapper de Qt para Python, o PyQt. Para além de possuir um desempenho bem próximo do Qt usado com C++, a referida biblioteca é famosa por ser bastante rica, coerente e extremamente bem documentada. Apesar da documentação ser para C++, é relativamente simples migrar os exemplos para Python. Outra vantagem tem a ver com a portabilidade, já que programas usando PyQt podem rodar com o visual nativo em todas as plataformas suportadas, inclusivé no Windows Vista a partir da versão 4.3 do Qt [40]. Para a captura de imagem através da câmara-de-vídeo foi utilizada a wrapper de OpenCV (Open Source Computer Vision) para Python. Esta biblioteca foi concebida especialmente para processamento e análise de imagem em tempo real [16]. Para a criação e manipulação de ficheiros XML utilizou-se o pacote distribuído pelo próprio Python, minidom [18].

Capítulo 5 Validação experimental Neste capítulo apresenta-se o protocolo experimental e resultados obtidos para a validação do(s) mecanismo(s) de sincronização entre o movimento do utilizador humano e o movimento do agente. Para este efeito, utiliza-se um movimento muito simples do agente, com apenas a variação de um grau-de-liberdade de uma junta. O capítulo está organizado da seguinte forma: na secção 5.1 descreve-se em detalhe o desenho experimental usado para validar as soluções de sincronização. Na secção 5.2, apresentam-se e analisam-se os resultados experimentais. Na secção 5.3 apresenta-se um resumo dos aspectos mais importantes aferidos durante as experiências realizadas.

5.1

Protocolo experimental

Como protocolo experimental considera-se um agente, que para efeitos de modelação e visualização tem um grande número de elos e juntas, mas que realiza movimento numa delas e com apenas um grau-de-liberdade. Concretizando, apenas um ângulo da junta do ante-braço esquerdo irá movimentar-se de forma cíclica (periódica) — fazendo o agente “acenar”. Definido como θ(t) o ângulo variável da junta, configura-se o sistema para que: • θ(0 + k · T ) = θ0 ,  • θ 0 + k · T ± T2 = ±θmax , onde θmax é o valor absoluto da amplitude máxima da junta-elo, T é o período de oscilação e k ∈ N . Concretamente, toma-se θ0 = 0 e θmax = 4π que corresponde, 5 aproximadamente, aos valores normalmente estimados para a quantidade de movimento resultante da flexão do cotovelo [23] citado em [26]. Para simplificar o estudo 67

68

CAPÍTULO 5. VALIDAÇÃO EXPERIMENTAL

da sincronização, o movimento é realizado com velocidade uniforme e repetido várias vezes. Seguindo o formalismo da definição de movimentos (capítulo 3) e implementação (capítulo 4), o movimento pode ser definido através de 3 configurações com valores diferentes de θ: • C0 tem θ = θ0 , • C1 tem θ = θmax , • C2 tem θ = −θmax e 2 movimentos: • mv1 = (C0 , C1 ), • mv1 = (C1 , C2 ), sendo a sequência mv1 , mv2 repetida n vezes. A figura 5.1 descreve o movimento efectuado pelo agente durante as experiências realizadas.

I

II

III

IV

Figura 5.1: Movimento do agente durante a validação das heurísticas. Para representar o comportamento do utilizador humano, ensaia-se um movimento comparável ao movimento do agente (“acenar”) em frente da câmara-de-vídeo. Nas várias experiências realizadas tenta-se que a fase e velocidade do utilizador humano seja aproximadamente igual à fase do agente. Em certos momentos a velocidade do utilizador humano é aumentada ou diminuída. O objectivo das experiências é verificar se e como a velocidade do agente se adapta automaticamente em função da velocidade do utilizador humano. Para cada uma das heurísticas definidas na secção 3.3.1 registam-se os seguintes dados:

5.2. REGISTO E DISCUSSÃO DOS RESULTADOS EXPERIMENTAIS

69

• φag (t) — série-temporal do fluxo do agente; • E[φag ](t) — série-temporal da média do fluxo do agente sobre um janela de dimensão W1 ; • φimg (t) e φ0img (t) — série-temporal do fluxo de imagem e fluxo de imagem suavizado sobre uma janela de dimensão W0 ; • E[φ0 ](t) — série-temporal da média do fluxo de imagem suavizado sobre uma janela de dimensão W1 ; • η(t) — factor de sincronização de velocidade.

5.2

Registo e discussão dos resultados experimentais

Apresentam-se em baixo os resultados obtidos nas várias experiências. Para além disto, discute-se a adequação do comportamento do agente em resposta ao comportamento do utilizador humano. Utilizaram-se os seguintes valores para os parâmetros que controlam em detalhe o comportamento do mecanismo de sincronização entre agente e utilizador: W0 = 10, W1 = 50, N S = 25, Ds0 = 0.1, β = 0.1,  = 0.5 e Km = Kd = 10.

5.2.1

Estudos preliminares

Para a realização dos estudos experimentais, procedemos à implementação das heurísticas 0, 1 e 2 apresentadas na secção 3.3.2. Durante a realização de experiências preliminares utilizando as heurísticas 0 e 1, observou-se que o agente apresentava um comportamento muito instável e pouco natural. Ainda que na heurística 1 se ignore pequenas variações do fluxo de imagem, não se verificou que o comportamento do agente era notoriamente superior ao da heurística 0. Em contrapartida, a heurística 2 apresentou resultados mais congruentes com a tarefa proposta pelo que, a discussão dos resultados experimentais apresentada em baixo concentra-se apenas nesta heurística. Em relação às variantes possíveis propostas no capítulo 3, verificou-se que a solução para correcção multiplicativa da velocidade do agente tem desempenho superior, sendo neste caso o valor da medida considerada como uma aceleração a impôr ao movimento do agente. Por sua vez, o valor de Kη mostrou resultados mais congruentes com a tarefa proposta quando era da ordem da centésima. Conjectura-se que este valor é dependente da razão entre as magnitudes absolutas do fluxo de imagem e fluxo do agente.

70

5.2.2

CAPÍTULO 5. VALIDAÇÃO EXPERIMENTAL

Heurística 2

Experiência 1 Na primeira experiência, que serve como cenário de controlo, gera-se um fluxo de imagem nulo, φimg = 0. Para isto, procedeu-se à obstrução da câmara-de-vídeo. A figura 5.2 apresenta os gráficos das estatísticas obtidas durante a experiência no caso em que o mecanismo de sincronização está desactivado.

6 5 4 3 0

1

2

3 0

1

2

Fluxo(Agente)

4

Média do Fluxo(Agente)

5

6

Os resultados demonstram que o fluxo do agente mantém-se, durante a maior parte do tempo, com valor ≈ 2. As variações rápidas e periódicas, referem-se aos instantes em que o agente termina um movimento e inicia outro. Consequentemente, o valor médio do fluxo do agente mantém-se também com um valor praticamente constante. Devido à obstrução, o valor do fluxo de imagem converge para um valor mínimo ≈ 0. (Acontece o mesmo com valor médio e o valor de fluxo suavizado φ0img — gráficos não apresentados). Finalmente, verifica-se que o valor de η converge para 1, o que seria de esperar já que tanto o fluxo do agente como o de imagem são ambos aproximadamente constantes, no último caso ≈ 0.

0

100

200

300

400

500

600

0

100

200

400

500

600

400

500

600

2.0 1.5

0.008

1.0

Eta

0.006

0.5

0.004

0.0

0.000

0.002

Fluxo(Imagem)

300 t

0.010

t

0

100

200

300 t

400

500

600

0

100

200

300 t

Figura 5.2: Resultados obtidos na experiência 1, sem sincronização. Definido o comportamento elementar do agente e das estatísticas utilizadas, apresenta-se na figura 5.3 os resultados do mesmo cenário experimental mas com activação da

5.2. REGISTO E DISCUSSÃO DOS RESULTADOS EXPERIMENTAIS

71

6 5 4 3 0

1

2

3 0

1

2

Fluxo(Agente)

4

Média do Fluxo(Agente)

5

6

sincronização entre o agente e o utilizador. Tal como na situação anterior, verifica-se que o fluxo de imagem é aproximadamente nulo. Como η converge para valores que oscilam em torno de 1, o fluxo do agente mantém-se aproximandamente constante.

0

100

200

300

400

500

600

0

100

200

400

500

600

400

500

600

2.0 1.5

0.008

1.0

Eta

0.006

0.5

0.004

0.0

0.000

0.002

Fluxo(Imagem)

300 t

0.010

t

0

100

200

300 t

400

500

600

0

100

200

300 t

Figura 5.3: Resultados obtidos na experiência 1, com sincronização.

Experiência 2 Na experiência 2 a câmara é desobstruída e o utilizador humano realiza um movimento de acompanhamento do agente (mesma velocidade e mesma fase). Esta experiência tem como objectivo principal averiguar se o comportamento do agente é perturbado pelo utilizador e em que medida. Formaliza-se em baixo o protocolo experimental: • φimg ≈ K, sendo K uma constante que representa o valor do fluxo de imagem obtida através da câmara-de-vídeo, quando um utilizador (ideal) movimenta o braço em sincronia perfeita com o movimento correspondente do agente. A figura 5.4 contém os gráficos das estatísticas obtidas na experiência 2 na situação em que o mecanismo de sincronização está desactivado. Os resultados demonstram que o

72

CAPÍTULO 5. VALIDAÇÃO EXPERIMENTAL

6 5 4 3 0

1

2

3 0

1

2

Fluxo(Agente)

4

Média do Fluxo(Agente)

5

6

comportamento do agente é idêntico ao da experiência 1, visto que o comportamento do utilizador e, consequentemente, o fluxo de imagem não estão a afectar o comportamento do agente. O fluxo de imagem mantém-se aproximadamente constante, pois durante a experiência o utilizador tem um comportamento uniforme.

0

100

200

300

400

500

600

0

100

200

400

500

600

400

500

600

2.0 1.5

0.008

1.0

Eta

0.006

0.5

0.004

0.0

0.000

0.002

Fluxo(Imagem)

300 t

0.010

t

0

100

200

300 t

400

500

600

0

100

200

300 t

Figura 5.4: Resultados obtidos na experiência 2, sem sincronização. A figura 5.5 apresenta os resultados para a mesma experiência, câmara desobstruída e o utilizador a acompanhar o agente, com a sincronização activada. Os resultados revelam que, tal como aconteceu anteriormente, o fluxo de imagem mantém-se aproximadamente constante. Pode-se ainda observar que o fluxo do agente oscila não só para os instantes em que ocorre mudança de direcção do elo/braço, mas também durante o período compreendido entre duas configurações. Contudo estas variações são relativamente pequenas, pelo que são negligenciáveis. Neste caso a velocidade e fluxo do agente mantêm-se a oscilar próximo do valor 2. Isto é mais notório no gráfico do fluxo médio do agente. Relativamente ao valor do factor de correcção η, verifica-se que este oscila ligeiramente em torno de 1. As oscilações de η estão relacionadas com as flutuações que ocorrem no fluxo de imagem, que por sua vez resultam do facto do utilizador encontrar alguma dificuldade em manter um movimento com velocidade entre duas configurações ou a ruído associado à captura da sequência de imagens.

6 5 4 3 1 0 0

100

200

300

400

500

600

0

100

200

300

400

500

600

400

500

600

t

1.0 0.0

0.002

0.5

0.004

Eta

0.006

1.5

0.008

2.0

0.010

t

Fluxo(Imagem)

73

2

3 0

1

2

Fluxo(Agente)

4

Média do Fluxo(Agente)

5

6

5.2. REGISTO E DISCUSSÃO DOS RESULTADOS EXPERIMENTAIS

0

100

200

300

400 t

500

600

0

100

200

300 t

Figura 5.5: Resultados obtidos na experiência 2, com sincronização. Experiência 3 Na experiência 3, o utilizador mantém a velocidade constante e igual à do agente durante uma fase inicial até ao instante t0 . A partir deste instante aumenta de velocidade. Nesta experiência e nas seguintes o mecanismo de sincronização estará sempre activado. O objectivo desta experiência é verificar se ocorre correcção de velocidade do agente e se essa correcção tem a direcção e duração necessária. Formaliza-se em baixo o protocolo experimental: • φimg (0...t0 )≈ K, • φimg (t0+1 ...t1 ) ≈ K + δK, sendo K uma constante que representa o valor do fluxo de imagem obtida através da câmara-de-vídeo, quando um utilizador (ideal) movimenta o braço em sincronia perfeita com o movimento correspondente do agente. Por sua vez, δK corresponde ao acréscimo do fluxo de imagem registado quando o utilizador aumenta a sua velocidade de movimento. A figura 5.6 contém os gráficos com os resultados obtidos nesta experiência.

CAPÍTULO 5. VALIDAÇÃO EXPERIMENTAL

0.006

Fluxo S(Imagem)

0.000

0.002

0.002

0.004

0.006 0.004

Fluxo(Imagem)

0.008

0.008

0.010

0.010

74

0

100

200

300

400

500

600

0

100

200

400

500

600

400

500

600

400

500

600

6 5 4 3 1

2

Média do Fluxo(Agente)

5 4 3

Fluxo(Agente)

2

0

1 0 0

100

200

300

400

500

600

0

100

200

t

300

1.0

0.004

Eta

0.005

1.5

0.006

0.007

2.0

t

0.0

0.001

0.002

0.5

0.003

Média do Fluxo S(Imagem)

300 t

6

t

0

100

200

300 t

400

500

600

0

100

200

300 t

Figura 5.6: Resultados obtidos na experiência 3, com sincronização.

Como se esperava, os resultados revelam que o fluxo de imagem aumenta significativamente no instante t0 ≈ 300. Isto pode verificar-se, facilmente, pelos gráficos do fluxo de imagem e fluxo de imagem suavizado. Durante as duas partes desta experiência (com velocidade menor e maior) o fluxo de imagem oscila, contudo as variações são de ordem de grandeza inferior à variação que o utilizador impõe em t0 . Verifica-se que o fluxo do agente (e consequentemente a sua velocidade) respeita o regime imposto pelo utilizador, sofrendo um aumento significativo nos instantes em que o fluxo de imagem está a aumentar.

5.2. REGISTO E DISCUSSÃO DOS RESULTADOS EXPERIMENTAIS

75

Quando o utilizador estabiliza a sua velocidade num valor superior ao inicial, a velocidade do agente também estabiliza apesar de continuar a apresentar pequenas oscilações. No entanto, as oscilações do fluxo do agente são inferiores à diferença imposta pela correcção de velocidade. No que diz respeito ao valor do factor de correcção η, verifica-se que este oscila em torno de 1. Isto deve-se, principalmente, ao “ruído” associado ao fluxo de imagem e em menor escala, às oscilações do fluxo do agente. Para além disto, nos instantes em que o utilizador está a aumentar de velocidade, período em torno de t0 , o valor η mantém-se continuamente acima de 1 + β, com β = 0.1. Isto acontece, porque nesse período a velocidade do agente está a ser corrigida, neste caso está a aumentar. A partir do momento que a velocidade do utilizador atinge o novo patamar e estabiliza, o valor de η volta a oscilar em torno de 1. Como estamos a utilizar a heurística que faz modificações constantes à velocidade não se pode garantir que o agente o utilizador se encontrem em fase. Experiência 4 Na experiência 4 pretende-se avaliar o comportamento do agente num cenário em que inicialmente o utilizador parte com uma velocidade elevada mas que num instante t0 é reduzida abruptamente (trata-se de uma espécie de experiência inversa da experiência 3). O instante de redução de velocidade é t0 ≈ 300. Formaliza-se em baixo o protocolo experimental: • φimg (0...t0 ) ≈ K, • φimg (t0+1 ...t1 ) ≈ K − δK, sendo K uma constante que representa o valor do fluxo de imagem obtida através da câmara-de-vídeo, quando um utilizador (ideal) movimenta o braço em sincronia perfeita com o movimento correspondente do agente. Por sua vez, δK corresponde à diminuição do fluxo de imagem registado quando o utilizador diminui a sua velocidade de movimento. A figura 5.7 mostra os resultados obtidos nesta experiência. Tal como acontece na experiência 3 o valor do factor de correcção η oscila em torno de 1. Nos instantes em que o utilizador está a diminuir a sua velocidade, período em torno de t0 , o valor de η mantém-se continuamente abaixo de 1 − β, com β = 0.1. Isto acontece, porque nesse período a velocidade do agente está a ser corrigida, neste caso está a diminuir. Mais uma vez a correcção é instantânea. Observa-se ainda que quando o agente corrige a sua velocidade o valor de η passa novamente a oscilar ligeiramente em torno de 1.

CAPÍTULO 5. VALIDAÇÃO EXPERIMENTAL

0.006 0.002

0.004

Fluxo S(Imagem)

0.006 0.004

0.000

0.000

0.002

Fluxo(Imagem)

0.008

0.010

0.008

76

0

100

200

300

400

500

600

0

100

200

400

500

600

400

500

600

400

500

600

6 5 4 3 0

1

2

Média do Fluxo(Agente)

5 4 3

Fluxo(Agente)

2 1 0 0

100

200

300

400

500

600

0

100

200

300 t

1.0 0.0

0.000

0.002

0.5

0.004

Eta

0.006

1.5

0.008

2.0

0.010

t

Média do Fluxo S(Imagem)

300 t

6

t

0

100

200

300 t

400

500

600

0

100

200

300 t

Figura 5.7: Resultados obtidos na experiência 4, com sincronização.

Experiência 5 Na experiência 5 repete-se duas vezes o protocolo da experiência 3 mas com duas variantes. Na primeira variante, experiência 5-A, o utilizador mantém a velocidade constante e igual à do agente durante uma fase inicial até ao instante t0 ≈ 300 e aumenta de velocidade a partir desse instante. Na segunda variante, experiência 5-B, o utilizador mantém a velocidade constante e igual à do agente durante uma fase inicial até ao instante t0 ≈ 300. Aumenta de velocidade a partir desse instante para um valor bastante superior ao que executou na experiência 5-A. O objectivo desta experiência

5.2. REGISTO E DISCUSSÃO DOS RESULTADOS EXPERIMENTAIS

77

é verificar se o aumento do fluxo do agente a partir do instante t0 para a experiência 5-B é proporcional ao que é apresentado na experiência 5-A. Formaliza-se em baixo o protocolo experimental: • Experiência 5-A – φimg (0...t0 )≈ K, – φimg (t0+1 ...t1 ) ≈ K + K 0 , • Experiência 5-B – φimg (0...t0 )≈ K, – φimg (t0+1 ...t1 ) ≈ K + K 00 , sendo K uma constante que representa o valor do fluxo de imagem obtida através da câmara-de-vídeo, quando um utilizador (ideal) movimenta o braço em sincronia perfeita com o movimento correspondente do agente. Por sua vez, K 0 e K 00 correspondem ao acréscimo do fluxo de imagem registado quando o utilizador aumenta a sua velocidade de movimento. Toma-se K 00 >> K 0 , isto é K 00 muito maior que K 0 . A figura 5.8 contém os gráficos com os resultados obtidos para esta experiência quando o mecanismo de sincronização está activado. Como se esperava, para as duas variantes da experiência, os resultados revelam que o fluxo de imagem aumenta significativamente no instante t0 ≈ 300. Isto pode verificar-se, facilmente, pelos gráficos do fluxo de imagem suavizado. Verifica-se que o fluxo do agente (e consequentemente a sua velocidade) respeita o regime imposto pelo utilizador, sofrendo um aumento significativo nos instantes em que o fluxo de imagem está a aumentar. Quando o utilizador estabiliza a sua velocidade num valor superior ao inicial, a velocidade do agente também estabiliza. Apesar de continuar a realizar pequenas oscilações, estas são inferiores à diferença imposta pela correcção de velocidade. No que diz respeito ao valor do factor de correcção η, verifica-se que este oscila em torno de 1. Tal como se verificou para a experincia 3, isto deve-se em grande parte ao “ruído” associado ao fluxo de imagem e às oscilações do fluxo agente. Para além disto, nos instantes em que o utilizador está a aumentar de velocidade, período em torno de t0 , o valor η mantém-se continuamente acima de 1. Isto acontece porque nesse período a velocidade do agente está a ser corrigida no sentido de aumentar. Constata-se ainda que, para as duas variantes da experiência, as variações no fluxo do agente ocorrem na mesma direcção e são proporcionais às variações do fluxo de imagem. Só não é possível verificar se o aumento que é imposto ao fluxo do agente está em correspondência directa com o fluxo de imagem, isto é, que o agente e utilizador fiquem a movimentar-se à mesma velocidade e mesma fase.

0.006 0.004

Fluxo S(Imagem)

0.000

0.002

0.004 0.000

0.002

Fluxo S(Imagem)

0.006

0.008

CAPÍTULO 5. VALIDAÇÃO EXPERIMENTAL

0.008

78

0

100

200

300

400

500

600

0

100

200

400

500

600

400

500

600

400

500

600

6 5 0

1

2

3

Fluxo(Agente)

4

5 4 3

Fluxo(Agente)

2 1 0 0

100

200

300

400

500

600

0

100

200

300

1.5 1.0 0.5 0.0

0.0

0.5

1.0

Eta

1.5

2.0

t

2.0

t

Eta

300 t

6

t

0

100

200

300 t

400

500

600

0

100

200

300 t

Figura 5.8: Resultados obtidos na experiência 5-A (gráficos da coluna da esquerda) e 5-B (gráficos da coluna da direita), com sincronização.

Experiência 6 Na experiência 6 aumentou-se a complexidade do comportamento do utilizador passando a haver duas transições. Inicialmente, o utilizador acompanha o agente que apresenta velocidade aproximadamente constante. No instante t0 ≈ 300 a velocidade do utilizador é aumentada e reduzida posteriormente no instante t1 ≈ 600 para um valor inferior. Formaliza-se em baixo o protocolo experimental:

5.2. REGISTO E DISCUSSÃO DOS RESULTADOS EXPERIMENTAIS

79

• φimg (0...t0 ) ≈ K, • φimg (t0+1 ...t1 ) ≈ K + δK, • φimg (t1+1 ...t2 ) ≈ K, sendo K uma constante que representa o valor do fluxo de imagem obtida através da câmara-de-vídeo quando um utilizador (ideal) movimenta o braço em sincronia perfeita com o movimento correspondente do agente. Por sua vez, δK corresponde ao acréscimo do fluxo de imagem registado quando o utilizador aumenta a sua velocidade de movimento. A figura 5.9 contém as estatísticas para a experiência 6 com activação do mecanismo de sincronização. Como podemos observar o fluxo do agente para t < t0 é aproximadamente constante, o que está de acordo com facto do utilizador se encontrar a realizar um movimento com velocidade uniforme. Para valores de t, tais que t0 < t < t1 verifica-se um aumento do fluxo do agente em resposta ao aumento do fluxo de imagem. Tal como foi dito anteriormente, com esta heurística não se pode garantir que o agente converge para a fase do utilizador. Este facto pode resultar num desfazamento entre a posição do utilizador e o agente. De qualquer forma, a velocidade do utilizador neste intervalo é aproximadamente constante e o mesmo acontece com o agente. No instante t1 verifica-se que a velocidade do agente diminui, acompanhando a redução da velocidade do utilizador. Tal como se verificou no instante t0 , também aqui a resposta do agente à variação da velocidade do utilizador é instantânea. Ainda nesta experiência podemos verificar que de uma forma geral o valor de η é ≈ 1. Verifica-se que para os valores de t ≈ t0 e t ≈ t1 , η sofre uma ligeira alteração que corresponde à mudança de velocidade de execução do movimento por parte do utilizador. Como a mudança da velocidade do agente compensa a mudança de velocidade do utilizador, a alteração anteriormente referida na variável η não é muito evidente. Em várias repetições desta experiência constatou-se que se a velocidade de convergência do agente entre t0 e t1 for inferior à do utilizador, a tentativa de fazer o utilizador sincronizar-se com o agente no instante t1 produz uma redução adicional na velocidade do agente. Assim sendo, cria-se uma situação onde o utilizador é forçado a reduzir muito a velocidade. Por sua vez, como o agente responde à redução da velocidade do utilizador, gera-se um cenário indesejável onde o agente fica cada vez mais lento.

CAPÍTULO 5. VALIDAÇÃO EXPERIMENTAL

0.006

Fluxo S(Imagem)

0.000

0.002

0.002

0.004

0.006 0.004

Fluxo(Imagem)

0.008

0.008

0.010

0.010

80

0

200

400

600

800

0

200

400

800

600

800

600

800

6 5 4 3 0

1

2

Média do Fluxo(Agente)

5 4 3

Fluxo(Agente)

2 1 0 0

200

400

600

800

0

200

400 t

1.0 0.0

0.000

0.002

0.5

0.004

Eta

0.006

1.5

0.008

2.0

0.010

t

Média do Fluxo S(Imagem)

600 t

6

t

0

200

400

600 t

800

0

200

400 t

Figura 5.9: Resultados obtidos na experiência 6, com sincronização.

5.3

Resumo de resultados experimentais

Apresenta-se em baixo um resumo dos resultados experimentais descritos na secção anterior para a heurística 2: • Experiências 1 e 2 – Quando o mecanismo de sincronização entre o agente e utilizador não está activado, a velocidade do agente não sofre alterações. No desenho experimental usado, isto significa que o único elo do agente em movimento mantém

5.3. RESUMO DE RESULTADOS EXPERIMENTAIS

81

velocidade constante (excepto nos instantes de mudança de direcção). Isto verifica-se tanto no caso em que a câmara está obstruída como no caso em que está aberta e o utilizador movimenta-se (com velocidade constante). Verifica-se assim a correcção (integridade) elementar do sistema. – Quando a câmara está obstruída e é activado o mecanismo de sincronização, verifica-se que o comportamento do agente não sofre alterações significativas, pois mantém a velocidade aproximadamente constante durante todo o tempo de simulação. O valor absoluto da velocidade sofre um pequeno desvio em relação ao caso em que não está activada a sincronização, mas o desvio é mínimo (menos de 10%). Isto ocorre porque o efeito de correcção de velocidade está presente. η oscila em torno de 1. Esta oscilação é provocada, apenas, pelo facto da velocidade do agente influenciar η (o uso de treshold minimiza também a influência sobre o agente). – Quando a sincronização está activada, a câmara-de-vídeo aberta e o utilizador move-se com velocidade constante, verifica-se que não ocorrem alterações importantes na velocidade do agente. Isto acontece, porque apesar da variável η oscilar em torno de 1, as oscilações são pequenas. Além disso, o uso de treshold reduz a influência sobre o agente. Naturalmente, as oscilações de η decorrem das flutuações do fluxo de imagem. Isto acontece pelo facto do utilizador não conseguir manter, com rigor, uma velocidade constante, de ocorrerem variações do fundo da imagem e na iluminação (ruído). Assim verifica-se um comportamento de estabilidade do sistema. • Experiências 3 e 4 – Quando a sincronização está activada, a câmara aberta e o utilizador aumenta a velocidade de execução, verifica-se que o agente responde instantaneamente, aumentando também a sua velocidade. Quando o utilizador diminui a sua velocidade, verifica-se que o agente responde do mesmo modo. Verifica-se assim que o sistema apresenta correspondência de variação na sua resposta (variações na mesma direcção). Para além disto é possível constatar que a resposta do agente à variação da velocidade do utilizador é imediata, o que traduz a reactividade do sistema. Apesar disto, a heurística usada não garante que a fase do agente e do utilizador sejam as mesmas quando as velocidades voltam a ser constantes. • Experiência 5 – No mesmo tipo de cenário experimental, com sincronização activada e câmara aberta, verificou-se ainda que a resposta do agente ao aumento/variação da velocidade do utilizador depende e é proporcional ao aumento/variação da velocidade deste. O sistema apresenta assim a propriedade de proporcionalidade de variação.

82

CAPÍTULO 5. VALIDAÇÃO EXPERIMENTAL • Experiência 6 – Por outro lado, verificou-se que não é possível garantir que a velocidade de convergência do agente e do utilizador seja a mesma. Assim, apesar do sistema apresentar as propriedades de correspondência e proporcionalidade, não é garantido que a resposta seja a correcta. Como trabalho futuro poder-se-à tentar refinar a heurística para se ter convergência do agente para a mesma velocidade do utilizador, como passo preliminar para garantir a convergência de fase.

Capítulo 6 Conclusão Nesta tese apresentou-se uma solução de controlo para agentes reactivos ao contexto aplicados ao domínio da ginástica do trabalho. Para isto utilizou-se um agente com modelação e realização visual em grafismos 3D que exibe sequências de movimentos estruturados (exercícios) no espaço. Assume-se que o utilizador tenta imitar o agente. Como o uso de um agente pode apresentar dificuldades de interacção utilizador/máquina (porque o utilizador e a máquina movimentam-se com velocidades diferentes ou porque iniciam os movimentos individuais em instantes de tempo diferentes), recorreu-se a uma câmara-de-vídeo para dar feedback ao agente do comportamento do utilizador. Concretamente, o agente poderá aumentar ou reduzir a sua velocidade de movimento, em relação ao valor normal, para acompanhar o utilizador ou ajudá-lo a sincronizar-se em fase e velocidade com o agente. Em termos de realização algorítmica recorreu-se a técnicas elementares de visão computacional para medir o fluxo de imagem proveniente da câmara-de-vídeo, comparando a variação deste com a variação do fluxo de animação do agente. Concretamente, foram propostas heurísticas simples de correcção de velocidade do agente, que não requerem a resolução completa do problema de Motion-Capture, isto é a inferência da configuração exacta dos ângulos entre os membros do corpo do utilizador. Atráves de estudos experimentais, avaliaram-se as propriedades de uma dessas heurísticas que se resumem em baixo: • Integridade — na ausência de sincronização, o comportamento do agente não é alterado; • Estabilidade — a resposta do agente ao movimento do utilizador não cria um comportamento inesperado no primeiro; • Reactividade — a resposta do agente às variações de velocidade do utilizador não apresenta uma latência significativa; • Correspondência — a resposta do agente tem a mesma direcção que a do utilizador, isto é o agente aumenta ou reduz a sua velocidade de acordo com o 83

84

CAPÍTULO 6. CONCLUSÃO aumento ou redução da velocidade do utilizador; • Proporcionalidade — quanto maior for a variação da velocidade do utilizador, tanto maior será a variação da velocidade do agente.

Contudo, verificou-se que a heurística proposta não garante que a velocidade e a fases do agente e do utilizador convirjam para o mesmo valor. Além disso, não é particularmente fácil para o utilizador sincronizar-se com o agente. No conjunto, estes resultados mostram que a resolução do problema de criação de agentes reactivos ao contexto, no caso geral, requerem a utilização de técnicas de Motion-Capture mais elaboradas. Concretamente, em vez de calcular um único termo de correcção de velocidade baseada numa única estatística escalar da imagem, o fluxo de imagem, será necessário aplicar algoritmia que leve em conta a heterogeneidade do fluxo de imagen e do campo visual. Por outro lado, a utilização de heurísticas simples de Motion-Capture pode ser suficiente para aplicações mais simples (por exemplo, detectores de presença para agentes de desktop ou vídeo-jogos com um pequeno número de graus-de-liberdade.)

6.1

Resumo de contribuições

O protótipo desenvolvido nesta tese foi projectado de forma a poder ser facilmente estendido e utilizado em novos contextos. Ainda que este perspectivasse um acto de investigação e validação de um conceito, uma versão de utilizador poderá ser desenvolvida visto que, grande parte do trabalho já se encontra realizado. Por outro lado, poderá ser um ponto de partida para um trabalho de investigação na área da visão computacional com vista à criação de agentes reactivos ao contexto baseados em outros mecanismos de sincronização. A construção de um motor 3D simples, seguindo a filosofia de programação orientada a objectos é outro aspecto positivo a salientar nesta tese. Isto porque se for necessário modelar o mesmo protótipo numa linguagem de programação de maior potencial computacional como C++, poder-se-à migrar toda a estrutura de objectos implementada neste protótipo. Para além de ser um importante objecto de estudo no âmbito da computação gráfica, pode ser melhorado por forma a integrar outro tipo de particularidades. Como exemplo, a incorporação de agentes 3D criados em ferramentas de animação como o Blender, a disponibilização de diferentes agentes ao utilizador, a integração de efeitos de iluminação, cenários mais realistas e suporte a colisões. A utilização de algumas potencialidades da biblioteca gráfica OpenGL perspectivava a possibilidade de inclusão das particularidades anteriores num trabalho futuro. Outro aspecto positivo tem a ver com o mecanismo de armazenamento de dados. Existem diversos formatos que são amplamente utilizados para esse efeito. Contudo, normalmente são utilizados para representar uma situação específica, o que dificulta a

6.2. TRABALHO FUTURO

85

sua reutilização. A utilização de arquivos padrão XML mostrou-se bastante adequado para a representação de agentes humanóides em cenas virtuais. Para além disto permite que o layout interno do arquivo seja estendido de forma a ser utilizado, por exemplo, para a criação de uma base de dados com exercícios de Tai-Chi ou de ginástica do trabalho obtidos através de mecanismos de Motion-Capture.

6.2

Trabalho futuro

Com o propósito de superar as dificuldades apresentadas na solução desenvolvida, pretende-se futuramente investir neste sistema por forma a incorporar novas funcionalidades. Em particular, será interessante explorar uma solução em que se compara a distribuição espacial do fluxo de imagem obtido pela câmara-de-vídeo, com o fluxo de imagem gerada por uma câmara virtual apontada ao agente. Quando se assume que a posição relativa da câmara-de-vídeo em relação ao utilizador e a posição da câmara-virtual em relação ao agente é aproximadamente a mesma, poderá ser possível, com uma operação de calibração, criar uma correspondência directa entre as duas distribuições de fluxo. Mantendo um histórico recente destas distribuições de fluxo, poder-se-ia verificar se o agente se encontra atrasado/adiantado ou em fase em relação ao utilizador. Esta solução, a ser praticável, continuará a ser mais simples que a solução geral de Motion-Capture, tendo a vantagem adicional do menor custo computacional. Em alternativa, poder-se-à explorar a incorporação de algoritmia de Motion-Capture no sistema, capaz de inferir com precisão aceitável a configuração instantânea e em tempo-real do utilizador.

Apêndice A Modelo do agente implementado O corpo articulado e organização hierárquica da figura A.1 representa o modelo do humanóide implementado nesta tese. Este modelo apresenta 4 membros, um total de 21 elos e baseia-se no que foi proposto em [46]. Para facilitar a implementação do modelo realizam-se algumas simplificações, nomeadamente, a bacia é definida com dois elos, a coluna vertebral com 3 elos.

Raíz

(1)

17 16

18

Bacia

11 13

19 10

20 2

(9)

Coluna I

(10)

Coxa - E

(3)

Coxa - D

(4)

Coluna II

Perna - E

(5)

Perna - D

(6)

Coluna III

Pé - E

(7)

Pé - D

(8)

(12)

Pescoço

(16)

Ombro - D

(13)

Cabeça

(17)

Braço - D

(11)

14

9 1

(2)

12

2

21

15 4

Ombro - E

3

Braço - E 6

(219)

5

(18)

(14)

Ante-braço - E 8

(18)

7

Mão - E

(15)

(20)

Ante-braço - D

Mão - D

(21)

Figura A.1: Estrutura articulada e organização hierárquica do agente computacional implementado no protótipo.

86

Apêndice B Definições matemáticas Álgebra matricial e matrizes para computação gráfica Em baixo apresentam-se as matrizes de rotação implementadas durante a modelação do protótipo desta tese. Em [25] é possível obter mais informações sobre álgebra matricial e aplicações em computação gráfica 3D. • Matrizes de rotação para um grau-de-liberdade    LRx (θx ) =      LRy (θy ) =  

1 0 0 rx

0 sen θx cos θx rz

0 0 0 1



− sen θy 0 cos θy rz

0 0 0 1



0 0 0 1



0 cos θx − sen θx ry

cos θy 0 sen θy rx

0 1 0 ry



cos θz   − sen θz LRz (θz ) =   0 rx

sen θz cos θz 0 ry

0 0 1 rz

   

   

   

• Matrizes de rotação para dois graus-de-liberdade 

cy   sx sy LRxy (θx , θy ) =   cx s y rx  cz   −cx sz LRxz (θx , θz ) =   sx sz rx  cy cz   −sz LRyz (θy , θz ) =   s y cz rx

0 cx −sx ry

−sy sx cy cx cy rz

sz cx cz −sx cz ry cy sz cz sy sz ry

0 0 0 1

0 sx cx rz

−sy 0 cy rz

0 0 0 1

      0  0   0  1    , 

87

88

APÊNDICE B. DEFINIÇÕES MATEMÁTICAS onde cx = cos (θx ), sx = sen (θx ), etc.

• Matrizes de rotação para três graus-de-liberdade 

 cy cz cy s z −sy 0    s s c − cx sz sx sy sz + cx cz sx cy 0  LRxyz (θx , θy , θz ) =  x y z   cx s y cz + s x s z cx s y s z − s x cz cx cy 0  rx ry rz 1  cy cz sz −sy cz  cx cz cx sy sz + sx cy  −cx cy sz + sx sy LRxzy (θx , θy , θz ) =   sx cy sz + cx sy −sx cz −sx sy sz + cx cy rx ry rz  −sx sy sz + cy cz sx sy cz + cy sz −cx sy  −cx sz cx cz sx  LRyxz (θx , θy , θz ) =   sx cy sz + sy cz −sx cy cz + sy sz cx cy rx ry rz   cy cz cx cy sz + sx sy sx cy sz − cx sy 0   cx cz s x cz 0   −sz LRyzx (θx , θy , θz ) =    sy cz cx sy sz − sx cy sx sy sz + cx cy 0  rx    LRzxy (θx , θy , θz ) =      LRzyx (θx , θy , θz ) =  

ry

sx sy sz + cy cz s x s y cz − cy s z cx s y rx cy cz −cy sz sy rx

cx s z cx cz −sx ry

rz

1

sx cy sz − sy cz sx cy cz − sy cz cx cy rz

0 0 0 1

sx sy cz + cx sz −sx sy sz + cx cz −sx cy ry

onde cx = cos (θx ), sx = sen (θx ), etc.

0 0 0 1



0 0 0 1



0 0 0 1



   

   

    

−cx sy cz + sx sz cx s y s z + s x cz cx cy rz

   

Apêndice C Formato de importação/exportação de dados Em baixo apresenta-se o formato de importação e exportação de actos previamente seleccionados pelo utilizador. Neste caso apresenta-se apenas um acto designado por “Exercício matinal” com um movimento M1 que é constituído por duas configurações designadas C1 e C2 . Como a estrutura em XML repete-se, exclui-se do apêndice a configuração C2 . A componente (x,y,z) e o respectivo valor de junta só é apresentado para o primeiro elo da configuração C1 . Como na validação do mecanismo de sincronização o agente descreve um movimento uniformemente acelarado, em cada uma das suas juntas, no formato XML não se apresenta qualquer atributo temporal. <mov i d=" 1 " nome=" M 1 "> < e l o i d=" r a i z "> 0 0 0 (...) < e l o i d=" P e r n a e s q u e r d a "> < e l o i d=" P e e s q u e r d o ">

89

Apêndice D Estrutura de objectos e métodos principais De seguida apresenta-se a estrutura de objectos implementada durante o desenvolvimento do protótipo desta tese. Para cada um dos objectos refere-se os métodos principais e em modo de comentário uma breve descrição dos mesmos. Nas situações em que se achou pertinente acrescenta-se ao método um pseudocódigo. – Classes para modelação de agentes class Matriz : def __init__ ( s e l f , m a t r i z ) s e l f . setMatriz ( matriz ) def i d e n t i d a d e ( s e l f ) :#m a t r i z i d e n t i d a d e def s e t M a t r i z ( s e l f , m a t r i z ) :#m a t r i z g e n é r i c a n e s t e caso 4∗4 def m u l t i p l i c a ( s e l f , matrizA ) :#m u l t i p l i c a ç ã o de m a t r i z e s def s o m a m a t r i z ( s e l f , matrizA ) :# soma de m a t r i z e s def t r a n s p o s t a ( s e l f ) :#a u x i l i a na m u l t i p l i c a ç ã o de m a t r i z e s def n o r m a l i z a V e c t o r ( s e l f ) :#dado um v e c t o r d e f i n e a sua norma def m u l t i p l i c a C o n s t a n t e ( s e l f , c o n s t a n t e ) :#c o n v e r t e uma m a t r i z num ponto

Dof=Enum( ’ R x ’ , ’ R y ’ , ’ R z ’ , ’ R x y ’ , ’ R x z ’ , ’ R y z ’ , ’ R x y z ’ , ’ R x z y ’ , ’ R y x z ’ , ’ R y x z ’ , ’ R y z x ’ , ’ R z x y ’ , ’ Rzyx ’ , ’ RTxyz ’ , ’ RTxzy ’ , ’ RTyxz ’ , ’ RTyxz ’ , ’ RTyzx ’ , ’ RTzxy ’ , ’ RTzyx ’) c l a s s Dof : def __init__ ( s e l f , tipo_de_dof ) : def s e t D o f ( s e l f , tipo_de_dof ) :#d e f i n e o t i p o de Dof da j u n t a − Enumerado def s e t X ( s e l f , r o t x ) :#r o t a ç ã o em torno do e i x o Ox def s e t Y ( s e l f , r o t y ) :#r o t a ç ã o em torno do e i x o Oy def s e t Z ( s e l f , r o t z ) :#r o t a ç ã o em torno do e i x o Oz def s e t T r a n s l a c c o e s ( s e l f , tx , ty , t z ) :#t r a n s l a ç ã o segundo o r e f e r e n c i a l x y z def d o f ( s e l f ) :#p r o c e s s a a m a t r i z de r o t a ç ã o a s s o c i a d a a cada t i p o def p r o c e s s a M a t r i z ( s e l f ) : #t r a n s f o r m a ç õ e s para um grau de l i b e r d a d e def rotX ( s e l f ) : def rotY ( s e l f ) : def r o t Z ( s e l f ) : #t r a n s f o r m a ç õ e s para d o i s graus de l i b e r d a d e def rotXY ( s e l f ) : def rotXZ ( s e l f ) : def rotYZ ( s e l f ) : #t r a n s f o r m a ç õ e s para t r ê s graus de l i b e r d a d e def rotXYZ ( s e l f ) : def rotXZY ( s e l f ) : def rotYXZ ( s e l f ) : def rotYZX ( s e l f ) : def rotZXY ( s e l f ) : def rotZYX ( s e l f ) :

c l a s s Junta : def __init__ ( s e l f , t i p o D o f ) : def g e t M a t r i z R ( s e l f ) : def processaMA ( s e l f , m a t r i z E l o P a i ) :

90

91 s e l f . matrizA . m u l t i p l i c a ( m a t r i z E l o P a i )#determina a m a t r i z a b s o l u t a do e l o a t r a v é s da m a t r i z r e l a t i v a e a m a t r i z a b s o l u t a do e l o p a i

c l a s s Elo : def __init__ ( ) : def p r o c e s s a E l o ( s e l f ) :#determina as m a t r i z e s a b s o l u t a e r e l a t i v a do e l o def p r o c e s s a E l o s F i l h o ( s e l f ) : #p r o c e s s a as m a t r i z e s a b s o l u t a e r e l a t i v a de um l i s t a de e l o s s e l f . processaElo () f o r i i n r a n g e ( 0 , comp ) : s e l f . lista_filhos [ i ] . processaElosFilho ()

– Classe para visualização de agentes c l a s s GlWidget ( QtOpenGL . QGLWidget ) : def __init__ ( s e l f , p a r e n t=None ) : QtOpenGL . QGLWidget . __init__ ( s e l f , p a r e n t ) s e l f . e R a i z=e l o . e l o ( [ 0 , 0 , 0 ] , None , d o f . t i p o D o f . Rxyz , 0 , " r a i z " ) s e l f . e 2=e l o . e l o ( [ 0 , − 1 , 0 ] , s e l f . e R a i z , d o f . t i p o D o f . Rxyz , 1 , " C o l u n a i n f e r i o r ") s e l f . e 3=e l o . e l o ( [ 0 , − 1 , 0 ] , s e l f . e2 , d o f . t i p o D o f . Rxyz , 1 , " C o l u n a s u p e r i o r " ) #m o d i f i c a o ângulo segundo os e i x o s Ox, Oy e Oz para o movimento de câmara def setXRota ( s e l f , a n g l e ) : def setYRota ( s e l f , a n g l e ) : def s e t Z R o t a ( s e l f , a n g l e ) : #m o d i f i c a o ângulo segundo os e i x o s Ox, Oy e Oz para cada um dos e l o s def s e t E l o X R o t a ( s e l f , a n g u l o ) : def s e t E l o Y R o t a ( s e l f , a n g u l o ) : def s e t E l o Z R o t a ( s e l f , a n g u l o ) : def d e s O b j e c t ( s e l f ) :#desenha o a g e n t e def desFundo ( s e l f ) :#desenha o chão da simulação def eloToGL ( s e l f , v a r _ e l o ) :#desenha o o b j e c t o g r á f i c o que r e p r e s e n t a um e l o i f ( v a r _ e l o . l i s t a _ f i l h o s !=None ) : for i in range ( 0 , l e n ( var_elo . l i s t a _ f i l h o s ) ) : s e l f . bonesToGL ( v a r _ e l o . l i s t a _ f i l h o s [ i ] ) def d e s E s f e r a ( s e l f ) :

– Classes para animação de agentes class

Configuracao : def __init__ ( s e l f , eloR , n o m e c o n f i g ) : s e l f . e l o R a i z=e l o R def g e t C o n f i g u r a c o e s ( s e l f , e l o ) :#r e c e b e aos v a l o r e s das j u n t a s de t o d o s os e l o s para uma c o n f i g u r a ç ã o f o r i i n r a n g e ( 0 , comp ) : s e l f . getConfiguracoes ( elo . l i s t a _ f i l h o s [ i ] ) def s a v e C o n f i g ( s e l f , nome ) :#s a l v a em memória a c o n f i g u r a ç ã o s e l e c i o n a d a do GUI def d e l e t e C o n f ( s e l f , i n d i c e ) :#apaga em memória a c o n f i g u r a ç ã o s e l e c i o n a d a do GUI def r e a j u s t a L i s t a ( s e l f ) :#r e a j u s t a os id ‘ s a t r i b u i d o s a cada c o n f i g u r a ç ã o c o n s t a n t e no GUI

c l a s s Movimentacao : def __init__ ( s e l f ) : pass def g e t C o n f ( s e l f ) :#r e c e b e as c o n f i g u r a ç õ e s do movimento def saveMov ( s e l f , nome , idA , idB ) :#s a l v a em memória a c o n f i g u r a ç ã o s e l e c i o n a d a do GUI def d e l e t e M o v ( s e l f , i n d i c e ) :#apaga em memória a c o n f i g u r a ç ã o s e l e c i o n a d a do GUI def r e a j u s t a L i s t a ( s e l f ) :#r e a j u s t a os id ‘ s a t r i b u i d o s a cada movimento c o n s t a n t e no GUI

c l a s s Acto : def __init__ ( s e l f ) : act_movlist =[] def getMov ( s e l f ) :#r e c e b e o i d do movimento a a d i c i o n a r ao a c t o def s a v e Act ( s e l f , i n d i c e ) :#s a l v a em memória o a c t o s e l e c i o n a d o do GUI − correponde a uma l i s t a de c o n f i g u r a ç õ e s def d e l e t e A c t ( s e l f , i n d i c e ) :#apaga em memória o a c t o s e l e c i o n a d o do GUI def r e a j u s t a L i s t a ( s e l f ) :#r e a j u s t a os id ‘ s a t r i b u i d o s a cada a c t o c o n s t a n t e no GUI

c l a s s Play : def p l a y A c t o ( s e l f , a c t o I d ) :##recupera os p a r e s de c o n f i g u r a ç õ e s de cada movimento que c o n s t e do p r e s e n t e a c t o f o r i i n r a n g e ( 0 , compMov ) : l i s t C o n f . append ( c o n f 1 ) l i s t C o n f . append ( c o n f 2 ) return l i s t C o n f def i n s t a l l ( s e l f ) :##d e f i n e a origem do a c t o que v a i s e r e x e c u t a d o − que s e encontra em memória RAM ou guardado no f i c h e i r o XML def g e t A l l ( s e l f ) :##para uma l i s t a de a c t o s recupera t o d o s os p a r e s de c o n f i g u r a ç õ e s de cada movimento

92

APÊNDICE D. ESTRUTURA DE OBJECTOS E MÉTODOS PRINCIPAIS

c l a s s Animacao : def __init__ ( s e l f , t i m e =1) : def s e t C o n f s ( s e l f , c o n f 1 , c o n f 2 ) :#r e c e b e duas c o n f i g u r a ç õ e s Co e C1 de um movimento def s e t E l o R a i z ( s e l f , e l o ) : def g e t I n d i c e C o n f E l o ( s e l f , nomeElo ) : f o r i i n r a n g e ( 0 , comp ) : i f ( nomeElo==s e l f . c o n f i g u r a 1 [ i ] [ 0 ] ) : return i def i t e r a P a s s o E l o ( s e l f , elo ) : f o r i i n r a n g e ( 0 , compF ) : s e l f . iteraPassoElo ( elo . lista_filhos [ i ] ) def i t e r a P a s s o ( s e l f ) : #e x e c u t a a r e c u r s i v i d a d e que c a l c u l a as c o n f i g u r a c o e s intermédias i f ( s e l f . t <1) :#t=0−−>C0, T=1−−>C1 s e l f . iteraPassoElo ( s e l f . eloRaiz ) return F a l s e def i t e r a ( s e l f ) : s e l f . i d C o n f= s e l f . i d C o n f+1 i f ( s e l f . i d C o n f>=l e n ( s e l f . l p l a y . l i s t P l a y ) −1) :#s t o p a animacao no f i n a l de p e r c o r r e r a l i s t a de a c o n f i g r a ç õ e s de um a c t o pass e l s e :#animação chegou a C1, s e e x i x t i r e m mais c o n f i g u r a ç õ e s na l i s t a a animação continua s e l f . setConfs ( s e l f . l p l a y . l i s t P l a y [ s e l f . idConf ] [ 1 ] , s e l f . l p l a y . l i s t P l a y [ s e l f . idConf + 1 ] [ 1 ] ) s e l f . iteraPasso ()

– Classes para captura de imagens e cálculo de fluxos c l a s s ImgCam ( Thread ) : def __init__ ( s e l f ) : Thread . __init__ ( s e l f ) s e l f . camara=h i g h g u i . c vCr ea teC am era Ca ptu re ( 0 )# s e l f . i m g I p l=h i g h g u i . cvQueryFrame ( s e l f . camara ) def capImg ( s e l f ) : s e l f . i m g I p l=h i g h g u i . cvQueryFrame ( s e l f . camara ) s e l f . i m g P i l=a d a p t o r s . I p l 2 P I L ( s e l f . i m g I p l )#c o n v e r t e uma imagem do t i p o I p l (OpenCV) numa imagem P i l ( Python Image Lybrary ) s e l f . i m g P i l= l i s t ( s e l f . i m g P i l . g e t d a t a ( ) )

c l a s s FluxoCam : def __init__ ( s e l f , imga , imgb ) : #i n i c i l i z a com duas imagens c o n s e c u t i v a s def a c t u a l i z a ( s e l f , imgb ) :#a c t u a l i z a a ú l t i m a imagem para que s e j a c a l c u l a d o o f l u x o e n t r e duas imagens f l o w = s e l f . computaFluxo ( ) s e l f . l f l o w . append ( f l o w )# a d i c i o n a o f l u x o e n t r e duas imagens a uma lista def computaFluxo ( s e l f ) :# computa o f l u x o e n t r e imagens como a d i f e r e n ç a e n t r e pixeis s i z e=l e n ( s e l f . imagem ) for i in range ( 0 , s i z e ) : return f l o w

c l a s s FluxoAgente : def __init__ ( s e l f , c0 , c 1 ) : #i n i c i l i z a com duas c o n f i g u r a ç õ e s def a c t u a l i z a ( s e l f ) : f l o w = s e l f . computaFluxo ( ) s e l f . l f l o w . append ( f l o w ) def computaFluxo ( s e l f ) : s i z e=l e n ( s e l f . f r a m e ) for i in range ( 0 , s i z e ) : return f l o w

– Classe para sincronização agente/utilizador class

Sincronizacao : def__init__ ( s e l f ) : def s i n c A g ( s e l f ) : s e l f . MphiAg . append ( sum ( phiAgAux ) / l e n ( phiAgAux ) )#l i s t a de v a l o r e s − média do f l u x o do a g e n t e para uma j a n e l a W0 s e l f . EphiAg . append ( sum ( phiAgAux1 ) / l e n ( phiAgAux1 ) )#l i s t a de v a l o r e s − média do f l u x o do a g e n t e para uma j a n e l a W1 s e l f . MphiImgS . append ( sum ( phiImgSAux ) / l e n ( phiImgSAux ) )#l i s t a de v a l o r e s − média do f l u x o de imagem s u a v i z a d o para uma j a n e l a W0 s e l f . EphiImgS . append ( sum ( phiImgSAux1 ) / l e n ( phiImgSAux1 ) )#l i s t a de v a l o r e s − média do f l u x o de imagem s u a v i z a d o para uma j a n e l a W1 s e l f . e t a . append ( s e l f . e t a L a s t )#l i s t a de v a l o r e s − e t a

– Classes para representação de séries temporais

93

class

P l o t ( QtGui . QWidget ) : def __init__ ( s e l f , p a r e n t=None , dimx =250 , dimy =200) : QtGui . QWidget . __init__ ( s e l f , p a r e n t ) def d e s ( s e l f ) :#desenha as s é r i e s temporais def d e s E i x o ( s e l f , p a i n t e r ) :#desenha os e i x o s x , y def desDado ( s e l f , p a i n t e r ) :#r e p r e s e n t a g r a f i c a m e n t e uma l i s t a f o r i i n r a n g e ( i 0 , comp ) : p a i n t e r . drawLine ( x i , y i , x f , y f )

de v a l o r e s

– Classes para importação e exportação de dados c l a s s XMLParse : def __init__ ( s e l f , s t r F i c h e i r o ) : def v e r i f i c a F i c h e i r o ( s e l f , s t r F i c h e i r o ) :# v e r i f i c a s e o f i c h e i r o j á e x i s t e , s e não f o r verdade c r i a um novo f i c h e i r o def leXml ( s e l f ) :# l ê o f i c h e i r o def a p a g a T o d o s E l o s ( s e l f ) :#apaga c o n f i g u r a ç õ e s de um a c t o def apagaTodasConf ( s e l f ) :# apaga c o n f i g u r a ç õ e s de um a c t o def apagaTodosMov ( s e l f ) :# apaga movimentos de um a c t o def apagaTodos Actos ( s e l f ) :#apaga a c t o s def i n s e r e E l o ( s e l f , i d C o n f , i d E l o , rotX , rotY , r o t Z ) :#a d i c i o n a os e l o s de cada configuração def i n s e r e C o n f ( s e l f , idMov , i d C o n f , nomeConf ) :#a d i c i o n a as c o n f i g u r a ç õ e s de um movimento def i n s e r e M o v ( s e l f , i d A c t o , idMov , nomeMov ) :#a d i c i o n a os movimentos de um a c t o def i n s e r e A c t o ( s e l f , i d A c t o , nomeActo ) : #a d i c i o n a v á r i o s a c t o s def gravaXML ( s e l f ) : def importXML ( s e l f ) : c a r r e g a p a r a a memória uma l i s t a de a c t o s com o s r e s p e c t i v o s movimentos e c o n f i g u r a ç õ e s

Referências [1] A. T. Marques e A. Gaya: Atividade física, aptidão física e educação para a saúde: Estudos na área pedagógica em Portugal e no Brasil. Revista Paulista de Educação Física, 1999. [2] R. V. Silva e A. V. Silva: Educação, aprendizagem e tecnologia - Um paradigma para professores do Século XXI. Edições Sílabo, 2005. [3] Bárbara R. Alvarez: Estilo de vida e hábitos de lazer de trabalhadores, Após 2 anos de aplicação de programa de Ginástica Laboral e Saúde -caso Intelbras. Tese de Doutoramento, Universidade Federal de Santa Catarina - Brasil, 2002. [4] Blender.org: Blender. www.blender.org, visto em 2008/06/20. [5] R. Boulic: General purpose hierarchy. User Reference Manual, 1994. [6] S.R. Buss: 3D Computer Graphics: A mathematical introduction with OpenGL. Cambridge University Press, 2003. [7] R. Caelers and R. Penners: Workrave. welcome/, visto em 2007/06/30.

http://www.workrave.org/

[8] Comissão das Comunidades Europeias: Memorando sobre Aprendizagem ao Longo da Vida. http://www.debatereducacao.pt/index.php? option=com_docman&task=doc_download&gid=62&Itemid=10, visto em 2008/06/20. [9] Confef: Ginástica Laboral. http://www.confef.org.br/RevistasWeb/ n13/02_GINASTICA_LABORA.pdf, visto em 2008/05/30. [10] Direcção geral de Inovação e Desenvolvimento Curricular: Currículo nacional do Ensino Básico - Competências essenciais- Educação Física. www.dgidc.min-edu.pt/fichdown/livrocompetencias/ EducacaoFisica.pdf, visto em 2008/05/30. [11] N. Fujii: Modelagem de Objetos de Aprendizagem de Estatística. http: //paje.fe.usp.br/estrutura/eventos/ebrapem/completos/150.doc, visto em 2008/02/20. [12] I. Garcia and J. Garcia: Implementing virtual practices using an alternative methodology to develop educational software. IEEE, pages 31–32, 2007. [13] J. Gonzalez, I. Lim, P. Fua, and D. Thalmann: Robust tracking and segmentation of human motion in an image sequence. Hong Kong, 2003. 94

REFERÊNCIAS

95

[14] Timothy Griffin: Repetitive strain injury in computer keyboard users: pathomechanics and treatment principles in individual and group intervention. Industrial Design, University of Calgary, (11):123–129, 2001. [15] Smart PC Solutions Inc: Off4fit. http://www.smartpctools.com/ exercise_advice/index1.html, visto em 2008/06/20. [16] Intel: Manual de opencv online,. http://isa.umh.es/pfc/rmvision/ opencvdocs/, visto em 2008/03/25. [17] D. P. Guedes e J. E. R. P. Guedes: Exercício físico na promoção da saúde. Londrina: Midiograf, 1995. [18] P. Morais e J. N. Pires: Python - Curso Completo. Informática LDA, 2002.

FCA, Editora de

[19] E. M. Maia e J.E.B. Lacerda: Educação, informática e professores. Fortaleza, CE: Edições Demócrito Rocha, 2002. [20] I. Kakadiaris e D. Metaxas: 3D Human Body Model Acquisition From Multiple Views. Boston, USA. [21] I. Kakadiaris and D. Metaxas: Model-based estimation of 3d human motion with occlusion based on multi-viewpoint selection. San Francisco, USA, 1996. [22] K. Keller, J. Corbett, and D. Nichols: Repetitive strain injury in computer keyboard users: pathomechanics and treatment principles in individual and group intervention. PubMed, (11):9–26, 1998. [23] L. D. Lehmkuhl e L. K. Smith: Cinesiologia Clínica de Brunnstrom. 4. ed. São Paulo. Manole Ltda, 1989. [24] F. R. Tamisiunas L. M. R. Tarouco, M. C. J. M. Fabre: Reusabilidade de objetos educacionais. http://rived.proinfo.mec.gov.br/artigos/ mariereusabilidade.pdf, visto em 2008/02/20. [25] Eric Lengyel: Mathematics for 3D Game Programming & Computer Graphics. Charles River Media, Inc., 2002. [26] A. Maciel: Modelagem de Articulações para Humanos Virtuais Baseada em Anatomia, 2001. [27] S. M. Matsudo e V.K.R. Matsudo: Evidências da importância da actividade física nas doenças cardiovasculares e na saúde. 2000. [28] O. Mazaný: Articulated 3D human model and its animation for testing and learning algorithms of multi-camera systems, 2007. [29] T. Moeslund e E. Granum: Survey of Computer Vision-Based Human Motion Capture, Computer Vision and Image Understanding. Computer Vision and Image Understanding, (81):231–268, 2001. [30] L. P. Nedel: Animação por Computador: Evolução e Tendências. http:// www.inf.ufrgs.br/cg/publications/nedel/eri2000-texto.pdf, visto em 2008/02/20.

96

REFERÊNCIAS [31] R. Oliveira: Learning objects: Supporting flexible delivery of online learning. http://secure.ascilite.org.au/conferences/melbourne01/pdf/ papers/oliverr.pdf, visto em 2008/03/20. [32] R. S. Paffenbarger, S. N. Blair, I. Lee, and R. T. Hide: Measurement of physical activity to assess health effects in free-living populations. Medicine and Science in Sports and Exercise, (25):60–70, 1993. [33] R. Parent: Computer Animation: Algorithms and Techniques. Kaufmann Publishers, 2002.

Morgan

[34] Público: Ginástica no trabalho. http://www.praxisd.com/pdfs/ Ginasticanotrabalho.pdf, visto em 2008/06/20. [35] P. Perrenoud: As dez novas competências para ensinar. Trad. Ramos, P. C.. 1a Ed. Porto Alegre, RS: Artmed, 2000. [36] Sandra Salete Poletto: Avaliação e implementação de programas de ginástica laboral - implicações metodológicas, 2002. [37] Python: Pyopengl documentation. http://pyopengl.sourceforge.net/ documentation/, visto em 2007/12/01. [38] A. P. Cláudio e M. B. Carmo R. Abreu: Humanos Virtuais na Plataforma IViHumans - a Odisseia da Integração de Ferramentas. http://labmag. di.fc.ul.pt/virtual/artigos/EPCG2007RicardoApcBc.pdf, visto em 2008/03/15. [39] J. Tavares e M. Correia R. Pinho: Introdução à Análise de Movimento usando Visão Computacional. http://repositorio.up.pt/dspace/ bitstream/10216/171/2/Introdu%C3%A7%C3%A3o%20%C3%A0%20An%C3% A1lise%20de%20Movimento%20usando%20Vis%C3%A3o%20Computacional. pdf, visto em 2008/06/08. [40] Riverbank: Pyqt - overview. pyqt/, visto em 2007/12/01.

http://www.riverbankcomputing.co.uk/

[41] V. Gitirana S. Gomes, W. Lins: Adequação de Software Educativo e Formação Continuada. 2004. [42] Direcção Regional da Solidariedade e Segurança Social-Açores: Trabalhadores da Secretaria dos Assuntos Sociais cumprem programa de ginástica laboral. http://www.azores.gov.pt/Portal/pt/novidades/ Trabalhadores+da+Secretaria+dos+Assuntos+Sociais+cumprem+ programa+de+gin%C3%A1stica+laboral.htm, visto em 2008/06/20. [43] F. W. da Silva: Motion Capture - Introdução à Tecnologia. http://w3. impa.br/~nando/publ/mc-tech/, visto em 2008/05/08. [44] Câmara Municipal de Sintra: Ginástica Preventiva e Laboral para trabalhadores da Câmara Municipal de Sintra. http://www.cm-sintra.pt/ \Anexo\633304801749062500GinásticaPreventivaeLaboral.pdf, visto em 2008/06/20.

REFERÊNCIAS

97

[45] StarUML: StarUML 5.0 Documentations. http://staruml.sourceforge. net/en/documentations.php, visto em 2008/02/01. [46] M. Unuma, K. T. Anjyo, and R. Fourier: Principles for emotion-based human figure animation. ACM, pages 91–96, 1995. [47] W3C: Extensible markup language (xml). http://www.w3.org/XML/, visto em 2008/03/03. [48] J. Wang and S. Singh: Video analysis of human dynamics - a survey. Realtime Imaging Journal, (9(5)):320–345, 2003. [49] Alias Wavefront: Understanding skeleton posing. http://caad.arch.ethz. ch/info/maya/manual/UserGuide/CharSetup/SkeletonPose.fm1.html, visto em 2008/07/15. [50] J. Wilhelms: Animals with Anatomy. IEEE, páginas 22–30, 1997. [51] X. Wu, L. Ma, K. Huang, Y. Gao, and Z. Chen: Template-model based modeling and animation of human bodies with anatomical structure. http: //wu.xiaomao.googlepages.com/CASA05.pdf, visto em 2008/07/15. [52] D. Zeltzer: Representation of Complex Animated Figures. Graphics Interface, páginas 205–211, 1982.

Related Documents

Tese
November 2019 27
Tese
November 2019 31
8271-tese
November 2019 13
Tese Nharreluga_final.pdf
October 2019 10
Tese Andrea
November 2019 14
Tese Final.pdf
June 2020 8