aplicações da robótica no ensino de ciência da computação · a robótica é uma ciência...

8

Click here to load reader

Upload: hoangdan

Post on 16-Nov-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aplicações da Robótica no Ensino de Ciência da Computação · A robótica é uma ciência multidisciplinar que estuda o desenvolvimento e a montagem de robôs. Devido ao seu

Aplicações da Robótica no Ensino de Ciência da Computação

Wesley Attrot, Pedro Paulo da Silva Ayrosa

Departamento de Computação – Universidade Estadual de Londrina (UEL) Caixa Postal 6002 – 86051-990 – Londrina – PR – Brasil

{Wesley_Attrot,Pedro_Paulo}@ayrosa.com

Resumo. A robótica é uma ciência multidisciplinar que estuda o desenvolvimento e a montagem de robôs. Devido ao seu caráter multidisciplinar, o ensino e o estudo da robótica são excelentes ferramentas para promover o trabalho em equipe, a capacidade de buscar novos conhecimentos e promover a interação com pessoas de diversas áreas de conhecimento. Com o objetivo de mostrar a potencialidade de aplicação da robótica no ensino de Ciência da Computação, desenvolveu-se um nova linguagem de programação para o kit de robótica MindStorms da Lego. O desenvolvimento desta nova linguagem mostrou que é possível unir a computação e a robótica em projetos que tenham propósito educacional.

Abstract. The robotics is a science multidisciplinary that studies the development and the assembly of robots. Due to its multidisciplinary character, the education and the study of the robotics are excellent tools to promote the work in team, the ability to search for new knowledge and promote the interaction with people of several areas of knowledge. With the objective of show the potentiality of application of the robotics in the education of Computer Science, a new programming language was developed to robotics kit MindStorms of Lego. The development of this new language showed that is possible to join the computation and the robotics in projects that have educational purpose.

1. Introdução Segundo pesquisadores da Case Western Reserve University [Beer, Chiel e Drushel, 1999], em geral os estudantes encontram dificuldades de adaptação quando saem do mundo acadêmico e entram no mundo profissional. Tal dificuldade é proveniente do fato de que os estudantes não estão habituados a trabalhar em equipe, não estão familiarizados com os problemas encontrados no mundo real e raramente têm a oportunidade de ter um pensamento crítico.

Inúmeros problemas científicos ou de engenharia exigem conhecimentos multidisciplinares para a realização de cada uma das partes que compõem um projeto e também grande perspicácia por parte dos pesquisados a fim de solucionar os eventuais problemas que possam surgir durante a realização do mesmo.

Com base nisto, o estudo da robótica pode vir a ser um meio de suprimir as deficiências dos alunos de Ciência da Computação na medida em que ela vai lhes

Page 2: Aplicações da Robótica no Ensino de Ciência da Computação · A robótica é uma ciência multidisciplinar que estuda o desenvolvimento e a montagem de robôs. Devido ao seu

proporcionar a visão de como trabalhar em equipe e também os conhecimentos multidisciplinares (eletrônica, mecânica, etc) que envolvem o projeto, construção e programação de um robô, além de lhes proporcionar uma clara visão dos reais problemas que ocorrem em um projeto fora do mundo acadêmico.

2. Robótica Educacional A robótica educacional pode ser definida como a montagem de modelos e sistemas robóticos tendo como finalidade o aprendizado de conceitos científicos (física, matemática, eletrônica, mecânica, etc) entre outros por parte de quem realiza a montagem de tais sistemas. Os sistemas robóticos são sistemas mecânicos e eletrônicos que realizam alguma espécie de atividade física, tal como se locomover, movimentar um braço ou levantar um objeto. O objetivo da montagem de tais sistemas é a visualização de conceitos físicos e matemáticos de maneira concreta.

Os sistemas robóticos são em geral montados com motores, sensores e diversas outras peças. São controlados por computador ou podem ser programados para que apresentem um determinado comportamento. Existem empresas que fabricam e comercializam kits para a montagem de robôs, os quais podem ser utilizados tendo-se em vista propósitos educacionais.

A possibilidade de se utilizar à robótica como meio de reforço ao ensino tradicional (no qual os alunos ficam sentados em carteiras prestando atenção ao que o professor escreve na lousa) é estudada desde os anos 50, pois além de ser uma forma mais estimulante de aprendizado, ela faz com que o aluno entre em contato com tecnologias novas e também com novos conhecimentos.

