Programação Gráfica de Robôs na TV e no PC
Anelisa Diógenes Freitas², Carla da Costa Fernandes¹, Samuel Oliveira de Azevedo¹, Aquiles Medeiros Filgueira Burlamaqui², Renata Pitta Barros¹, LuizEduardo Cunha Leite², Akynara Aglaé³, Luiz Marcos Garcia Gonçalves¹ ¹Departamento de Engenharia da Computação e Automação (DCA)
²Escola de Ciências e Tecnologia (ECT) ³Departamento de Educação
Universidade Federal do Rio Grande do Norte (UFRN) – Natal – RN – Brasil {anelisadf, carlafcf, samuel.azevedo, aquilesburlamaqui, repitta,
leduardocl, akynara}@gmail.com, [email protected]
Abstract. The focus of this project is the implementation of a graphical programming interface to Digital TV and computers. This interface provides that lay people or those with less knowledge in programming can program LEGO robots in many levels of abstraction. At first we must select data to a XML profile, to determine which actions can be used to program the robot that is connected with the IDTV Set-Top Box and the computer. The program interprets the XML file and assemble a palette of programming with all the available options to the programmer.
Resumo. O foco deste trabalho é a implementação de uma interface de programação gráfica para TV Digital e para computadores. Essa interface por sua vez, proporciona a pessoas leigas ou com pouca instrução em programação a capacidade de programar robôs LEGO em vários níveis de abstração. Inicialmente são selecionados dados necessários para compor um perfil XML, de modo a determinar quais ações podem ser usadas para programar um determinado robô que está conectado ao conversor de TVDI ou ao computador. O programa interpreta o arquivo XML e monta uma paleta de programação com todas as opções disponíveis para o programador.
Palavras-chave
: Robótica Educacional, TV Digital, Programação Gráfica1. Introdução
Com o objetivo de contribuir para a educação digital, sentimos a necessidade da criação de um software que proporcione aos analfabetos digitais a oportunidade de controlar um dispositivo remoto através de um computador associado a um kit de robótica. Foi desenvolvido o sistema RoboEduc, um software voltado para a robótica educacional. Esse sistema tem incorporado conceitos envolvendo tecnologia digital, fazendo com que os seus usuários possam evoluir no seu processo educacional.
Com o advento da TV Digital, enxergamos a oportunidade de difundir de forma massiva o acesso da robótica educativa através do poder de penetração da televisão nos lares brasileiros.
O surgimento da TV digital se deu em função do desenvolvimento da TV de alta definição (HDTV). Posteriormente foi adicionada a interatividade, que se destacou como um grande diferencial, permitindo que o usuário mande mensagens sobre os
programas como em casos de enquetes e jogos. Porém o nível de interatividade explorado pelas emissoras da TV não se aprofunda dos modelos de negócio existentes atualmente, há espaço para criação de aplicações com maior interatividade. E o uso de robótica educativa aplicada a TV pode trazer novas formas de interatividade.
Para preencher esta lacuna, criamos uma ferramenta que permite controle e programação de dispositivos remotos conectados a um conversor de Televisão Digital Interativa (TVDI).
Com o propósito de controlar um dispositivo remoto (como um robô) foi criado um ambiente de programação gráfica para TVDI. Esse ambiente será capaz de gerar um código que será ligado a um vídeo ou aplicação interativa, produzindo assim, ações em dispositivos remotos na casa do usuário de forma simultânea, por exemplo, com um vídeo.
Robôs podem ser úteis no treinamento de habilidades básicas em computação, como operação de computadores usando comandos de texto, comandos visuais, programação, redes etc. Robôs podem ser úteis também quando quer se ensinar matemática ou física.
2. Trabalhos Relacionados
O RoboLab é um ambiente de programação que vem junto aos kits da linha LEGO Mindstorms [5]. Existe um breve guia que ajuda a instalar o programa, ensina os princípios básicos de programação e contém as funções que podem ser utilizadas, porém, é possui algumas limitações. Os programas feitos no RoboLab podem ser passados para o RCX através de uma torre (IR) infravermelha. Esse programa é dividido em três níveis de programação e permite que o nível de programação combine o conhecimento e as habilidades do estudante como o Piloto, Inventor e Investigador. Em todas essas etapas, a programação é realizada através de ícones que é uma linguagem de programação gráfica LabVIEW [6]. Ele requer certo conhecimento e compreensão das funcionalidades de baixo nível do robô (motores e sensores).
Os programas feitos no Mindstorms NXT 2.0 são passados para o NXT através de uma conexão Bluetooth. O programa detém de várias funções, dentre elas as mais comuns são proporcionar movimentos, sons e imagens.
Fazendo a análise do RoboEduc com o RoboLab e Mindstorms NXT 2.0, percebemos que essas funções podem ser utilizadas por pessoas que não tem conhecimentos sobre robótica, programação e informática. Comparando estas ferramentas, também percebemos que, apesar de possibilitarem a programação gráfica, as duas últimas se apresentam em um nível de abstração muito baixo. O aluno/usuário dessas ferramentas precisa conhecer o funcionamento interno dos componentes do robô para conseguir programar corretamente. Já com o ambiente de programação gráfica do RoboEduc, é possível programar um robô apenas arrastando botões que representam diretamente as ações que ele vai desempenhar.
3. Solução
3.1. Plataforma para TVDI
O ambiente de programação gráfica que foi desenvolvido usa um arquivo que contém os perfis em XML [8] com informações sobre os dispositivos robóticos que serão usados. Esse perfil é composto por informações do driver do robô, como na Figura 1, e por informações descrevendo que ação do robô corresponderá a ativação de quais motores e de quais sensores.
Porém esse mesmo ambiente pode ser reutilizado para diferentes níveis de abstração de programação gráfica, bastando ler um perfil XML [8] diferente para cada nível de abstração.
Esse ambiente também será o responsável pela adição de botões na paleta de ações que podem ser usados para programar esses dispositivos.
A interface gráfica utilizada foi desenvolvida com a interação entre a linguagem NCL (Nested Context Language) [1] e a linguagem Lua [2] responsável tanto pela interface gráfica quanto pela lógica. O NCL é responsável pela delimitação da região da tela e abertura do script Lua. Essa aplicação dá a capacidade do usuário programar dispositivos remotos, para que, posteriormente, tal aplicação seja executada pelos usuários da SBTVD (Sistema Brasileiro de TV Digital).
Figura 1 – Perfil XML
Basicamente, o usuário passa a deter total acesso aos módulos executar, compilar, programar, abrir, editar, salvar e fechar (Figura 2). Enquanto as aplicações interativas apenas executam um programa que foi feito neste ambiente de programação.
Figura 2 – Diagrama de casos de uso
Consonante o disposto anteriormente, o módulo programar foi desenvolvido visando proporcionar, de forma efetiva, a leigos ou pessoas com pouca instrução em programação, a possibilidade de programar dispositivos remotos utilizando-se de interface gráfica de fácil compreensão, como mostrado na figura abaixo (Figura 3).
Figura 3 – Interface Gráfica de Programação para TVDI
Interface essa que, por sua vez, contém botões de ações (caixa da esquerda na Figura 3) de acordo com o dispositivo remoto conectado, que estarão à disposição do usuário para que esse os selecione, objetivando a posterior compilação desse programa.
Mesmo após ser compilado e executado, o módulo programar fica ainda à disposição do usuário para que sejam feitas possíveis alterações. Enquanto isso, a versão executável final da aplicação interativa ficará impossibilitada para receber alterações, ou seja, poderá apenas ser executada. Como exemplificado no diagrama de atividade abaixo (Figura 4).
Figura 4 – Diagrama de atividades
3.2. Plataforma para PC
O software RoboEduc foi desenvolvido utilizando a linguagem C++ [9] e a biblioteca Qt versão 4.6 [7], para a implementação das interfaces gráficas.
Figura 5 – Telas dos níveis de programação gráfica 1,2 e 4 com drag and drop.
O programa possui 5 níveis de programação, sendo 3 deles (níveis 1,2 e 4) níveis de programação gráfica, que estão ilustrados na Figura 5. Essa programação é feita por meio do mecanismo drag and drop (arrastar e soltar). Em todos esses níveis o usuário tem a possibilidade de escolher uma ação e arrastá-la para construir um conjunto de ações que será posteriormente executado pelo robô.
No software RoboEduc é usado um XML [8] para salvar as características de todos os robôs cadastrados, incluindo ações e sentidos. Para todos os níveis de programação só são disponíveis as ações cadastradas para o robô selecionado.
A diferença do nível 2 para o primeiro nível é que neste foram acrescentadas as estruturas de fluxo. O nível de programação 4 é bem diferente dos níveis anteriores. Nele o usuário precisa ter um conhecimento maior da estrutura do robô, principalmente dos motores, já que cada ação representa o movimento de apenas um motor do robô. Nesse nível também podem ser utilizadas estruturas de fluxo.
Essa diferença entre os níveis de abstração mesmo na programação gráfica representa os diferentes níveis de conhecimento dos usuários (alunos).
Todos os níveis possuem as seguintes funcionalidades: compilar, enviar, salvar e abrir programa. A tradução da linguagem gráfica para a linguagem de NXC é transparente ao usuário.
3.3. Diferenças entre programar para TVDI e PC
Programar interfaces gráficas para TV Digital Interativa é uma atividade complexa, quando se deseja criar a interface ao usuário de uma forma mais livre e criativa, uma vez que o usuário dispõe, geralmente, de uma única forma de interação com a televisão - um controle remoto. Esta limitação influencia demais nas formas possíveis de interação. Enquanto isso a programação de interfaces para computadores é uma atividade mais livre para a criatividade do programador, visto que o mesmo dispõe de uma série de dispositivos para facilitar a interação do usuário com o computador. Como foi dito anteriormente, atualmente, toda aplicação para TVDI para o SBTVD deve ser feita utilizando as linguagens NCL e Lua, porém para testar essa aplicação no
computador, utilizamos um simulador de um conversor com o middleware versão Ginga-NCL C++ v. 0.11.2 rev.23, que tem algumas funções que não estão implementadas no conversor usado para teste. Outra divergência é que no simulador as aplicações são executadas de forma mais rápida, proporcionando um grande problema para o programador, pois muitas vezes a aplicação funciona de forma satisfatória no simulador, e quando ocorre a passagem para o conversor usado de teste, a aplicação não funciona como desejado.
No software RoboEduc, o usuário seleciona os botões de direção e estruturas de fluxos, utilizando a tecnologia drag and drop, que consiste na utilização do mouse para arrastar tais botões para programar um dispositivo remoto, no caso, um robô. É interessante notar que o software RoboEduc tem ambientes de programação gráfica voltados para a inclusão digital, dando a oportunidade de pessoas com pouca instrução em programação de programar o dispositivo supracitado.
Tentamos adaptar a tecnologia drag and drop para TVDI, mas encontramos dificuldades pelo caminho: primeiro, a falta de recursos para a interação - como citado no início do texto; segundo, não é trivial a utilização dessa tecnologia para a TV Digital Interativa por não dispormos do mouse. Mas poderíamos tentar usar um controle remoto com acelerômetro para tentar usar essa tecnologia, mas a complexidade e limitações do NCLUA [1] e a necessidade de todo usuário da nossa solução possuir um controle com este recurso nos fez optar por não tentar forçar esta solução. A solução viável seria selecionar os botões com o controle remoto utilizando as setas de direções (frente, trás, esquerda e direita), e o botão OK (Figura 6).
Figura 6 - Adaptando o uso da tecnologia drag and drop para TVDI
4. Considerações Finais
A partir da interface gráfica desenvolvida podemos notar mudanças no comportamento das crianças que participam desse projeto. Estas, quando entraram em contato com a interface, aprenderam novos conhecimentos sobre direções, lógica e estruturas de controle de fluxo. As mudanças se estendem desde as oficinas de robótica e o desempenho em sala de aula até o comportamento em suas casas.
Essa interface gráfica desenvolvida tanto para TVDI quanto para o computador tem o intuito de proporcionar conhecimentos de linguagem de programação, lógica de algoritmos e informática, contribuindo assim para a educação digital. Nas TV digital, esse ambiente de programação tem o propósito de aumentar a interatividade, proporcionado uma interface gráfica que dá a opção de controlar um dispositivo remoto junto com programas educativos.
A versão para TV também possibilita a popularização do acesso a uma ferramenta de robótica educacional, uma vez que programas interativos de TV são transmitidos em massa para seus usuários, antes chamados de telespectadores.
Agradecimentos
Gostaríamos de agradecer ao Ministério da Cultura que financiou este trabalho a partir do Programa Laboratórios de Experimentação e Pesquisa em Tecnologias Audiovisuais – XPTA.LAB, através da Sociedade Amigos da Cinemateca, para compor o Laboratório de Excelência em Desenvolvimento de Aplicativos para Produção Edição e Difusão de Conteúdos Audiovisuais pela Internet e TV Digital. E ao laboratório Natalnet e a TV Universitária da UFRN por demais recursos e espaço utilizados.
Referências
[1] ABNT NBR 15606-2: Televisão digital terrestre – Codificação de dados e especificações de transmissão para radiodifusão digital Parte 2: Ginga-NCL para receptores fixos e móveis – Linguagem de aplicação XML para codificação de aplicações. Disponível em: [http://tiny.cc/zz60x]. Acessado em: 01/07/10.
[2] Manual de Referencia Lua 5.1. Disponível em: [http://tiny.cc/q1jai]. Acessado em: 01/07/10.
[3] BARBOSA, SIMONE DINIZ JUNQUEIRA; SOARES, LUIZ FERNANDO GOMES. Tutorial JAI2008 - TV Digital Interativa no Brasil se faz com Ginga (NCL 3.0). Disponível em: [http://tiny.cc/dlz3e]. Acessado em: 01/07/10.
[4] Telemídia – PUC – Rio. Documentação de NCLua. Disponível em: [http://tiny.cc/8877t]. Acessado em: 01/07/10.
[5] NXT Mindstorms. Disponível em:
<http://mindstorms.lego.com/en-us/Default.aspx>. Acesso em: 15 Julho, 2010. [6] LabView. Disponível em:
<http://www.ni.com/labview/>. Acesso em: 15 Julho, 2010. [7] Qt 4.6. Disponível em:
< http://doc.trolltech.com/4.6/>. Acesso em: 15 Julho, 2010. [8] XML. Disponível em:
< www.w3.org/XML/>. Acesso em: 15 Julho, 2010. [9] C++. Disponível em: