• Nenhum resultado encontrado

Ambiente de desenvolvimentoweb multiplataforma configurável para robótica educacional

N/A
N/A
Protected

Academic year: 2017

Share "Ambiente de desenvolvimentoweb multiplataforma configurável para robótica educacional"

Copied!
83
0
0

Texto

(1)

UNIVERSIDADEFEDERALDO RIO GRANDE DO NORTE

UNIVERSIDADEFEDERAL DORIOGRANDE DO NORTE CENTRO DETECNOLOGIA

PROGRAMA DEPÓS-GRADUAÇÃO EMENGENHARIAELÉTRICA E DECOMPUTAÇÃO

Ambiente de Desenvolvimento Web

Multiplataforma Configurável para Robótica

Educacional

Sarah Thomaz de Lima Sá

Orientador: Prof. Dr. Luiz Marcos Garcia Gonçalves

Dissertação de Mestrado apresentada ao

Programa de Pós-Graduação em Engenharia Elétrica e de Computação da UFRN (Área de concentração: Engenharia de Computação) como parte dos requisitos para obtenção do título de Mestre em Ciências.

(2)

Catalogação da Publicação na Fonte. UFRN / Biblioteca Central Zila Mamede Kalline Bezerra da Silva Flor CRB15/327

Sá, Sarah Thomaz de Lima.

Ambiente de desenvolvimento web multiplataforma configurável para Robótica Educacional / Sarah Thomaz de Lima Sá. – Natal, RN, 2013.

70 f.

Orientador: Luiz Marcos Garcia Gonçalves.

Dissertação (Mestrado) – Universidade Federal do Rio Grande do Norte. Centro de Tecnologia. Programa de Pós-Graduação em Engenharia Elétrica e de Computação.

1. Robótica educacional – Dissertação. 2. Software educacional – Dissertação. 3. RoboEduc – Dissertação. 4. Ambiente de Desenvolvimento – Dissertação. I. Gonçalves, Luiz Marcos Garcia. II. Universidade Federal do Rio Grande do Norte. III. Título.

(3)
(4)
(5)

Agradecimentos

Ao meu orientador, professor Luiz Marcos Garcia Gonçalves, sou grata pela orientação, pela confiança depositada e por acreditar em mim.

A minha mãe por toda a paciência, por suportar os momentos de stress e por sempre acreditar que eu conseguiria. Você foi meu suporte.

Ao meu pai que sempre me motivou. Agradeço por você ter tanto orgulho de mim.

Aos meus irmãos, Camilla e Darlan, agradeço por todo apoio.

A Carlinha, por toda ajuda, dedicação, orientação e discussões sobre este trabalho. Sem você, adiantar este trabalho seria impossível.

A Renata, Victor, Rafael Aroca e a toda a equipe do laboratório NatalNet pelo suporte e ajuda prestados.

A Lorena, Priscilla e todos os meus irmãos em Cristo. Agredeço por terem dedicado tempo de oração pelo meu trabalho e por minha vida.

(6)

Do meu telescópio, eu via Deus

caminhar! A maravilhosa

disposição e harmonia do universo

só pode ter tido origem segundo o

plano de um Ser que tudo sabe e

tudo pode. Isto fica sendo a minha

última e mais elevada descoberta.

(7)

Resumo

Propomos um ambiente de desenvolvimento online multiplataforma configurável, de-senvolvido especificamente para aplicações de robótica educacional. O ambiente, que surge como uma extensão do software RoboEduc, possibilita que a programação de di-versos robôs programáveis possa ser realizada utilizando a linguagem R-Educ. Tornamos possível que o usuário programe na linguagem R-Educ e que o seu código seja traduzido para uma linguagem cadastrada anteriormente, compilado e em seguida enviado e/ou exe-cutado pelo robô. Para o desenvolvimento deste trabalho, realizamos inicialmente uma pesquisa bibliográfica acerca das principais linguagens de programação utilizadas em ro-bótica, bem como suas definições e paradigmas, a partir da qual foi possível definir um conjunto de padrões considerados importantes para a criação deste ambiente. Em se-guida, na fase de desenvolvimento de software, foi implementado o ambiente de desen-volvimento, levando em consideração os requisitos e funcionalidades definidos na fase de projeto. Por fim, para validar a plataforma, realizamos cadastros de algumas linguagens de programação e verificamos se o ciclo completo foi satisfeito - cadastro de linguagem, programação em R-Educ, compilação para a linguagem cadastrada, compilação para o código de máquina e envio do código para o robô.

(8)

Abstract

We propose an online configurable multiplatform development environment specifi-cally developed for educational robotics applications. The environment, which appears as an extension of RoboEduc software, allows the programming of several programma-ble robots to be performed using the R-Educ language. We make it possiprogramma-ble for the user to program in the language R-Educ and then translate the code to a language previously registered, compiled and then sent or executed by the robot. To develop this work, we conducted a bibliographic research about the main programming languages used in ro-botics, as well as their definitions and paradigms, from which it was possible to define a set of patterns considered important for the creation of this environment. Then, in the software development phase, we implemented the development environment, bearing in mind the requirements and functionality defined in the design phase. Finally, to validate the platform, we conducted some trials of programming languages and verificate if the complete cycle was satisfied - registration of language, programming in R-Educ, compi-lation for the registered language, compicompi-lation to the machine code and send the code for the robot.

(9)

Sumário

Sumário i

Lista de Figuras iii

Lista de Tabelas v

1 Introdução 1

1.1 Escopo do Trabalho . . . 3

1.2 Motivação . . . 4

1.3 Metodologia . . . 5

1.4 Contribuições e Aplicações . . . 6

1.5 Estrutura do texto . . . 7

2 Fundamentação Teórica 9 2.1 Robótica Educacional . . . 9

2.2 Hardwares para Robótica Educacional . . . 11

2.2.1 Kits comerciais . . . 11

2.2.2 Kits com sucata . . . 12

2.2.3 Kits com peças e materiais eletrônicos . . . 12

2.3 Linguagens de Programação . . . 13

2.3.1 Desenvolvimento de Programas . . . 14

3 Estado da Arte 17 3.1 Ambientes de Desenvolvimento para Robótica Desktop . . . 17

3.1.1 RobotC . . . 17

3.1.2 RoboEduc . . . 18

3.1.3 Software Lego Mindstorms NXT . . . 19

3.1.4 Microsoft Robotics Studio . . . 19

3.1.5 Legal . . . 20

3.2 Ambiente de Desenvolvimento para Robótica Web . . . 21

(10)

3.2.1 Mindstorms Internet Control Environment . . . 22

3.2.2 ADWN . . . 22

3.3 Análise Comparativa . . . 24

