• Nenhum resultado encontrado

3.2 Ambiente de Desenvolvimento para Robótica Web

3.2.1 Mindstorms Internet Control Environment

Este ambiente de desenvolvimento web proposto por Garrett & Thornton (2005), visa solucionar o problema de que nem todo aluno possui a capacidade de ter adquirir um robô Lego Mindstorms NXT [LEGO 2011], com custo aproximado de U$ 200,00. Este am- biente permite que o usuário programe remotamente robôs Lego e observe os resultados através de uma webcam.

A arquitetura proposta viabiliza a transmissão de um código desenvolvido em NQC [Baum & Hansen 2003] - Not Quite C - no ambiente ao robô, transmissão das imagens do robô real e chat entre usuários ativos. É necessária apenas o uso de um navegador com java instalado e ativo e acesso a porta 6620. O servidor é o responsável por intermediar a compilação do código NQC, transmitir e executar o código no robô.

O ambiente apresentado na Figura 3.4 possui três telas principais, sendo a tela repre- sentada na Figura 3.4(a) para análise do problema e descrição do robô a ser programado, a Figura 3.4(b) apresenta a tela de programação e compilação e a tela apresentada na Fi- gura 3.4(c) destinada para visualização da execução do programa desenvolvido no robô remoto.

3.2.2

ADWN

Ambiente de desenvolvimento web implementado por [Aroca, Barros, Burlamaqui & Gonçalves 2012] para programação de robôs N-Bot. É uma solução em código aberto desenvolvida para dispositivos móveis e computadores tradicionais que dispensa a instala- ção e configuração de qualquer programa, podendo ser acessada por qualquer dispositivo que possua acesso a um navegador conectado a Internet. Surgiu com a proposta de ser uma plataforma simples e intuitiva para iniciantes e ser um ferramenta poderosa e flexível para usuários experientes.

3.2. AMBIENTE DE DESENVOLVIMENTO PARA ROBÓTICA WEB 23

(a) Análise (b) Programação

(c) Execução

Figura 3.4: Mindstorms Internet Control Environment - MICE

Para realizar a programação de robôs N-Bot, o usuário precisa acessar uma página web que oferecerá opção de programação em blocos, textual ou híbrida. Um grande diferen- cial deste ambiente é que toda a implementação utilizou JavaScript, logo não dependerá de servidor, sendo toda a execução efetuada no navegador local. Além disso é possivel salvar a página web para programação, não sendo mais necessária que o dispositivo esteja conectado com a Internet para seu funcionamento. Após a criação do programa ele é exe- cutado pelo próprio navegador, sendo então gerados tons de audio que serão decodificados pelos circuitos do robô.

O ambiente de desenvolvimento ADWN possui código aberto e pode ser encontrado on-line no endereço http://www.natalnet.br/∼aroca/N-Bot/html/beta/natalnet/. A Figura 3.5 apresenta o ambiente de desenvolvimento ADWN, podemos observar que na lateral direita é destinada para programação gráfica a partir do encaixe de blocos textuais, já na lateral esquerda a programação textual pode ser efetuada diretamente e também pode ser visualizado o código gerado a partir dos blocos gráficos. No mesmo ambiente é possível colocar o programa gerado em funcionamento.

24 CAPÍTULO 3. ESTADO DA ARTE

Figura 3.5: ADWN rodando em um navegador web

3.3

Análise Comparativa

Nas seções anteriores apresentamos alguns ambientes para programação utilizados em robótica, tanto livres quanto comerciais. Vimos em nossa pesquisa que existem diver- sos outros ambientes de uso local, porém nos atemos para os mais utilizados no Brasil, sabemos que existem diversas outras linguagens de programação e que, possuindo o com- pilador específico para ela, qualquer editor de texto pode ser utilizado como um ambiente de desenvolvimento.

Após listar os ambientes tanto web quanto desktop com suas características e funci- onalidades, constatamos que apesar de alguns possuírem boas funcionalidades não en- contradas no nosso trabalho, nenhum deles se assemelha a proposta deste trabalho que é o desenvolvimento de um ambiente web que se configure para realizar a programação, compilação e envio para qualquer dispositivo robótico.