Os primeiros usos da robótica para fins educacionais ocorreram em 1952 com as tartarugas de solo de Gray Walter e W. Ross Ashby que eram dispositivos que se deslocavam pelo chão e se autocontrolavam através de seus sensores e de um programa. Posteriormente Seymour Papert (fundador do Laboratório de Inteligência Artificial do MIT) criou a linguagem de programação LOGO, com a qual se podia controlar uma tartaruga de solo através de comandos; isto no final dos anos 60 [COLEÇÃO 1987].

3. Potencial de Aplicação Segundo Beer, Chiel e Drushel (1999), a transição de um estudante para a vida profissional é em geral difícil. Ainda segundo estes autores, tal dificuldade se deve ao fato de que da grande parte do trabalho de programação que muitos estudantes de ciência e de engenharia da computação realizam no setor industrial, após estarem formados, o software, é apenas um componente de um sistema muito maior. Este software deve ser projetado tendo-se os outros componentes em mente e também através da colaboração e da interação com as outras pessoas responsáveis pelas outras partes do sistema. Por exemplo, implementar o software que controla a injeção eletrônica de um automóvel é muito diferente de implementar uma busca em profundidade numa árvore binária em uma aula de estrutura de dados. Geralmente essa dificuldade na transição da condição de estudante para a condição de profissional se deve por quatro razões principais:

Page 3: Aplicações da Robótica no Ensino de Ciência da Computação · A robótica é uma ciência multidisciplinar que estuda o desenvolvimento e a montagem de robôs. Devido ao seu

• Os estudantes não são treinados para lidar com problemas que necessitem de uma aproximação integrada;

• Eles raramente são expostos a problemas do mundo real;

• Eles raramente são encorajados a resolver problemas em um grupo de trabalho, ou trazer informações de outras áreas de conhecimento;

• Eles raramente têm a oportunidade de realizar um pensamento crítico.

Aproximações integradas são essenciais para a solução de problemas em ciência e engenharia. Uma idéia que muitos estudantes de engenharia têm é que cada peça de um projeto complexo funciona como um sistema isolado, e o sistema completo irá funcionar como um todo unificado. Na prática isto nem sempre é verdade. Problemas inesperados surgem caso não seja feito um exame das propriedades especiais de cada peça que integra o sistema, e de suas interações. Cada vez mais, o software é uma parte embutida em um sistema, tal como um avião, um forno microondas ou uma máquina de fotocópias. Em tais sistemas, é essencial integrar o projeto e a implementação das partes mecânica, eletrônica e de controle (software).

Fora da sala de aula, os problemas da ciência e da engenharia compartilham certas características do mundo real. Ao contrário dos problemas presentes nos livros texto, pode não haver uma única resposta correta. Além disso, ao invés de um professor, é o mundo quem decide se um projeto de engenharia ou hipótese científica está correta ou não. Não se podem ignorar recursos limitados de tempo, dinheiro e materiais. Finalmente, os dispositivos do mundo real nunca seguem os modelos ideais. Um exemplo é um programa que assume que um sensor sempre irá retornar valores exatos e válidos e que motores irão funcionar na velocidade ordenada e que o torque não será afetado por ruídos, entradas espúrias, saídas não confiáveis ou quebras. Os estudantes não têm experiência para estimar a importância destas questões.

O progresso nos problemas da ciência e da engenharia é feito através da colaboração de grupos interdisciplinares e não por uma pessoa trabalhando de forma isolada. As práticas educacionais correntes enfatizam a solução individual do problema com base em disciplinas bem definidas. Como conseqüência, os estudantes não têm as características interpessoais necessárias para participarem de um grupo de trabalho, desta forma eles não terão a capacidade de transpor a barreira lingüística que torna a comunicação interdisciplinar tão difícil.

Os estudantes freqüentemente sentem que a educação é algo que é feito para eles, ao invés de algo que eles fazem por si próprios porque eles não são encorajados a pensar criticamente. Isto não limita somente a maneira como eles aprendem, mas geralmente os afasta de uma preparação para o aprendizado contínuo ao longo da vida, de que eles irão necessitar enquanto profissionais. Os estudantes não estão totalmente errados em tomar esta atitude. A prática educacional corrente encoraja a audição passiva durante as aulas, ao invés de uma participação ativa. Isto leva a procura da única resposta que o professor deseja e também a retenção e repetição mecânica, ao invés de explorar criativamente as múltiplas possibilidades através da análise crítica do material.

Segundo, ainda, Beer, Chiel e Drushel, para situar estes problemas educacionais, é essencial identificar o assunto que naturalmente empregue todos estes resultados.