4 Ambiente Proposto 27 4.1 Projeto do Ambiente . . . 27

4.1.1 Ferramentas Utilizadas . . . 28

4.2 Linguagem R-Educ . . . 31

4.2.1 Gramática da Linguagem . . . 32

4.3 Cadastro de Linguagem . . . 33

4.3.1 Análise Preliminar . . . 33

4.3.2 Formulário de Cadastro . . . 34

4.4 Tradução e Compilação . . . 41

4.4.1 Analisador Léxico . . . 42

4.4.2 Mapeamento entre Linguagens . . . 43

4.4.3 Analisador Sintático . . . 46

4.4.4 Geração do Programa Objeto . . . 47

4.4.5 Diagrama de Classes . . . 48

4.5 Comunicação e Envio . . . 49

4.6 Ambiente de Desenvolvimento . . . 50

5 Resultados 53 5.1 Testes . . . 53

5.1.1 Primeira Etapa . . . 54

5.1.2 Segunda Etapa . . . 54

5.1.3 Terceira Etapa . . . 56

5.1.4 Quarta Etapa . . . 56

5.1.5 Quarta Etapa . . . 58

5.1.6 Quinta Etapa . . . 59

5.2 Avaliação dos Ambientes . . . 63

6 Conclusões 65 6.1 Trabalhos Futuros . . . 66

(11)

Lista de Figuras

3.1 Software educacional RoboEduc . . . 18

3.2 Software Lego Mindstorms NXT . . . 20

3.3 Ambiente de programação Legal . . . 21

3.4 Mindstorms Internet Control Environment - MICE . . . 23

3.5 ADWN rodando em um navegador web . . . 24

4.1 Diagrama de casos de uso . . . 29

4.2 Listagem de Linguagens Cadastradas . . . 35

4.3 Cadastro de linguagem . . . 35

4.4 Formuário de cadastro - compilação . . . 36

4.5 Formuário de cadastro - declaração da função principal . . . 37

4.6 Formuário de cadastro - declaração e chamada de funções sem retorno . . 38

4.7 Formuário de cadastro - declaração de variáveis do tipo texto . . . 39

4.8 Formuário de cadastro - operadores . . . 39

4.9 Formuário de cadastro - controlador de fluxo: SE . . . 40

4.10 Formuário de cadastro - controlador de fluxo: PARA . . . 40

4.11 Formuário de cadastro - controlador de fluxo: TESTE . . . 41

4.12 Formuário de cadastro - chamadas de função . . . 42

4.13 Universalização da linguagem R-Educ . . . 43

4.14 Diagrama de classes . . . 48

4.15 Diagrama de conexões . . . 49

4.16 Ambiente de desenvolvimento . . . 50

5.1 Etapas do treinamento para a OBR 2013 . . . 55

5.2 Sequência de geração de arquivos . . . 57

5.3 Conhecimento necessário para cadastro . . . 58

5.4 Gráfico comparativo entre dificuldade de cadastro e conhecimento neces-sário . . . 59

5.5 Complexidade atribuída às funcionalidades do ambiente de programação . 60 5.6 Avaliação dos ambientes desenvolvidos . . . 63

(12)
(13)

Lista de Tabelas

3.1 Análise comparativa entre os ambientes de desenvolvimento desktop . . . 25 3.2 Análise comparativa entre os ambientes de desenvolvimento web . . . 25

4.1 Palavras Reservadas da Linguagem R-Educ . . . 33

(14)

Capítulo 1

Introdução

A presença da informática na maioria das atividades cotidianas, mesmo que indireta-mente, é um grande traço do tempo em que vivemos. Este traço está mais presente no universo dos jovens e crianças, que são influenciados pela televisão e alcançados pelo advento das novas tecnologias aplicadas à educação em seu dia-a-dia em sala de aula, sejam em escolas públicas, privadas, ou em cursos oferecidos pelos diferentes setores governamentais.

A robótica educacional nasceu neste contexto de novas tecnologias, trazendo con-sigo o avanço tecnológico aliado a um ambiente de aprendizagem rico e inovador. Este ambiente de aprendizagem se destaca por mostrar, na prática, conceitos teóricos e por de-senvolver aspectos cognitivos e psicomotores dos alunos [Zilli 2004], como, por exemplo, pensamento investigativo, raciocínio lógico, criatividade, desenvolvimento de método ci-entífico, aprimoramento da motricidade e outros [Miranda et al. 2010].

Segundo Schons et al. (2004), a robótica educacional pode também ser utilizada para complementar o estudo de disciplinas curriculares a partir da construção de protótipos de-safiadores, levando os alunos a uma rica experiência em aprendizagem e desenvolvimento de inteligência múltipla. Uma das metodologias adequadas, segundo da Silva (2008), para o uso da robótica educacional em sala de aula é através de oficinas, onde os alunos devem seguir um conjunto de passos: análise do desafio (que pode estar relacionado a temas da grade curricular), montagem do protótipo robótico, programação e execução do programa no robô.

(15)

alterna-2 CAPÍTULO 1. INTRODUÇÃO

tivas para substituir a utilização dos kits importados, permitindo que escolas com baixo poder aquisitivo façam uso desta ferramenta de aprendizagem. Estas iniciativas fazem uso de kits de robótica livre.

Independente do tipo de kit de robótica utilizado, seja ele comercial ou livre, se ele possuir um controlador programável ou for capaz de receber um conjunto de comandos, é necessário, em geral, a utilização de uma linguagem de programação. Kits de robó-tica comerciais normalmente acompanham um software específico para programação de seus robôs, já os kits de robótica livre podem, comumente, ser programados utilizando compiladores de linguagens de programação específicas.

Neste contexto, caso o professor de robótica educacional necessite ou deseje fazer uso de um novo kit de robótica, a fim de baixar os custos ou trazer uma novidade para sala de aula, seria necessário a troca do ambiente de programação e/ou da linguagem de programação utilizada. Sendo assim necessário ensinar um novo conjunto de passos e instruções aos alunos para programação, além de ter de ensinar o passo a passo para a montagem do novo hardware.

Com a difusão da robótica educacional, diversas pesquisas vem sendo realizadas a fim de produzir materiais para que as oficinas de robótica educacional tragam novas possibi-lidades aos alunos. É nesse cenário que surge uma busca de que uma maior versatilidade de hardware seja utilizado em ambientes de aprendizagem que fazem uso da robótica educacional. Para tal, propomos uma universalização do terceiro nível da linguagem de programação em níveis R-Educ [Pitta et al. 2010] a partir da criação de um ambiente de desenvolvimento online configurável, desenvolvido especificamente para aplicações em robótica educacional. O ambiente, que surge como uma evolução do software RoboEduc [Pitta 2008], possibilita que a programação de vários robôs programáveis possa ser reali-zada no terceiro e quinto nível da linguagem R-Educ, uma linguagem simples e intuitiva para programação de robôs [Barros et al. 2010].

