Download - Tp lourenco castro
FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO
Desenvolvimento de aplica-ções para interfaces cérebro-
computador Relatório de trabalhos práticos
Lourenço Barbosa de Castro
15-06-2012
Orientador:
João Manuel R. S. Tavares Departamento de Engenharia Mecânica
Faculdade de Engenharia da Universidade do Porto
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
1
Lourenço Barbosa de Castro 15-06-2012
Índice
1. Resumo .................................................................................................................................................. 3
2. Introdução ............................................................................................................................................ 3
2.1. Emotiv Control Panel ............................................................................................................... 4
2.1.1. Expressiv Suite ...................................................................................................................... 4
2.1.2. Affectiv Suite .......................................................................................................................... 6
2.1.3. Cognitiv Suite ......................................................................................................................... 6
2.2. EmoKey ......................................................................................................................................... 8
2.3. EmoComposer ............................................................................................................................ 9
3. Desenvolvimento de aplicações ................................................................................................ 10
3.1. Introdução ................................................................................................................................ 10
3.2. Aplicações desenvolvidas ................................................................................................... 11
3.2.1. EmoCmd ................................................................................................................................ 11
3.2.2. EmoKey .................................................................................................................................. 13
4. Conclusão ............................................................................................................................................ 13
4.1. Projetos futuros ...................................................................................................................... 14
4.2. Propósito ................................................................................................................................... 14
5. Bibliografia ......................................................................................................................................... 16
Anexo I – Aplicação EmoCmd, desenvolvida em C++ .................................................................. 17
Anexo II - Configuração da aplicação EmoKey .............................................................................. 21
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
2
Lourenço Barbosa de Castro 15-06-2012
Índice de Figuras
Figura 1 - Emotiv EPOC ...................................................................................................................................... 3
Figura 2 - Painel de controlo: Do lado esquerdo pode-se verificar o estado dos elétrodos; A
cor varia de acordo com o contacto e com a qualidade do sinal recebido. ................................... 4
Figura 3 - Expressiv Suite: À esquerda, encontra-se a face que mimetiza as expressões do
utilizador; No centro, os gráficos que indicam a variação nas intensidades dessas
expressões; À direita, pode-se alterar a sensibilidade e treinar este tipo de deteção ............. 5
Figura 4 - Affectiv Suite: Do lado esquerdo, encontram-se os gráficos que indicam a
variação das emoções detetadas ao longo do tempo; O gráfico de cima indica as variações
ao longo de 30 segundos, enquanto o de baixo está configurado para 300 segundos; Do
lado direito é possível configurar que estados emotivos são visualizados. ................................. 6
Figura 5 - Cognitiv Suite: À esquerda encontra-se o cubo virtual que indica a ação que está
a ser realizada; Do lado direito pode aceder-se às secções de treino e avançada, onde se
pode alterar a sensibilidade da deteção. ..................................................................................................... 7
Figura 6 - Exemplo de apresentação do EmoKey, onde a expressão facial “Blink” está
associada à combinação de teclas “Alt + Tab”. .......................................................................................... 8
Figura 7 - Secção interativa do EmoComposer, com alguns valores experimentais
introduzidos, e o seu resultado observável no canto inferior direito. ............................................ 9
Figura 8 - Algumas das aplicações disponíveis para o Emotiv EPOC: À esquerda um teclado
virtual; no centro, um organizador de fotografias, e à direita, um mapeador da atividade
cerebral. .................................................................................................................................................................. 10
Figura 9 – Início da aplicação EmoCmd, em C++. .................................................................................. 11
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
3
Lourenço Barbosa de Castro 15-06-2012
Figura 1 - Emotiv EPOC
1. Resumo
Neste trabalho descreve-se o funcionamento de um aparelho, portátil e sem fios, capaz
de registar e processar sinais de eletroencefalografia (EEG) de um utilizador. É também
apresentado o processo de interação com computadores utilizando apenas os padrões
capturados e as ferramentas disponibilizadas em conjunto com o dispositivo. Para além
disso, desenvolveram-se duas aplicações práticas com a finalidade de explorar as capaci-
dades deste dispositivo, tendo o intuito de tornar a utilização de um computador mais
acessível a pessoas com necessidades especiais. Por último, sumariza-se as potencialida-
des presentes e futuras desta tecnologia, recorrendo a exemplos presentes no mercado e a
protótipos ainda em desenvolvimento.
2. Introdução
Apresentado em 2007 pela empresa
australiana Emotiv, o EPOC ( ) tor-Figura 1
nou-se um dos pioneiros da tecnologia
EEG portátil de baixo custo (1). Recorren-
do a 14 elétrodos com uma frequência de
amostragem de 128 Hz, este dispositivo
captura as ondas elétricas cerebrais, pro-
cessa-as e transmite-as sem fios para um
computador. Apesar de ter sido desenvol-
vido originalmente com o intuito de pro-
porcionar aos seus utilizadores experiências de entretenimento mais imersivas, têm vindo
a surgir aplicações no sentido de reabilitar ou ajudar pessoas incapacitadas.
A acompanhar este dispositivo, é disponibilizado pelo seu fabricante uma plataforma
de apoio ao desenvolvimento de aplicações para o mesmo, um SDK (software development
kit), existindo paralelamente uma versão direcionada a quem ainda não adquiriu o dispo-
sitivo mas pretende explorar algumas das suas potencialidades. Esta segunda versão, de-
nominada SDK Lite, apresenta 3 aplicações: Emotiv Control Panel, EmoKey e EmoComposer,
sendo que cada uma explora as diferentes funcionalidades do EPOC. De forma a processar
os dados EEG recolhidos, o SDK inclui também uma ferramenta chamada EmoEngine. As-
sim, os dados capturados tornam-se disponíveis tanto às aplicações já referidas como a
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
4
Lourenço Barbosa de Castro 15-06-2012
outros programas que acedam ao dispositivo pelo seu API (application programming inter-
face).
2.1. Emotiv Control Panel
O painel de controlo do Emotiv EPOC ( ) explora as funcionalidades do EmoEn-Figura 2
gine de processar dados de ondas cerebrais. Através de uma interface gráfica, apresenta
diferentes tipos de informação útil para o utilizador, tais como, níveis de atenção e frustra-
ção, bem como a identificação de expressões faciais e o movimento dos olhos. É ainda pos-
sível verificar facilmente o estado da ligação do EPOC ao computador, incluindo se os di-
versos elétrodos estão a funcionar convenientemente. Dentro do painel de controlo exis-
tem várias secções correspondentes ao tipo de deteções que o dispositivo realiza: secções
Expressiv Suite, Affectiv Suite e Cognitiv Suite, descritas a seguir.
2.1.1. Expressiv Suite
Na primeira secção, Expressiv Suite ( ), é possível visualizar a deteção de sinais Figura 3
relativos a expressões faciais, tais como: piscar de olhos, sorrisos e movimentos das so-
brancelhas. Para tal, existem dois métodos de apresentação dos dados: sob a forma de
Figura 2 - Painel de controlo: Do lado esquerdo pode-se verificar o estado dos elétrodos; A cor varia de acordo com o contacto e com a qualidade do sinal recebido.
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
5
Lourenço Barbosa de Castro 15-06-2012
gráficos, com um breve historial das últimas deteções; e através de uma face virtual, que
tenta mimetizar o utilizador.
Nesta secção existem ainda duas funções adicionais: o ajuste da sensibilidade e a cali-
bração da deteção de expressões. A primeira permite aumentar os sinais mais ténues e
eliminar falsas deteções, sendo uma forma simples e direta de ajustar o dispositivo a cada
utilizador. A segunda torna possível treinar o SDK para que se obtenha uma melhor especi-
ficidade para cada expressão, já que os padrões que vêm pré-configurados podem não ser
os mais adequados. O treino consiste em selecionar um dos tipos de expressões disponí-
veis e, durante 8 segundos, o utilizador deve manter a sua concentração focada na seleção
que fez, para que sejam emitidos os sinais cerebrais que lhe estão associados. Por fim, é
possível definir, para cada tipo de expressão, se deseja-se utilizar os padrões de origem ou
os que foram treinados, podendo assim manter aqueles que funcionam corretamente e
melhorar os que estão defeituosos. Quanto mais frequentemente se treinar uma expres-
são, melhor será a precisão da sua deteção.
Figura 3 - Expressiv Suite: À esquerda, encontra-se a face que mimetiza as expressões do utilizador; No centro, os gráficos que indicam a variação nas intensidades dessas expressões; À direita, pode-se alte-rar a sensibilidade e treinar este tipo de deteção
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
6
Lourenço Barbosa de Castro 15-06-2012
Figura 4 - Affectiv Suite: Do lado esquerdo, encontram-se os gráficos que indicam a variação das emo-ções detetadas ao longo do tempo; O gráfico de cima indica as variações ao longo de 30 segundos, en-quanto o de baixo está configurado para 300 segundos; Do lado direito é possível configurar que esta-dos emotivos são visualizados.
2.1.2. Affectiv Suite
A secção Affectiv Suite ( ) está relacionada com o estado emocional do utiliza-Figura 4
dor, nomeadamente com o entusiasmo, tédio e atenção. Através de um gráfico combinado,
são apresentadas 3 linhas que, ao longo de um intervalo de tempo definido, apresentam as
várias características emocionais que estão a ser expressas. Os dados cerebrais recolhidos
são avaliados automaticamente, sendo as emoções detetadas recorrendo de padrões uni-
versais. Assim, não é necessária calibração nesta secção do SDK, já que é possível persona-
lizar o dispositivo através da análise dos sinais do utilizador. Os níveis de entusiamo são
obtidos tanto instantaneamente como ao longo do tempo, sendo possível avaliar o estado
do utilizador em tempo real ou num determinado intervalo de tempo.
2.1.3. Cognitiv Suite
Por fim, Cognitiv Suite ( ) é a secção que permite a associação de determinados Figura 5
padrões cerebrais com comandos do SDK. Ou seja, através de uma calibração idêntica à
que foi descrita na secção 2.1.1, é possível manipular um objeto virtual dentro da aplicação
utilizando apenas o pensamento. Durante 8 segundos, é pedido ao utilizador para visuali-
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
7
Lourenço Barbosa de Castro 15-06-2012
zar, repetidamente, a ação pretendida. Mais precisamente existem 13 tipos de ações a que
se podem associar padrões cerebrais, 6 direcionais: empurrar, puxar, mover para a es-
querda, direita, cima e baixo; e 6 rotacionais: no sentido dos ponteiros do relógio, no sen-
tido oposto, para a esquerda, direita, frente e trás. Existe uma barra lateral que indica a
intensidade da acção que se está a realizar, o que permite ao utilizador perceber se a cali-
bração foi bem-sucedida e se está a visualizar a ação correta. É de notar que o painel de
controlo permite a detecção de até 4 ações simultaneamente, embora se torne difícil ao
utilizador de manter o controlo em simultâneo de um grande número de ações. De forma a
permitir que esta secção funcione corretamente, é necessário treinar uma linha de base,
denominada “Neutral”. Após o seu treino estar concluído, pode proceder-se à calibração de
todas as outras ações disponíveis, com o auxílio do objeto referido anteriormente (que
neste caso é um cubo virtual). Além do treino, é possível definir a sensibilidade a cada tipo
de movimento, para os mesmos motivos referidos na secção 2.1.1. É de salientar que cada
treino pode ser realizado várias vezes, de forma a melhorar a capacidade de deteção por
parte do software.
Figura 5 - Cognitiv Suite: À esquerda encontra-se o cubo virtual que indica a ação que está a ser realiza-da; Do lado direito pode aceder-se às secções de treino e avançada, onde se pode alterar a sensibilida-de da deteção.
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
8
Lourenço Barbosa de Castro 15-06-2012
Figura 6 - Exemplo de apresentação do EmoKey, onde a expressão facial “Blink” está associada à combi-nação de teclas “Alt + Tab”.
2.2. EmoKey
Esta aplicação ( ) permite mapear diferentes ações detetadas pelo EPOC para Figura 6
combinações de teclas, incluindo escrever uma mensagem de texto, ou cliques no rato. É,
então, possível associar ações como o piscar de olhos a comandos do Sistema Operativo
Microsoft Windows, como o ALT+F4, permitindo assim fechar janelas num abrir e fechar de
olhos, literalmente. Adicionalmente pode escolher-se uma janela ou uma aplicação para
enviar o comando desejado, havendo grande controlo e especificidade. Por exemplo, é
possível enviar mensagens pré-definidas quando o utilizador exprimir determinadas emo-
ções. Por fim, o programa permite definir um limiar mínimo para que uma ação ou expres-
são seja detetada, fazendo com que deteções mais ligeiras sejam ignoradas.
O EmoKey pode ser ligado diretamente ao Emotiv Control Panel, de forma a interpretar
os dados obtidos através do EPOC, ou pode ligar-se à ferramenta que vai ser apresentada
de seguida, a EmoComposer, com a finalidade de se realizarem testes mais facilmente. Para
configurar esta aplicação, acrescentam-se regras na parte superior da janela da respetiva
interface ( ) e as condições para que essas regras sejam detetadas na parte inferior Figura 6
da mesma. As regras incluem um nome, para melhor serem identificadas, uma combinação
de teclas ou cliques e a aplicação ou janela para onde estas devem ser enviadas. Na parte
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
9
Lourenço Barbosa de Castro 15-06-2012
das condições, define-se o tipo de ação que é detetada bem como o valor que é pretendido
para que ocorra deteção.
2.3. EmoComposer
De forma a simular todo o tipo de
ações que o EPOC consegue detetar, exis-
te esta aplicação, que se torna particu-
larmente útil para o desenvolvimento de
aplicações sem haver necessidade de
recorrer a este dispositivo. Este progra-
ma permite comunicar diretamente com
o Emotiv Control Panel, enviando sinais
idênticos aos que seriam detetados e
processados pelo EPOC. Existem dois
modos de utilização, um interativo e
outro através de instruções pré-
definidas. O modo interativo permite
definir em tempo real o tipo de ações
que se pretende enviar ao painel de con-
trolo, bem como os valores da sua inten-
sidade. Permite até simular casos de
mau funcionamento, tais como sinais
corrompidos, bateria com pouca carga
ou o treino de uma ação cognitiva não
bem-sucedido. Como se pode ver na Fi-
, após se definir o valor de cada gura 7
ação, pressiona-se o botão Send, transmitindo ao painel de controlo a informação
pretendida, sendo até possível programar um intervalo de tempo em que as instruções
que se definiu sejam repetidas. Existe ainda uma secção que indica a resposta do painel de
controlo, sendo possível indentificar eventuais erros. Através da função EmoScript, é
possível criar ficheiros nos quais se introduzem estas instruções num formato pré-
definido, tornando-se mais fácil testar conjuntos de comandos repetidamente.
Figura 7 - Seção interativa do EmoComposer, com alguns valores experimentais introduzidos, e o seu resultado observável no canto inferior direito.
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
10
Lourenço Barbosa de Castro 15-06-2012
Figura 8 - Algumas das aplicações disponíveis para o Emotiv EPOC: À esquerda um teclado virtual; no centro, um organizador de fotografias, e à direita, um mapeador da atividade cerebral.
3. Desenvolvimento de aplicações
3.1. Introdução
O API da Emotiv está acessível através de dois DLLs (dynamic linked libraries), edk.dll e
edk_utils.dll. Após o processamento dos dados obtidos através do EPOC, é criada uma es-
trutura temporária, denominada EmoState Buffer, na qual são guardadas as deteções feitas
nesse momento. Através do API, estes dados podem ser utilizados para enviar comandos
específicos para o computador, ou podem ser acedidos por outras aplicações, de forma a
tornar a experiência do utilizador mais interativa. A linguagem de programação mais refe-
renciada para esta finalidade é C++, sendo essa a linguagem escolhida para a realização
deste projeto. O API disponibiliza uma grande variedade de funções que permitem o con-
trolo e processamento dos sinais detetados, tornando-se assim acessível o desenvolvimen-
to de aplicações que explorem as funcionalidades desta tecnologia.
As aplicações desenvolvidas deverão estar preparadas para processar eventos como o
ligar ou desligar do EPOC, alterações na expressão facial e estados cognitivo e emotivo, e a
respetiva calibração de cada uma destas funções.
Os exemplos de código incluídos no SDK demonstram os vários aspetos e funcionali-
dades essenciais do dispositivo. O mais simples envolve apenas o registo, sob a forma de
um ficheiro de texto, de toda a informação detetada. Outros exemplos demonstram as pos-
sibilidades referidas anteriormente, como a mimetização automática das expressões do
utilizador através de uma face virtual ou o controlo de um cubo recorrendo a padrões ce-
rebrais previamente calibrados. Por fim, é explorada a potencialidade do giroscópio pre-
sente no EPOC, da capacidade de ligação de vários aparelhos simultaneamente e da gestão
de vários perfis de utilizador. A Emotiv disponibiliza uma loja online para aplicações
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
11
Lourenço Barbosa de Castro 15-06-2012
( ), onde se podem encontrar jogos, ferramentas de acessibilidade ou programas Figura 8
que estendem as funcionalidades referidas anteriormente. É de notar a existência de te-
clados virtuais, controlados pelo pensamento e expressões virtuais, mapeadores da ativi-
dade cerebral em tempo real e aplicações que facilitam a visualização de fotografias.
3.2. Aplicações desenvolvidas
Desenvolveram-se duas aplicações práticas com finalidade de interagir com o Emotiv
EPOC. A primeira é um programa em C++ que tem como objetivo iniciar outros programas
instalados no computador do utilizador, recorrendo apenas a expressões faciais ou a
movimentos oculares. A segunda aplicação recorre ao EmoKey, referido anteriormente, de
forma a mapear algumas expressões para comandos do teclado ou mensagens de texto
pré-definidas.
3.2.1. EmoCmd
A aplicação desenvolvida em C++, denominada
EmoCmd (Anexo I), executa-se por intermédio da linha
de comandos do Microsoft Windows e foi testada
recorrendo ao EmoComposer. Já que esta ferramenta
fornecida pela Emotiv simula os sinais cerebrais obtidos
pelo EPOC, é previsível que a aplicação também seja
funcional quando submetida a um utilizador real, após
uma ligeira adaptação.
Após incluir os ficheiros referentes ao API da
Emotiv, EmoStateDLL.h, edk.h e edkErrorCode.h (Figura
), inicia-se o programa por definir as aplicações que estão disponíveis para serem 9
iniciadas, bem como a sua localização no computador. Estas especificações estão
guardadas em variáveis independentes do resto do código de forma a poderem ser
alteradas facilmente.
Figura 9 – Início da aplicação Emo-Cmd, em C++.
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
12
Lourenço Barbosa de Castro 15-06-2012
int startup(int op)
int starting(string name, string loc, int up)
Seguidamente foram criadas duas funções (startup() e starting()) que apresentam
texto de apoio ao utilizador, tais como as diretrizes que indicam os comandos disponíveis
para iniciar aplicações, ou a confirmação de que um comando foi reconhecido e que a
aplicação correspondente está a ser iniciada. Estas funções foram criadas separadamente
de forma a tornar o código principal mais organizado, já que são instruções repetidas
várias vezes.
int internet()
A função seguinte, internet(), é referente apenas à iniciação de páginas da internet,
podendo ser considerada uma versão mais reduzida da função principal, explicada de
seguida.
int main(int argc, char** argv)
A função principal é iniciada pela designação das variáveis necessárias para o resto do
código. É de salientar a variável State, onde fica guardado o estado atual do utilizador,
nomeadamente as suas expressões faciais, emoções ou estado cognitivo. Sem esta variável
não seria possível associar padrões cerebrais a programas ou páginas da internet. É então
realizada uma ligação ao EmoComposer, e caso seja bem sucedida, são apresentadas
instruções básicas sobre o funcinonamento do programa. A fase seguinte é detetar se
existem expressões faciais novas, de forma a correr o comando que lhes está associado. É
nesta etapa que surgem as funções referidas anteriormente, sendo ativadas quando é
reconhecida uma expressão facial conhecida, facilitando assim o processo de inciar
aplicações ou páginas da internet. É também nesta fase que se pode recorrer à função
internet(), caso o utilizador exprima essa vontade, abrindo um novo menu com novas
opções. O programa finaliza com duas verificações de erros, uma caso exista um problema
com a interpretação do padrão cerebral do utilizador e outra caso não se consiga realizar
uma ligação corretamente ao EmoComposer.
De forma a correr esta aplicação, é necessário que o EmoComposer tenha sido iniciado
anteriormente, com a opção “Player” configurada para o valor 0 (zero). De seguida, inicia-
se a aplicação EmoCmd.exe, confirmando que estão presentes os DLLs edk.dll, edk_utils.dll e
glut32.dll. Durante a execução são apresentadas as instruções necessárias para que a
aplicação funcione corretamente, sendo apenas de referir que a qualquer momento se
pode pressionar qualquer tecla para terminar o programa. Existe também a
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
13
Lourenço Barbosa de Castro 15-06-2012
funcionalidade de recuar na hierarquia dos menus, enviando o sinal de levantar as
sobrancelhas. Caso se esteja no menu principal, este comando termina a aplicação.
Alterando os valores referentes a cada um dos comandos, no EmoComposer, deverá iniciar
as aplicações correspondentes facilmente.
3.2.2. EmoKey
Recorrer ao EmoKey para mapear teclas de atalho é uma forma simples de permitir a
um utilizador com algum tipo de incapacidade aceder a funcionalidades do seu
computador utilizando apenas o pensamento e expressões faciais. Visto esta aplicação
possuir uma interface gráfica, não é preciso qualquer tipo de conhecimentos adicionais,
sendo apenas necessário seguir as instruções fornecidas para configurar a aplicação.
Para utilizar um dos exemplos considerados neste trabalho, deve começar-se por
iniciar as aplicações EmoComposer e Emokey. De seguida, na segunda aplicação referida,
abrir o menu “Connect” e escolher a opção “To EmoComposer”, desta forma ambas as
aplicações estarão conectadas. Para concluir este processo, no menu “Application” escolhe-
se a opção “Load Mapping...”, selecionando um dos exemplos: “Chat.ekm” ou
“Commands.ekm”. O primeiro exemplo associa diversas expressões faciais a mensagens
comuns de conversação online; o segundo recorre a comandos mais práticos, tais como o
fecho e minimização de janelas, abertura do menu iniciar ou as funções de copiar e colar,
todas ativadas por expressões do utilizador.
Descreve-se no Anexo II o formato básico dos ficheiros criados por esta aplicação, bem
como um exemplo prático de um mapeamento simples.
4. Conclusão
As interfaces cérebro-computador terão um papel de extrema importância num futuro
próximo. A sua vertente de entretenimento irá possibilitar o aparecimento de novas for-
mas de interação interpessoal, maior profundidade em conteúdos digitais, maior facilidade
em compreender e aproveitar o mundo onde vivemos; a vertente de reabilitação irá atri-
buir capacidades a pessoas que de outra forma lhes estariam inacessíveis, tornar indepen-
dentes indivíduos que perderam esta característica, transformar vidas limitadas em vidas
decentes. É de salientar que, mesmo numa perspetiva mais recreativa, as possibilidades
desta tecnologia podem também ser aplicáveis a pessoas incapacitadas, melhorando a sua
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
14
Lourenço Barbosa de Castro 15-06-2012
qualidade de vida e oferecendo-lhes oportunidades que atualmente estão reservadas a
pessoas sãs.
4.1. Projetos futuros
Projetos como o Indigo Mind Project permitem a síntese de composições musicais
através da interpretação do estado mental do utilizador. As aplicações de uma iniciativa
como esta podem ser vistas como uma forma de entretenimento mais intenso ou como
auxílio à meditação, concentração ou sensação de realização pessoal (2). Aplicações online
podem permitir a pessoas com deficiências motoras ou de comunicação acederem a servi-
ços como a sua conta bancária na internet, ou até desenvolver novos métodos de paga-
mento para todo o tipo de utilizadores (3). Além disso, poderão ser desenvolvidas formas
de entretenimento ou até desportos inovadores, como o controlo de pequenos veículos
motorizados (terrestres e aéreos) recorrendo apenas a padrões cerebrais (4). Através da
integração com aparelhos de deteção de movimentos oculares, podem obter-se resultados
substancialmente mais promissores. Permitindo, por exemplo, às pessoas mais incapaci-
tadas selecionarem elementos visuais no ecrã de um computador sem necessitarem de
realizar qualquer movimento (5).
4.2. Propósito
Uma tecnologia com esta magnitude tanto poderia se aplicar com o intuito de melho-
rar a vida a pessoas incapacitadas como para intensificar experiências de entretenimento
à população em geral.
Pessoas com doenças como a esclerose lateral amiotrófica ou que sofreram acidentes
vasculares cerebrais podem ser beneficiadas com o auxílio à movimentação de cursores
num computador, executarem um programa que pretendam utilizar ou até mesmo contro-
larem um membro artificial ou uma cadeira de rodas (6; 7). Idosos e outras pessoas com
independência reduzida podem vir a controlar aparelhos de comunicação móvel utilizan-
do um dispositivo como o EPOC, facilitando a tarefa de contactar um familiar ou amigo ou
de realizar uma chamada de emergência (8).
Para a população em geral, as interfaces cérebro-computador podem vir a criar novas
formas de entretenimento ou renovar conceitos antigos. Através da perceção e análise das
emoções de um utilizador, é possível proporcionar-lhe experiências inovadoras e mais
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
15
Lourenço Barbosa de Castro 15-06-2012
personalizadas; mapeando combinações de teclas para expressões faciais, um indivíduo
poderá direcionar a sua atenção para elementos que teriam menos importância de outra
forma; a interpretação do nosso estado emotivo poderia também ser utilizada para abrir
portas a novas formas de arte, como a composição musical referida no ponto anterior.
A tecnologia de interfaces entre cérebro e computador demonstra ser bastante pro-
missora, com aplicações em áreas distintas, tornando-se num tema interessante e recom-
pensante de explorar.
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
16
Lourenço Barbosa de Castro 15-06-2012
5. Bibliografia
1. Emotiv. Emotiv Emerges from Stealth to Revolutionize Human Computer Interaction.
2007.
2. Pale Blue. Indigo Mind Project. [Online] 2012.
http://www.youtube.com/watch?v=FHxHJ0mQO30.
3. See the bank, be the bank! Fisher, Dan. 2012, American Bankers Association Journal.
4. Neurogadget. [Online] http://neurogadget.com/2012/04/25/ar-drone-parrot-flight-
with-emotiv-epoc-neuroheadset-video/4245.
5. iMotions. iMotions Global. [Online] http://www.imotionsglobal.com/imotion-in-the-
media/2012/2/9/imotions-attention-tool-eye-tracking-software-and-emotivs-ep.html.
6. LR, Hochberg, et al., et al. Neuronal ensemble control of prosthetic devices by a human
with tetraplegia. Nature. 442, 2006, pp. 164-171.
7. F, Galán, et al., et al. A brain-actuated wheelchair: asynchronous and non-invasive
Brain-computer interfaces for continuous control of robots. Clinical Neurophysiology. 119,
2008, Vol. 9, pp. 2159-2169.
8. A smartphone interface for a wireless EEG headset with real-time 3D reconstruction.
Stopczynski, Arkadiusz, et al., et al. 2011. Affective Computing and Intelligent
Interaction.
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
17
Lourenço Barbosa de Castro 15-06-2012
Anexo I – Aplicação EmoCmd, desenvolvida em C++
#include <iostream> #include <fstream> #include <conio.h> #include <sstream> #include <windows.h> #include <map> #include "EmoStateDLL.h" #include "edk.h" #include "edkErrorCode.h" using std::cout; using std::endl; using std::string; #pragma comment(lib, "../lib/edk.lib") // Applications string app1name = string("iTunes"); string app1loc = string("\"C:\\Program Files (x86)\\iTunes\\iTunes.exe\""); string app2name = string("Speech Recognition"); string app2loc = string("%windir%\\Speech\\Common\\sapisvr.exe -SpeechUX"); string app3name = string("Virtual Keyboard"); string app3loc = string("%windir%\\system32\\osk.exe"); // Web applications string web1name = string("Google"); string web1loc = string("%windir%\\explorer.exe http://www.google.com"); string web2name = string("Weather"); string web2loc = string("%windir%\\explorer.exe http://www.weather.com"); string web3name = string("News"); string web3loc = string("%windir%\\explorer.exe http://www.news.google.com"); string web4name = string("Youtube"); string web4loc = string("%windir%\\explorer.exe http://www.youtube.com"); // Funcion to print the commands' guidelines int startup(int op) { // Option 1: start if (op == 1) { cout << "\nRight wink\t - "; cout << app1name << endl; cout << "Left wink\t - "; cout << app2name << endl; cout << "Look right\t - "; cout << app3name << endl; cout << "Look left\t - Internet" << endl; cout << "\n To exit, raise your eyebrows once" << endl; }
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
18
Lourenço Barbosa de Castro 15-06-2012
// Option 2: internet if (op == 2) { cout << "\nRight wink\t - "; cout << web1name << endl; cout << "Left wink\t - "; cout << web2name << endl; cout << "Look right\t - "; cout << web3name << endl; cout << "Look left\t - "; cout << web4name << endl; cout << "\n To go back, raise your eyebrows once" << endl; } return 0; } // Funcion to output a "Starting.." string. Also prints out the guidelines again int starting(string name, string loc, int up) { cout << "\n Starting "; cout << name; cout << "...\n" << endl; system(loc.c_str()); startup(up); return 0; } // Internet related options int internet() { int EState = 0; EmoEngineEventHandle Event = EE_EmoEngineEventCreate(); unsigned int userID = 0; EmoStateHandle State = EE_EmoStateCreate(); cout << "\n Starting internet options\n" << endl; startup(2); while (!_kbhit()) { EState = EE_EngineGetNextEvent(Event); //If there are no errors detecting the EmoState if (EState == EDK_OK) { EE_Event_t eventType = EE_EmoEngineEventGetType(Event); EE_EmoEngineEventGetUserId(Event, &userID); EE_EmoEngineEventGetEmoState(Event, State); std::map<EE_ExpressivAlgo_t, float> expressivStates; // Detecting facial expressions and their intensity levels
EE_ExpressivAlgo_t upperFaceAction = ES_ExpressivGetUpperFaceAction(State);
Float upperFacePower = ES_ExpressivGetUpperFaceActionPower(State);
expressivStates[ upperFaceAction ] = upperFacePower; // If user raises brows, go back to main menu if (expressivStates[EXP_EYEBROW] > 0) { cout << endl; startup(1); return 0; }
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
19
Lourenço Barbosa de Castro 15-06-2012
// Starting web applications according to user expression if (ES_ExpressivIsRightWink(State))
starting(web1name, web1loc, 2); if (ES_ExpressivIsLeftWink(State))
starting(web2name, web2loc, 2); if (ES_ExpressivIsLookingRight(State))
starting(web3name, web3loc, 2); if (ES_ExpressivIsLookingLeft(State))
starting(web4name, web4loc, 2); } Sleep(1); } return 0; } int main(int argc, char** argv) { EmoEngineEventHandle Event = EE_EmoEngineEventCreate(); EmoStateHandle State = EE_EmoStateCreate(); unsigned int userID = 0; const unsigned short port = 1726; int option = 0; int EState = 0; string ip = string("127.0.0.1"); try { // Connecting to EmoComposer and printing basic instructions EE_EngineRemoteConnect(ip.c_str(), port); cout << "Connected to EmoComposer, press any key to terminate.\n" << endl; cout << "Welcome to EmoCmd. Please use the commands on the left" << endl; cout << "to run the options on the right.\n" << endl; startup(1); while (!_kbhit()) { // Log the current event EState = EE_EngineGetNextEvent(Event); // If there's a new event if (EState == EDK_OK) { // Detect the type of event EE_Event_t eventType = EE_EmoEngineEventGetType(Event); EE_EmoEngineEventGetUserId(Event, &userID); EE_EmoEngineEventGetEmoState(Event, State); // Detecting facial expressions and their
intensity levels std::map<EE_ExpressivAlgo_t, float> expressivStates;
EE_ExpressivAlgo_t upperFaceAction = ES_ExpressivGetUpperFaceAction(State); float upperFacePower = ES_ExpressivGetUpperFaceActionPower(State);
expressivStates[upperFaceAction] = upperFacePower; // If user raises brows, exit the application if (expressivStates[EXP_EYEBROW] > 0) { EE_EngineDisconnect(); EE_EmoStateFree(State); EE_EmoEngineEventFree(Event); return 0; }
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
20
Lourenço Barbosa de Castro 15-06-2012
// Starting applications according to user expression if (ES_ExpressivIsRightWink(State))
starting(app1name, app1loc, 1); if (ES_ExpressivIsLeftWink(State))
starting(app2name, app2loc, 1); if (ES_ExpressivIsLookingRight(State))
starting(app3name, app3loc, 1); // Start web applications interface if (ES_ExpressivIsLookingLeft(State)) internet(); } // If there's an error capturing the event else if (EState != EDK_NO_EVENT) { cout << "Internal error in Emotiv Engine" << endl; break; } // Runs the while loop every second Sleep(1); } } // Report if there is an error related to the EmoComposer connection catch (const std::exception& e) { std::cerr << e.what() << std::endl; cout << "Press any key to exit..." << endl; getchar(); } //Disconnect from EmoComposer and release the used variables EE_EngineDisconnect(); EE_EmoStateFree(State); EE_EmoEngineEventFree(Event); return 0; }
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
21
Lourenço Barbosa de Castro 15-06-2012
Anexo II - Configuração da aplicação EmoKey
Tabela 1 - Descrição dos ficheiros gerados pelo EmoKey
COMANDO VALOR DESCRIÇÃO
EmoMapping enabled [0 ou 1] Define se este comando está ativo ou não
Name Nome Nome que fica associado ao comando na janela
principal do EmoKey
Keys Teclas Caso se pretenda enviar uma mensagem, aqui
encontra-se o texto definido
sendOnce [0 ou 1] Define se o comando é enviado apenas uma vez, ou
sempre que a expressão for detetada
sendToFocus [0 ou 1] Define se o comando é enviado para a aplicação que
está em foco
targetApp Aplicação
alvo
Caso o parâmetro anterior seja 0 (zero), define aqui
qual a aplicação para onde enviar o comando
sendHotKeys [0 ou 1] Define se é enviada uma combinação de teclas de atalho
ctrlKey [0 ou 1] Envio da tecla Ctrl
altKey [0 ou 1] Envio da tecla Alt
shiftKey [0 ou 1] Envio da tecla Shift
winKey [0 ou 1] Envio da tecla Win
enterKey [0 ou 1] Caso tenha sido especificada uma mensagem, define se
é finalizada com um Enter ou não
hotKey ID Identificação da tecla a combinar com as teclas de
atalho anteriores
holdKey [0 ou 1] Mantém uma tecla primida, especificada em "keys"
holdTime Milisegundos Tempo em que as teclas especificadas anteriormente
devem permanecer primidas
triggerDelayTime Millisegundos Tempo de espera desde a deteção da expressão até ao
envio das teclas
player Número Especifica o EPOC que se pretende utilizar
Faculdade de Engenharia da Universidade do Porto Desenvolvimento de aplicações para interfaces cérebro-computador
22
Lourenço Barbosa de Castro 15-06-2012
mouseclickset 0 Define se são enviados cliques do rato
mousebutnum -1 Combinação de cliques a enviar
<EmoStateCondition> - Início da secção referente à condição para que os
comandos anteriores se realizem
enabled value [0 ou 1] Indica se esta condição se encontra ativa
action value Numérico Indica o tipo de ação que é detetado
value [0.0 até 1.0] Indica o valor mínimo que a expressão detetada tem de
apresentar para se satisfazer a condição
</EmoStateCondition> - Finaliza a secção da condição
</EmoMapping> - Finaliza a secção do comando
<EmoMapping enabled="1" name="Start menu" keys="" sendOnce="0"
sendToFocus="1" targetApp="" sendHotKeys="1" ctrlKey="1" altKey="0" shiftKey="0"
winKey="0" enterKey="0" hotKey="16777216" holdKey="0" holdTime="20"
triggerDelayTime="20" player="0" mouseclickset="0" mousebutnum="-1">
<EmoStateCondition>
<enabled value="1" />
<action value="4" />
<threshold type="double" value="0.7" />
<actionRule value="2" />
</EmoStateCondition>
Tabela 2 - Exemplo de um comando mapeado no EmoKey, que associa um movimento das sobrancelhas à abertura do menu iniciar.