Projeto com o Sun SPOT: Definindo os Requisitos

Meu projeto de estágio consiste em desenvolver um driver, ou alguma outra maneira de utilizar um Sun SPOT como mouse para pessoas com problemas de acessibilidade. Eu escolhi esse tema por ser algo bastante motivante trabalhar em algo que possa ajudar as pessoas a se comunicarem e interagirem com meu meio.

Esse vídeo mostra algumas alternativas existentes e relatos de pessoas que conseguem se comunicar e fazer o que desejam com a ajuda de aparelhos e computadores:

Esse vídeo foi encontrado no AbilityNET Gate, que possui muitas informações sobre acessibilidade em um formato "wiki". Como foi possível ver, existem MUITAS maneiras de tornar computadores mais acessíveis. Devido às características do SunSPOT (em especial seu acelerômetro) eu considerei que uma boa alternativa seria criar uma alternativa ao mouse.

O vídeo abaixo foi o que provavelmente me deu a idéia:

Embora eu vá fazer algumas coisas de maneira diferente, para permitir maior acessibilidade.

Um segundo passo consiste em definir melhor PARA QUEM eu pretendo desenvolver esse projeto, já que existem inúmeros problemas de mobilidade - desde pessoas com problemas apenas nos dedos, pessoas com artrite passando até mesmo para pessoas que não possuem mobilidade alguma além de piscar os olhos.

Por outro lado, pela própria versatilidade de configurações que o SunSPOT e Java me permitem, não há porque restringir demais o público, já que em algumas casos é apenas uma questão de definir alguns parâmetros e calibrar o SunSPOT. No caso, eu pensei em duas maneiras de movimentar o SunSPOT:

  1. Movimento com a cabeça: para mexer para a esquerda, mexer a cabeça para a esquerda, para mexer para a direita, mexer a cabeça para a direita, para mexer para baixo, mexer a cabeça para baixo, e para mexer para cima, mexer a cabeça para cima.
  2. Movimenta com o braço: os movimentos para cima e para baixo seriam os mesmos, mas com o braço/mão pode ser mais simples, ao invés de virar o braço para fazer o movimento "em arco" que é feito com a cabeça, é mais prático mexer o braço para a direita e para a esquerda girando o cotovelo, e não o braço.

Desenho esquemático - está mal desenhado, mas acho que ainda é mais fácil de entender do que a minha explicação apenas com palavras:

Esboço dos Movimentos do SunSPOT

Se você conseguiu entender, - qualquer coisa, mexe a cabeça e o braço que é fácil de perceber - percebeu que os movimentos acabam sendo diferentes.

Por isso, eu pensei em um pequeno programa em Java para ser usado junto com o SunSPOT, para realizar as configurações, podendo ser minimizado para o tray - algo onde o usuário pudesse calibrar o SunSPOT e definir que tipo de movimento ele pretende fazer. Esse programa passaria as informações para o SunSPOT, para que ele soubesse qual movimento corresponde a cada ação.

É importante que o usuário tenha a possibilidade de calibrar o aparelho, já que pessoas diferentes podem fazer movimentos ligeiramente diferentes, em diferentes velocidades, ângulos, etc. Ao permitir a escolha de configurações, dá-se a liberdade de que o sistema seja usado em diversas situações, não se restringindo a um único caso hipotético.

Além do movimento, deve ser criada uma alternativa para os cliques do mouse. Para isso, eu pensei em usar o modo "clique". Ao clicar em um botão e segurar, o SunSPOT entra em modo "clique". Nesse modo, se ele mexer o SunSPOT para a esquerda, isso irá corresponder a um clique simples, mexer para a direita corresponde  a um duplo clique e mexer para baixo corresponde a um clique com o botão direito, por exemplo. Eu ainda preciso pensar qual seria o melhor "mapeamento" mas, de qualquer maneira, outra opção na janela de configuração consistiria em definir o que significa cada movimento no modo "clique".

Como o SunSPOT possui apenas pequenos botões, o projeto também deveria criar uma adaptação para esse botão. Existem duas opções, a príncipio:

  1. Um "grande botão colorido", que poderia ser fácilmente clicado com o outro braço, por exemplo
  2. Uma "bombinha de ar" que o usuário poderia ter na boca, e que para "clicar" ele apenas tivesse de morder essa bombinha. Esse tipo de solução já foi usada diversas vezes, o que me leva a crer que se trata de uma opção viável para pessoas que podem movimentar apenas a cabeça.

Embora, novamente, o mais importante no meu projeto não seja ligá-lo a um botão externo específico, mas sim criar uma interface para que o usuário ligue o "botão" com o qual se sentir mais confortável ao SunSPOT.

Em termos gerais, estas são as grandes etapas do projeto (ao menos após uma análise inicial):

  1. Mapear e calibrar a interação computador -> SunSPOT para os movimentos do Mouse
  2. Criar uma interface que permita configuração do programa
  3. Permitir acoplamento de outros tipos de botões

A maior etapa é a primeira, e eu acredito que vou gastar algumas muitas horas na parte de calibração. "Explodindo" esse passo 1 teríamos algo como:

  1. Verificar como usar as informações dos sensores
  2. Aprender a calibrar o sistema
  3. Mapear o SunSPOT para a função do mouse
  4. Colocar isso de maneira que o SunSPOT seja um substituto global, e não apenas dentro do aplicativo

Outras partes que também possuem alguma complexidade estão no passo 2, quando chegar a hora de criar a interface de configuração. É claro que esta é uma visão bastante geral, e certamente existem vários pequenos passos não contemplados.

A primeira parte, de verificar como usar as informações dos sensores, eu já comecei há algum tempo, como vocês podem conferir se forem olhar os posts anteriores. Pretendo fazer alguns testes na semana que vem. Se der certo, teremos um novo post no blog. :)



Comments:

Legal! Eu estou impossibilitado de ver os vídeos nesse momento por bloqueios na minha rede na UNISC, mas algum tempo atrás um cara postou na lista um vídeo sobre uma luva utilizando SunSpot. Eu achei demais! Sua idéia parte do mesmo princípio, mas volta-se para a acessibilidade, e tem um potencial maior. Muito legal, gostei.

O SunSpot tem sensor de aceleração, e poderia detectar movimentos bruscos ou mais fortes, que poderiam significar cliques também, basta filtrar pela intensidade para diferenciar um clique de um movimento de ponteiro.

Posted by Diogo Bohm on Maio 14, 2009 at 07:03 PM GMT+03:00 #

Post a Comment:
  • HTML Syntax: NOT allowed
About

Blog com tutoriais relacionados a desenvolvimento de software, especialmente Java, e que conta com as experiências de desenvolvimento de uma menina maluquinha, digo, eu.

Search

Archives
« Abril 2014
SegTerQuaQuiSexSábDom
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today