Na Tabela 3.1 apresentamos uma análise comparativa entre os ambientes de desenvol- vimento apresentados na Seção 3.1 e na Tabela 3.2 é realizada uma análise comparativa entre os dois ambientes de desenvolvimento web apresentados na Seção 3.2. Nas tabelas, nos referenciaremos ao software Lego Mindstorms por Lego, e ao Microsoft Robotics Studio por MRS. Cada ponto analisado na tabela foi escolhido baseando-se nos conceitos de programação, robótica e requisitos necessários.

3.3. ANÁLISE COMPARATIVA 25

RobotC RobobEduc Lego MRS Legal Linguagens RobotC R-Educ, NXC, CSS LabView Visual C#, Basic e Studio Legal Hardwares Vex, Arduino, NXT, RCX NXT, RCX, H-Educ NXT Fabricantes parceiros PNCA Entrada de dados textual grafica e textual grafica textual textual

Faixa etaria 12 8 10 15 12

Envio integrado Sim Sim Sim Sim Sim

Instalação necessária Sim Sim Sim Sim Sim

Tabela 3.1: Análise comparativa entre os ambientes de desenvolvimento desktop

Mice ADWN Ambiente Desenvolvido Linguagens NqC JavaScript, Blockly R-Educ e linguagens cadastradas Hardware Lego NXT N-Bot Qualquer hardware Entrada de dados textual grafica e textual textual

Faixa etaria 12 8 8

Envio Integrado Sim Sim Sim

Programação remota Sim Não Não

Necessária instalação do ambiente Não Não Não Compatiblidade na máquina local Não Não Sim Compatiblidade no servidor Sim Não Não

Tabela 3.2: Análise comparativa entre os ambientes de desenvolvimento web

alizada em R-Educ e em qualquer linguagem cadastrada que não possua identação es- pecífica. Os demais ambientes não possuem cadastro de linguagem, se limitando a um número fixo de linguagens. Além do mais, o cadastro de linguagens permite que o am- biente desenvolvido gere códigos para qualquer hardware associado a essas linguagens, funcionalidade que também não foi encontrada nos trabalhos em análise.

Outro ponto a se destacar é que, como vimos no MICE, o nosso ambiente não permite, em sua versão atual, a programação remota de robôs. E, ao compararmos com o ADWN, vemos que o nosso ambiente necessita que o usuário o utilize em uma plataforma com- putacional que seja capaz de estabelecer comunicação com o hardware utilizado para que seu envio seja realizado, sendo muitas vezes necessários drivers para compatibilidade, o que não é necessário naquele.

Capítulo 4

Ambiente Proposto

Neste trabalho desenvolvemos um ambiente de desenvolvimento configurável para aplicações em robótica educacional. Este foi desenvolvido para possibilitar que um pro- fessor mediador de uma oficina de robótica possa fazer uso de vários tipos de hardwares abstraindo para os seus alunos o uso de linguagens de programação diferentes, em um am- biente web, que permite o envio de dados ao robô via o computador local sem necessidade de instalação de software.

Este ambiente foi desenvolvido para ser integrado a uma nova versão do software educacional RoboEduc, software com uma linguagem de programação em níveis própria denominada R-Educ, testada e validada por Pitta (2011), utilizado em conjunto com a metodologia para robótica educacional desenvolvida por da Silva (2008).

Neste capítulo, apresentamos o ambiente de desenvolvimento autoconfigurável para aplicações em robótica educacional desenvolvido neste trabalho. Entraremos em detalhes quanto as ferramentas utilizadas, as modificações e reestruturações necessárias ao tradutor e compilador utilizado no software RoboEduc e sua linguagem, quanto ao projeto do am- biente, as implementações necessárias, suas funções, utilidades, principais características e métodos de uso.

4.1

Projeto do Ambiente

O primeiro passo para o desenvolvimento deste trabalho foi o projeto do ambiente. Para tal, realizamos uma análise das funcionalidades que o ambiente deveria ter para al- cançar as metas pretendidas. Dentre as funcionalidades estabelecidas estão o cadastro de linguagens de programação, a universalização da linguagem R-Educ, programação em qualquer uma das linguagens cadastradas, compilação via servidor e o envio do programa ao robô via dispositivo local. Definimos o que deveria ser realizado para que estas fun- cionalidades fossem possíveis. A lista a seguir apresenta a sequência de ações a serem

28 CAPÍTULO 4. AMBIENTE PROPOSTO

realizadas:

• Reestruturação didática da linguagem R-Educ; • Reestruturação funcional da linguagem R-Educ; • Reestruturação do tradutor da linguagem R-Educ;

