Conference PaperPDF Available

Método de Programación para Robótica didáctica con planilla de cálculo

Authors:
  • Instituto Nacional de Tecnologia Industrial; UniversidadTecnológica Nacional GIAR
  • Instituto de Investigaciones Filosóficas - SADAF - CONICET

Abstract and Figures

Se propone de una estrategia de programación para robots didácticos, a partir de una tabla de estados a interpretar por un sistema embebido como una Máquina de Estados, implementada como una rutina principal de un microcontrolador. Los cambios en el comportamiento del robot, a partir de los estímulos de entrada, son fácilmente programables modificando la tabla de estados. Se explotan las características de la estrategia presentada en un trabajo anterior, ampliando las posibilidades que ofrece en términos de complejidad, permitiendo redefinir el comportamiento de las entradas durante la ejecución del programa, manejar variables continuas discretizadas (en lugar de sólo binarias), y definir múltiples acciones para un mismo perfil de entradas, Como resultado de estas mejoras, el método permite resolver tareas de mayor complejidad que las de la propuesta anterior, y además, alternar fácilmente entre varios "comportamientos" para un mismo robot.. Palabras clave: Máquina de Estados-programación ágil-programación gráfica I. INTRODUCCIÓN La construcción de robots con fines educativos pretende estimular el interés por disciplinas relacionadas con la robótica como son la mecánica, la electrónica, y la informática. Permite también la experimentación y enseñanza de múltiples teorías y fenómenos de las ciencias, desde principios básicos a algoritmos complejos de control. (La propuesta pedagógica que mejor ilustra estas posibilidades puede ser hallada en [1].) La proliferación de competencias de robots plantea un incentivo de carácter lúdico, que alcanza en primera instancia a alumnos de nivel medio, y se proyecta luego al nivel terciario y Universitario. Cada competencia presenta dificultades propias que los equipos contrincantes deben superar para vencer al resto y proclamarse vencedores. Entre las competiciones más difundidas están las de Sumo de Robots, Seguidores de Línea, Resolución de Laberintos y Futbol Robots. En muchos casos, las instituciones organizadoras (generalmente universidades u otros centros educativos) combinan en un mismo evento más de una competencia [2]. El desafío que se plantea en el caso de Sumo de Robots, es que los mismos deben poder detectar a su oponente, usualmente mediante sensores de proximidad o por ultrasonido, y empujarlo hasta sacarlo de la plataforma en la que se encuentran (denominada "tatami"), evitando quedar fuera de la misma (Fig. N°1). Estas competencias suelen estar divididas en categorías, en función de las dimensiones y peso de los robots. Figura N°1: Imagen de dos robots compitiendo en la categoría Sumo Los robots Seguidores de Línea, como su denominación lo indica, deben hacer un recorrido por una pista en la que se ha indicado el camino con una línea de distinto color. El desafío consiste en hacerlo en el menor tiempo posible. A pesar de la simplicidad aparente, a medida que aumenta la velocidad, se dificulta mantener al robot sobre la línea. El objetivo de las competencias de resolución de laberintos es que el robot encuentre la salida de una estructura cuya configuración se desconoce, en el menor tiempo posible. El robot debe aplicar distintos algoritmos para su resolución en función de si cuenta o no con información previa del laberinto. En el caso de fútbol de robots, su enfrentan dos equipos que deben hacer que una pelota llegue al arco contrario. Los problemas implícitos en este tipo de competencias son la formación de equipos de robots, reconocimiento de obstáculos, planeamiento cooperativo, localización y mapeo, distribución de tareas, etc. Los principales organizadores de este tipo de competencias son FIRA y RoboCup [3].
Content may be subject to copyright.
Método de Programación para Robótica didáctica
con planilla de cálculo
Sergio Alberino
Grupo de Inteligencia Artificial y Robótica
Universidad Tecnológica Nacional, FRBA
Buenos Aires, Argentina
Alberino@gmail.com
Juan Carlos Gómez
Instituto Nacional de Tecnología Industrial (INTI)
Buenos Aires, Argentina
juanca@inti.gov.ar
Joaquin Toranzo Calderón
Grupo de Inteligencia Artificial y Robótica
Universidad Tecnológica Nacional, FRBA
Buenos Aires, Argentina
toranzocalderonjs@gmail.com
Claudio Verrastro
CNEA, Centro Atómico Ezeiza
Buenos Aires, Argentina
cverra@cae.cnea.gov.ar
Resumen: Se propone de una estrategia de programación para
robots didácticos, a partir de una tabla de estados a interpretar por
un sistema embebido como una Máquina de Estados, implementada
como una rutina principal de un microcontrolador. Los cambios en
el comportamiento del robot, a partir de los estímulos de entrada,
son fácilmente programables modificando la tabla de estados.
Se explotan las características de la estrategia presentada en un
trabajo anterior, ampliando las posibilidades que ofrece en
términos de complejidad, permitiendo redefinir el comportamiento
de las entradas durante la ejecución del programa, manejar
variables continuas discretizadas (en lugar de sólo binarias), y
definir múltiples acciones para un mismo perfil de entradas,
Como resultado de estas mejoras, el método permite resolver
tareas de mayor complejidad que las de la propuesta anterior, y
además, alternar fácilmente entre varios “comportamientos” para
un mismo robot. .
Palabras clave: Máquina de Estados programación ágil
programación gráfica
I. INTRODUCCIÓN
La construcción de robots con fines educativos pretende
estimular el interés por disciplinas relacionadas con la robótica
como son la mecánica, la electrónica, y la informática. Permite
también la experimentación y enseñanza de múltiples teorías y
fenómenos de las ciencias, desde principios básicos a
algoritmos complejos de control. (La propuesta pedagógica que
mejor ilustra estas posibilidades puede ser hallada en [1].)
La proliferación de competencias de robots plantea un
incentivo de carácter lúdico, que alcanza en primera instancia a
alumnos de nivel medio, y se proyecta luego al nivel terciario y
Universitario. Cada competencia presenta dificultades propias
que los equipos contrincantes deben superar para vencer al
resto y proclamarse vencedores.
Entre las competiciones más difundidas están las de Sumo
de Robots, Seguidores de Línea, Resolución de Laberintos y
Futbol Robots. En muchos casos, las instituciones
organizadoras (generalmente universidades u otros centros
educativos) combinan en un mismo evento más de una
competencia [2].
El desafío que se plantea en el caso de Sumo de Robots, es
que los mismos deben poder detectar a su oponente,
usualmente mediante sensores de proximidad o por ultrasonido,
y empujarlo hasta sacarlo de la plataforma en la que se
encuentran (denominada “tatami”), evitando quedar fuera de la
misma (Fig. N°1). Estas competencias suelen estar divididas en
categorías, en función de las dimensiones y peso de los robots.
Figura N°1: Imagen de dos robots compitiendo en la categoría Sumo
Los robots Seguidores de Línea, como su denominación lo
indica, deben hacer un recorrido por una pista en la que se ha
indicado el camino con una línea de distinto color. El desafío
consiste en hacerlo en el menor tiempo posible. A pesar de la
simplicidad aparente, a medida que aumenta la velocidad, se
dificulta mantener al robot sobre la línea.
El objetivo de las competencias de resolución de laberintos
es que el robot encuentre la salida de una estructura cuya
configuración se desconoce, en el menor tiempo posible. El
robot debe aplicar distintos algoritmos para su resolución en
función de si cuenta o no con información previa del laberinto.
En el caso de fútbol de robots, su enfrentan dos equipos que
deben hacer que una pelota llegue al arco contrario. Los
problemas implícitos en este tipo de competencias son la
formación de equipos de robots, reconocimiento de obstáculos,
planeamiento cooperativo, localización y mapeo, distribución
de tareas, etc. Los principales organizadores de este tipo de
competencias son FIRA y RoboCup [3].
En la mayoría de estas competencias, los robots
participantes deben poseer un comportamiento autónomo y
cierto nivel de inteligencia para resolver el problema
enfrentado. Respecto de la parte física, si bien los robots deben
cumplir con requerimientos similares (peso, tamaño, autonomía
energética, sensores, motores y ruedas), es común ver diseños
específicos para cada tipo de competencia. Esto obliga a un
mismo grupo de desarrollo a multiplicar sus esfuerzos.
Sin embargo, el diseño de una plataforma robótica capaz de
adaptarse a múltiples tareas puede evitar ese problema. El
grupo de investigación GIAR (Grupo de Inteligencia Artificial
y Robótica) ha desarrollado una plataforma robótica
inteligente, autónoma y de pequeñas dimensiones pensada con
fines académicos y didácticos, denominada miniPI [4], que
cumple con las exigencias de buena parte de las competencias
mencionadas (en vistas a cumplirlas principalmente para las
categorías de mini-sumo y fútbol de robots). La plataforma
obtiene su versatilidad dado que es concebida como un
conjunto de módulos intercambiables según las tareas a
resolver, y la posibilidad de programarla usando siempre la
misma arquitectura para diversas tareas.
Para la programación de esta plataforma (adaptable a otras)
se presentó una propuesta en un trabajo anterior [5] consistente
en el uso de una Máquina de Estados Finita (MdE) o Finite
State Machine (FSM) que brinda un espacio de salidas como
respuesta a las combinaciones de las variables de entrada y sus
estados previos, presentando una estructura robusta, de uso
sencillo, con bajo consumo de procesamiento, y flexible a la
hora de agregar nuevas condiciones y estados (Diagrama en
Fig. N°2).
Figura N°2: Ejemplo de Diagrama de transición de una MdE.
Así planteada, la “programación” de comportamiento del
robot, expresada como estados actuales, condiciones de
entradas, salidas y estados próximos, se almacena en un
planilla de cálculo, mientras que un programa que sirve de
intérprete (Aplicación Informática) convierte este archivo en
un paquete de datos (tabla de transiciones de la MdE) que
puede ser interpretado por una MdE implementada como
proceso principal en el microcontrolador del robot.
La planilla de cálculo contiene en cada línea las distintas
combinaciones de variables de entrada y de estado, y las
correspondientes salidas (Puede verse un ejemplo en la Fig.
N°3).
El intérprete de planillas toma los datos contenidos en la
hoja de cálculo y los procesa, expandiendo las opciones “X”
(interpretado semánticamente como “indeterminado” [6], [7])
verificando que no se produzcan combinaciones redundantes o
inválidas. Se encarga también de construir un archivo de
encabezado de lenguaje C (header) con los datos (ordenados
considerando lexicográficamente a las tuplas que comienzan
con el Estado Actual y siguen con cada variable de entrada)
para ser transferido al microcontrolador del robot.
Figura N°3: Ejemplo de planilla de cálculo.
La MdE se implementa como rutina principal, tomando los
datos de la tabla procesada y consignada en el archivo header.
La rutina de la MdE utiliza pocos recursos de procesamiento,
relevando las variables de entrada y el valor del Estado actual,
y localizando en la tabla la opción de salida y el Estado al que
debe pasar (Fig. Nº4).
Figura N°4: Diagrama de flujo simplificado de la rutina MdE en
el microcontrolador.
En síntesis, el sistema utiliza una tabla de
Estados/entradas/salidas. Las variables de entrada son de tipo
booleano y las acciones planteadas por la tabla corresponden a
comportamientos puramente reactivos, sin que exista una
posibilidad de demora y secuencia. La actualización de la
tabla de transiciones de la MdE se realiza por reescritura de
un archivo header en la memoria del microcontrolador.
II. DESARROLLO
Se proponen mejoras al método de programación por
planilla de cálculo, aumentando sus posibilidades y
permitiendo la modificación del comportamiento del robot sin
requerir de su reprogramación. A continuación se describen
separadamente las modificaciones principales.
A. Configuración de entradas
Una vez definido qué sensores posee el robot a controlar, y
cuáles son sus posibles acciones de salida, la construcción de la
tabla de estados en la planilla de cálculo resulta sencilla. Sin
embargo, esta definición varía según las características del
robot, y según la tarea que se desea realizar.
Con el fin de simplificar esta tarea, se implementa un
programa que asiste en la configuración de la planilla de
cálculo (que puede considerarse como un módulo aparte del
programa intérprete). A través de éste es posible indicar qué
sensores, y en qué orden, estarán consignados en cada columna
de la tabla, preformateando la planilla de cálculo
Se genera a la vez un encabezado conteniendo la
información de dicha configuración, para ser transferida
también junto con la tabla principal. De este modo el
microcontrolador cuenta con la indicación de correspondencia
columna sensor a relevar, para poder ejecutar correctamente
la rutina de la MdE.
B. Variables continuas discretizadas
Una de las ventajas del método propuesto inicialmente
consiste en el uso de variables de tipo booleanas para la
caracterización de las entradas. Esto simplifica fuertemente la
programación y la identificación de casos para la máquina de
estados, resultando fácilmente implementable en el caso de
entradas vinculadas a sensores cuya respuesta es del tipo
ON/OFF (“0” o “1”), como ocurre, por ejemplo, con los
sensores ópticos para detección de línea (que discriminan entre
superficies blancas o negras).
Sin embargo, otros sensores (Ultrasonidos, infrarrojos,
etc.) ofrecen como resultado valores dentro de un determinado
rango, con lo que su reducción a valores booleanos implica una
pérdida de información.
Con el fin de ampliar el alcance del método, el asistente de
configuración permite además de indicar qué sensores se
asocian a cada columna, definir también cual sería la “función
de cuantificación” de la variable para cada caso.
Estas funciones están inicialmente asociadas a límites de
rango (obtener un “0” o un “1” si la variable continua es mayor
o menor que un determinado valor, o si se encuentra entre un
valor mínimo y un máximo). De este modo se sigue trabajando
con valores representables con “0” o “1”, pero que son
resultados ajustados a parámetros propios del comportamiento
que se desea abordar.
Como beneficio adicional, es posible tener en una columna
de la tabla una variable valuada según un determinado criterio,
y en otra columna la misma variable valuada según otro
criterio.
C. Acciones codificadas
Una limitación de la propuesta implementada en [5]
radicaba en el uso de dos valores de salida, que afectaban
directamente a los actuadores del robot (en aplicaciones
anteriores, se utilizaron los dos valores de salida para definir
los valores de modulación PWM para cada motor).
Si bien esto es una ventaja ya que la acción de control es
clara y definida, solo realiza un único tipo de acción (En el
ejemplo, el movimiento de los motores).
Se propone el uso de una codificación de salida que permita
seleccionar distintas acciones de control, de distinto tipo. Las
salidas continúan representándose con dos campos, uno para
identificar la acción que se desea realizar, otro para los
parámetros que determinen la acción (en la Fig. 5 puede verse
destacado el ejemplo ya presentado).
El uso de un conjunto de comandos codificados permite
conservar la simplicidad del método propuesto, ampliando sus
posibilidades Esto implica la incorporación de una función de
interpretación de comandos, que se encargue de ejecutar la
acción requerida en cada caso.
Si bien la utilización de un intérprete de comandos agrega
código a la solución propuesta, el costo en complejidad y
prestaciones de software es bajo frente a la ampliación de
posibilidades del método.
Figura N°5: Ejemplo de Hoja de Cálculo con comandos codificados
La definición de las salidas a través de identificadores
numéricos persigue un fin de simplicidad, pudiendo los
mismos servir de “punteros” a estructuras indexadas con la
información correspondiente a las acciones posibles.
Siendo que el método se propone para ser aplicado en
diversos robots, se establecen comandos generales que
deberían ser soportados por todos los robots, y comandos
específicos relacionados con características particulares de cada
robot.
Temporizadores:
Entre los comandos generales se implementan acciones de
temporización (con un determinado Id, y un parámetro
indicador del tiempo a esperar), que al ser inicializadas
cambian el valor de una columna dedicada a servir de
indicación o flag del estado de temporización. Esta columna,
asociada a variables internas, se trata en la tabla como una
entrada más y permite al usuario configurar el
comportamiento temporizado. Cuando el tiempo de
temporización se cumple, el valor de la columna se restablece.
Este comando amplía considerablemente las opciones de
comportamiento, manteniendo el carácter reactivo, pero
permitiendo controlar el tiempo en que se desarrollan las
acciones.
Múltiples comandos de salida:
En diversas situaciones resulta de interés ejecutar un
conjunto o secuencia de acciones en respuesta a una
combinación de entradas (por ejemplo, comenzar a moverse,
iniciar un temporizador y encender alguna señal lumínica).
Para ello la codificación se realiza como una trama de
caracteres compuesta por los identificadores de los comandos
que se quieren ejecutar y caracteres especiales que sirven como
separadores de identificadores y el fin de la trama; de la misma
manera, los argumentos también forman una lista separada y
cerrada por estos caracteres especiales. Ambas tramas son
fácilmente descompuestas por una función dedicada a analizar
las tramas y ejecutar los comandos correspondientes con sus
argumentos correspondientes.
Se amplía así considerablemente el espectro de
comportamientos posibles para cada robot.
D. Ajuste de rangos de cuantificación
Siendo que entre las mejoras propuestas para este método
se contempla la definición de rangos de cuantificación para
variables de medición continua, desde un archivo de
encabezado, y que la salida para cada conjunto de Estado +
Entradas es codificable, es posible contar con un comando de
actualización o ajuste de los valores de cada rango.
Se utiliza un valor numérico para identificar (ID) esta
acción (por ejemplo, cambiar el valor máximo del rango dentro
del cual la respuesta de un sensores considerada 0” o “1”,
seguido de un valor numérico (parámetro) que es el que se
desea establecer.
Esto es de utilidad cuando las condiciones de entrada para
determinado rango de valores resultan insuficientes para llevar
adelante las acciones propuestas, y es necesario ajustar el
mismo. Por ejemplo, si pasado un determinado tiempo en que
el robot no detecta un obstáculo a determinada distancia, se
podría cambiar el rango en el que el sensor correspondiente
devuelve “0” o “1”, y obtener así un ajuste de la medición, que
permita una operatoria más completa.
E. Múltiples Comportamientos
Una vez lograda la transformación de una planilla de
cálculo en datos para que sean utilizados como condiciones de
la Máquina de Estados, el proceso es replicable para otras
planillas, y resulta posible contar con más de una secuencia de
transiciones de MdE, almacenadas en la memoria del
microcontrolador, para lograr distintos “comportamientos” del
robot.
El usuario “programa” estos comportamientos en distintas
Hojas o pestañas de la planilla de cálculo. Luego el interprete
agrupa en una única tabla de transiciones para el contenido de
varias planillas, reasignando los valores a los estados de cada
una en forma consecutiva y registrando los valores de los
estados iniciales de cada configuración.
De este modo, la MdE puede estar teniendo un
comportamiento y pasar a otro a partir de una determinada
combinación de Estado Actual y Entradas, que asignaría como
Estado Próximo al Estado Inicial de la correspondiente
configuración de de transiciones de MdE.
Por ejemplo, un robot que explora un laberinto con una
determinada técnica, se encuentra en una encrucijada, y pasa a
seguir explorando con un criterio diferente. Otro caso podría
ser el de un robot en una competencia de sumo, que está en un
estado de “ataque”, y detecta que se activan los sensores
traseros, por lo que es evidente que está siendo empujado hacia
atrás, y debe pasar a una estrategia de “escape”.
En esencia se trata de una suerte de “paginación” dentro de
la tabla de transiciones, en la que coexisten distintos
comportamientos programados, cuyo Estado Inicial constituye
también el índice para acceder al mismo. El salto de un
comportamiento a otro, así planteado, correspondería a una
combinación de estado y entradas. Pero puede asociare también
a una entrada específica, como puede ser uno o varios
interruptores.
Se propone la definición de entradas de
“direccionamiento”, que se evalúan de modo prioritario
(Considerando las mismas, indiferentemente del estado del
resto de las entradas). Así es posible, sin mayor complejidad
del método y de la codificación, asociar el cambio de
comportamiento a una determinada entrada. Lo ideal es que el
robot cuente con uno varios pulsadores o interruptores que
permitan realizar manualmente y a voluntad los cambios de
comportamiento.
Es posible asociar el cambio de comportamiento a una
determinada entrada. Lo ideal es que el robot cuente con uno
varios pulsadores o interruptores que permitan realizar
manualmente y a voluntad los cambios de comportamiento (En
la Fig. N°6 se visualiza un ejemplo en el que si la variable
prioritaria SW, correspondiente a un interruptor, pasa a “1”
el Estado Próximo corresponde al Estado Inicial de otro
comportamiento. La Fig. N°7 ilustra un caso similar, en
diagramas de estados).
Figura N°6: ejemplo de dos configuraciones para MdE en la misma
tabla
El nuevo “comportamiento” puede tener la misma
estructura que el anterior, con parámetros diferentes (por
ejemplo un robot de sumo, con la misma estrategia en sus dos
comportamientos, pero con uno “más agresivo” en función de
los parámetros seleccionados). O puede tratarse de una
funcionalidad completamente diferente, cuando se desea que el
robot realice distintas tareas en función de la selección
realizada.
Figura N°7: diagrama de transiciones que ejemplifica un doble
comportamiento del robot, conmutado desde un interruptor
Si se cuenta con un módulo de comunicación, es posible
indicar el cambio de comportamiento (del mismo modo que
con el/los interruptores) a través de un comando enviado en
forma remota, e inalámbrica.
F. Edición de la configuración por comunicación serie
La información de la tabla utilizada por la Máquina de
Estados se encuentra localizada en la memoria del
microcontrolador en un archivo de cabecera o header “MdE.h”.
A través de un conjunto de tramas (frames) enviadas por
comunicación serie al microcontrolador, es posible actualizar la
tabla en forma dinámica. La comunicación puede ser local (con
un cable conectado a una PC) o por vía inalámbrica (desde una
PC o dispositivo móvil) con lo que se logra mayor versatilidad.
Con los datos enviados se construye en memoria del
microcontrolador una tabla temporal que, una vez completada
la transferencia de datos, reemplaza a la tabla principal.
El cambio de tabla implica el cambio de comportamiento.
Al momento de intercambiar las tablas, la MdE vuelve al
Estado Inicial, con lo que éste debe ser concebido no solo
como condición de arranque sino también como estado estable.
La edición de la tabla desde una comunicación serie
permite la “reprogramación” de comportamiento del robot, sin
necesidad de reescribir la memoria de programa. Esto es
particularmente beneficioso en las etapas de ajuste ya que
reduce considerablemente los tiempos de reprogramación, al no
ser necesaria la conexión física con un dispositivo de
programación, y evitando la continua recompilación del
programa para su descarga al microcontrolador.
III. RESULTADOS
El método se ha probado en una plataforma robótica móvil
de dimensiones reducidas, construida específicamente para el
ensayo de algoritmos de control y navegación (Fig. N°8).
El procesador central de la misma está basado en
arquitectura Cortex M3, y ejecuta la MdE como tarea principal
de un Sistema Operativo de Tiempo Real (RTOS).
Las entradas responden a cuatro sensores infrarrojos para la
detección de línea en el piso (sensores tipo “ON/OFF”) y
cuatro sensores de distancia por ultrasonido, en las cuatro
direcciones, cuya respuesta corresponde a un valor
proporcional a la distancia de los obstáculos detectados.
Cuenta además con un interruptor tipo pulsador y varios LEDs
indicadores de estado.
La programación de los drivers asociados a cada sensor está
basada en el estándar CMSIS (Cortex Microcontroller
Software. Interface Standard).
El robot posee un módulo de comunicación inalámbrica
compatible con el conjunto de protocolos Zigbee.
Se construyeron “bibliotecas” de comandos, tanto para los
generales como para los específicos con los identificadores y
funciones de cada comando. Se armó una biblioteca distinta
para sensor y cada actuador, de manera que puedan ser
agregadas a un proyecto según si la plataforma incluye o no
cada módulo de hardware. Las bibliotecas pueden ser
actualizadas con nuevos identificadores y funciones.
El asistente de configuración de la planilla de cálculo se
implementó en lenguaje Python por la gran disponibilidad de
paquetes ya realizados y su versatilidad.
Figura N°8: Robot miniPI, en el que se implementaron las
modificaciones.
Se aplicaron con éxito diversas planillas de cálculo que
representan, para una misma tarea, diversos comportamientos,
aprovechando las variables de direccionamiento. Entre ellas,
destaca la programación de un robot para resolver laberintos
empleando dos algoritmos sencillos de exploración que se
alternan cada tanto tiempo si no se ha resuelto el laberinto.
Otros ejemplos incluyen competencias de Sumo de Robots
(comportamientos agresivos, que privilegian la búsqueda del
rival, y defensivos, que privilegian mantenerse en el tatami) y
de Seguidores de Línea (comportamientos conservadores, que
minimizan el error en el seguimiento, y comportamientos
arriesgados, que privilegian la velocidad del seguimiento).
Los módulos de comunicación serie inalámbrica se
encuentran en desarrollo, en pos de monitorear y editar de
manera remota los valores de la tabla.
IV. TRABAJOS A FUTURO
Actualización de la aplicación informática que procesa la
planilla de cálculo: Se pretende unificar en una única
aplicación el preformateo de la planilla, su procesamiento y el
envío de datos al microcontrolador, vía serie.
Lógicas multivaluadas: El uso de un valor “X” (o
“indeterminado”) permite construir máscaras de operación en
la tabla de configuración. El intérprete, ante esta
indeterminación, reemplaza la “X” por los valores booleanos
“0” y “1”, generando las líneas adicionales para considerar
todos los casos abarcados.
Esto mantiene las entradas reducidas a valores booleanos,
que son fácilmente representados en archivo Header (con un
único byte se representa simultáneamente el estado de 8
entradas), pero al duplicar el interprete el valor “X” para cada
caso, existen configuraciones simples que quedan
representadas por una gran cantidad de líneas en la tabla.
Se considera entonces modificar el método de modo que se
conserve el valor “X” en la tabla y que sea interpretado
directamente por la rutina de MdE. Esto aumenta la cantidad de
bits necesarios para representar una línea, pero reduce la
complejidad y el número de líneas de la tabla.
La implementación de este cambio en el método, permitiría
además la incorporación de semánticas multivaluadas, y no
sólo de aquellas que representen rangos continuos
discretizados. De esta manera, la aplicación puede interpretar,
por ejemplo, lógicas difusas (fuzzy logics) [9] para la
programación de MdE que reconozcan variables difusas (i.e.
variables aproximadas) o álgebras birreticuladas [10] para la
programación de MdE que puedan lidiar con información
incompleta e inconsistente.
Desarrollo de una herramienta gráfica que permita la
diagramación simple de MdE y su “traducción” al formato de
planilla de cálculo, como medio visual para la programación,
para aquellos casos en los que esta opción resulte más sencilla.
V. CONCLUSIONES
Se presentó un conjunto de mejoras para la aplicación de un
método de programación de robots basado en Máquina de
Estados que es configurable desde una planilla de cálculo
convencional.
El método permite múltiples pruebas, realizando ajustes a
los valores de una tabla, que es consultada por un único
programa principal robusto y de código sencillo. Se logran así
distintos “comportamientos”, intercambiables para un mismo
robot.
La actualización por comunicación serie permite realizar
ajustes en las estrategias de control sin necesidad de detener el
funcionamiento del robot para realizar su reprogramación "al
vuelo" (on the fly).
El método, con las mejoras propuestas, ofrece un modelo
para el desarrollo simple de aplicaciones de complejidad
media, en el que los usuarios “programadores” solo deben
plasmar en una planilla de cálculo los pasos lógicos que desean
que realice el robot, sin necesidad de conocimientos sobre
ningún lenguaje de programación.
Esto, sumado a la simplicidad de actualización, hace que el
método resulte especialmente útil para resolver consignas
propias de certámenes y competencias de robótica, o para
proyectos educativos en general.
REFERENCIAS
[1] S. Papert, Desafío de la mente. Computadoras y eduación,
Buenos Aires, Argentina: Ediciones Galápago, 1981.
[2] Liga Nacional de Robótica de Argentina, Recuperado 25 junio,
2019, de http://www.lnr-argentina.com.ar/
[3] FIRA RoboWorld Cup. (s.f.). Recuperado 25 junio, 2019, de
http://www.firaworldcup.org
[4] A. Alvarez et al, MiniPI: Plataforma Inteligente de Tamaño
Reducido”, en XV Reunión de Trabajo en Procesamiento de la
Información y Control, San Carlos de Bariloche, Argentina, 16-
20 de Septiembre, 2013.
[5] S. Alberino, F. Sampieri, P. Folino, J. C. Gómez, y C. Verrastro,
Programación de Robots utilizando Hoja de Cálculo, en VIII
Jornadas Argentinas de Robótica, Buenos Aires, Argentina, 12-
14 de Noviembre, 2014.
[6] IEEE Standard Multivalue Logic System for VHDL Model
Interoperability (Std_logic_1164), IEEE Standard 1164, 1993.
[7] IEEE Standard for Verilog Hardware Description Language,
IEEE Standard 1364, 2005.
[8] P. Isasi, P. Martínez y D. Borrajo, Lenguajes, gramáticas y
Autómatas. Un enfoque práctico, Buenos Aires, Argentina:
Addison-Wesley Iberoamericana España SA, 1997.
[9] B. M. del Brio y A. Sanz Molina, Redes neuronales y sistemas
difusos, Madrid, España: RA-MA Editorial, 2002.
[10] N. Belnap, “A useful four variable logic”, en A. Anderson, N.
Belnap y J. Dunn, Entailment: the Logic of Relevance and
Necessity, Vol. 2, Princeton (NJ), Estados Unidos: Princeton
University Press, 1992 (1977).
... When a simple robotic platform (such as those presented in [1], [2] and [3]) is faced with the problem of going through an environment (e.g. to reach a specific place), there are many different strategies to apply. These strategies range from simpler reflex agents [4, pp. ...
Conference Paper
Full-text available
The success of a reflex agent facing the problem of traveling in a rectangular discrete environment from one place to another has an heterogeneous complexity. Their success not only depends on the design of the agent but also in the environment topology. Here this problem is explored for agents designed using Finite State Machines (FSM) as models, having a minimal set of perceptual inputs and a minimal set of available actions. Their success is considered regarding the size and the proportion of the environment diameter that corresponds to the minimal path length between the start and the end cells. A large pool of randomly generated environments was created to test the FSMs success and also to analyze the topological features of the environment. The FSMs designed to follow a wall on their side resulted very successful, overwhelming the other FSMs success rates. Moreover a linear relation between the environment average diameter and the size was found and a non linear relation between these and the success rate of the FSMs was also observed.
Conference Paper
Full-text available
Resumen-El presente trabajo aborda la programación de robots con una solución del tipo Máquina de Estados Finita y ofrece un método para su implementación independiente de la complejidad de la tarea a realizar, utilizando directamente una planilla de cálculo, lo cual facilita su desarrollo y minimiza los errores al no tener que modificar el código por cada cambio introducido. Se consideran dos variantes de este método, utilizando un archivo de cabecera o header o con una tabla dinámica actualizada por medio de comunicación serie. Este método es simple, utiliza pocos recursos computacionales y puede resultar especialmente útil para la programación dinámica de robots que participan en distintas competencias y para fines educativos. I. INTRODUCCIÓN Los desarrollos de robótica, en particular los que poseen algún tipo de inteligencia, deben implementar mecanismos para obtener una respuesta ante estímulos o predicciones. Existen diversas técnicas de programación según la aplicación para la que se encuentra destinado el robot, y en general, aumentan su complejidad con el número de "entradas" del sistema, ya que cuentan con variedad de sensores que los relacionan con el medio en el que se desenvuelven y la tarea que deben realizar. Una solución posible a esta problemática consiste en el uso de una Máquina de Estados Finita o Finite State Machine (FSM) [1] [2], que representa el problema como una sucesión finita de estados, donde el estado próximo y las salidas solo dependen de las entradas y del estado actual. Figura N°1: Ejemplo de Diagrama de transición de Estados
Conference Paper
Full-text available
Resumen— Se presenta una plataforma robótica inteligente, autónoma y de pequeñas dimensiones para ser utilizada con fines de investigación y didácticos. Su bajo costo de fabricación, su fácil replicación y su sistema de comunicación, la convierten en un prototipo ideal para generar unidades funcionales que trabajen en forma cooperativa. Se trata de una plataforma modular y didáctica, por lo que es altamente personalizable y expandible en cuanto a hardware y software se refiere. Por lo tanto, se pretende que sea utilizada como plataforma de investigación y desarrollo dentro del ámbito educativo, tanto para el aprendizaje de las tecnologías que actualmente emplea como para su transferencia a otros proyectos que surjan a partir del mismo. Palabras Clave— plataforma educativa, robótica colaborativa, modular, MiniPI 1. INTRODUCCIÓN En la actualidad se pueden encontrar varios robots móviles desarrollados por grupos de investigación o incluso empresas privadas. La mayoría de ellos se encuentran orientados a aplicaciones particulares, y si bien es posible adaptarlos para otras actividades, se requiere un tiempo relativamente prolongado y muchas veces es necesario realizar demasiados cambios, desaprovechando tiempo y recursos. Por este motivo se establece como primera premisa para la plataforma MiniPI, que todas sus partes constituyan módulos individuales, relacionados entre sí para conformar un sistema adaptable. Plataformas similares se utilizan en instituciones educativas de todo el mundo, tanto a nivel universitario como secundario, para la formación de estudiantes en el área de la robótica y la inteligencia artificial [1]. Sin embargo, debido al costo de estos dispositivos fabricados por empresas privadas, en su mayoría extranjeras, es recomendable o incluso necesario desarrollar este tipo de robots a nivel local. Por lo tanto, otra idea fundamental de este proyecto es que los mismos sean de bajo costo para así poder proveer a cada estudiante o grupo reducido de un robot. También se busca que la plataforma sea lo suficientemente didáctica como para que los alumnos puedan generar distintos proyectos, probar algoritmos o crear sus propias soluciones para distintas tareas en un tiempo relativamente corto. Por otro lado, desde hace ya varios se vienen desarrollando dentro del Grupo de Inteligencia Artificial y Robótica (GIAR) de la Universidad Tecnológica Nacional -Facultad Regional Buenos Aires, distintos algoritmos para proveer de inteligencia artificial a robots móviles [2,3]. Como consecuencia, surgió la necesidad de desarrollar una nueva plataforma capaz de navegar de forma autónoma dentro de diferentes tipos de ambientes. Estos ambientes se pueden clasificar, ordenados de menos complejos a más complejos, en estructurados, semi-estructurados y no estructurados. A medida que se incrementa el nivel de complejidad de los ambientes, es necesario incorporarle a los robots algoritmos que requieren ejecutar mayor cantidad de instrucciones por segundo, además de poder asegurar la respuesta de los mismos dentro de un lapso determinado. Si bien ya existen robots similares fabricados por empresas nacionales [4] o desarrollados por grupos de investigación [5], el mercado todavía no está del todo desarrollado en nuestro país. MiniPI es una nueva alternativa que incorpora tecnología más moderna, por lo que puede realizar tareas más complejas que requieran mayor velocidad de procesamiento. Esto posibilita, a su vez, la incorporación de un sistema operativo de tiempo real, como es FreeRTOS, que actualmente se encuentra implementado en la plataforma, y que permite asegurar la respuesta del robot dentro de tiempos preestablecidos. Por otro lado, el robot dispone de un sistema de comunicaciones orientado a facilitar la resolución de tareas en forma colaborativa, por medio de la coordinación de varios robots para resolver un problema en forma conjunta. La plataforma cuenta con dimensiones físicas compatibles con las competencias locales de robótica móvil, como son "Sumo de Robots", "Fútbol de Robots", "Seguidores de línea" y "Resolución de laberintos". Esto implica que puede ser utilizada en cualquiera de estas actividades sin ser necesario realizar modificación alguna, lo que le otorga un alto grado de versatilidad con respecto a otros robots móviles.
IEEE Standard for Verilog Hardware Description Language
IEEE Standard for Verilog Hardware Description Language, IEEE Standard 1364, 2005.