A ideia deste trabalho não é a criação de um ambiente onde se é permitido progra-mar em várias linguagens, mas sim um ambiente onde linguagens de programação para robótica podem ser cadastradas, a partir da resposta de um formulário de cadastro, por um usuário experiente na linguagem, e o ambiente se configura para compilar o código em linguagem de máquina e enviar ao robô. A partir deste trabalho tornamos possível, de forma transparente ao usuário, que o usuário programe na linguagem R-Educ e o seu código seja traduzido para a linguagem cadastrada, compilado e em seguida enviado ou executado pelo robô.

(16)

1.1. ESCOPO DO TRABALHO 3

como suas definições e paradigmas, a partir da qual foi possível definir um conjunto de padrões considerados importantes para a criação deste ambiente. Em seguida, na fase de desenvolvimento, foi implementado o ambiente em si, levando em consideração os requi-sitos e funcionalidades definidos na fase de projeto. Por fim, para validar a plataforma, se-lecionamos algumas pessoas para realizar alguns cadastros de linguagens de programação e verificamos a completude do ciclo: cadastro de linguagem, programação em R-Educ, interpretação para a linguagem cadastrada, compilação para o código de máquina e envio ou execução do código ao robô. A fim de validar o ambiente de programação, fizemos testes utilizando-o em um treinamento para participação de uma olímpiada de robótica no qual participaram desde alunos do ensino fundamental a estudantes universitários.

Os resultados mostram que fazendo uso da plataforma de desenvolvimento configu-rável apresentada neste trabalho, os professores de robótica educacional não mais terão necessidade de mudar de plataforma de desenvolvimento nem de ensinar novas lingua-gens de programação aos seus alunos ao trocar de hardware.

1.1

Escopo do Trabalho

Buscando incluir digitalmente os alunos das escolas públicas do Rio Grande do Norte, o Laboratório Natalnet-UFRN vem desenvolvendo, desde 2003, vários projetos fazendo uso do ambiente de aprendizagem da robótica educacional. Em 2005 a equipe do labo-ratório deu início a execução um projeto de pesquisa com fomento do CNPq, no qual foi desenvolvida e colocada em prática a metodologia para Robótica Educacional, desenvol-vida no mesmo laboratório por da Silva (2008), na Escola Municipal Prof. Ascendino de Almeida, localizada na periferia da cidade de Natal no Rio Grande do Norte.

Para o bom funcionamento das oficinas foram utilizados kits de robótica Lego RCX e um software de programação, na época ainda em desenvolvimento, chamado RoboEduc. Em seu trabalho da Silva (2008) descreve os resultados dos testes realizados neste projeto, frisando que foram obtidos resultados satisfatórios com relação ao aprendizado dos alu-nos. O término do desenvolvimento do software RoboEduc foi realizado por Pitta (2008), que além de implementar cinco diferentes níveis de programação no RoboEduc fazendo uso da linguagem R-Educ [Pitta et al. 2010], realizou também testes de usabilidade com esta ferramenta [Pitta 2011].

(17)

de-4 CAPÍTULO 1. INTRODUÇÃO

senvolvidas ferramentas capazes de aumentar a adesão das escolas às aulas de robótica educacional.

Fernandes et al. (2012) desenvolveu um simulador robótico tridimensional que per-mite a criação e execução de aulas de robótica educacional sem a utilização de kits de robótica. Nesta mesma linha de trabalho (barateamento da aplicação da robótica edu-cacional), Sá (2011) criou um kit de robótica usando materiais de sucata, composto por motores, sensores e outras peças de sucata, que possui um custo inferior aos kits comer-ciais (menos de R$ 100,00). De acordo com Sá et al. (2012), os testes realizados com o kit alcançaram resultados satisfatórios, mostrando que ele pode ser utilizado em aulas de robótica educacional.

Aroca, Gardiman & Gonçalves (2012), desenvolveram em seguida, uma plataforma robótica de baixíssimo custo, denominada N-Bot. O N-Bot possui uma arquitetura de controle e um conjuntos de técnicas que visam diminuir a complexidade de montagem e programação.

Os trabalhos da equipe do laboratório Natalnet almejam que uma maior quantidade de alunos de ensino fundamental e médio possam entrar em contato com um ambiente de aprendizagem tão rico e motivador quanto a robótica educacional fazendo uso de todos os recursos disponíveis.

1.2

Motivação

Para o desenvolvimento de uma aula de robótica educacional são necessários os se-guintes recursos em sala de aula [Neves-Júnior 2011]:

• Um kit de robótica, composto por um controlador lógico programável, sensores,

motores e peças para construção de uma estrutura mecânica para o protótipo robó-tico;

• Um ambiente de desenvolvimento;

• Um computador capaz de utilizar o ambiente escolhido; e

• Um ambiente propício ao desenvolvimento de uma determinada atividade.

(18)

1.3. METODOLOGIA 5

se aproximam ao máximo do controle direto das peças de hardware ou tentam abstrair a visualização do hardware a partir do encaixe de conteúdos gráficos ou textuais. Já os que podem ser programados de forma textual apresentam, em sua maioria, uma linguagem de programação baseada em uma determinada língua, geralmente na língua inglesa com palavras chaves e sequências de comandos diferenciadas.

Para que um programa seja compilado e enviado a um robô, frequentemente é neces-sária a instalação de softwares específicos em um computador, limitando essas operações a usuários especialistas [?]. Em alguns casos é necessário que o usuário possua privilégios

de administração do sistema para instalar e/ou executar softwares de desenvolvimento de robótica. Sendo também, muitas vezes, necessário que o usuário possua computador com alto poder computacional ou com especificações de hardware específicas.

A partir da não uniformidade encontradas nas formas de programação dos kits de ro-bótica, dos impasses encontrados para se instalar softwares específicos num determinado computador e pelos benefícios que a ferramenta da robótica educacional possui no pro-cesso de ensino aprendizagem, temos por motivação a universalização do terceiro nível de programação da linguagem de programaçãoem níveis R-Educ, permitindo uma maior flexibilidade do uso de hardware, através de um ambiente de desenvolvimento via web e permitindo aos usuários a edição, compilação e execução de programas utilizando apenas um navegador web. Com a solução proposta, qualquer dispositivo que possua um navega-dor web, pode ser usado como estação de desenvolvimento de programas para protótipos robóticos.

1.3

Metodologia