• Criação de um banco de dados para cadastro de linguagens de programação; • Criação de um ambiente web para cadastro de linguagens de programação; • Criação de um ambiente web para programação;

• Definição de um mecanismo de comunicação computador - robô.

Para descrever as funcionalidades propostas para o ambiente fizemos uma notação gráfica que auxília na descrição e no projeto de sistemas, um diagrama de casos de uso. No paradigma orientado a objetos, este diagrama é um modelo utilizado para especificação de requisitos, descrevendo um cenário que apresenta as funcionalidades do sistema proposto do ponto de vista do seu usuário. O diagrama de caso de uso apresentado na Figura 4.1 mostra a sequência de eventos de um usuário que utiliza o ambiente para completar um processo completo desde a criação de linguagens, à programação e envio ao robô.

Como vemos, inicialmente, o ambiente possui apenas um autor, chamado de usuário. Pretendemos, ao realizar toda a migração do software RoboEduc para uma plataforma web integrada ao nosso ambiente, realizar uma substituição de usuários, trataremos futu- ramente com os usuários aluno e professor mediador.

Ao ator usuário será permitido os seguintes casos de uso:

• Cadastrar uma nova linguagem de programação;

• Selecionar uma linguagem dentre uma lista de linguagens já cadastradas; • Editar uma linguagem já selecionada;

• Programar em R-Educ;

• Programar em qualquer uma das linguagens cadastradas; • Compilar programas;

• Enviar programa compilado ao robô.

4.1.1

Ferramentas Utilizadas

Ainda no projeto do ambiente avaliamos quais implementações seriam necessárias. Vimos que era necessária a implementação de um tradutor da linguagem R-Educ para a linguagem cadastrada, um banco de dados para armazenamento das linguagens cadastra- das, ambientes web para listar, editar e criar linguagens, além de um ambiente web de

4.1. PROJETO DO AMBIENTE 29

Figura 4.1: Diagrama de casos de uso

programação passível de detectar e informar erros de compilação, salvar, fazer download, compilar e enviar programas.

Para que as implementações fossem possíveis de serem executadas foi necessário o estudo aprofundado de algumas tecnologias existentes no mercado atualmente, a fim de que pudessemos utilizar suas melhores funcionalidades de maneira mais eficiente. Nas subseções seguintes listamos as principais tecnologias utilizadas e suas principais carac- terísticas.

Java

A linguagem Java é uma linguagem de programação orientada a objetos muito difun- dida. Nesta linguagem é gerado um código intermediário, chamado de bytecode, que é interpretado e executado pela máquina virtual Java instalada no computador.

Toda a análise léxica e sintática da linguagem R-Educ, além das chamadas de sistema foram realizadas neste projeto fazendo uso desta linguagem.

30 CAPÍTULO 4. AMBIENTE PROPOSTO

Java Enterprise Edition - Java EE

O Java Enterprise Edition (Java EE) é um middleware baseado na linguagem de pro- gramação Java e voltado para o desenvolvimento de aplicações distribuídas. Esta ferra- menta apresenta facilidades para a utilização dos recursos computacionais e distribuídos tais como acesso à banco de dados, componentes Web, utilização de mensagens assíncro- nas, execução de processos transacionais, etc. Neste trabalho utilizamos esta tecnologia para o desenvolvimento do ambiente web.

A arquitetura do Java EE é apresentada em várias camadas, compostas por containers e componentes. Containers são elementos que englobam os componentes, e fornecem recursos e facilidades para os mesmos. Já os componentes oferecem diversos serviços ao usuário através do suporte do container. A seguir destacamos alguns dos tipos de containers e APIs existentes no Java EE e onde cada um foi utilizado no desenvolvimento do projeto.

• Servlets: foram utilizados em nosso projeto para abstrair os recursos do servidor web de forma simplificada;

• JSP (Java Server Pages): páginas web que solicitam ou disponibilizam informações para os servlets, são as páginas web em si, visíveis ao usuário e formadas com a utilização de componentes HTML;

• EJBs (Enterprise Java Beans): permitiu que focassemos nas necessidades dos cli- entes, ao invés de nos preocuparmos com as questões de infraestrutura;

• JDBC (Java Database Connectivity): utilizado para prover acesso ao bancos de dados;

