Você está na página 1de 37

Sua Mente no Controle

Alessandro de Oliveira Faria cabelo@opensuse.org

Apresentao
Alessandro de Oliveira Faria (A.K.A. Cabelo) 40 anos Desde 12 anos no mercado de tecnologia.

Pesquisador e Consultor em Biometria Facial; 102 Artigos publicados na internet (Viva O Linux e outros); Mantenedor de biblioteca de vdeo captura Linux e mais 12 projetos; Embaixador openSUSE na Amrica Latina; Experincia com Viso Computacional (openCV e GPU); 40 Palestra ministrada sobre tecnologia;

Interfaces Cerebrais
A rea da computao que estuda como interagimos com o computador se chama HCI (Human Computer Interaction) e possvel notar que os mais variados tipos de dispositivos so estudados devido grande criatividade dos pesquisadores da rea. Os dispositivos que permitem a interface direta com o crebro (BCI Brain Controlled Interface), vm ganhando muito destaque atualmente, especialmente os no invasivos, ou seja, aqueles que no requerem a colocao cirrgica de eletrodos.

Ondas Cerebrais
A eletroencefalografia(EEG) o estudo grfico das tenses medidas a partir da superfcie do couro cabeludo de um sujeito. As principais utilizaes desse tipo de medio na identificao de doenas como epilepsias por apresentarem irregularidades caractersticas no registro grfico dessas tenses. Contudo, vrios grupos de pesquisas ao redor do mundo esto dando novas utilidades a esse tipo de tecnologia como em Interfaces Crebro-Mquina e em Neurofeedback, utilizado em tratamentos de doenas como a prpria epilepsia.

Estados: Atividades eltricas

Estado Beta: Baixa amplitude e alta frequncia, 14 a 30 ondas/segundos (ativo) Estado Alfa: Baixa amplitude, 8 a 13 ondas/segundos (relaxada) Estado Teta: Baixa mdia amplitude, 4 a 7 ondas/segundos (sonolenta) Estado Delta: Baixa amplitude e baixa frequncia, 3 ondas/segundos (sono profundo) Ainda no analisado o REM (Estgio do sono)

Aplicabilidades

Aplicabilidades

Aplicabilidades

NeuroSky

Preo: $ 99,00 Interface : USB Wireless Plataforma : Windows, Mac, iOS e Android. SDK: Gratuito Site: http://www.neurosky.com/

PLXWave

Preo: $ 99,99 Interface : USB Wireless/Bluetooth Plataforma : Windows, Mac, iOS, Android, Window Mobile e Blackberry. SDK: Gratuito Site: www.plxdevices.com/plxwave/

Emotiv EPOC

Preo: $ 299,00 Interface : USB Emotiv Bluetooth Plataforma : Windows, Mac. SDK: $ 500,00 ~ $ 7.500,00 14 Sensores Site: www.emotiv.com

Emotiv EPOC

Developer Edition Research Edition Education Edition Enterprise Edition Enterprise Plus Edition

Emokit Alternativas de cdigo aberto.

Emokit Alternativas de cdigo aberto.


Link: https://github.com/qdot/emokit

Linguagens C e Python Windows, Linux e Mac


Win32 HID calls LibUSB 1.0

OpenVibe.
Link: http://openvibe.inria.fr/

Windows, Linux e Mac Software que possibilita acompanha e controlar a atividade cerebral eltrica oscilatria opensource.

Emotiv EPOC Sobre o equipamento.

Emotiv EPOC um capacete (headset) com diversos sensores (14) que permitem a leitura e interpretao de ondas celebrais de forma no invasiva. A colocao do capacete no muito incmoda e depois de alguns minutos bem fcil se acostumar com ele. No devemos desprezar a resistncia capilar. No h nenhum tipo de sensao adicional, alm da pequena presso que os pontos de contato fazem na regio de contato. E no, ele no causa cncer ou qualquer tipo de doena mental.