Para o desenvolvimento deste trabalho, realizamos inicialmente uma pesquisa bibli-ográfica acerca das principais linguagens de programação utilizadas em robótica, bem como suas definições e paradigmas, a partir da qual foi possível definir um conjunto de padrões considerados importantes para a criação deste ambiente.

Em seguida, na fase de desenvolvimento de software, foi realizada uma pesquisa so-bre as tecnologias existentes no mercado para a implementação do ambiente. Para tal, estabelecemos que seria necessário um servidor de banco de dados, uma plataforma de desenvolvimento web e uma linguagem para implementação do compilador.

(19)

6 CAPÍTULO 1. INTRODUÇÃO

do compilador foi feita utilizando Java, sendo necessária uma completa reestruturação do compilador da linguagem R-Educ, visto que o mesmo havia sido desenvolvido em C++.

A terceira fase foi a implementação ambiente de desenvolvimento web configurável, utilizando os dados obtidos na fase de pesquisa. Esta fase foi a mais longa de todo o projeto, nela foram realizados testes para verificação da corretude dos códigos gerados pelo compilador e para verificação do cadastro de linguagens no banco de dados.

Por fim, para validar a plataforma, realizamos alguns cadastros de linguagens de pro-gramação para robótica e verificamos se o ciclo completo foi satisfeito - cadastro de lin-guagem, programação em R-Educ, tradução para a linguagem cadastrada, compilação para o código de máquina e envio do código para o robô.

1.4

Contribuições e Aplicações

Existem várias abordagens que tratam da programação de robôs em ambientes educa-cionais, nestas um dos problemas encontrados é a falta de ambientes que trabalhem com a nossa língua nativa, capazes de atender o perfil de diferentes usuários, utilizando concei-tos da área pedagógica. Este trabalho propõe atender esses requisiconcei-tos e trazer ao usuário um ambiente web, não sendo necessário que o usuário possua computadores com funcio-nalidades específicas, sendo todo o processamento de compilação executado no servidor.

Dentre as contribuições do ambiente de desenvolvimento web configurável proposto neste trabalho está o fato de podermos traduzir o terceiro nível da linguagem R-Educ para qualquer linguagem de baixo nível que não necessita de uma forma de identação espe-cífica, podendo ser linguagens interpretadas ou compiladas. Essa é a maior contribuição deste trabalho pois este nível da linguagem R-Educ possui um alto poder de abstração, sendo passível de ser utilizada por crianças a partir de 8 anos [Pitta et al. 2010].

(20)

1.5. ESTRUTURA DO TEXTO 7

1.5

Estrutura do texto

Este trabalho introduz um ambiente de desenvolvimento web configurável para aplica-ções em robótica educacional. No Capítulo 1 mostramos o escopo do trabalho, destacando o contexto no qual este trabalho se insere bem como os trabalhos desenvolvidos na área de robótica educacional no mesmo laboratório. Expomos, também, uma visão geral da motivação deste trabalho, que é a criação de uma solução para o problema da troca e in-serção de novos kits de robótica em um ambiente de robótica educacional. Descrevemos em seguida a metodologia utilizada para o desenvolvimento do trabalho e as aplicações da tecnologia proposta.

O Capítulo 2 apresenta o embasamento teórico necessário à compreensão deste traba-lho, sendo discutidos aspectos e benefícios já estabelecidos da robótica educacional, os principais conceitos referentes a linguagens de programação e seus paradigmas, além de um aparato teórico sobre as tecnologias utilizadas para as implementações.

Em seguida, o Capítulo 3 apresenta uma revisão do estado da arte. Neste são discuti-dos diversos trabalhos que propõem ambientes de desenvolvimento para robótica educa-cional web e desktop. No Capítulo 3 também é realizada uma análise comparativa entre os ambientes apresentados e o proposto neste trabalho.

No Capítulo 4, o ambiente de desenvolvimento proposto é descrito com detalhes, in-cluindo nesta descrição aspectos de implementação e estruturação. Especificamos como se dá o cadastro de linguagens de programação, como é feita a interpretação e compilação das linguagens além de uma análise detalhada de cada aspecto do ambiente desenvol-vido. Descrevemos ainda diagramas que descrevem o funcionamento e enquadramento do ambiente, além da forma de utilização desta ferramenta.

(21)
(22)

Capítulo 2

Fundamentação Teórica

Neste trabalho desenvolvemos um ambiente de desenvolvimento web para aplicações em robótica educacional, incluindo um compilador configurável e um sistema de banco de dados para que a robótica educacional possa obter um avanço no uso de hardware em sala de aula.

Para entender melhor o contexto desta dissertação, apresentaremos neste capítulo con-ceitos e técnicas já consolidadas, visando uma melhor compreensão do desenvolvimento da proposta deste trabalho que será realizada nos capítulos subsequentes. Apresentare-mos as definições, aspectos metodológicos e práticos da robótica educacional, bem como embasamentos dos aspectos técnicos relativos a linguagens de programação, seus tipos e como se dá a estruturação de compiladores.

2.1

Robótica Educacional

As transformações dos sistemas educacionais são, em sua maioria, mais lentas do que as transformações tecnológicas. Por esse motivo, as escolas ainda estão formando alunos sem fluência digital, ou seja, alunos que, embora tenham conhecimento sobre as tecnologias emergentes, não sabem utilizá-las [Neves-Júnior 2011].

Há uma busca atual constante de se inserir novas tecnologias no âmbito acadêmico, tanto para satisfazer as necessidades e anseios dos alunos quanto para estabelecer uma melhor qualidade de ensino e promover ambientes de aprendizagem mais ricos e motiva-dores [Miranda 2006]. Dentre as tecnologias de ensino que estão sendo inseridas no dia a dia de sala de aula encontramos a robótica educacional. De acordo com o Dicionário In-terativo da Educação Brasileira [DIEB 2012], o termo robótica educacional - ou robótica pedagógica - pode ser definido como:

(23)

reú-10 CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA

nem materiais de sucata ou kits de montagem compostos por peças diversas, motores e sensores controláveis por computador e softwares que permitam programar de alguma forma o funcionamento dos modelos montados. Em ambientes de robótica educacional, os sujeitos constroem sistemas compos-tos por modelos e programas que os controlam para que eles funcionem de uma determinada forma."

Oficinas de robótica educacional possuem vários objetivos e metodologias, porém, no geral, caracterizam-se como um ambiente no qual os alunos seguem um conjunto de instruções e manuais ou criam e experimentam a montagem e programação do seu próprio protótipo robótico [Fortes 2007, da Silva 2008, DIEB 2012]. Nestas oficinas são propostos desafios que são trabalhados de forma lúdica e atrativa aos alunos, podendo relacionar diversas temáticas, como por exemplo: artes, cibernética, física, matemática, ética e responsabilidade social.

