-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathport-version.html
More file actions
147 lines (101 loc) · 24.5 KB
/
Copy pathport-version.html
File metadata and controls
147 lines (101 loc) · 24.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<div style="font-family:Georgia">
<h1 style="text-align:center">Roteiro de Teste para a Avaliação da Linguagem EvaML e do simulador EvaSIM</h1>
<hr />
<p><span style="color:#0000ff"><strong>TERMO DE CONSENTIMENTO LIVRE E ESCLARECIDO</strong></span></p>
<p>Universidade Federal Fluminense/IC - Instituto de Computação</p>
<p>Você está sendo convidado a participar de um estudo para avaliar a linguagem EvaML e o software simulador EvaSIM. Trata-se de uma pesquisa realizada pelo aluno de pós-graduação Marcelo Marques da Rocha, orientado pela professora Dra. Débora Christina Muchaluat Saade.</p>
<p>Se desejar continuar participando, continue a leitura e realize as atividades propostas. Muito obrigado! </p>
<hr />
<p align="justify">O robô <strong>EVA</strong> (Embodied Voice Assistant) é um robô social e foi desenvolvido originalmente por pesquisadores do CICESE (Centro de Investigación Científica y de Educación Superior de Ensenada), em Baja California no México. O robô EVA é uma plataforma de robótica <em>open-source</em> destinada a auxiliar como ferramenta de apoio à pesquisa em Interação Humano-Robô (IHR). A imagem do robô EVA pode ser vista na Figura 1.</p>
<br />
<div align="center">
<img src="imgs/eva_img.png" width="250" height="440" />
<div align="center">Figura 1: Robô EVA</div>
</div>
<br />
<p align="justify">O objetivo deste teste é a criação de uma sessão interativa para o robô EVA usando os elementos definidos na linguagem EvaML, baseada em XML. O processo de desenvolvimento dos scripts para o robô EVA será usado como objeto de avaliação da linguagem EvaML. O teste será dividido em 3 tarefas menores que utilizarão os elementos da linguagem de forma progressiva. Ao finalizar as 3 tarefas, a sessão interativa deve ser similar à disponível neste <a href="https://www.youtube.com/watch?v=uDkwUEX8IeA" target="_blank"><u>link </u></a>(idioma do vídeo: inglês). Antes de começar a executar as tarefas sugeridas, recomenda-se ler o <a href="https://github.com/midiacom/eva-robot/blob/master/EvaML-Reference-Manual/EvaML-Reference-Manual.pdf" target="_blank"><u>manual da linguagem EvaML</u></a> e instalar o parser EvaML e o simulador EvaSIM.</p>
<p>A seguir serão apresentados os passos para a configuração do ambiente adequado para o desenvolvimento do teste:</p>
<ol>
<li style="text-align:justify"><strong>IDE Visual Studio Code (Linux ou Windows)</strong></li>
<p>Você deve baixar e instalar a IDE Visual Studio Code a partir deste endereço: <a href="https://code.visualstudio.com/" target="_blank">https://code.visualstudio.com/</a>.</p>
<li><strong>XML Language Support by Red Hat instalado no VScode</strong></li>
<div align="justify"><p>A linguagem EvaML é uma linguagem baseada em XML e exige uma formatação adequada da sua estrutura, elementos e atributos. A utilização do VSCode com o plugin da Red Hat que dá suporte à linguagens baseadas em XML é uma ferramenta de apoio insdispensável para o correto desenvolvimento das tarefas.</p></div>
<div align="justify">
<p>A instalação é muito simples! A Figura 2, através das setas numeradas, indica os elementos da interface do VSCode que devem ser acessados durante o processo de instalação do plugin XML. Para iniciar a instalação, abra a visualização de "Extensões" clicando no ícone "Extensões" <strong>(1)</strong> na barra de atividades que fica na lateral esquerda do VSCode ou utilizando o atalho do teclado (Ctrl+Shift+X). Você verá uma lista das extensões mais populares do VSCode no <em>VSCode Marketplace</em>. Na barra de pesquisa <strong>(2)</strong>, digite <em>XML Language Suporte by Red Hat</em>. Para instalar a extensão, selecione-a na lista e clique no botão Instalar <strong>(3)</strong>.</p></div>
<br />
<div align="center">
<div align="center"><img src="imgs/xml_install.png" width="800" height="283" /></div>
<div align="center">Figura 2: Instalando o plugin XML no VSCode</div>
</div>
<br />
<div align="justify"><p>A partir deste momento o VSCode dará suporte à codificação da linguagem usando como base as regras básicas da linguagem XML e também com base no arquivo XML Schema que define a gramática da linguagem EvaML . Você terá suporte na definição da estrutura do documento, utilização correta dos elementos disponíveis em cada seção do documento e poderá utilizar o recurso de autocompletar do VSCode através do atalho do teclado (Ctrl+Barra de espaço) durante a entrada dos comandos e atributos da linguagem.</p></div>
<li><strong>Parser EvaML e o simulador EvaSIM</strong></li>
<div align="justify"><p>A linguagem EvaML é uma linguagem para o desenvolvimento de sessões interativas para o robô EVA. Como não é possível neste momento ter um robô físico montado para os testes da linguagem, o código escrito em EvaML será testado usando-se o simulador do robô EVA chamado EvaSIM. O EvaSIM, assim como o robô físico, não executa diretamente um código escrito na linguagem EvaML, o simulador é capaz de executar o código resultante do processo de parser da linguagem EvaML. O código do parser da linguagem se encontra no arquivo "eva_parser.py".</p></div>
<div align="justify"><p>Como dito anteriormente, o simulador EvaSIM é capaz de executar o código resultante do processo de parser da linguagem EvaML e é esse código que deve ser importado e executado no simulador .</p></div>
<div align="justify"><p>Para ter acesso ao simulador EvaSIM e ao parser EvaML baixe o arquivo <strong>zip</strong> na versão correta referente ao seu sistema operacional a partir deste <a href="https://github.com/midiacom/eva-robot/tree/master/EvaSIM%20Testing%20Version" target="_blank">link </a>. Você será direcionado a uma página contendo as instruções para o download, execução e o teste inicial do EvaSIM.</p></div>
<div align="justify">
<p>Para executar o parser EvaML você precisa ter o Python instalado na sua máquina junto com o módulo <em>xmlschema</em>. Para isso, siga os passos descritos a seguir:</p>
<ol>
<li>
<p align="justify">Caso seu sistema operacional seja o Windows, vá até a página de downloads e baixe a versão do Pyhton adequada ao seu sistema operacional através deste <a href="https://www.python.org/downloads/" target="_blank">link</a>. Clique no arquivo executável e siga o processo de instalação. Escolha a instalação customizável, como indicado na imagem à esquerda na Figura 3, e em seguida certifique-se que a opção <em>pip</em> esteja selecionada, como indicado na imagem mais à direita, ainda na Figura 3. Siga os diálogos apresentados e finalize o processo instalação do Python.</p></li>
<br />
<div align="center">
<img src="imgs/python_install.png" width="999" height="299" />
<div align="center">Figura 3: Instalando o Python no Windows</div>
<p align="justify"><strong>*</strong> No sistema Ubuntu Linux o Python já vem instalado por padrão sendo apenas necessário instalar o seu gerenciador de pacotes. Para isso, digite no seu terminal Linux o seguinte comando com permissões de administrador: <strong>apt install python3-pip.</strong></p>
<br />
</div>
<li>
<div align="justify">
Agora será preciso instalar os módulos Python <em>xmlschema </em>e<em> requests,</em> para isso, abra um <em>terminal</em> no seu sistema operacional (Windows ou Linux), digite e execute os seguintes comandos: <em><strong>pip install xmlschema</strong></em> (para instalar o módulo <em>xmlschema</em>) e <em><strong>pip install requests </strong></em>(para a instalação do módulo <em>requests</em>).</div>
</li>
</ol>
</ol>
<p align="justify">Para que a experiência no processo de desenvolvimento da tarefa seja a melhor possível, será apresentada a seguir uma sequência de passos que podem servir como um guia para a execução das tarefas. Nós partiremos do pressuposto que você já tem o ambiente de desenvolvimento corretamente configurado como indicado anteriormente.</p>
<ul>
<li>
<p align="justify">Você deve abrir o VSCode e no menu "Arquivo" clicar em importar "pasta". Em seguida vá até a pasta "eva_sim" e a selecione. O VSCode mostrará o conteúdo da pasta "eva_sim" com todos os seus arquivos. Caso você não esteja vendo a árvore do diretório no VSCode, use o atalho (Ctrl+Shift+E).</p>
</li>
<li>
<p align="justify">Observando os arquivos através do explorer do VSCode, você deve clicar no arquivo de template nomeado "<em>my_script_file.xml</em>". Esse arquivo contém uma estrutura básica do documento no padrão EvaML. É neste arquivo que você deve entrar o código referente a execução das tarefas propostas neste teste. <strong>Você deve aproveitar o recurso de autocompletar do VSCode!</strong> Ele o ajudará na utilização correta dos elementos da linguagem. Por exemplo, ao digitar o caractere "<" você verá uma lista dos elementos da linguagem que podem ou devem ser utilizados em cada seção do seu documento EvaML. Da mesma maneira, ao entrar com um atributo também será apresentada uma lista com as opções para cada atributo. Quando há algum erro na estrutura do documento ou há algum erro de digitação que comprometa a boa formação do documento, a IDE procura indicar, da maneira mais precisa possível, em que lugar do documento se encontra o erro. Ela faz isso, geralmente, sublinhando o local onde o erro está ocorrendo com a cor vermelha.</span></p>
</li>
<li>
<p align="justify">Para testar o código que você escreveu, como já foi dito, será utilizado o simulador EvaSIM, mas para isso, é preciso transformar o código do script que você escreveu em um código compatível com o simulador. Esse processo é feito utilizando-se o parser EvaML. Para ter acesso à linha de comando crie um novo "terminal" no VSCode através do menu "Terminal" ou através do atalho (Ctrl+Shift+'). Um terminal se abrirá na parte inferior da IDE e já estará no diretório de trabalho, ou seja, no diretório referente à pasta "eva_sim". Para executar o parser do código digite no terminal o comando "<em>python eva_parser.py my_script_file.xml -c</em>". Se o seu código estiver no padrão da linguagem EvaML, você verá no terminal, a indicação de que as 4 etapas do parsing executaram corretamente e o parsing terá criado o arquivo "<em>script01_EvaML.xml</em>". É este o arquivo que deverá ser importado no EvaSIM na próxima etapa.</p>
</li>
<li style="text-align:justify">
<p align="justify">Durante a etapa de configuração do ambiente adequado (como foi sugerido) você deve ter baixado e executado o simulador EvaSIM. Você também deve ter ativado o simulador clicando no botão "PowerOn" no menu de botões do mesmo. Para que o simulador execute o código gerado pelo parsing, você precisa importá-lo no EvaSIM. Para isso, você deve cliquar no botão "Import File" no menu de botões do simulador e selecionar, através da janela de diálogo de abertura de arquivo, o arquivo "<em>script01_EvaML.xml".</em></p>
</li>
<li style="text-align:justify">
<p align="justify">O próximo passo é rodar o script carregado na memória do EvaSIM e isso deve ser feito clicando no botão "Run" do simulador. Durante a execução do script, observe as mensagens no emulador de terminal do EvaSIM, elas podem ajudá-lo na verificação da lógica do seu script. Acompanhe também as tabelas de memória, que ficam à direita na interface do simulador, nelas você pode visualizar o conteúdo da memória do EvaSIM. O simulador foi programado para emitir algumas mensagens de alerta e de erro em tempo de execução. Caso ocorra algum problema na execução do seu código, volte para o VSCode e procure corrigi-lo, salvando-o e voltando novamente aos processos de parsing, importação e execução do script.</p>
</li>
</ul>
<p>Seguindo as dicas indicadas até aqui você será capaz de executar as tarefas propostas a seguir. Boa sorte!</p>
<br /><br />
<h2 style="text-align:center"><u><strong>Tarefa 1</strong></u></h2>
<p align="justify">Desenvolva uma sessão para o robô EVA que faça ele se apresentar para o usuário. Esta sessão deve usar elementos de luz e som, deve utilizar o display do robô para expressar suas emoções através do olhar e deve utilizar o recurso de <em>Text-To-Speech</em>(TTS) do robô, permitindo que o robô fale. Marque o tempo que levará para executar esta tarefa.</p>
<p align="justify">Primeiro, defina o nome do script através do atributo <em>name </em>do elemento <span style="color:#9b59b6"><evaml></span>. Você pode manter o mesmo nome que já veio dentro do template. Em seguida, você deve definir a voz do robô usando o comando <span style="color:#9b59b6"><voice></span>. Para ter acesso a algumas opções de vozes disponíveis, consulte a Tabela 2.3, na Seção 2.3.1 do manual. Certifique-se de ativar os efeitos de luz e áudio na seção <span style="color:#9b59b6"><settings></span><span style="color:#000000">. A sequência de ações a serem executadas pelo robô é a seguinte.</span></span></span></p>
<p align="justify">Usando o comando <span style="color:#9b59b6"><evaEmotion></span>, faça com que o olhar do robô fique com a expressão neutra. Com o comando <span style="color:#9b59b6"><light></span>, faça com que o robô acenda a luz na cor branca. Vá até a pasta “sonidos”, que se encontra no diretório do parser EvaML e escolha um arquivo de áudio para ser tocado pelo robô. Utilizando o comando <span style="color:#9b59b6"><audio> </span>toque o arquivo de áudio escolhido como um som de abertura, antes do texto de apresentação do robô. Lembre-se de usar o atributo <em>block=”true”</em> para fazer com que o comando seguinte espere pelo fim do play do arquivo de áudio.</p>
<p align="justify">Agora, faça com que o robô acenda a luz amarela e fique com a expressão de alegria. Em seguida, o robô deve se apresentar falando um texto. Esse texto deve conter 3 frases distintas, que serão selecionadas aleatoriamente a cada execução do script. Para isso, use o caractere “/” como separador das frases. Agora, acenda a luz rosa, faça o robô ficar com o olhar neutro e finalize o script, fazendo com que a interação fique em pausa por 2 segundos, para isso, use o comando <span style="color:#9b59b6"><wait></span>. Salve o script, execute o parser EvaML, importe e rode o código no simulador EvaSIM. Fique atento pois o atributo <em>name </em>do elemento raiz <span style="color:#9b59b6"><evaml> </span>do arquivo de template é “<em>script01”</em>, portanto, após a execução do parser será gerado o arquivo “<em>script01_EvaML.xml</em>” e este é o arquivo que deve ser importado no simulador. Se o script não executar como planejado no EvaSIM, revise o seu código XML para resolver qualquer problema. Salve o código XML final da tarefa 1, pois será necessário utilizá-lo para a tarefa 2. Lembre-se de marcar o tempo que levará para executar esta tarefa.</p>
<br /><br />
<h2 style="text-align:center"><strong><u>Tarefa 2</u></strong></h2>
<p style="text-align:justify">Dando continuidade ao script criado na tarefa 1, o objetivo da tarefa 2 é fazer com que o robô interaja com o usuário via voz para obter o seu nome e perguntar se ele deseja jogar um jogo. Marque o tempo que levará para executar esta tarefa.</p>
<p style="text-align:justify">Primeiro, o robô deverá obter o nome do usuário. Para isso ele deve fazer a pergunta falando e em seguida obter a resposta do usuário. Em seguida, o robô deve saudar o usuário pelo nome obtido anteriormente e dizer que vai apresentar suas emoções. O robô deverá apresentar suas emoções com o olhar, seguido de uma descrição verbal da emoção apresentada. Apresente as 3 emoções (alegria, tristeza e raiva). Após a apresentação das 3 emoções faça com que o olhar do robô fique com expressão neutra.</p>
<p style="text-align:justify">Vamos, ainda nesta tarefa, fazer a introdução do “Jogo da Imitação”, um Jogo Sério que usa a capacidade de reconhecimento de expressões faciais do EVA. Este jogo será implementado na tarefa 3.</p>
<p style="text-align:justify">Seguindo com a codificação da sequência de ações, faça com que o robô pergunte ao usuário se ele quer jogar o Jogo da Imitação. A resposta deve ser <em>sim </em>ou <em>não</em>. Obtenha a resposta do usuário. Usando o comando <span style="color:#9b59b6"><switch</span><span style="color:#3498db"> var</span>=”$”</span><span style="color:#9b59b6">></span>, insira dois comandos <span style="color:#9b59b6"><case></span> para tratar as respostas <em>sim/não</em></span> do usuário. Se o usuário responder </span><em>sim, </em>faça o robô expressar um olhar de alegria e falar uma frase de entusiasmo por conta do usuário ter aceitado jogar o jogo. Caso o usuário diga <em>não</em>, faça o robô expressar um olhar de tristeza despedindo-se do usuário, falando uma frase lamentando o ocorrido e apagando a luz. Após a fala, ainda no bloco <span style="color:#9b59b6"><case></span>, que trata a resposta <em>não</em>, insira o comando que interrompe a execução do script. Você pode fechar o bloco <span style="color:#9b59b6"><switch></span>, salvar o código e executar o parser EvaML e rodar no simulador EvaSIM. Se tudo estiver certo, você pode partir para a tarefa 3, caso contrário, revise o seu código XML para resolver qualquer problema. Salve o código XML final da tarefa 2, pois será necessário utilizá-lo para a tarefa 3. Lembre-se de marcar o tempo que levará para executar esta tarefa.</p>
<br />
<p><strong>Observação 1</strong>: Para entender melhor a utilização do caractere <strong>$</strong>, veja a Seção 2.3.4 do manual e observe a Figura 2.2.</p>
<p><strong>Observação 2</strong>: No EvaSIM, use o emulador de terminal para acompanhar as ações sendo executadas pelo “robô”, e verifique as tabelas de variáveis para conferir os valores de retorno dos comandos <span style="color:#9b59b6"><random></span> e <span style="color:#9b59b6"><listen> </span>que podem ser referenciados utilizando-se o caractere <strong>$</strong>.</p>
<br /><br />
<h2 style="text-align:center"><u><strong>Tarefa 3</strong></u></h2>
<p style="text-align:justify">A última tarefa implementa o Jogo da Imitação. O jogo deverá funcionar da seguinte maneira. O robô deve explicar ao usuário que irá apresentar algumas emoções. Ao todo, serão 3 emoções apresentadas (tristeza, alegria ou raiva) e elas devem ser apresentadas <em>aleatoriamente</em>. Para as emoções de tristeza, alegria e raiva, acenda a lâmpada nas cores azul, verde e vermelha, respectivamente. Em seguida, o robô deve <u>pedir ao usuário para imitá-lo. O robô, então, deve detectar a expressão facial do usuário </u>e verificar se o usuário conseguiu imitá-lo. Este processo deve ser repetido 3 vezes e, ao final, o robô deve dizer quantas vezes o usuário imitou sua expressão facial corretamente. Marque o tempo que levará para executar esta tarefa.</p>
<p style="text-align:justify">Para detectar a expressão facial do usuário, use o comando <span style="color:#9b59b6"><userEmotion></span>. Caso o usuário tenha imitado corretamente, <u>o robô deve expressar alegria, falar uma frase de congratulação e um ponto deve ser adicionado ao <em>score </em>do jogo</u>. No caso do usuário não conseguir imitar o robô, o EVA deve <u>expressar tristeza e falar uma frase dizendo que o usuário errou</u>. Em seguida, o robô reinicia o processo, apresentando outra emoção selecionada aleatoriamente. Ao todo, devem ser apresentadas 3 emoções, ou seja, o processo se repete 3 vezes. Após as 3 rodadas de emoções, o robô deve expressar alegria, apresentar (falando) o <em>score </em>do jogo e por fim, falar um texto se despedindo do usuário. O nome do usuário, obtido na tarefa 2, deve ser citado no texto. Para isso use o caractere $ seguido do índice que pode acessar o segundo elemento armazenado na memória do EVA.</p>
<p style="text-align:justify">Observe que duas variáveis devem ser criadas, a primeira deve conter o <em>score</em> do jogo. A segunda deve controlar o número de rodadas do jogo. Fique atento aos trechos de códigos que podem se repetir nos 3 fluxos aleatórios. Você pode definir algumas <em>macros</em> que podem, além de reduzir a quantidade de código digitado, deixar o script mais legível. As partes do texto sublinhadas indicam as sequências de ações que podem ser definidas em 3 macros.</p>
<p style="text-align:justify">Após a finalização da codificação da tarefa em XML, execute o parser EvaML, importe o código no simulador EvaSIM e verifique se o código se comporta como o esperado. Se o script não executar como planejado no EvaSIM, revise o seu código XML para resolver qualquer problema. Salve o código XML final da tarefa 3, pois será necessário fazer upload deste código posteriormente. Lembre-se de marcar o tempo que levará para executar esta tarefa.</p>
<br />
<p><strong>Observação 3</strong>: O arquivo que deve ser enviado é o arquivo "<em>my_script_file.xml</em>".</p>
<br /><br />
<h1 style="text-align:center"><strong><u>Questionário de Avaliação</u></strong></h1>
<p style="text-align:justify">Ao finalizar as 3 tarefas, responda o questionário sobre a linguagem EvaML e o simulador EvaSIM disponível em: <a href="https://forms.gle/zg3fBnhEbtWFZjnF8" target="_blank"><u>EvaML e EvaSIM - Teste de Usabilidade</u></a>
<br /><br /><br /><br />
<p style="text-align:center"><strong>Muito obrigado por participar do experimento!</strong></p>
</div>