Emotiv EPOC Sobre o equipamento.


Os eletrodos posicionados em AF3, F7,F3, FC5,T7, P7, O1, O2, P8,T8, FC6, F4, F8, AF4. Ou seja o Emotiv utiliza as posies pr-definidas do Sistema internacional 10-20 sobre o couro cabeludo do usurio.

Emotiv EPOC Renu Sensitive.


Soluo lquida para hidratar os feltro dos sensores.

Emotiv EPOC Requisitos

2 equipamentos 2.4 GHz Intel Pentium 4 Microsoft Windows XP SP2 1GB RAM, 50 MB (HD). Uma ou duas portas USB 2.0 desocupadas. Bateria interna com autonomia de 12 horas. Carga de 10% a cada 15 minutos.

Emotiv EPOC Painel de Status.

Emotiv EPOC Controle de Expresso.

Emotiv EPOC Controle Afetivo - emoes.

Emotiv EPOC Controle Afetivo - emoes.


O painel emocional reporta em tempo real as mudanas das emoes do usurio. A excitao uma percepo ou sensao lgica, caracterizada pela ativao do sistema nervoso o que resulta e um srie de respostas fisiolgicas. (incluindo dilatao da pupila, olho arregalado, estimulao da glndula de suor, frequncia cardaca e tenso muscular, alterao no sangue, inibio de apetite). Causas: Agitao, nervosismo e claro excitao. O engajamento acontece por excitao fisiolgica, as emoes relacionadas so: Estado de alerta, vigilncia, concentrao, estimulao e interesse.

Emotiv EPOC Giroscpio.

Emotiv EPOC Controle Cognitivo.

Emotiv EPOC Controle Cognitivo.


A deteco cognitiva avalia as atividades das ondas cerebrais do usurio em tempo real para reconhecer a inteno consciente para realizar a respectiva ao. Como exibido no slide anterior, um cubo 3D utilizado para apresentar a ao do usurio. A barra de energia quantifica o poder e/ou exatido da ao. Durante o treino, muita concentrao necessria. Pois o mesmo analisa as ondas cerebrais e cria uma assinatura personalizada que corresponde a uma determinada ao.

Emotiv EPOC Controle Cognitivo.


Ateno: Quanto mais treinamento, melhores so os resultados. Porm que tornar dificil retornar ao estado NEUTRO, deve-se relaxar, mudar o foco para longe da tela. Logo um treino depende da consistente e do foco.

Emotiv EPOC Ferramenta EmoKey.


Esta ferramenta permite vincular os resultados da deteco da onda em simulao do pressionamento de teclas pr-definidas. Assim permitindo: Fcil integrao Resultados rpidos

Emotiv EPOC Ferramenta EmoComposer.


Esta ferramenta permite simular o hardware, inclusive executar scripts. Descartando a necessidade do equipamento fsico instalado.

Emotiv EPOC SDK


A API do Emotiv prover exemplo em C/C++, C# e Java. O EmoEngine a abstrao lgica da funcionalidade do Emotiv.

Emotiv EPOC SDK


Existem 3 opes para conectar uma instncia em aplicativos: EE_EngineRemoteConnect()

SDK Lite EmoComposer : Porta 1726 Painel de Controle : Porta 3008

EE_EngineConnect()