As oficinas de robótica possibilitam que os desafios propostos pelo professor mediador sejam discutidos em grupo, gerando assim uma forte contribuição ao aprendizado cola-borativo e estímulo a criação de um método científico para obtenção de soluções. Através da presença palpável de recursos tecnológicos de hardware e de software os alunos são confrontados com o erro construtivo.

Zilli (2004) relata algumas das competências que são desenvolvidas no aluno através de sua participação em oficinas de robótica educacional, dentre elas estão: o raciocínio lógico, pensamento investigativo, a compreensão, o trabalho com pesquisa e a utilização da criatividade em diferentes situações.

Uma oficina de robótica educacional pode ser separada em quatro momentos distintos [Miranda 2006]. Em primeiro lugar há a exposição de uma situação problema instigante que deve ser resolvida pelos alunos. Esta situação pode ou não envolver temas inter-disciplinares no nível cognitivo dos envolvidos. Em segundo lugar há um momento de exploração das potenciais soluções, neste, o professor mediador incentiva uma discussão entre os alunos em busca de um denominador comum para a solução do problema, uti-lizando explicações dadas em sala de aula e os conhecimentos prévios sobre robótica e programação.

(24)

2.2. HARDWARES PARA ROBÓTICA EDUCACIONAL 11

não seja satisfatória o grupo deve voltar a segunda fase da aula.

O precursor no desenvolvimento de metodologias para uso da robótica com fins edu-cacionais foi Seymour Papert, pesquisador do Instituto de Tecnologia de Massachussets (MIT) [Papert 1985]. Papert desenvolveu e validou uma linguagem de programação cha-mada LOGO, que inicialmente foi utilizada para programar uma tartaruga em um ambi-ente virtual. Em seguida, após verificar que o projeto tinha fins proveitosos e para validar o seu embasamento pedagógico que mostrava que uma vivência mais concreta apresen-tava melhores benefícios educacionais, Seymour Papert desenvolveu uma tartaruga real. A iniciativa relatada foi a primeira encontrada na literatura que utiliza a robótica como fer-ramenta e auxílio na educação e foi a responsável por inspirar os trabalhos que surgiram posteriormente [Gonçalves 2007].

2.2

Hardwares para Robótica Educacional

Como foi apresentado no Capítulo 1, em uma oficina de robótica educacional é comu-mente necessária a utilização de um hardware. Este pode possuir um controlador lógico programável e pode ou não estar associado a um kit de robótica. Um kit de robótica é composto por um conjunto de peças que auxiliam na construção da parte física de um robô. Os hardwares que possuem um controlador lógico programável são aqueles em que os usuários podem implementar algoritmos para modificar o comportamento do robô ao longo do tempo. Já os hardwares que não possuem este tipo de componente executam sempre o mesmo conjunto de instruções.

Existem diferentes tipos de hardware, associados ou não a kits de robótica, que podem ser utilizados em uma oficina de robótica educacional. Neste trabalho classificaremos os hardwares em três categorias: kits comerciais, kits com sucata (material alternativo) e kits com peças e materiais eletrônicos.

2.2.1

Kits comerciais

(25)

12 CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA

benefícios vêm atrelados a um alto custo de produto. Este fator torna esses equipamentos inacessíveis a determinados públicos.

O kit de robótica educacional comercial mais conhecido mundialmente é da marca Lego, modelo Mindstorms NXT [LEGO 2011]. Este kit é amplamente utilizado nas esco-las brasileiras que possuem projetos com robótica, ele possui blocos de fácil montagem e manipulação, motores, sensores e um controlador lógico programável. Outro kit de robó-tica também bastante conhecido e utilizado é o VEX [Vex 2011] que também inclui peças de montagem, sensores, motores e um controlador lógico programável.

2.2.2

Kits com sucata

Os kits de robótica com sucata, livre ou de materiais alternativos são kits onde os mate-riais que são utilizados para realizar a montagem da carcaça do robô são, em sua maioria, provenientes de sucata tecnológica. Uma das maiores fundamentações para utilização e criação deste tipo de kit é diminuição do lixo tecnológico e redução dos custos [da Silva & da Silva Almeida 2012]. Muitos dos materiais utilizados nestes kits provém de leitores de CD, discos rígidos danificados ou ultrapassados,drivesde disquete, impressoras,mouses, aparelhos de som e outros [Sá 2011].

É interessante observar que impressoras ultrapassadas, por exemplo, possuem diversas peças fundamentais para a montagem de um robô, como motores comuns e de passo, fios, conectores, engrenagens e componentes eletrônicos que podem ser desconectados da placa e reutilizados.

Os kits de sucata encontrados na literatura são, em sua maioria, provenientes de pes-quisas realizadas em universidades e, em menor ocorrência, de algumas poucas inicia-tivas, isoladas, em escolas da rede pública de ensino. Em geral, os pesquisadores tem tentado desenvolver kits de robótica com a mesma qualidade dos adquiridos comercial-mente a um custo menor. Convém ressaltar que o uso desta vertente em sala de aula oferece uma maior liberdade aos alunos para usarem sua criatividade na construção de robôs, tornando-se dispensável o uso de manuais de montagem.

2.2.3

Kits com peças e materiais eletrônicos

(26)

2.3. LINGUAGENS DE PROGRAMAÇÃO 13

grau de maturidade do aluno, visto que é necessário projetar e integrar peças mecânicas e eletrônicas de forma adequada.

Podemos citar como exemplo deste tipo de robô o kit N-Bot, desenvolvido por Aroca, Barros, Burlamaqui & Gonçalves (2012), no qual são utilizados componentes eletrônicos para fazer o controle de baixo nível do robô (ler sensores e mover atuadores) e peças (novas) que são geralmente utilizadas na fabricação de brinquedos (polias, rodas, engre-nagens, eixos) e de móveis (rodas bobas, parafusos, suportes de metal), que podem ser facilmente adquiridas em lojas comerciais. A equipe do laboratório Natalnet vem traba-lhando no desenvolvimento do EcoBot, uma nova versão do N-Bot que faz uso materiais eletrônicos e reciclados.

2.3

Linguagens de Programação

A linguagem é o instrumento utilizado para satisfazer a necessidade do homem de se comunicar, compartilhar ideias e sentimentos, seja através da linguagem falada, escrita ou de outros métodos e signos. O dicionário Aurélio [Dicionário Aurélio2013] define o termo linguagem como:

"O uso da palavra articulada ou escrita como meio de expressão e de comunicação entre pessoas ou a forma de expressão pela linguagem própria de um indivíduo, grupo, classe, etc."