• JPA (Java Persistence API): API responsável pela padronização do acesso ao banco de dados através de mapeamento Objeto/Relacionamento dos Enterprise Java Be- ans.

JavaScript

O JavaScript é uma linguagem de programação interpretada utilizada nas páginas JSP desse ambiente. Esta linguagem é implementada juntamente com os navegadores web para permitir que scripts sejam executados no navegador do cliente gerando interação com o mesmo. Torna possível controlar o navegador, realizando uma comunicação assíncrona e sendo passível de alterar o conteúdo do documento exibido fazendo uso de ferramentas auxiliares (Ajax e Jquery).

4.2. LINGUAGEM R-EDUC 31

Applet Java

Uma applet Java é um componente de software que executa uma determinada função limitada em outro ambiente de programa, como um navegador web. Os applets Java possibilitam que recursos interativos sejam fornecidos através de um navegador por meio da máquina virtual java instalada no computador do cliente. Neste projeto as applets Java foram utilizadas para que fosse possível fazer chamadas de sistema no computador local através do navegador.

4.2

Linguagem R-Educ

No Capítulo 2 apresentamos alguns conceitos preliminares acerca do que é linguagem e o que é uma linguagem de programação. Através da pesquisa realizada, analisamos que para se trabalhar com robôs, máquinas de funcionamento específico, se fez necessária a criação de mais uma especificação de linguagem de programação. Essa nova especifi- cação tem um fim específico que é a programação e/ou controle de robôs móveis, para tal tornou-se necessário um conjunto de comandos específicos que permitam ao usuário fazer com que o robô se movimente da maneira desejada, libere a corrente para algum pino, emita algum sinal luminoso, etc.

Equipamentos eletrônicos, no geral, possuem grandes diferenças entre suas configura- ções e podem ser aplicados a tarefas extremamente distintas, o que leva cada fabricante de dispositivos eletrônicos robóticos o desenvolvimendo de sua própria linguagem, ou uso de uma determinada linguagem comum associada a bibliotecas específicas.

Motivados pela diversidade de hardwares e de linguagens de programação foi de- senvolvido neste trabalho um ambiente que se configure a qualquer hardware com suas linguagens distintas. Desenvolvemos neste trabalho um ambiente que contenha uma lin- guagem universal para qualquer tipo de hardware destinado a robótica. A linguagem escolhida para tal é a linguagem de programação em níveis R-Educ [Pitta 2011], especi- fícamente seus níveis três e cinco.

A linguagem R-Educ foi especificada inicialmente em C++, fazendo leitura de dados via arquivo de conteúdo XML e destinada a programação de robôs do tipo Lego RCX, Lego NXT ou plataforma H-Educ [Sá 2011] em versões distintas. É uma linguagem baseada em níveis, que na sua utilização atual, associada ao software de desenvolvimento desktop RoboEduc, possui 5 níveis de abstração diferentes para que os níveis cognitivos de cada usuário sejam respeitados. Neste software, a sintaxe é determinada tanto de forma gráfica quanto textual.

32 CAPÍTULO 4. AMBIENTE PROPOSTO

Como as funcionalidades de criação de páginas, servidores web, comunicação com banco de dados são resolvidas com maior facilidade e portabilidade utilizando a lingua- gem Java e tecnologias associadas, foi necessário fazer uma re-implementação do tradutor da linguagem. Aproveitamos a necessidade da re-estruturação necessária e implementa- mos algumas melhorias na linguagem, dando um maior poder computacional a ela, corri- gindo alguns erros encontrados e introduzindo alguns conceitos utilizados nas linguagens de programação mais utilizadas.

4.2.1

Gramática da Linguagem

Segundo a teoria de linguagens formais e dos autômatos, para a concepção de uma nova linguagem, é necessário o desenvolvimento de uma gramática própria da linguagem. A gramática criada para a reestruturação da linguagem R-Educ é descrita pelas produções apresentadas a seguir.

• <tarefa> := tarefa <nome da tarefa> { <instrucao>* } • <nome da tarefa> := <letra> ( <letra> || <numero>) * • <controle de fluxo> := <condicional> || <repeticao>

• <condicional> := se ( <condicao> ) entao { <instrucao>* } [senao {<instrucao>*}] • <variavel> := <letra> (<letra> || <numero>)*

• <funcao> := <nome da funcao>(parametros)* • <repeticao> := <repita> <numero> vezes || vez

