Proyecto ELO329 Diseño y Programación Orientada a Objetos
“ Robótica Orientada a la Educación”
Profesor: Patricio Olivares.
Integrantes: Matías Concha.
Martin Lara.
Juan Sánchez.
Diseñar y desarrollar una biblioteca orientada a objetos para facilitar la programación en arduino de robot en el ámbito de la robótica educativa cumpliendo con los requerimientos de un taller de robótica.
Permite adaptar un robot a nuevos programas educativos y adaptar un programa a nuevas plataformas robóticas.
En este momento se desarrolla un taller “Robótica Educativa Mustakis” en la UTFSM y el resto del país, el cual se encuentra estancado en crecimiento. Su limitante es que las clases se apoyan en un robot privado y este no tiene el rendimiento esperado por el taller.
El taller y todo el material de apoyo están diseñados para un dispositivo de “Robótica Educativa”, un robot único y esto no cambiará en el corto plazo. Como el robot no rinde de acuerdo a lo que el taller espera, los niños y mentores se frustran.
El sistema consiste en el uso de una biblioteca programada en C++ orientado a objetos en la que se simplifican las instrucciones que se utilizan para controlar una placa Arduino, con el fin de facilitar las primeras interacciones de niños con la programación en el IDE de Arduino.
El propósito de este desarrollo es poder contar con una biblioteca dedicada al Programa de Robótica sin que esta dependa de un robot específico, así poder facilitar la replicación del taller en distintos sitios y a la vez permitir el mejoramiento de este dados los resultados insuficientes del robot que utilizan actualmente.
Para detallar las interacciones y casos de uso del proyecto primero introduciremos la metodología del taller.
Este consiste en enseñar programación básica a niños entre 7mo básico y 3ro medio. A los niños se les entrega un robot y un computador con el IDE de Arduino. Se les indica que incluyan la biblioteca ya mencionada en su código de Arduino, donde luego comenzarán a desarrollar sus algoritmos con los que harán funcionar el robot.
Caso de Uso N°1
Nombre: Mover el Robot.
Propósito: El usuario quiere que el robot se mueva.
Actor: Niño o mentor.
Pre-condición: La biblioteca se encuentra correctamente incluída en el codigo por usar.
Evento: El usuario utiliza los metodos avanzar(), motor_run() o rbt_move() en su algoritmo, lo carga en la placa Arduino del robot y esta lo interpreta usando la biblioteca moviendo los motores del robot de la forma deseada.
Post-condición: El código queda almacenado en la EPROM de la placa.
Tipo: manual.
Caso de Uso N°2
Nombre: Leer un sensor.
Propósito: El usuario quiere que medir una característica del medio.
Actor: Niño o mentor.
Pre-condición: La biblioteca se encuentra correctamente incluida en el código por usar.
Evento: El usuario utiliza por ejemplo el método leerSensorObstaculoIzquierda() o readLeftAnt() en su algoritmo, lo carga en la placa Arduino del robot y esta lo interpreta usando la biblioteca leyendo el sensor pulsador conectado a las antenitas del robot, retornando el estado del robot en el algoritmo programado por el usuario.
Post-condición: El código queda almacenado en la EPROM de la placa y el robot reacciona a los estímulos en las antenitas.
Tipo: manual. (Automático luego de la post-condición ya que el robot mientras tenga el código cargado en su ROM y de acuerdo al código ingresado, estará reaccionando al sensor.
Caso de Uso N°3
Nombre: Iniciar el algoritmo hormiga(beta).
Propósito: El usuario quiere que el robot comporte como una hormiga.
Actor: Niño o mentor.
Pre-condición: La biblioteca se encuentra correctamente incluida en el código por usar.
Evento: El usuario utiliza el método rbt_ant() el cual contiene un algoritmo donde el robot se comporta como una hormiga, utilizando los sensores de obstáculo y tiempos de rebote.
Post-condición: El código queda almacenado en la EPROM de la placa, el robot actuará como hormiga mientras se den las condiciones para ello (si el método está o no condicionado y si el robot tiene energía).
Tipo: Automático.
El video insertado al final del informe contiene las pruebas de los casos de uso.
Diagrama de Secuencias
Diagrama de Clases
La implementación del proyecto completo puede ser revisada en el código fuente. La docuementación puede ser revisada en el link a continuación o generandola desde el código fuente con doxygen o similares.
Para hacer la demostración del funcionamiento del proyecto, se decidió utilizar una plataforma de robótica educativa desarrollada por estudiantes de la universidad, PowerKit Robotics. Este robot creemos cumple con los requerimientos del taller, sumado a un evidente mejor desarrollo de hardware. Apodamos “Bicho” dentro del desarrollo del código.
La clase Bicho dentro del proyecto es una representación del robot a nivel de software y la clase Iroh corresponda a la adaptación de la clase Bicho para que PowerKit Robotics se comporte como un Iroh, el robot utilizado actualmente en el programa, permitiendo que este realice todas las actividades del programa como si fuera un Iroh más.
Dentro de las actividades pendientes que quedaron, fue mejorar los algoritmos que venían con el código original de PowerKit Robotics, los cuales están en una etapa muy temprana de desarrollo, por lo tanto cuentan con muchos bugs. Lamentablemente, esto no depende de nosotros por lo que se mantendrán así por ahora.
Aún falta pulir la equivalencia entre un Bicho y un Iroh, pero demanda un tiempo del que no contábamos durante el desarrollo del proyecto, pero son tareas fijadas a un corto plazo.
Mientras probamos el robots nos dimos cuenta que la biblioteca Ultrasonic viene con errores de programación por lo que la tuvimos que comentar en el código para poder compilarlo, pero estamos a la espera que se suba una nueva versión, de lo contrario adoptaremos la clase para utilizar la biblioteca NewPing, desarrollada para el mismo propósito.
Así como lo mencionamos en la presentación, se nos presentaron dificultades de hardware con el robot, en específico con los motores, y los desarrolladores del robot no están en Chile en este momento por lo que estamos atados de manos para repararlo, esto porque ellos diseñaron una shield para arduino dedicada a su robot, en la que está soldado el circuito del puente H y no tenemos otro.