Dessa forma, a linguagem designa um sistema organizado de símbolos, complexos, extensos e com propriedades particulares. Ela desempenha uma função de codificação, estruturação e consolidação dos dados sensoriais, transmitindo-lhes um determinado sen-tido ou significado e permitindo que as pessoa possam comunicar suas experiências e transmitir os seus saberes [Viotti 2007].

(27)

14 CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA

"Conjunto de instruções e regras de composição e encadeamento, por meio do qual se expressam ações executáveis por um computador, seja dire-tamente, seja por meio de processos de compilação, interpretação ou monta-gem."

Avaliamos que uma linguagem de programação permite ao programador especificar precisamente sobre quais dados um computador vai atuar, como estes dados serão arma-zenados ou transmitidos e quais ações devem ser tomadas ao se deparar com determinadas circunstâncias. O conjunto de palavras outokens, compostos de acordo com um conjunto de regras de formação constituem o código fonte de um algoritmo. Esse código fonte é, então, traduzido para um código de máquina a fim de ser executado pelo processador.

Os conceitos relativos a linguagens de programação são estudados pela teoria das lin-guagens formais e dos autômatos (LFA). Essa teoria tem por objetivo estudar e definir os modelos matemáticos que possibilitam a especificação e o reconhecimento de linguagens, suas classificações, estruturas, propriedades, características e relacionamentos. Podemos dizer que linguagens formais são uma abstração das características gerais de uma lingua-gem de programação, são baseadas na "Teoria da Computação"e possuem um conjunto de símbolos, regras de formação de sentenças, etc.

As representações podem ser feitas por reconhecedores e geradores [Hopcroft et al. 2002]. Os reconhecedores são dispositivos formais que servem para verificar se uma sen-tença pertence ou não à uma determinada linguagem. Os sistemas geradores são dispositi-vos formais que permitem a geração sistemática de todas as sentenças de uma linguagem. Os principais sistemas geradores disponíveis são as gramáticas, onde se destacam as gra-máticas de Chomsky [Chomsky 1965]. Linguagens formais podem ser representadas de maneira finita e precisa através de sistemas com fundamentação matemática.

2.3.1

Desenvolvimento de Programas

(28)

2.3. LINGUAGENS DE PROGRAMAÇÃO 15

A primeira etapa para geração de um programa é a codificação, está é dada pela escrita, utilizando uma determinada linguagem de programação, das instruções que a máquina deve realizar para alcançar o resultado almejado. Para realização desta tarefa é preciso utilizar ambientes integrados de desenvolvimento ou editores. É possível nesta etapa utilizar qualquer editor para gerar o programa fonte, porém alguns ambientes oferecem ferramentas de edição mais poderosas, com reconhecedores e realçadores das palavras chaves de uma linguagem, geração do código fonte, possibilidade de projeto de interfaces gráficas, etc.

A segunda etapa é a tradução do programa fonte em programa objeto. Sabemos que independente da linguagem de programação utilizada e da arquitetura do sistema compu-tacional em uso o programa fonte não é executável diretamente pela unidade de proces-samento. A linguagem é uma ferramenta que permite apenas que o programa seja legível a olhos humanos. Para que o programa fonte seja executável é necessário que ele seja traduzido para o código de máquina do processador que compõe a arquitetura do sistema. Esta tarefa é realizada de forma automática por montadores e compiladores. O programa objeto gerado por estas ferramentas é apresentado de acordo com o sistema de numeração binária.

Compiladores

O programa objeto é o código de máquina produzido pelo compilador. Para que seja gerado são necessários três passos: análise léxica, análise sintática e geração de código fonte.

A análise léxica é a etapa do processo onde são reconhecidas quais cadeias de símbo-los do programa fonte representam entidades indivisíveis. Por exemplo, palavras não são tratadas letra a letra, mas sim como uma unidade composta por várias letras. O analisador léxico também identifica os conjuntos de símbolos que representam valores numéricos, operadores aritméticos, palavras, símbolos reservados e outros, gerando assim um padrão de bits conhecidos como símbolos ou tokens. Cada símbolo ou token representará um dado de entrada do analisador sintático.

(29)

16 CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA

ou, caso a sentença não pertença a linguagem descrita por essa gramática , uma indicação de erro. A ação final do processo de tradução é a geral do programa objeto, e é dado pela construção das instruções em linguagem de máquina. Esse processo envolve uma série de problemas.

Muitas vezes, dependendo do compilador, as análises léxica e sintática e a geração do programa objeto não são efetuadas em ordem sequencial. O analisador léxico começa o processo identificando o primeirotokene fornecendo-o ao analisador sintático. Já com a identificação da estrutura que vem a seguir, o analisador sintático solicita ao analisador léxico o próximo token. A medida que o analisador sintático reconhece sentenças ou comandos completos, ele chama o gerador de código, para que este possa produzir as correspondentes instruções em linguagem de máquina.

Intepretadores

Uma outra forma de execução de um algoritmo é através da sua interpretação por um programa chamado de interpretador. Esse tipo de execução ocorre em linguagens classificadas como interpretadas.

Um interpretador é um programa que será capaz de executar as instruções escritas em uma linguagem de programação de alto nível. Ao contrário do compilador que traduz as instruções em linguagem de máquina, os interpretadores, geralmente, transladam as instruções de alto nível em uma forma intermediária que é executada.

O programa responsável por realizar a interpretação recebe a primeira instrução do programa fonte, confere se a escrita está correta, converte uma sentença em linguagem de máquina e então ordena ao processador que execute esta instrução. Este processo é repe-tido para a segunda instrução, e assim sucessivamente, até a última instrução do programa fonte. Quando a segunda instrução é trabalhada, a primeira é perdida, apenas uma instru-ção fica na memória a cada passo da execuinstru-ção. Se o programa fonte for executado uma segunda vez, haverá uma nova tradução, comando a comando, visto que os comandos em linguagem de máquina não ficam armazenados para futuras execuções.

(30)

Capítulo 3

Estado da Arte

Ambientes de desenvolvimento são softwares computacionais que reúnem caracterís-ticas e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo. Muitos destes ambientes incluem editores de programa fonte, compila-dor, depurador - auxílio disponível para que seja possível encontrar e corrigir erros no programa fonte, modelagem, etc.

Neste capítulo faremos uma revisão do estado da arte relacionado com este trabalho, apresentaremos alguns ambientes de desenvolvimento voltados para robótica educacional baseado em desktop e web. Em seguida realizaremos uma comparação entre os ambien-tes disponíveis e o ambiente proposto neste trabalho, enfatizando neste comparativo as linguagens de programação integradas a cada um, as possibilidades de uso de hardware sem necessidade de softwares auxiliares e as ferramentas disponíveis.

3.1

Ambientes de Desenvolvimento para Robótica

Desk-top

