Taller de Robótica educativa
Contenido
Introducción del proyecto
La idea principal por la que se eligió este tipo de proyecto fue por querer seguir la linea de proyectos anteriores del curso de Robótica, la cual era impartir clases en un centro educativo. En este caso se está impartiendo clases a un grupo del instituto tecnológico de informática (ITI), en el cual hay rangos diversos de edades y conocimientos previos sobre temas de robótica, programación e informática. Por lo anterior es importante trazar una linea que permita que todos se sientan cómodos con los temas presentados, en cuanto a dificultad. Debido a la institución, no es un tema nuevo totalmente hablar de programación, sin embargo si para algunos, los cuales toman este taller como primer acercamiento a la programación y por supuesto a la robótica.
La programación es bien sabido que ayuda a la lógica y al desarrollo de habilidades para solventar problemas, en mayor o menor medida, juntar esta disciplina con la robótica ayuda a que se pueda visualizar mas fácilmente los algoritmos desarrollados, pudiendo ver como el robot sigue las ordenes que nosotros le damos, por otro lado, si nuestra lógica es incorrecta se reflejará en una acción errónea por parte del robot. Desgraciadamente por el tema de la emergencia sanitaria no estamos pudiendo realizar el taller de forma presencial por lo que se pierde el trabajo de ellos de forma directa con el robot, lo cual es lo mas llamativo e interesante, se pierde el sentido de pertenencia, sin embargo cuando se retome ellos van a poder experimentar con el robot, armarlo y ejecutar programas.
Modalidad de trabajo
La problemática que se alza por encima de las demás con diferencia es la virtualidad, lo ideal seria que ellos pudiesen experimentar con el robot, sin embargo hasta no retomar la presencialidad esto no es posible. Por tanto para poder llevar adelante el taller por lo que se optó fue de hacerlo de forma virtual, presentando proyectos con el robot y esperando a la presencialidad para que pudiesen ellos poner en practica lo aprendido con el mismo. Sin embargo se usaron otros entornos para emular el desarrollo con el robot.
Las clases son dadas los días Sábado, de 08:00 a 10:00, a través de Google Meets, se utilizan presentaciones de Power Point para exponer los temas que se trataran en la clase y entre medias de esto se realizan ejemplos en el ambiente que se este trabajando en ese momento. Si hay que mostrar algo del robot se hace con la cámara de la computadora, como armarlo por ejemplo, si es necesario verlo en funcionamiento se utiliza la cámara del celular con un usuario propio metido en la sección.
Materiales para la realización del proyecto
El material principal es el kit de robótica Butiá, dado a que en torno a él gira el taller.
Debido a la virtualidad otro material necesario es un ordenador y conexión a internet.
El ordenador debe contar con distribución Linux dado que en este sistema corre TurtleBots.
A futuro para la presencialidad se necesitarán mas kits para que los estudiantes puedan intervenir en el taller.
Aquellos estudiantes que por tema de tiempos no pueden ir al taller pero quieren participar en él, también se graban las clases y se suben a YouTube, para poder seguir el curso de forma asíncrona.
Clase 1
En esta clase se presentó el taller, se dieron pautas de trabajo y objetivos del mismo.
Se presentó el robot Butiá y sus componentes, antes de esto se preguntó a los estudiantes si conocían robots y si podían nombrarlos.
Se presentaron en los componentes del Butiá los sensores y actuadores, se expuso las características de cada uno de los sensores y ser preguntó posibles usos para ellos. Para los actuadores se presentó el motor, dado a que es el que vamos a estar trabajando, y se expuso la misma pregunta que para los sensores.
Se presentó el primer ambiente de trabajo el cual es TurtleBots, se dijo la razón de su elecciñon y se explicó que era.
Se presentó el segundo ambiente de trabajo el cual es OpenRoberta, el cual se usará debido a la virtualidad, dando la oportunidad de hacer seguidores de linea y evitar colisiones. Nuevamente se explico el por que de su elección.
Se presentó el lenguaje Python el cual vamos a estar trabajando al finalizar los otros dos entornos, se explico algunos programas que se realizarían y que era el lenguaje en rasgos muy generales.
Debido a que se trabajaría con TurtleBots, se necesita del entorno de desarrollo Linux o en su defecto una maquina virtual, se explicó al final de la clase como instalar la maquina virtual con Linux o en su defecto el que quisiese pudiera hacerlo a través de la BIOS.
Clase 2
En esta clase la idea era que todos ya contaran con la máquina con su entorno Linux y TurtleBots instalado. Se presento el primer ambiente de desarrollo, se profundizó en que era y el por que de su elección. Se presentaron las paletas que maneja TurtleBots, la primera que se trabajó fue la paleta de movimientos de la tortuga, se mostraron los bloques por medio de una presentación de Power Point y se incitaba a la participación de los estudiantes preguntándoles que era cada bloque, se propuso como desafío en TurbleBots generar cuadrados y triángulos.
Se presentó la paleta de operadores de flujo, se ejemplificó los diferentes ciclos y condicionales, y se puso énfasis en el bloque "esperar", junto con esta paleta se mostró la de operadores numéricos, lo que nos permitió dar vida a los ciclos y condicionales. Se ejemplificó el funcionamiento de los booleanos por medio de los operadores relacionales de la paleta de operadores numéricos y se explicó los operadores lógicos por medio de una tabla de verdad. Ya conociendo los ciclos y los operadores numéricos se necesitaba poder optimizar el código para que no fuese tan largo y repetitivo, para esto se presento la paleta de funciones, la cual nos permitió reutilizar código ya escrito, se presentó el mismo ejemplo del cuadrado pero utilizando una función que lleve ese nombre.
Se hicieron programas con el bloque de variables, se explicó que era una variable y se ejemplificó por medio de programas, esta vez el ejemplo del cuadrado debía tener un tamaño dado a partir de una variable creada por los estudiantes. A partir de acá se realizaron un par de ejercicios con la tortuga, se presentó la ultima paleta que es la que se usa para que la tortuga pueda dibujar.
Se realizó un programa que haga que la tortuga dibuje, estilo lápiz de paint.
Se realizó un programa que imita el balde de pintura de paint, la tortuga dibuja un cuadrado y lo rellena del color que nosotros indiquemos.
Se realizo un programa para hacer un cohete, por medio de cuadrados y triángulos, utilizando todo lo aprendido anteriormente.
Se finalizo la clase realizando un programa que permitiese que la tortuga "copiara" en pantalla una imagen extraída de una carpeta (se presento para esto la paleta respectiva), como si fuese una impresión, una vez realizado este programa, se incitó a que los estudiantes a realizar una modificación al código para que sin importar la imagen dada el resultado de la copia fuese visualizado en forma de triangulo, y luego para un circulo.
Para terminar la clase, se armó el robot Butiá a través de la cámara de la computadora.
Clase 3
En esta clase se continuo trabajando con TurtleBots, pero enfocado exclusivamente en el robot Butiá, se presentó la paleta Butiá, los bloques que lo conforman y su funcionamiento. Comprobamos que se podían colocar varios sensores del mismo tipo en el Butiá, tantos como la placa permita.
Se realizó como ejercicio la creación de un cuadrado usando el robot Butiá, se presentaron los inconvenientes que tenia esta implementación, ¿Como indicar cuánto es 90 grados?, ¿Cómo le indicamos cuánto avanzar?, se dio respuesta a estas problemáticas.
Se realizaron lecturas por parte de los sensores, se explico como calcular un umbral para hacer programas. Se utilizo el bloque "Por siempre" y el bloque "Imprimir" para generar un programa que diera infinitas lecturas del sensor conectado. Se comparó las lecturas de dos sensores iguales, notando el cambio drástico que pueden tener dos sensores sobre la misma superficie.
Estudiamos el comportamiento de los seguidores de linea, se explicó que era un seguidor de línea, tanto seguidor con un solo sensor como con dos, se realizó la codificación en TurtleBots en ambos casos, y se mostró el funcionamiento para el sensor único.
El funcionamiento para dos sensores quedo grabado en el canal de YouTube para aquellos que quieran ver su funcionamiento, o los que siguen el curso de forma asíncrona.
Se realizó un programa que detecte cuando un objeto esta a X distancia del robot, cuando esto pase debía tomar otra dirección, se codificó y mostró el resultado. Se explicó como cambiando la posición del sensor de distancia y la condición del ciclo, se podía generar un detector de caída.
Se introdujo el ambiente OpenRoberta, se explicó el funcionamiento de los bloques y se programó como ejemplo un seguidor de lineas con dos sensores de dos maneras distintas. La primera es leyendo el color por el que pasa el sensor, la segunda leyendo la cantidad de luz que recibe el sensor.
Se mandaron cuatro tareas relacionadas a OpenRoberta para que puedan experimentar con el entorno y practicar la generación de algoritmos.
La primer tarea consiste en realizar un seguidor de línea igual al del ejemplo planteado en la clase pero usando solamente un sensor.
De forma similar la segunda es un seguidor de línea (usando dos sensores), que sea capaz de esquivar un obstáculo que se encuentre en el camino y retome la línea.
La tercer tarea es simular un robot aspiradora que detecte las colisiones con los objetos y tome un rumbo aleatorio por el escenario.
La cuarta y última es sobre un escenario dado con bloques de colores, utilizando direcciones absolutas (o relativas) lograr que al robot pasar sobre los bloques de colores, llegue hacia una línea de meta, el código debe ser replicable para ambas pistas proporcionadas.
Los siguientes videos serían el resultado de los programas realizados en el taller:
Clase 4
Se introdujo el lenguaje Python, utilizamos como entorno para programar el intérprete de Python en la terminal y luego utilizamos el editor de código VSCode, dimos un panorama general del lenguaje desde variables hasta funciones.
Comenzamos hablando de las variables existentes en Python, enteros, flotantes, booleans, strings, se explicó que este lenguaje tiene tipado dinámico, por lo que las variables no precisan declaraciones de tipo, se explicó la funcionalidad de la función type().
Se introdujo en concepto de arreglos y listas, se explicó cómo crear cada una y como recorrer las diferentes posiciones para acceder a los elementos, reemplazarlos, eliminarlos, etc. Se introdujo la noción de métodos para arreglos, strings y listas, algunos de ellos por ejemplo, el método sort para ordenar los elementos y se explicó la funcionalidad de los parámetros predefinidos como por ejemplo el “reverse = True” que permite que el método sort ordene de forma decreciente los elementos. Se mostraron métodos para insertar elementos (append, insert, extend) y métodos para eliminar elementos (pop, remove). Se explicó el funcionamiento de las comparaciones y la noción de rangos de equivalencia.
Se realizaron operaciones usando los operadores aritméticos que trae el lenguaje y se realizaron cuentas usando booleanos. Se introdujeron los comandos print e input para mostrar y pedir información al usuario, se explicó la conversión de tipos con diferentes funciones (int(), str()) y el formateo, que permite mostrar información de forma más amigable de cara al usuario.
Se explicó el condicional if, junto con el elif y else. Se explicó cómo es la sintaxis del código y se puso un ejemplo para ver su funcionamiento. Se introdujo el ciclo while y el ciclo for, se realizaron un par de ejercicios para mostrar su funcionamiento y diferencias. Para los condicionales y ciclos se utilizó el editor de código para poder mostrar cómo guardar archivos del lenguaje y editarlos a través de terminal, cosa que no es necesaria con el intérprete.
Se introdujo el concepto de función y procedimiento en Python, los cuales se definen a partir de la palabra reservada “def”, se ejemplificó el funcionamiento de cada uno de ellos.
Se resaltó la noción de parámetros predefinidos, los cuales son usados cuando la entrada que le damos a la función es incorrecta, y se mostró una de las razones por la que el lenguaje de tipado dinámico puede fallar, al mandar tipos incorrectos y generar errores en ejecución. Mostramos ejemplos de cómo pasar una cantidad indefinida de parámetros usando “*” y concluimos con algunos ejemplos más generales.
Clase 5
Próximas clases
Esto es un boceto de lo que serán las próximas clases:
Clase 3: Continuamos trabajando con TurtleBots, pero utilizando el robot Butiá, haremos programas con él, detector de caída, seguidores de línea, detector de objetos, censar con los sensores entre otros.
Clase 4: Se corregirán los ejercicios planteados en OpenRoberta, se les dará una solución y se introducirá el lenguaje Python. Se explicará desde cero, se dejarán tareas para que se practiquen los conocimientos planteados. (Variables, condicionales, ciclos, arreglos, funciones)
//A PARTIR DE ACÁ SE ESPERA TENER PRESENCIALIDAD//
Clase 5: Se continuará con el lenguaje Python, se espera que la clase anterior se haya dado lo básico del lenguaje, con esto se realizaran algunos programas básicos sobre el lenguaje. Se introducirá la API de Butiá y algún programa con esta.
Clase 6: Se continuará con programas sobre el Butiá, se realizaran los programas hechos en TurtleBots, si da el tiempo se realizara el encoder.
Clase 7: Se espera que sea una clase presencial para que ellos experimenten con el robot y puedan realizar ejercicios con el, los planteados hasta el momento.
//A PARTIR DE ACÁ DEPENDE DE ELLOS SI SEGUIR O NO CON PROYECTOS COMO SUMO O LO RELACIONADO CON LA CLASE 8//
Clase 8: Si completamos los ejercicios planteados en TurtleBots se continuara con Python mas avanzado (clases, POO) para la realización de plugis e IA.
Conclusiones del proyecto
Por el momento el proyecto sigue siendo realizado pero las expectativas son muy buenas, los estudiantes están bastante interesados y prestan atención a los temas presentados. Personalmente me esta gustando mucho la experiencia. Se espera que quieran continuar con algún proyecto a futuro y de ser a sí sería algo muy bueno.
//Pendiente de ampliación//