SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
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 1nou-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 2gine 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 3relativos 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 4dor, 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 5padrõ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 6combinaçõ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 6da 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 7açã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 8que 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 9iniciadas, 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)iTunesiTunes.exe""); 
string app2name = string("Speech Recognition"); 
string app2loc = string("%windir%SpeechCommonsapisvr.exe -SpeechUX"); 
string app3name = string("Virtual Keyboard"); 
string app3loc = string("%windir%system32osk.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 winkt - "; 
cout << app1name << endl; 
cout << "Left winkt - "; 
cout << app2name << endl; 
cout << "Look rightt - "; 
cout << app3name << endl; 
cout << "Look leftt - 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 winkt - "; 
cout << web1name << endl; 
cout << "Left winkt - "; 
cout << web2name << endl; 
cout << "Look rightt - "; 
cout << web3name << endl; 
cout << "Look leftt - "; 
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 optionsn" << 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.

Weitere ähnliche Inhalte

Ähnlich wie Tp lourenco castro

Apostila informática básica e introdução à internet
Apostila informática básica e introdução à internetApostila informática básica e introdução à internet
Apostila informática básica e introdução à internet
Budu Serra
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16
Gabriel Lima
 
Apostila de Informatica
Apostila de InformaticaApostila de Informatica
Apostila de Informatica
petichs
 
Arquitetura Interna do Computador
Arquitetura Interna do ComputadorArquitetura Interna do Computador
Arquitetura Interna do Computador
Sara Gonçalves
 
Tcc magno ronan ritzmann
Tcc magno ronan ritzmannTcc magno ronan ritzmann
Tcc magno ronan ritzmann
Magno Ritzmann
 
Apostila 130227111109-phpapp02
Apostila 130227111109-phpapp02Apostila 130227111109-phpapp02
Apostila 130227111109-phpapp02
Jadiel Mendes
 

Ähnlich wie Tp lourenco castro (20)

Desenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de MandiritubaDesenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de Mandirituba
 
Apostilaprogramao 120512152026-phpapp02
Apostilaprogramao 120512152026-phpapp02Apostilaprogramao 120512152026-phpapp02
Apostilaprogramao 120512152026-phpapp02
 
Relatório de estágio
Relatório de estágioRelatório de estágio
Relatório de estágio
 
Plano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SWPlano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SW
 
Apostila informática básica e introdução à internet
Apostila informática básica e introdução à internetApostila informática básica e introdução à internet
Apostila informática básica e introdução à internet
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16
 
Apostila de Informatica
Apostila de InformaticaApostila de Informatica
Apostila de Informatica
 
Sistemas Embarcados (1).pptx
Sistemas Embarcados (1).pptxSistemas Embarcados (1).pptx
Sistemas Embarcados (1).pptx
 
Arquitetura Interna do Computador
Arquitetura Interna do ComputadorArquitetura Interna do Computador
Arquitetura Interna do Computador
 
Apostila impress
Apostila impressApostila impress
Apostila impress
 
Apostila impress
Apostila impressApostila impress
Apostila impress
 
Montagen pc
Montagen pcMontagen pc
Montagen pc
 
Plano de Projeto de Software
Plano de Projeto de SoftwarePlano de Projeto de Software
Plano de Projeto de Software
 
Tcc magno ronan ritzmann
Tcc magno ronan ritzmannTcc magno ronan ritzmann
Tcc magno ronan ritzmann
 
Informática Windows XP
Informática Windows XPInformática Windows XP
Informática Windows XP
 
Apostila informática
Apostila informáticaApostila informática
Apostila informática
 
Apostila infomatica windows xp
Apostila infomatica windows xpApostila infomatica windows xp
Apostila infomatica windows xp
 
Apostila 130227111109-phpapp02
Apostila 130227111109-phpapp02Apostila 130227111109-phpapp02
Apostila 130227111109-phpapp02
 
apostila informatica
apostila informaticaapostila informatica
apostila informatica
 
Capitulo1
Capitulo1Capitulo1
Capitulo1
 

Tp lourenco castro

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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 1nou-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
  • 5. 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 2gine 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 3relativos 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.
  • 6. 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
  • 7. 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 4dor, 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 5padrõ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-
  • 8. 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.
  • 9. 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 6combinaçõ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 6da 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
  • 10. 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 7açã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.
  • 11. 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
  • 12. 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 8que 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 9iniciadas, 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++.
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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.
  • 17. 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.
  • 18. 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)iTunesiTunes.exe""); string app2name = string("Speech Recognition"); string app2loc = string("%windir%SpeechCommonsapisvr.exe -SpeechUX"); string app3name = string("Virtual Keyboard"); string app3loc = string("%windir%system32osk.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 winkt - "; cout << app1name << endl; cout << "Left winkt - "; cout << app2name << endl; cout << "Look rightt - "; cout << app3name << endl; cout << "Look leftt - Internet" << endl; cout << "n To exit, raise your eyebrows once" << endl; }
  • 19. 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 winkt - "; cout << web1name << endl; cout << "Left winkt - "; cout << web2name << endl; cout << "Look rightt - "; cout << web3name << endl; cout << "Look leftt - "; 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 optionsn" << 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; }
  • 20. 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; }
  • 21. 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; }
  • 22. 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
  • 23. 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.