Nesta seção apresentaremos alguns ambientes de desenvolvimento baseado em desk-top voltados para aplicações em robótica educacional disponíveis no mercado e encontra-dos na literatura. Faremos uma análise de cada um descrevendo as vantagens e desvan-tagens, possibilidades de hardware, linguagens de programação utilizadas o público alvo que se destinam.

3.1.1

RobotC

(31)

18 CAPÍTULO 3. ESTADO DA ARTE

para escrever e depurar programas. É uma solução para programação de diversos hardwa-res utilizando uma única linguagem baseada em C. Dentre os controladohardwa-res programáveis que este ambiente oferece suporte estão o Lego Mindstorms NXT e RCX [LEGO 2011], controladores do kit Vex [Vex 2011] e Arduino [Arduino2013].

3.1.2

RoboEduc

O software educacional RoboEduc [Sá et al. 2009] teve sua versão inicial desenvol-vida em 2003 por pesquisadores da Universidade Federal do Rio Grande do Norte. É um software voltado para aplicações em oficinas de robótica educacional, que permite o controle e a programação de vários tipos de robôs. O RoboEduc pode ser utilizado, em versões independentes, com os kits Lego RCX, Lego NXT e H-Educ [Sá 2011]. A programação do robô pode ser realizada utilizando um dos cinco níveis de programação (abstração) existentes, podendo ser realizada via programação gráfica ou textual.

A linguagem de programação utilizada, denominada R-Educ, é uma linguagem es-crita em um português, simples, que pode ser adotada por alunos a partir dos 8 anos [Pitta 2011, Aglaé et al. 2009]. A linguagem R-Educ possui comandos que permitem a movimentação de motores e a aquisição de dados dos sensores do robô, possui contro-ladores de fluxo e outros comandos, responsáveis por imprimir textos ou acender luzes no robô. Os comandos escritos em linguagem R-Educ são compilados no ambiente e enviados ao robô.

(a) Tarefa (b) Níveis de programação

(c) Programação textual

Figura 3.1: Software educacional RoboEduc

(32)

3.1. AMBIENTES DE DESENVOLVIMENTO PARA ROBÓTICA DESKTOP 19

a tela de tarefa deste software, nesta são apresentados o nome do robô, a descrição dele e qual tarefa o aluno deve realizar. São apresentados ainda três opções que devem ser escolhidas pelo usuário: controlar o robô, ensinar ao robô ou programar o robô. A Figura 3.1(b) apresenta a tela de níveis, esta tela é apresentada ao usuário quando o mesmo esco-lhe a opção da programar o robô na tela de tarefa. Como já foi mencionado anteriormente a linguagem R-Educ possui cinco níveis de abstração que são escolhidas de acordo com o grau de maturidade do aluno. Já a Figura 3.1(c) apresenta o ambiente de programação textual correspondente ao nível três de programação. Neste ambiente, os arquivos gerados possuem a extensão ".rob".

3.1.3

Software Lego Mindstorms NXT

O software Lego Mindstorms NXT acompanha os kits da linha Lego Mindstorms NXT e foi desenvolvido especificamente para programação e controle de dispositivos desta marca e modelo. Foi desenvolvido pela National Instruments [Instruments 2013b], baseado no LabVIEW [Instruments 2013a].

Este ambiente de desenvolvimento é composto por uma interface com o usuário e um bloco de diagramas onde o fluxo de dados é estruturado através de ligaçoes entre os blocos e é possível a criação não só de estruturas, mas de comportamentos, permitindo, assim, a criação de modelos interativos, com os quais é possível aprender conceitos fundamentais de ciência e engenharia.

Neste é possível utilizar todas as funcionalidades disponíveis ao controlador NXT [LEGO 2011], além de permitir o envio do programa e fornecer auxílio para montagem de alguns modelos de protótipos robóticos.

A Figura 3.2 apresenta a tela principal do software Lego Mindstorms NXT, na lateral esquerda há um menu onde são selecionados os comandos e funções que o usuário deseja inserir ao seu programa, na lateral direita é apresentado um manual de montagem de robô que pode ser utilizado pelo usuário. Já o centro da imagem é o lugar onde os blocos de programação são estruturados.

3.1.4

Microsoft Robotics Studio

(33)

20 CAPÍTULO 3. ESTADO DA ARTE

Figura 3.2: Software Lego Mindstorms NXT

oferece aos usuários a possibilidade de programar robôs e ter seus algoritmos executados tanto em um simulador quanto no hardware em si.

O Microsoft Robotics Studio possibilita o desenvolvimento de aplicações utilizando um conjunto de linguagens de programação, dentre elas: Visual C#, Visual Basic, Micro-soft IronPython e as integradas ao MicroMicro-soft Visual Studio. O ambiente é compatível com as aplicações, serviços e robôs de diversas empresas, como: Lego [LEGO 2011], Parallax [Parallax Robotics2013], RoboDynamics [RoboDynamics2013], iRobot [IRobot2013], etc.

3.1.5

Legal

O ambiente de programação Legal [PETe 2008], acompanha o kit de robótica educaci-onal da empresa PNCA. Este ambiente permite ao usuário projetar, construir e programar robôs e dispositivos mecatrônicos. Todas as ações que o robô deve executar deverão ser definidas no ambiente de programação Legal, utilizando a linguagem de mesmo nome.

O programa, uma vez escrito e compilado, será descarregado no módulo de controle do robô via cabo de dados serial. Ao fim desta etapa, o robô estará pronto para funcionar de forma autônoma e poderá ser desconectado do computador principal.

(34)

ob-3.2. AMBIENTE DE DESENVOLVIMENTO PARA ROBÓTICA WEB 21

Figura 3.3: Ambiente de programação Legal

servar que a linguagem de programação utilizada é baseada em um português simples. O ambiente oferece ainda suporte para abrir, salvar, e enviar o programa ao robô.

3.2

Ambiente de Desenvolvimento para Robótica Web

Na seção anterior avaliamos os principais ambientes de desenvolvimento para aplica-ções em robótica de uso desktop encontrados na literatura. Estes ambientes necessitam da instalação de softwares de uso específico, configuração dedriversno computador, re-quisitos de hardware específicos do computador e, em sua maoria, não são portáveis a diversos sistemas operacionais.

(35)

22 CAPÍTULO 3. ESTADO DA ARTE

de softwares específicos seja realizada.

O primeiro ambiente, trata-se de um ambiente de programação remota de robôs. O robô físico neste caso, não está com o usuário, mas sim localizado próximo a um servidor. Existem outros trabalhos encontrados na literatura que se assemelham a este primeiro [Belousov et al. 2001, Mootien et al. 2006, Lopez et al. 2009], porém como foge um pouco do escopo deste trabalho, visto que permitem apenas a programação remota de robôs, escolhemos introduzir apenas o que se relacionam diretamente com a robótica educacional.

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