Page 4: Aplicações da Robótica no Ensino de Ciência da Computação · A robótica é uma ciência multidisciplinar que estuda o desenvolvimento e a montagem de robôs. Devido ao seu

Um assunto que engloba todos estes resultados é a robótica. Desta forma o estudo e a montagem de robôs pode ser a chave para solucionar tais problemas educacionais. Beer, Chiel e Drushel em princípio, identificaram quatro metas educacionais na robótica: integração, problemas do mundo real, interdisciplinaridade nas equipes, e pensamento crítico. Construir um robô requer que os estudantes integrem controle (software), eletrônica e mecânica em um dispositivo funcional, desta forma, eles irão se confrontar com as interações entre os diferentes subsistemas e terão a oportunidade de explorar as diferenças existentes entre os mesmos durante a construção de seu robô.

Construir um autêntico robô, ao invés de programar uma simulação, imediatamente confronta os estudantes com as imperfeições dos dispositivos do mundo real, bem como proporciona o retorno imediato do sucesso ou falha de suas idéias. Se os estudantes trabalharem em equipe, eles serão encorajados a reunir suas habilidades individuais, permitindo-lhes se especializarem em tarefas específicas, dando-lhes experiência em desenvolver habilidades interpessoais para articular e defender seus pontos de vista, mas principalmente de alcançar um consenso do que é melhor para o grupo.

Pelo fato da robótica envolver uma grande e variada gama de áreas de conhecimento, os estudantes aprendem que muitas perspectivas podem ser úteis para solucionar um problema difícil. Eles são motivados a aprender a “língua” de cada uma dessas áreas de conhecimento para quebrar as barreiras da interdisciplinaridade, desta forma os estudantes estão adquirindo conhecimentos de diversas áreas e começarão a ver um sistema como um todo e não mais como subsistemas isolados e reconhecerão que não há uma única resposta correta para tudo, o que encoraja e motiva a sua criatividade.

4. Desenvolvimento de uma aplicação utilizando robótica Será possível desenvolver um trabalho empregando a robótica, cujo objetivo seja a complementação ou mesmo a própria formação acadêmica de um estudante de Ciência da Computação?