int main(int argc, char * argv[]) { EmoEngineEventHandle eEvent = EE_EmoEngineEventCreate(); EmoStateHandle eState1 = EE_EmoStateCreate(); EmoStateHandle eState2 = EE_EmoStateCreate(); if(EE_EngineRemoteConnect(input.c_str(), controlPort) != EDK_OK) { std::string errMsg = "Cannot connect to EmotivEPOC!"; throw std::exception(errMsg.c_str()); } while(end>0) { state = EE_EngineGetNextEvent(eEvent); if (state == EDK_OK) { EE_Event_t eventType = EE_EmoEngineEventGetType(eEvent); if (eventType == EE_EmoStateUpdated) { EE_EmoEngineEventGetEmoState(eEvent, eState2); faceSame = ES_ExpressivEqual(eState1,eState2); //Expresso moodSame = ES_AffectivEqual(eState1,eState2); //Emocional ES_Copy(eState1, eState2); if(!faceSame) expEvent(eState1); if(!moodSame) affEvent(eState2); cogEvent(eState1); } } }

voidaffEvent(EmoStateHandlestate) { floatsavedEng=engaged_bored, SavedExcite=excitement, SavedExciteLT=excitementLT, savedMed =meditation, savedFrust=frustration; engaged_bored=ES_AffectivGetEngagementBoredomScore(state); excitement=ES_AffectivGetExcitementShortTermScore(state); excitementLT=ES_AffectivGetExcitementLongTermScore(state); meditation=ES_AffectivGetMeditationScore(state); frustration=ES_AffectivGetFrustrationScore(state); if(savedEng!=engaged_bored){ cout<<"AFF_ENGAGEMENT_BOREDOM"<<(float)engaged_bored<<endl; }if(savedExcite!=excitement){ cout<<"AFF_EXCITEMENT"<<(float)excitement<<endl; }if(savedExciteLT!=excitementLT){ cout<<"AFF_EXCITEMENT_LT"<<(float)excitementLT<<endl; }if(savedMed!=meditation){ cout<<"AFF_MEDITATION"<<(float)meditation<<endl; }if(savedFrust!=frustration){ cout<<"AFF_FRUSTRATION"<<(float)frustration<<endl; }

voidexpEvent(EmoStateHandlestate) { //savepreviousvariables floatsavedLeft=leftLid; floatsavedRight=rightLid; floatsavedX=x; floatsavedY=y; EE_ExpressivAlgo_tsavedLow=actionLow; EE_ExpressivAlgo_tsavedHigh=actionHigh; ES_ExpressivGetEyelidState(state,&leftLid,&rightLid); ES_ExpressivGetEyeLocation(state,&x,&y); actionLow=ES_ExpressivGetLowerFaceAction(state); actionHigh=ES_ExpressivGetUpperFaceAction(state); powerLow=ES_ExpressivGetLowerFaceActionPower(state); powerHigh=ES_ExpressivGetUpperFaceActionPower(state);

if(leftLid!=rightLid){ if(savedLeft!=leftLid)cout<<"EXP_WINK_LEFT"<<(float)leftLid<<endl; if(savedRight!=rightLid)cout<<"EXP_WINK_RIGHT"<<(float)rightLid<<endl; } elsecout<<"EXP_BLINK"<<(float)rightLid<<endl; if(savedX!=x) cout<<"EXP_HORIEYE"<<(float)x<<endl; if(savedY!=y) cout<<"EXP_VERTEYE"<<(float)y<<endl; switch(actionLow) { caseEXP_SMILE: cout<<"EXP_SMILE"<<endl; break; caseEXP_CLENCH: cout<<"EXP_CLENCH"<<endl; break; caseEXP_LAUGH: cout<<"EXP_LAUGH"<<endl; break; caseEXP_SMIRK_LEFT: cout<<"EXP_SMIRK_LEFT"<<endl; break; caseEXP_SMIRK_RIGHT: cout<<"EXP_SMIRK_RIGHT"<<endl; break; };

voidcogEvent(EmoStateHandlestate){ EE_CognitivAction_tactionType=ES_CognitivGetCurrentAction(state); floatpower=ES_CognitivGetCurrentActionPower(state); if(power!=0) { switch(actionType) { case(COG_NEUTRAL): cout<<"COG_NEUTRAL"<<endl; break; case(COG_PUSH): cout<<"COG_PUSH"<<endl; break; case(COG_PULL): cout<<"COG_PULL"<<endl; break; case(COG_DISAPPEAR): cout<<"COG_DISAPPEAR"<<endl; break; };

Obrigado! cabelo@opensuse.org