(36)

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

(37)

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.

(38)

re-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.

(39)
(40)

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

(41)

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

(42)

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.

(43)

30 CAPÍTULO 4. AMBIENTE PROPOSTO

Java Enterprise Edition - Java EE

O Java Enterprise Edition (Java EE) é ummiddlewarebaseado 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

(44)

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 linlin-guagem 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.

(45)

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*

(46)

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.

(47)

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 professor mediador.

Nome e Descrição

Ao abrir o ambiente, encontramos a tela apresentada na Figura 4.2 na qual são listadas as linguagens que já se encontram cadastradas. Nesse momento é dada a possibilidade de cadastrar uma nova linguagem, para tal uma nova janela fica visível ao usuário solicitando que sejam preenchidos os dados de nome da linguagem, robô a qual esta linguagem está associada e uma breve descrição para que o usuário que for utilizar as linguagens cadas-tradas saiba qual a linguagem que se adequa a sua realidade de hardware e de abstração necessárias.

(48)

4.3. CADASTRO DE LINGUAGEM 35

Figura 4.2: Listagem de Linguagens Cadastradas

Figura 4.3: Cadastro de linguagem

Compilação e Envio

(49)

36 CAPÍTULO 4. AMBIENTE PROPOSTO

sistema a ser executada no dipositivo computacional local para o envio ou execução do programa, qual a extensão do arquivo a ser enviado, informar sobre a necessidade de en-viar algum arquivo para o dipositivo computacional local para que o envio seja efetuado, fazer o upload deste arquivo, caso ele seja necessário, e qual o nome do mesmo.

Figura 4.4: Formuário de cadastro - compilação

Caso sejam necessários mais de um arquivo para realizar a compilação, o usuário deve fazer o upload dos arquivos em um arquivo compactado e informar que o tratamento do arquivo é necessário. Com isso, ao término do cadastro o usuário será informado que a linguagem foi cadastrada corretamente sendo possível a programação em R-Educ, porém a compilação só será executada por completo e o envio só será permitido após dois dias úteis - tempo necessário para que o administrador do sistema descompacte, aloque ou instale os arquivos, caso necessário, no servidor.

Cabeçalho e Rodapé

(50)

4.3. CADASTRO DE LINGUAGEM 37

inclusão de bibliotecas e códigos que devem ser incluídos para o bom funcionamento do programa.

Nestas áreas também podem ser inseridos códigos que visam aumentar ainda mais o nível de abstração de linguagens, por exemplo, funções com alto grau de dificuldade podem ser definidas pelo professor mediador nesta área e apenas definida sua chamada na área de funções, ficando transparente ao aluno a quantidade de código e a complexidade necessária para executar um determinado comando. O cabeçalho e rodapé definidos serão inseridos em todos os programas gerados por esta linguagem.

Declaração de Funções

Agora o usuário deverá fornecer a função principal de seu programa, função main. Observe na Figura 4.5 que o formulário fornece exemplos de escrita de funções principais nas linguagens C e R-Educ para que a escrita seja feita de forma válida. Identificamos a partir dos exemplos que o usuário deve simplesmente escrever a função principal em sua linguagem, identificando através da palavra comandos onde estes deverão ser inseridos.

Figura 4.5: Formuário de cadastro - declaração da função principal

(51)

38 CAPÍTULO 4. AMBIENTE PROPOSTO

Figura 4.6: Formuário de cadastro - declaração e chamada de funções sem retorno

Tipos de Dados

Nesta parte do formulário o usuário deverá apresentar como são declarados e modi-ficados variáveis utilizando tipos de dados presentes na linguagem R-Educ. Ressaltamos que a linguagem utilizada para programação trabalha com apenas três tipos de dados: texto, numero e booleano. O tipo de dado texto manipula variáveis do tipostring, sequên-cias de símbolos e caracteres separados ou não por espaços e delimitados por aspas, o cadastro de variáveis do tipo texto está apresentado na Figura 4.7. O tipo de dado numero manipula variáveis numéricas do tipo float, números que podem assumir valores inteiros ou em ponto flutuante. Já o tipo de dado booleano manipula variáveis lógicas do tipo verdadeiro ou falso.

(52)

4.3. CADASTRO DE LINGUAGEM 39

a variável declarada. Já para modificar o valor da variável, o usuário deverá novamente utilizar variavel como nome da variável e novo_valor para o valor atribuído.

Figura 4.7: Formuário de cadastro - declaração de variáveis do tipo texto

Operadores

No formulário são solicitados os operadores lógicos e relacionais da linguagem que está sendo cadastrada. Apesar de os operadores possuírem um padrão para a maior parte das linguagens, fornecemos exemplos dos operadores em duas linguagens para ajudar no preenchimento. O cadastro de operadores está apresentado na Figura 4.8.

Figura 4.8: Formuário de cadastro - operadores

Controladores de Fluxo

A linguagem R-Educ possui os seguintes controladores de fluxo: se, enquanto, re-pita,teste,farei,paraesair. O formulário de cadastro solicita ao usuário que seja feita

a escrita de cada um destes controladores na linguagem que está sendo cadastrada se-guindo um determinado padrão. Este padrão é apresentado em duas linguagens distintas no exemplos visando orientar o cadastro.

Na Figura 4.9, é solicitada a escrita do controlador de fluxosee apresentados os

Imagem

Figura 3.1: Software educacional RoboEduc
Figura 3.2: Software Lego Mindstorms NXT
Figura 3.3: Ambiente de programação Legal
Figura 3.4: Mindstorms Internet Control Environment - MICE
+7

Referências

Documentos relacionados

Predicted values were calculated by measuring the joint probability of effects on isopods’ biomass variation found for single exposures to different soil

Os doentes paliativos idosos que permanecem nas instituições privadas são encaminhados pelos hospitais em que estavam ou internados pelos próprios familiares

Dada a potencialidade que o estudo com esse gênero tem para estimular a reflexão crítica do alunado, pautada pelos multiletramentos, analisamos a presença de aspectos culturais

Foi possível concluir que a adaptação de algumas medidas e ferramentas já implementadas na área da qualidade (fluxogramas de processo, tabela de identificação de perigos e riscos

The strict partition problem is relaxed into a bi-objective set covering problem with k-cliques which allows over-covered and uncovered nodes.. The information extracted

Desde logo, a nossa compreensão e interpretação da importância funcional e ritual das lamentações públicas das carpideiras e dos carpideiros egípcios é sublinhada pelo

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades

Na produção de sementes as características avaliadas foram: tempo para florescimento, número de ramificações por planta, comprimento de síliquas, número de síliquas por