• <para> := para <variavel> de <numero> ate <numero> passo <numero> { <instru- cao>* }

• <enquanto> :=enquanto <condicao> farei <instrucao>* • <farei> := farei <instrucao>* enquanto <condicao> • <operadores> := = || > || >= || < || <= || != || e || ou || ! • <letra> := [A-Za-z]

• <instrucao> := <controle de fluxo> || <acao> • <condicao> := <variavel> <operador> <variavel> • <nome de acao> s:= letra ( letra|numero )* • <numero> := 0||1||2||3||4||5||6||7||8||9*

Na Tabela 4.1 são apresentadas as palavras reservadas da linguagem R-Educ. A lin- guagem possui poucas palavras reservadas, o que mostra seu alto nível de abstração. Ape- sar de ser baseada em um português simples, esta linguagem permite o ensino de estru- turas algorítmicas, tais como início de programa, fim de programa, controles de fluxo, comandos condicionais, chamadas de funções específicas ou não.

4.3. CADASTRO DE LINGUAGEM 33 inicio fim tarefa se senao entao enquanto farei repita para teste numero texto booleano

Tabela 4.1: Palavras Reservadas da Linguagem R-Educ

Uma grande diferença da linguagem já estabelecida, desenvolvida anteriormente, é que foi inserido o uso de chaves para controle de um início de sequência de comandos, substituindo comandos escritos, como: fimenquanto, fimse, fimsenao, fimpara. A utiliza- ção das chaves, foi baseada no fato de que vimos em pesquisas de uso da linguagem que os alunos possuíam certo grau de dificuldade de assimilar este símbolo tão comum em linguagens de programação ao migrarem da linguagem R-Educ para uma linguagem com um nível de abstração mais baixo.

4.3

Cadastro de Linguagem

Para sabermos o que seria necessário solicitar ao usuário para que fosse feito um cadastro completo da linguagem, fizemos uma análise com os principais componentes de uma linguagem de programação de robôs. Para tal, realizamos uma seleção entre as principais linguagens utilizadas e as principais linguagens utilizadas em robótica.

4.3.1

Análise Preliminar

No estudo preliminar, verificamos quais os cabeçalhos e rodapés necessários para cada uma dessas linguagens, quais possuem e permitem cabeçalhos e quais não. Em seguida avaliamos quais os tipos de dados presentes em cada linguagem, quais os mais utilizados e como as variáveis são declaradas e modificadas.

Avaliamos também como é realizada a escrita dos controles de fluxo e quais os pre- sentes na maior parte das linguagens. Verificamos também como são feitas as declarações de funções sem retorno e suas chamadas. Quais os operadores lógicos dessas linguagens e em que se diferenciam. Outro ponto importante de estudo foi o de como é feita a chamada de funções e como é declarada a função principal do programa.

A partir dessa análise fizemos um formulário de cadastro de linguagens que nos per- mitisse traduzir a linguagem R-Educ para a linguagem cadastrada. Nesta etapa do de-

34 CAPÍTULO 4. AMBIENTE PROPOSTO

senvolvimento verificamos que o usuário responsável pelo cadastro da linguagem ou res- ponsável pela produção de um documento de cadastro deve ser um programador com conhecimentos específicos desta linguagem ou ter conhecimentos em programação sufi- cientes para estudar a API - Interface de Programação de Aplicativos - da linguagem e extrair informações dela.

4.3.2

Formulário de Cadastro

Para realizar o cadastro das linguagens de programação nativas dos diferentes tipos de robôs, foi desenvolvido um ambiente web utilizando APIs específicas do Java EE. O ambiente desenvolvido é executado online, o que permite uma maior disseminação da ferramenta.

Procuramos deixar o ambiente o mais explicativo possível para que não ocorra erros no cadastro. No início do formulário de cadastro disponibilizamos um texto explicativo fornecendo ao usuário todas as informações necessárias para que o cadastro seja realizado com sucesso. Apresentamos também exemplos do código em R-Educ e em mais duas linguagens de todas as informações solicitadas.

Os dados que devem ser inseridos e algumas das partes do formulário estão listados nas subseções a seguir, ressaltamos que quanto mais experiente em programação e na linguagem a ser cadastrada o usuário for, maior será as vantagens que este poderá tirar do ambiente, criando abstrações eficazes e simplificações para os seus alunos, caso seja um

Documentos relacionados