Actualizado el 21 de Marzo del 2018 (Publicado el 22 de Febrero del 2018)
969 visualizaciones desde el 22 de Febrero del 2018
231,1 KB
8 paginas
Creado hace 12a (19/05/2012)
Modificaciones realizadas al Robot Multiplo N6
para permitir programaci´on interactiva
Einar Felipe Lanfranco - LINTI (UNLP)
einar en linti.unlp.edu.ar
Joaquin Bogado - LINTI (UNLP)
jbogado en linti.unlp.edu.ar
David Vilaseca
vilaseca en gmail.com
Juli´an da Silva Gillig
julian.dasilva.gillig en gmail.com
LINTI (UNLP) - RobotGroup
Resumen Este trabajo describe las modificaciones realizadas al robot Multiplo N6 para que
pueda ser usado como herramienta de ense˜nanza en un curso de programaci´on para alumnos de
escuelas de educaci´on media.
El lenguaje utilizado es Python, un lenguaje que, al ser interpretado, tiene un alto nivel de
interactividad, permitiendo a los alumnos ver inmediatamente los efectos de los algoritmos que
desarrollan reflejados en el comportamiento del robot.
Keywords: Robot, Multiplo, N6, Python, Lihuen, Interactivo
1.
Introducci´on
El modelo est´andar de Multiplo N6 fabricado por RobotGroup[1] es un robot personal extensible
con fines educativos de dise˜no y especificaciones libres. Es posible programar este robot en diversos
lenguajes1. Sin embargo, (hasta el momento de realizar este trabajo) el N6 solo funcionaba en modo
aut´onomo o stand alone, es decir que el ´unico modo de ejecutar un programa del robot era grab´andolo
en la memoria del robot y luego dejando que el robot lo ejecutara.
La necesidad de interacci´on, que se detalla en la siguiente secci´on, hizo necesario modificar el robot
para que acepte comandos en forma interactiva y para que pueda programarse ejecutando scripts de
Python[2] en una computadora.
Este trabajo detalla las modificaciones que fueron necesarias, las cuales pudieron realizarse sin
problemas dada la naturaleza de las licencias utilizadas en el dise˜no del Multiplo N6.
2. La necesidad de interactividad
El ciclo de desarrollo que se cumple habitualmente cuando se aprende a programar con lenguajes
compilados es el siguiente: programaci´on - compilaci´on - prueba - programaci´on (ver figura
1).
En la primer etapa de programaci´on, el estudiante recibe el enunciado de un problema que debe
solucionar y escribe el programa o una parte de este e intenta compilarlo. Durante el proceso de
compilaci´on, se detectan errores, generalmente de sintaxis, que deben corregirse para poder continuar
con la compilaci´on.
Una vez que la compilaci´on es exitosa, se obtiene el o los binarios ejecutables. A partir de ellos,
el estudiante realiza las pruebas. Los errores que se detectan en esta etapa dependen de los casos de
prueba y son de naturaleza sem´antica, es decir, que el software desarrollado no cumple con lo que se
pretend´ıa de ´el.
Entonces debe volverse a modificar el c´odigo fuente, es decir vuelve a comenzar el ciclo, retornado
a la etapa de programaci´on para corregir aquellos errores detectados en el programa.
1 Ver secci´on ’El robot Multiplo N6’
Figura 1. Ciclo de desarrollo de un programa en un lenguaje compilado
En la programaci´on de robots aut´onomos, hay que agregar (al ciclo descripto) un nuevo paso que
tiene que ver con la grabaci´on en la memoria del robot del programa compilado antes de poder realizar
las pruebas. Los errores de programaci´on que no son detectados en tiempo de compilaci´on, solamente
se hacen evidentes una vez que el programa se est´a ejecutando en el robot.
En los lenguajes interpretados con consola interactiva, como Python, el esquema de programaci´on
es levemente diferente. Al no existir etapa de compilaci´on, el ciclo se reduce a programaci´on - prueba
- programaci´on. Este ciclo m´as simple no detecta errores antes de la prueba: los errores se detectan
en tiempo de ejecuci´on. Sin embargo, durante la etapa de programaci´on, si el alumno no est´a seguro de
la sem´antica de una sentencia, puede hacer una peque˜na prueba en la consola interactiva. Este peque˜no
cambio en el esquema de programaci´on reduce considerablemente la cantidad de errores sem´anticos
y sint´acticos en el programa final, ya que el estudiante puede ver el resultado de una determinada
expresi´on antes de que el programa este completo.
Figura 2. Ciclo de desarrollo de un programa en un lenguaje interpretado
Para que este modo de programaci´on est´e disponible en el robot Multiplo N6, fue necesario reali-
zarle una serie de modificaciones a nivel hardware, firmware y software.
3. Experiencias previas
Desde el a˜no 2009, el Laboratorio de Investigaci´on de Nuevas Tecnolog´ıas Inform´aticas (LINTI)[3]
de la Facultad de Inform´atica de la Universidad Nacional de La Plata[4] trabaja con robots personales,
con los fines de incentivar tanto el inter´es de los ni˜nos y j´ovenes por aprender a utilizar la tecnolog´ıa,
como la curiosidad de docentes y adultos en el uso de la tecnolog´ıa como herramienta para la educa-
ci´on. Realizando diversas charlas en escuelas de nivel medio de la zona de La Plata y alrededores se
comenzaron a ense˜nar conceptos b´asicos de la programaci´on, utilizando para ello el robot Scribbler[5].
El robot Scribbler se programa utilizando el lenguaje Python de forma interactiva, es decir, desde
una consola de comandos. Permit´ıa tambi´en la posibilidad de guardar las secuencias de pasos en
archivos de manera an´aloga a los scripts.
Por dificultades en la importaci´on de estos robots, no se han podido conseguir unidades nuevas
desde principios de 2011. Sin embargo, se siguieron utilizando las unidades existentes. Un ejemplo de
ello fueron las pasant´ıas realizadas por alumnos del colegio Nacional de La Plata [5], [6],[7]. Durante
estas pasant´ıas, se comprob´o que un grupo de alumnos del ´ultimo a˜no del secundario, sin experiencias
previas en programaci´on, fue capaz de construir programas sencillos con los conceptos principales de
la programaci´on, como variables y funciones, durante la primer clase, y programas m´as complejos con
instrucciones de repetici´on y selecci´on dentro de scripts en menos de tres clases (de tres horas cada
una).
4. El robot Multiplo N6
4.1. Descripci´on general
El Multiplo N6 es un modelo de robot con fines educativos dise˜nado y ensamblado en el pa´ıs por
la empresa RobotGroup.
Para poder moverse, el robot cuenta con tres ruedas, dos delanteras y una trasera m´as peque˜na
que gira libremente. Las ruedas delanteras cuentan con tracci´on diferencial gracias a dos motores
de corriente continua que se controlan por software independientemente uno del otro. Esto permite
programar el robot para que vaya hacia adelante, hacia atr´as o que gire variando la velocidad de una
rueda con respecto de la otra.
Para poder “observar” el ambiente, posee varios sensores que le permiten percibir el entorno:
dos sensores reflexivos y uno ultras´onico. Los reflexivos emiten luz infrarroja y detectan cambios de
contraste entre las superficies claras y oscuras, permitiendo programar el robot para que siga una
l´ınea o detecte un borde, entre otras cosas. El sensor ultras´onico agrega la posibilidad de detectar
obst´aculos a disctancia, con precisi´on de cent´ımetros.
Todos estos sensores, los motores y un buzzer que emite frecuencias en el espectro audible se conec-
tan a una placa central basada en Arduino [8], con un microcontrolador programable ATmega32U4[9].
El robot, adem´as, tiene algunos conectores libres para otros tipos de sensores, como sensores ´opticos
o potenci´ometros, que pueden ser agregados adicionalmente en forma separada.
En la versi´on est´andar del robot Multiplo N6, los programas se escriben en la interfaz de progra-
maci´on de Arduino o Minibloq [10], luego se compilan y por ´ultimo se descargan al robot utilizando
un cable USB. Los errores de programaci´on que no se detectan en compilaci´on solo se hacen evidentes
cuando el programa ya fue descargado y se est´a ejecutando en el robot.
4.2. Especificaciones t´ecnicas
Estas son las caracter´ısticas m´as importantes del robot Multiplo N6:
Alimentaci´on
• El controlador DuinoBot posee un sistema de alimentaci´on que permite entregar hasta 12 V a
los motores partiendo de s´olo 3 pilas AA (o cualquier otra celda de 3.6 V, ya sea NiMH o Li-
Ion). Adem´as, eleva tambi´en la tensi´on de alimentaci´on de la l´ogica del circuito, permitiendo
la conexi´on de todo tipo de sensores est´andar y otros accesorios Multiplo de 5V.
• Cuando no se utilizan los motores, es posible alimentar tambi´en la placa desde el bus USB,
contando la placa con selecci´on autom´atica de la fuente de alimentaci´on.
Sensores
El robot cuenta con:
• Dos sensores infrarrojos reflexivos. Se pueden utilizar tanto como para medir luz reflejada (por
ejemplo, color), como para medir luz incidente. La aplicaci´on m´as com´un es detectar una l´ınea
en el piso para poder seguirla.
• Un sensor de distancia ultras´onico que permite identificar la distancia a un obst´aculo con
• Un sensor interno de carga de la bater´ıa que permite conocer el voltaje de la fuente de ali-
precisi´on de cent´ımetros.
mentaci´on.
por RobotGroup.
Software:
El controlador DuinoBot es compatible con Arduino y puede ser programado de forma nativa
stand-alone (escribiendo software de modo que quede residente en el microcontrolador del robot)
en C++, Bitlash [11], y otros lenguajes de alto nivel. Tambi´en puede ser utilizado en modo remoto
desde lenguajes que corran en la PC (a partir de las modificaciones propuestas en este trabajo).
Microcontrolador
• Placa controladora DuinoBot basada en el microprocesador AVR ATMega32U4 y desarrollada
• Memoria de programa: Flash de 32 KBytes.
• Memoria de datos vol´atil: SRAM 2.5 KBytes.
• Memoria de datos no vol´atil: EEPROM de 1 KByte.
• Velocidad: 14-16 MIPS @ 16 MHz.
Interfaz de usario
• Un buzzer permite la generaci´on de tonos a diferentes frecuencias.
• LED de usuario.
• LED indicador de 5V (alimentaci´on l´ogica).
• LED indicador de alimentaci´on de motores (6V / 12V).
• 4 LEDs indicadores de sentido de giro de los motores.
• Un pulsador de Reset.
• Un pulsador de Usario/Run.
Comunicaciones
• USB por hardware en el microcontrolador (lo cual permite utilizarlo como CDC, HID,
Comentarios de: Modificaciones realizadas al robot Multiplo N6 (0)
No hay comentarios