Controlando um robô com o poder da mente

Como comentado nas conclusões do trabalho Approaching Gameplay Reactions with Patterns in Biometric and Visual Data, um dos sensores interessantes para ser testado na área de jogos seria um sensor neural de EEG (Eletroencefalografia).

Com a colaboração da área de Pesquisa e Desenvolvimento da TV Globo, o LUDES conseguiu emprestado um modelo Insight do Emotiv. O capacete, como descrito em https://www.emotiv.com/insight/, é um dispositivo de leitura cerebral de 5 canais, um modelo mais compacto que seu irmão Epoc +. Com o dispositivo em mãos, os alunos Igor Bicharra e Rubens Queiroz tiveram a missão de testá-lo controlando um robô, mais especificamente o Turtlebot3 da empresa ROBOTIS. O objetivo final seria avaliar a possibilidade de se criar um jogo tecnológico controlado pelo poder de concentração.

Para explicar rapidamente o trabalho, falemos inicialmente do input do sistema, o sensor EEG. O Emotiv Insight tem SDK para diversas linguagens de programação e pode ser usado para envio de comandos ou leitura de atributos psicológicos.

No caso do controle de um robô, foi necessário o treinamento de comandos mentais. Com o próprio software de painel de controle Emotiv Xavier ControlPanel é possível criar um perfil de usuário e salvar um treinamento de diversas ações mapeadas. Para isso, é necessário treinar a concentração em padrões de pensamento Neutro, Ação1, Ação2, etc. Um treinamento que se mostrou mais difícil do que o imaginado.

Com o perfil treinado para duas ações, criou-se uma pequena página web para exibir os dados lidos dos sensores. Na página pode-se visualizar os contatos dos sensores, a ação detectada atual e as métricas de performance psicológica.

As duas ações treinadas foram chamadas de “quente” e “frio”, pensando-se num jogo do tipo “está quente, está frio”.  O objetivo do jogador seria fazer com que o Turtlebot3, partindo de um determinado ponto inicial, chegasse até um “ponto objetivo” desviando de uma série de obstáculos presentes no espaço.

O Turtlebot3 é um robô móvel baseado em ROS (Robot Operating System), um framework flexível, de código aberto, para o desenvolvimento de softwares para robôs (http://www.ros.org).  O ROS utiliza, dentre outras formas de comunicação entre seus “processos”, uma “arquitetura” do tipo publisher-subscriber. Esta arquitetura possui três elementos básicos, que no ROS são assim denominados: nodes, topics e messages. Nodes são, basicamente, programas executáveis/interpretáveis, desenvolvidos em C++ ou Python, que geram e/ou coletam dados. Os nodes trocam dados uns com os outros por meio de mensagens publicadas em tópicos (topics). Um node pode publicar (publish) mensagens (messages) em tópicos e/ou se inscrever (subscribe) em tópicos para receber mensagens publicadas por outros nodes. Um node publisher não tem informação sobre qual/quais nodes utilizarão as mensagens publicadas por ele em um determinado tópico, e um node subscriber não sabe de qual/quais nodes se originam às mensagens que ele recebe do tópico/tópicos nos quais está inscrito.

Diagrama simplificado do processo de comunicação entre ROS nodes.

O Turtlebot3 possui uma coleção de nodes “nativos” para o controle de uma série de atuadores e aquisição de dados de uma diversidade de sensores, bem como uma coleção de nodes para a execução de uma variedade de tarefas como, por exemplo, a realização de SLAM (Simultaneous localization and mapping).

Para a realização de tarefas personalizadas, pode-se então desenvolver nodes que, por meio da arquitetura publisher-subscriber, lancem mão tanto das informações providas pelos nodes nativos do Turtlebot3 acerca dos dados gerados por seus sensores quanto controlem os atuadores do Turtlebot3 por meio de nodes já existentes para este fim.

Deste modo, para que o Turtlebot3 assumisse o comportamento desejado para a realização do jogo “está quente, está-frio”, foram desenvolvidos, com base em nodes já disponíveis no Turtlebot3, dois ROS nodes: um para controlar a movimentação do robô, a partir do recebimento de mensagens quente/frio, e outro responsável por obter (com base nos dados gerados pelo Emotiv) o tipo de temperatura a ser informada ao node de controle de movimentação e, a partir desse dado, publicar as mensagens quente/frio.

Diagrama simplificado dos nodes utilizados para o controle do Turtlebot3 por meio das mensagens quente/frio.

A comunicação interna entre o Emotiv Insight e o Turtlebot3, e suas respectivas interfaces, foi feita usando protocolo HTTP comum. O pequeno esquemático a seguir resume o sistema.

Após a realização de testes de ponta a ponta, pôde-se observar que o robô consegue responder de forma satisfatória, e com pouco atraso de resposta (menos de um segundo ), à variação dos comandos mentais. A maior dificuldade se encontra na parte da concentração e treinamento dos comandos, algo intrínseco à habilidade do jogador.

Teste de controle da movimentação do Turtlebot3 com o Emotiv Insight

No futuro pretende-se afinar os comandos e regras do jogo “está quente, está frio”, de forma a se testar de fato a viabilidade do jogo mental.