5. Results and discussion
5.1 Modifications in experimental setup
5.1.2 Converting from the feasibility test to the main experiment setup
Ainda segundo Saffer [66], os sistemas gestuais são compostos de três principais componentes, i.e. sensores, comparadores e atuadores. Os atuadores determinam quais as ações que o sistema pode realizar sobre o meio externo. Enquanto, os sensores e comparadores definem o “vocabulário gestual” do sistema. Embora as variações de sensores empregados delimitem os tipos de interações gestuais possíveis, é o comparador quem determina quais gestos são válidos para aplicação. Para isso, ele necessita de um ou mais artefatos computacionais, sejam classes, funções ou documentos, que especifiquem os comandos gestuais da aplicação.
A preocupação com esses artefatos é pouco explícita nas aplicações residenciais via interação gestual encontradas [16]. Entretanto, o tipo de artefato utilizado pode determinar o próprio vocabulário da aplicação, bem como a flexibilidade, expansibilidade e capacidade de personalização deste. Gestos definidos em tempo de compilação, por exemplo, podem exigir a reconstrução do sistema para serem alterados. Neste sentido é que buscamos um formato para especificação dos comandos gestuais que tornasse o vocabulário gestual do sistema Hands in Home mais flexível e extensível. Para isso, utilizamos uma gramática gestual, definida a partir da formalização sintática da interação gestual, apresentadas em um trabalho anterior [15].
Nessa gramática, os comandos gestuais são especificados através de blocos de construção menores, denominados de microgestos. Um conjunto de combinações e relações pode ser utilizado também para formar, a partir desses microgestos, gestos mais complexos. Estes, por sua vez, podem também ser combinados e relacionados entre si. Esta estrutura, além de aumentar a flexibilidade e expansão dos comandos gestuais, auxilia no reuso e implementação desses gestos.
Fig. 11 Representação sintática do comando gestual de passar os objetos da casa, baseada na gramática [15].
No sistema Hands in Home buscamos seguir a gramática gestual adotada. Para isso, mapeamos um subconjunto dos microgestos e das relações entre eles em uma hierarquia de classes do sistema (Fig. 10). Cada um dos componentes da hierarquia é responsável por identificar, a partir da posição das partes do corpo de um usuário, se um determinado microgesto foi reconhecido. Com esta estrutura será possível expandir, em versões futuras, o número de microgestos presentes na gramática, sem impactar os gestos já definidos, e até suportar a definição de novos comandos gestuais em tempo de execução, através da tradução da especificação de um gesto, definida de acordo com essa gramática, em uma representação manipulável pelo sistema, como apresentado na Fig. 11.
Com base nesta arquitetura, utilizamos um processo informal para a definição dos comandos gestuais da aplicação. Inicialmente a semântica da aplicação [15] associada ao comando, ou seja a ação que este comando deveria executar no sistema, era analisada. A partir
dela a sintaxe do gesto era concebida. Para os movimentos de navegação, por exemplo, foram idealizados gestos que se relacionassem às ações realizadas pela interface. Após essa concepção, o gesto era descrito em sua forma sintática, através da gramática. E por fim, essa representação sintática era codificada no sistema.
Esse processo pode ser realizado de forma iterativa e evolutiva. Ou seja, enquanto o comando gestual não estiver “satisfatório” para uso na aplicação, é possível repetir o processo, refinando os resultados. Da mesma forma, se necessário, é possível retornar a uma etapa anterior para redefinir algum aspecto do comando gestual. Neste contexto, a gramática é utilizada não apenas como uma representação do comando gestual, mas como uma ferramenta para auxiliar na construção desse comando e na tradução de seu conceito inicial para uma forma “concreta”, codificada no sistema.
A Fig. 11 exemplifica esse processo de definição, apresentando três diferentes representações de um comando gestual, utilizado para navegar para a direita. O gesto busca refletir o movimento de mover um objeto, ou elemento da interface, da direita para a esquerda. Em (1) tem-se a uma execução válida deste gesto, em (2) a sua representação na gramática e em (3) o código utilizado para implementá-lo. As letras (a) e (b) mapeiam, entre as representações, as duas partes que compõem o gesto, respectivamente a descrição de sua pose inicial e o movimento posterior da mão. Em seguida, detalhamos as etapas desse processo de definição de um comando gestual, i.e. concepção, especificação e implementação.
A etapa de concepção dos gestos, análise semântica da interação, envolve uma série de questionamento baseados nas recomendações baseadas na diversidade do público alvo [16], refletindo a viabilidade do comando gestual aos perfis de usuários da aplicação. As recomendações mencionadas são agrupadas em três dimensões, i.e. cognitivo, físico e perceptivo. Buscamos incorporar aspectos das recomendações em suas três dimensões na aplicação. Assim, para as recomendações cognitivas, como memorização e aprendizado, buscamos conceber gestos cujos aspectos sintáticos sejam simples quanto a movimentação e que estivessem também relacionados a sua semântica. Para tanto, como descrito anteriormente, exploramos associações metafóricas dos gestos com sua utilização na aplicação, quanto as ações que serão executadas, além de relações de completude – um gesto para mover para a direita, por exemplo, deve ser, idealmente, simétrico ou oposto ao gesto de mover para a esquerda – buscando manter uma consistência sintática e semântica entre os gestos da aplicação.
Relacionado à dimensão física das recomendações para a diversidade, buscamos identificar quais tipos de dificuldades poderiam ser enfrentadas pelos usuários, como reduzi-las ou eliminá- las e o quanto estas iriam interferir no uso do sistema. Para isso, iterativamente analisávamos os comandos pelas questões de flexibilidade, equilíbrio e resistência buscando um aprimoramento. Consideramos também as repetições que seriam exigidas para cada gesto. Gestos que seriam utilizados com maior frequência deveriam ser menos cansativos. A dimensão perceptiva foi
abordada através das decisões funcionais da aplicação, focada sobretudo na eficiência desta, através de atalhos “puramente gestuais”, como mencionado.
A especificação do comando gestual é formada por um conjunto de restrições baseadas na gramática oriunda da formalização sintática. Essas restrições são definidas a partir das “características marcantes” identificadas para um determinado gesto. Durante a execução do sistema, o reconhecimento do comando ocorrerá quando o conjunto de restrições de sua especificação for atendido. Portanto, a primeira tarefa da especificação consiste em caracterizar o gesto. Ou seja, definir os atributos que permitem distingue-lo. Isto pode ser feito pela análise dos movimentos e posições que devem ser realizadas pelos usuários, quando desejem executar este comando, e pelas variações do movimento que não o representam. Ainda assim, alguns gestos que apresentem significados divergentes entre si, do ponto de vista do usuário, podem não ser facilmente identificáveis/diferenciáveis sintaticamente, o que consequentemente dificulta seu reconhecimento pela aplicação. Esta dificuldade de reconhecimento pode ser fruto tanto de limitações tecnológicas, por exemplo, o sensor de profundidade não prover dados suficientes, ou mesmo pela dificuldade de caracterização dos gestos pelos projetistas.
A etapa de implementação de um comando gestual pode envolver outros desafios, além da tradução da especificação para uma representação suportada pelo sistema. Cada especificação gestual pode ser dependente de diferentes medidas, como tempo, posição e orientação, definidas através de parâmetros presentes nos microgestos. Os valores desses parâmetros precisam ser definidos pela aplicação, o que pode influenciar na execução do gesto, assim como na adequação da especificação ao gesto concebido, ou seja à semântica gestual.
Como mencionado em um trabalho anterior [15] é necessário o estudo dos diferentes perfis de usuários para apresentar um conjunto de indicadores que permitam otimizar esses parâmetros. Permitir a configuração ou o auto-ajuste desses parâmetros durante o uso pode também melhorar a usabilidade do sistema. Por exemplo, fornecer um controle que regule a velocidade dos gestos em rápido, médio e devagar pode auxiliar a adaptação desses gestos aos diferentes perfis de usuários.