Diferencia entre revisiones de «Taller de Robótica educativa»

De Proyecto Butiá
Saltar a: navegación, buscar
(Modalidad de trabajo)
(Clase 5)
 
(No se muestran 52 ediciones intermedias del mismo usuario)
Línea 7: Línea 7:
 
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.
 
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.
 
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==
 
==Modalidad de trabajo==
Línea 16: Línea 15:
 
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.
 
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==
 
==Clase 1==
 
En esta clase se presentó el taller, se dieron pautas de trabajo y objetivos del mismo.
 
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 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 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 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 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.
 
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.
 
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.
 +
 +
 +
<center><youtube>AGk2GGNYjJQ</youtube></center>
  
 
==Clase 2==
 
==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.
 +
 +
 +
<center><youtube>QrOZtn0j19M</youtube></center>
 +
 +
==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.
 +
 +
 +
 +
<center><youtube>NqTcoxu9v9I</youtube></center>
 +
 +
 +
Los siguientes videos serían el resultado de los programas realizados en el taller:
 +
 +
 +
<youtube>2cBMiq9wf90&list=PLpGDMoCLxQv3VKnOhjYN9S8_ZpI8iJuIp&index=6</youtube><youtube>2EuFxgTjgA0&list=PLpGDMoCLxQv3VKnOhjYN9S8_ZpI8iJuIp&index=3</youtube>
 +
<youtube>DwxMU5_1HrI&list=PLpGDMoCLxQv3VKnOhjYN9S8_ZpI8iJuIp&index=2</youtube><youtube>uytmjbCBG7U</youtube>
 +
 +
==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.
 +
 +
 +
<center><youtube>https://www.youtube.com/watch?v=r3wZqPGNg_g</youtube></center>
 +
 +
==Clase 5==
 +
Se realizaron cuatro ejercicios que se plantearon en la clase anterior en el lenguaje Python, se mostraron varias soluciones.
 +
 +
Se introdujo la API Butiá, se explicó como generar un archivo para poder compilar a través de Python un programa para realizar acciones sobre el robot, se explicó la función de las palabras predefinidas "import", "from", "as", se introdujo la librería sys y la librería pyboy de la que se extrae usb4butia.
 +
 +
Se generó una instancia en la placa Butiá a través de la librería anterior para poder acceder a todos los comandos que nos permiten controlar los sensores y los motores. Se mostraron los comandos que se utilizan para obtener medidas de los sensores y mover los motores.
 +
 +
Se explicó como guardar los valores censados por los sensores en variables en Python, para poder utilizarlos en un programa.
 +
Se mostró el funcionamiento de la bandera "debug = True" al instanciar la placa, que nos permite ver los dispositivos conectados a la placa, así como saber en que puerto están, lo que nos permite saber si hay algún problema, ya que en caso de haberlo este comando nos arrojará un error.
 +
 +
Se mostró un código que hace que el robot se mueva hacia adelante hasta que se presione un botón, se explicó cada parte del código. Mostramos en el código anterior el funcionamiento del "While(True)", que emula el "Por Siempre" de TurtleBots.
 +
 +
Se mostró y codificó un programa que permite seguir una línea con un solo sensor, utilizamos para mostrarlo una hoja de papel blanco que simulaba una pista sobre fondo marrón, el robot se colocó en paralelo a la hoja de papel y al detectarla comenzaba a girar.
 +
Se realizó el mismo procedimiento para dos sensores, la idea en ambos casos era seguir textualmente el código hecho en TurtleBots.
 +
 +
Se mostró y codificó un programa que evita que el robot se caiga de la mesa, se siguió como base el código utilizado en TurtleBots y se fue programando poco a poco.
 +
 +
Se introdujeron las librerías de matplotlib y numpy las cuales nos permiten por un lado generar gráficas en el caso de matplotlib y trabajar con vectores y matrices en el caso de numpy. Se explico como generar una gráfica de una recta, tomando como recorrido del eje x e y el arreglo [1, 2, 3, 4].
 +
Se explicó como generar y cargar los ejes con estos valores y mostrar la gráfica en pantalla.
 +
 +
 +
<center><youtube>https://www.youtube.com/watch?v=1tkCOgBpEJI&</youtube></center>
 +
 +
==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//

Revisión actual del 19:21 17 jul 2021

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

Se realizaron cuatro ejercicios que se plantearon en la clase anterior en el lenguaje Python, se mostraron varias soluciones.

Se introdujo la API Butiá, se explicó como generar un archivo para poder compilar a través de Python un programa para realizar acciones sobre el robot, se explicó la función de las palabras predefinidas "import", "from", "as", se introdujo la librería sys y la librería pyboy de la que se extrae usb4butia.

Se generó una instancia en la placa Butiá a través de la librería anterior para poder acceder a todos los comandos que nos permiten controlar los sensores y los motores. Se mostraron los comandos que se utilizan para obtener medidas de los sensores y mover los motores.

Se explicó como guardar los valores censados por los sensores en variables en Python, para poder utilizarlos en un programa. Se mostró el funcionamiento de la bandera "debug = True" al instanciar la placa, que nos permite ver los dispositivos conectados a la placa, así como saber en que puerto están, lo que nos permite saber si hay algún problema, ya que en caso de haberlo este comando nos arrojará un error.

Se mostró un código que hace que el robot se mueva hacia adelante hasta que se presione un botón, se explicó cada parte del código. Mostramos en el código anterior el funcionamiento del "While(True)", que emula el "Por Siempre" de TurtleBots.

Se mostró y codificó un programa que permite seguir una línea con un solo sensor, utilizamos para mostrarlo una hoja de papel blanco que simulaba una pista sobre fondo marrón, el robot se colocó en paralelo a la hoja de papel y al detectarla comenzaba a girar. Se realizó el mismo procedimiento para dos sensores, la idea en ambos casos era seguir textualmente el código hecho en TurtleBots.

Se mostró y codificó un programa que evita que el robot se caiga de la mesa, se siguió como base el código utilizado en TurtleBots y se fue programando poco a poco.

Se introdujeron las librerías de matplotlib y numpy las cuales nos permiten por un lado generar gráficas en el caso de matplotlib y trabajar con vectores y matrices en el caso de numpy. Se explico como generar una gráfica de una recta, tomando como recorrido del eje x e y el arreglo [1, 2, 3, 4]. Se explicó como generar y cargar los ejes con estos valores y mostrar la gráfica en pantalla.


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//