Segundo as Diretrizes Curriculares do Ministério da Educação (http://www.mec.gov.br/), um estudante de computação raciocina de forma diferente de outros profissionais porque possui a habilidade de construir algoritmos como soluções de problemas. Desta forma deve-se procurar desenvolver um projeto que seja ao mesmo tempo estimulante e desafiador ao estudante de computação.

Ainda segundo as Diretrizes Curriculares do Ministério da Educação, compiladores são ferramentas de tradução entre linguagens, mantendo a semântica original, tais como: ambientes para linguagens de programação (compiladores, interpretadores, debuggers, profilers, etc), ambientes para o processamento de linguagens naturais (verificadores orto-sintáticos e tradutores), ferramentas para a compatibilização entre dispositivos de hardware (device-drivers, emuladores, cross-compilers, etc.), dentre outras.

O estudo de Compiladores deve abordar: (i) a estrutura de um compilador; (ii) a análise de programas-fonte, com o estudo dos métodos mais importantes de análise

Page 5: Aplicações da Robótica no Ensino de Ciência da Computação · A robótica é uma ciência multidisciplinar que estuda o desenvolvimento e a montagem de robôs. Devido ao seu

léxica e sintática, semântica, de organização da tabela de símbolos e gerenciamento de erros; (iii) as ferramentas para a geração automática dos componentes de um compilador; (iv) máquinas abstratas e otimização de código intermediário; (v) ambientes de tempo de execução; (vi) síntese de programas-objeto, compreendendo esquemas de tradução dirigida por sintaxe, geração de código de máquina e otimização de código.

É fundamental que ao fim da disciplina de Compiladores o aluno seja capaz de justificar a escolha das ferramentas, ambientes, paradigmas e linguagens usados e suas versões no desenvolvimento de qualquer projeto de software in-the-small. Conceitos de modularidade, mantenibilidade, portabilidade e custos de software devem ser analisados durante todo o curso.

O ensino de Compiladores deve assegurar aos alunos a oportunidade de aplicação das técnicas estudadas no desenvolvimento de projetos práticos de porte realístico. Compiladores é uma das áreas da Computação mais bem formalizadas, o que enseja implementações de ferramentas de alta correção e eficiência.

A matéria Compiladores deve ser precedida do estudo de conceitos teóricos de linguagens e autômatos, sistema operacionais e arquiteturas de computadores.

A área de compiladores tem como objetivo final aproximar o computador das linguagens próprias de seus usuários, facilitando assim a comunicação entre ambos.

Como anteriormente citado, a disciplina deve fornecer ao aluno uma oportunidade de pôr em prática os conhecimentos adquiridos. A construção de uma nova linguagem de programação se constitui uma ótima oportunidade de aplicação destes conhecimentos apresentados na disciplina de compiladores.

Tendo-se em vistas estas afirmações, optou-se por realizar uma aplicação da robótica dentro da área de compiladores. A aplicação desenvolvida foi uma nova linguagem de programação para o Kit MindStorms da LEGO. Deve-se ressaltar que qualquer outra disciplina de Ciência da Computação poderia ter sido escolhida, conforme o tipo de enfoque desejado.

A escolha da disciplina de compiladores é interressante pois a construção de compiladores se estende através dos temas de linguagens de programação, arquitetura de máquina, teoria das linguagens, algoritmos e engenharia de software [Aho, Sethi e Ullman, 1995]. Ao longo dos anos 50, os compiladores foram considerados programas notoriamente difíceis de se escrever. Desde então foram descobertas técnicas sistemáticas para o tratamento de muitas das mais importantes tarefas que ocorem durante a compilação. Igualmente, foram desenvolvidas boas linguagens de implementação, ambientes de programação e ferramentas de software. Com estes avanços, até um compilador substancial pode ser escrito por estudantes, num curso semestral [Aho, Sethi e Ullman, 1995].

A construção de um compilador para o Kit de robótica da LEGO exige que os envolvidos tenham conhecimento da arquitetura e do funcionamento do mesmo. Desta forma, os envolvidos terão a oportunidade de estudar o funcionamento de uma arquitetura real e não muito complexa.

Page 6: Aplicações da Robótica no Ensino de Ciência da Computação · A robótica é uma ciência multidisciplinar que estuda o desenvolvimento e a montagem de robôs. Devido ao seu

5. Linguagem WELIX A linguagem desenvolvida recebeu o nome de WELIX. Esta nova linguagem é baseada no Portugol. O Portugol é uma pseudolinguagem de programação (simbiose do Português com o ALGOL e Pascal). A idéia do Portugol é permitir que com um conjunto básico de primitivas, seja possível ao projetista pensar no problema e não na máquina que vai executar o algoritmo e, por outro lado, não fique muito distante desta mesma máquina [GUIMARÃES, 1994]. Embora seja baseado no Portugol, a linguagem WELIX incorpora um pouco da formalidade da linguagem Pascal (elementos semânticos) e alguns elementos da linguagem C (elementos sintáticos).

Diferentemente do Portugol, a linguagem WELIX não é uma linguagem de propósito geral, mas sim de aplicação específica, pois gera código específico para o RCX que integra o Kit MindStorms da LEGO e inclui uma API integrada especialmente destinada a realizar o controle do hardware específico que integra um kit de robótica, ou seja, motores e sensores. A API da linguagem WELIX é baseada num conjunto semelhante presente na linguagem NQC desenvolvida por Dave Baum [BAUM, 2000].

A implementação do compilador WELIX foi feito em módulos; assim temos um módulo de análise léxica, um módulo de análise sintática e um terceiro módulo de análise semântica e geração de código.

O desenvolvimento da linguagem de programação WELIX para o RCX tem como objetivo mostrar uma aplicação da robótica dentro do campo de estudo da Ciência da Computação. A disciplina de compiladores foi escolhida, visto que o desenvolvimento de um compilador envolve diversos temas da computação como linguagens de programação, linguagens formais, arquitetura de computadores, estruturas de dados, etc. Qualquer disciplina de computação poderia ter sido escolhida, dependendo dos objetivos desejados.

O envolvimento da robótica com a computação, pode ser a vir uma maneira de estimular o estudante a estudar e motivá-lo a buscar soluções para os problemas que ele fatalmente irá encontrar durante seu aprendizado, tornando-se assim mais independente do professor. O presente projeto poderia, por exemplo, fazer parte da disciplina de compiladores, onde os alunos teriam que desenvolver o compilador e projetar seus próprios robôs e testar a eficácia do mesmo.

O compilador desenvolvido poderia, por exemplo, ser utilizado no ensino de lógica de programação e programação. Os alunos desenvolveriam algoritmos em WELIX e posteriormente os testariam na prática com os robôs. Em sistemas operacionais, os alunos poderiam aplicar os conceitos aprendidos em sala de aula desenvolvendo um novo sistema operacional para o Kit de robótica MindStorms, tal como o LegOS. Além de verificar na prática o funcionamento dos conceitos aprendidos, o conhecimento adquirido em arquitetura de computadores seria extremamente utilizado. Em inteligência artificial, os alunos poderiam criar robôs e tentar simular comportamento inteligente nos mesmos, com base nas teorias estudadas. No campo de comunicação de dados, os alunos poderiam criar um novo protocolo de comunicação para o RCX, possivelmente criando circuitos de interface entre o RCX e o computador, integrando além da comunicação de dados, a disciplina de sistemas digitais. Vale ressaltar que o desenvolvimento de tal tipo de circuito envolveria diversos detalhes que

Page 7: Aplicações da Robótica no Ensino de Ciência da Computação · A robótica é uma ciência multidisciplinar que estuda o desenvolvimento e a montagem de robôs. Devido ao seu

somente serão resolvidos com base nas teorias da física, o que acabaria por trazer mais uma disciplina componente da Ciência da Computação para o âmbito das possíveis aplicações da robótica.

O objetivo deste trabalho é apresentar a robótica como ferramenta educacional, mostrar que é possível desenvolver um trabalho inicial envolvendo computação e robótica e, mostrar que as possibilidades da aplicação envolvendo estas duas ciências são inúmeras, porque como disse Matthew L. Ginsberg, as habilidades complementares dos humanos e das máquinas, tornam possível resolver problemas que nenhum dos dois conseguiria sozinho.

6. Conclusão A realização deste trabalho permitiu concluir que é possível desenvolver um trabalho educacional envolvendo robótica e computação.

Com a criação da linguagem de programação WELIX e com o desenvolvimento de seu compilador para o RCX, que integra o Kit MindStorms da Lego, foi apresentada uma aplicação dentro da disciplina de compiladores. Deve-se ressaltar que qualquer disciplina pertencente ao âmbito da Ciência da Computação poderia ter sido escolhida, dependendo apenas dos objetivos educacionais a serem alcançados. A disciplina de compiladores foi escolhida, pois a construção de um compilador demanda conhecimento de diversas áreas da computação [KNUDSEN, 1999].

Este trabalho engloba algumas das metas educacionais inicialmente propostas. O desenvolvimento de um compilador para o RCX proporciona uma visão do tipo de problema que está presente em projetos fora do mundo acadêmico. A comunicação e o controle que o RCX mantém com os sensores e os motores exigem a interação com outras ciências, proporcionando uma visão multidisciplinar do projeto. Por último, deve-se ressaltar que os inúmeros problemas que surgiram neste projeto, bem como outros que poderiam ter surgido, são uma forma de fazer com que o pesquisador tenha de investigar inúmeras possibilidades sob várias óticas a fim de encontrar a solução ou a melhor solução que resolva o problema, o que em geral acaba por resultar em aquisição de conhecimento.

Desta forma demonstra-se que a robótica pode ser utilizada como ferramenta educacional no ensino de Ciência da Computação.

7. Referências Bibliográficas AHO, Alfred V.; SETHI, Ravi; ULLMAN, Jeffrey D. Compiladores – Princípios,

Técnicas e Ferramentas. Rio de Janeiro: LTC – Livros Técnicos e Científicos Editora S.A., 1995.

BAUM, Dave. Dave Baum’s Definitive Guide to Lego Mindstorms: Technology in Action Series. United States of America: Apress, 2000.

BEER, Randall D.; CHIEL, Hillel J.; DRUSHEL, Richard F. Using Autonomous Robotics to Teach Science and Engineering. Communications of the ACM, jun. 1999.

Page 8: Aplicações da Robótica no Ensino de Ciência da Computação · A robótica é uma ciência multidisciplinar que estuda o desenvolvimento e a montagem de robôs. Devido ao seu

BRASIL. Ministério da Educação: Secretaria de Educação Superior. Diretrizes Curriculares de Cursos da Área de Computação e Informática: 1998.

COLEÇÃO Microcomputador – Curso Prático. Editora Globo, 1987.

GUIMARÃES, Ângelo de M; LAGES, Newton A. de C. Algoritmos e Estruturas de Dados. Rio de Janeiro: LTC – Livros Técnicos e Científicos Editora S.A., 1994.

KNUDSEN, Jonathan B. The Unofficial Guide to Lego Mindstorms Robots. O'Reilly & Associates, novembro de 1999.