Desenvolvimento de aplicações para interfaces cérebro...

23
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

Transcript of Desenvolvimento de aplicações para interfaces cérebro...

Page 1: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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

Page 2: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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

Page 3: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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

Page 4: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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

Page 5: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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.

Page 6: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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

Page 7: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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-

Page 8: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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.

Page 9: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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

Page 10: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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.

Page 11: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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

Page 12: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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++.

Page 13: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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

Page 14: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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

Page 15: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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

Page 16: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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.

Page 17: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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.

Page 18: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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; }

Page 19: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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; }

Page 20: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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; }

Page 21: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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; }

Page 22: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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

Page 23: Desenvolvimento de aplicações para interfaces cérebro ...tavares/downloads/publications/relatorios/TP... · Emotiv Control Panel..... 4 2.1.1. Expressiv Suite ... bração foi

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.