Enfoque de aprendizaje intensivo STEM

Hay muchos cursos excelentes en el mundo de la educación en ingeniería, pero a menudo el plan de estudios desarrollado sobre ellos tiene un serio inconveniente: la falta de buena conectividad entre los diferentes temas. Uno puede objetar: ¿cómo es eso?

Cuando se forma un programa de capacitación, se indican requisitos previos y un orden claro en el que se deben estudiar las disciplinas para cada curso. Por ejemplo, para ensamblar y programar un robot móvil primitivo, necesita conocer un poco de mecánica para crear su estructura física; los fundamentos de la electricidad a nivel de las leyes de Ohm / Kirchhoff, la representación de señales digitales y analógicas; operaciones con vectores y matrices para describir los sistemas de coordenadas y el movimiento del robot en el espacio; Conceptos básicos de programación a nivel de presentación de datos, algoritmos simples y estructuras de transferencia de control, etc. para describir el comportamiento.

¿Está todo en cursos universitarios? Por supuesto que lo hay. Sin embargo, para las leyes de Ohm / Kirchhoff obtenemos termodinámica y teoría de campo; Además de las operaciones con matrices y vectores, debe lidiar con los formularios de Jordan; estudiar el polimorfismo en la programación, temas que no siempre son necesarios para resolver un problema práctico simple.

La educación universitaria es extensa: el estudiante se pone en un frente amplio y, a menudo, no ve el significado y la importancia práctica del conocimiento que recibe. Decidimos revertir el paradigma de la educación universitaria STEM (de las palabras Ciencia, Tecnología, Ingeniería, Matemáticas) y crear un programa que se base en la coherencia del conocimiento, lo que permite la acumulación de integridad en el futuro, es decir, implica un desarrollo intensivo de asignaturas.

El estudio de un área temática nueva se puede comparar con el estudio de un área determinada. Y aquí hay dos opciones: o tenemos un mapa muy detallado con una gran cantidad de detalles que deben estudiarse (y esto lleva mucho tiempo) para comprender dónde están los puntos de referencia principales y cómo se relacionan entre sí; o puede usar el plan primitivo, que muestra solo los puntos principales y sus posiciones relativas; dicho mapa es suficiente para comenzar a moverse inmediatamente en la dirección correcta, aclarando detalles a lo largo del camino.

Probamos el enfoque de aprendizaje intensivo STEM en la escuela de invierno, que realizamos junto con los estudiantes del MIT con el apoyo de JetBrains Research.

Preparación del material


La primera parte del programa escolar fue una semana de clases en las áreas principales, que incluyeron álgebra, circuitos eléctricos, arquitectura de computadoras, programación de Python y una introducción a ROS (Robot Operating System).

Las direcciones no fueron elegidas por casualidad: se complementaban entre sí, se suponía que ayudarían a los estudiantes a ver la conexión entre cosas aparentemente diferentes, a primera vista, matemáticas, electrónica y programación.

Por supuesto, el objetivo principal no era dar muchas conferencias, sino dar a los estudiantes la oportunidad de poner en práctica los conocimientos que acaban de adquirir.

En la sección de álgebra, los estudiantes podrían recibir capacitación en operaciones con matrices y resolver sistemas de ecuaciones que fueron útiles para estudiar circuitos eléctricos. Al aprender sobre el dispositivo transistor y los elementos lógicos construidos sobre esta base, los estudiantes podían ver su aplicación en el dispositivo procesador, y después de aprender los conceptos básicos del lenguaje Python, escribir un programa para un robot real en él.



Duckietown


Una de las tareas de la escuela era minimizar el trabajo con simuladores cuando sea posible. Por lo tanto, se preparó un gran conjunto de circuitos electrónicos, que los estudiantes tuvieron que ensamblar en una placa de prueba a partir de componentes reales y probarlos en la práctica, y se eligió a Duckietown como base para los proyectos.

Duckietown es un proyecto de código abierto que incluye pequeños robots autónomos llamados Duckiebot, y una red de caminos a lo largo de los cuales viajan. Duckiebot es una plataforma con ruedas equipada con un microordenador Raspberry Pi y una sola cámara.

En base a esto, preparamos un conjunto de tareas posibles, como construir un mapa de ruta, encontrar objetos y detenerse junto a ellos, y muchos otros. Los estudiantes también pueden proponer su propio problema y no solo escribir un programa para resolverlo, sino también lanzarlo inmediatamente en un robot real.

Enseñanza


Durante la conferencia, los maestros contaron el material utilizando presentaciones preparadas previamente. Algunas clases se grabaron en video, por lo que los estudiantes tuvieron la oportunidad de verlas en casa. Durante las conferencias, los estudiantes usaron materiales en sus computadoras, hicieron preguntas, resolvieron problemas juntos e independientemente, a veces en el pizarrón. Con base en los resultados del trabajo, se calculó la calificación de cada estudiante por separado para diferentes materias.



Considere llevar a cabo clases en cada materia con más detalle. El primer tema fue el álgebra lineal. Los estudiantes durante un día estudiaron vectores y matrices, sistemas de ecuaciones lineales, etc. Las tareas prácticas se construyeron en un modo interactivo: las tareas propuestas se resolvieron individualmente, y el maestro y otros estudiantes dieron comentarios y sugerencias.



El segundo tema es la electricidad y los circuitos simples. Los estudiantes estudiaron los conceptos básicos de la electrodinámica: voltaje, corriente, resistencia, ley de Ohm y leyes de Kirchhoff. Las tareas prácticas se realizaron parcialmente en el simulador o se realizaron en el tablero, pero se dedicó más tiempo a construir circuitos reales, como circuitos lógicos, circuitos oscilatorios, etc.



El siguiente tema es Computer Architecture, en cierto sentido, un puente que conecta la física y la programación. Los estudiantes estudiaron las bases fundamentales, cuyo significado es más teórico que práctico. Como práctica, los estudiantes diseñaron independientemente circuitos aritméticos-lógicos en el simulador, para los puntos que recibieron.

El cuarto día es el primer día de programación. Python 2 fue elegido como lenguaje de programación, ya que se usa en la programación bajo ROS. Este día se construyó de la siguiente manera: los maestros contaron el material, dieron ejemplos de resolución de problemas, mientras que los estudiantes los escucharon sentados frente a las computadoras y repitieron lo que el maestro escribió en la pizarra o diapositiva. Luego, los estudiantes resolvieron problemas similares por su cuenta, posteriormente las soluciones fueron evaluadas por los maestros.

El quinto día fue dedicado a ROS: los chicos se familiarizaron con los robots de programación. Durante todo el día escolar, los estudiantes se sentaron en las computadoras, ejecutando el código del programa del que habló el maestro. Pudieron lanzar de forma independiente las unidades básicas de ROS y también se familiarizaron con el proyecto Duckietown. Al final de este día, los estudiantes estaban listos para comenzar la parte de diseño de la escuela, resolviendo problemas prácticos.



Descripción de proyectos seleccionados.


Se les ofreció a los estudiantes unirse en equipos de tres personas y elegir un tema del proyecto. Como resultado, se adoptaron los siguientes proyectos:

1. Calibración de color. Duckiebot necesita calibrar la cámara cuando cambia las condiciones de iluminación, por lo que existe la tarea de la calibración automática. El problema es que los rangos de color son muy sensibles a la luz. Los participantes implementaron una utilidad que resaltaría los colores deseados en el marco (rojo, blanco y amarillo) y crearía rangos para cada uno de los colores en formato HSV.

2. Duck Taxi. La idea de este proyecto es que Duckiebot podría detenerse cerca de algún objeto, recogerlo y seguir una ruta determinada. Se eligió un pato amarillo brillante como objeto.



3. Construir un gráfico de carreteras. Existe la tarea de construir un gráfico de carreteras e intersecciones. El objetivo de este proyecto es construir un gráfico de carreteras sin proporcionar datos ambientales a priori para Duckiebot, basándose únicamente en los datos de la cámara.

4. Coche patrulla. Este proyecto fue inventado por los propios estudiantes. Ofrecieron enseñar a un Duckiebot, la "patrulla", a perseguir al otro, el "intruso". Para este propósito, se utilizó un mecanismo de reconocimiento de objetivo por el marcador ArUco. Tan pronto como se completa el reconocimiento, se envía una señal de finalización al "intruso".



Calibración de color


El objetivo del proyecto de Calibración de color era ajustar el rango de colores de marcado reconocibles a las nuevas condiciones de iluminación. Sin tales ajustes, el reconocimiento de las líneas de parada, los divisores de carriles y los límites de las carreteras se volvió incorrecto. Los participantes propusieron una solución basada en plantillas de color de diseño de preprocesamiento: rojo, amarillo y blanco.

Cada uno de estos colores tiene un rango preliminar de valores HSV o RGB. Usando este rango, todas las áreas que contienen colores adecuados se encuentran en el marco, y la más grande se selecciona de ellas. Esta área se toma como el color a recordar. Luego se utilizan fórmulas estadísticas, como el cálculo de la media y la desviación estándar, para evaluar el nuevo rango de colores.

Este rango se escribe en los archivos de configuración de la cámara Duckiebot y se puede usar más adelante. El enfoque descrito se aplicó a los tres colores, formando finalmente rangos para cada uno de los colores de marcado.

Las pruebas mostraron un reconocimiento casi perfecto de las líneas de marcado, excepto cuando se utilizó una cinta brillante como material de marcado, lo que refleja las fuentes de luz con tanta fuerza que en el ángulo de visión de la cámara la marca parecía blanca independientemente de su color original.



Pato taxi


El proyecto Duck Taxi involucró la construcción de un algoritmo de búsqueda para un pato de pasajeros en la ciudad, y luego su transporte al punto deseado. Los participantes dividieron esta tarea en dos: detección y movimiento a lo largo del gráfico.

Los estudiantes llevaron a cabo la detección de un pato, asumiendo que el pato se llama cualquier área en el marco que pueda reconocerse como amarilla, con un triángulo rojo (pico). Tan pronto como se detecte dicha área en el siguiente cuadro, el robot debe acercarse y luego detenerse durante unos segundos, simulando un aterrizaje de pasajeros.

Luego, teniendo un gráfico de carretera pre-almacenado de todo el duckietown y la posición del bot, además de recibir el destino como entrada, los participantes construyen una ruta desde el punto de partida hasta el punto de llegada usando el algoritmo de Dijkstra para buscar rutas en el gráfico. La salida se presenta como un conjunto de comandos: giros en cada una de las siguientes intersecciones.



Gráfico de caminos


El objetivo de este proyecto era construir un gráfico: una red de carreteras en Duckietown. Los nodos del gráfico resultante son intersecciones, y los arcos son caminos. Para hacer esto, Duckiebot debe explorar la ciudad y analizar su ruta.

Durante el trabajo en el proyecto, se consideró la idea, pero luego se rechazó la idea de crear un gráfico ponderado en el que el costo del borde esté determinado por la distancia (tiempo para superar) entre las intersecciones. La implementación de esta idea resultó ser demasiado laboriosa y no habría suficiente tiempo en el marco de la escuela.

Cuando Duckiebot llega a la siguiente intersección, elige el camino que sale de la intersección en la que aún no se ha movido. Cuando se han cubierto todas las carreteras en todas las intersecciones, una lista generada de adyacencias de intersección permanece en la memoria del bot, que se convierte en una imagen usando la biblioteca Graphviz.

El algoritmo propuesto por los participantes no es adecuado para Duckietown arbitrario, pero funcionó bien en una pequeña ciudad que consta de cuatro intersecciones utilizadas dentro de la escuela. La idea era complementar cada intersección con un marcador ArUco que contenga el identificador de intersección para rastrear la intersección.
El esquema de trabajo del algoritmo desarrollado por los participantes se muestra en la figura.



Patrulla


El objetivo de este proyecto es buscar, procesar y detener a un robot intruso en Duckietown. La patrulla bot debería moverse a lo largo del anillo exterior de la carretera en la ciudad en busca de un conocido robot intruso. Después de que se detecta al intruso, el bot de patrulla debe seguir al intruso y hacer que se detenga.

El trabajo comenzó con la búsqueda de la idea de detectar un bot en el marco y reconocer al intruso en él. El equipo sugirió equipar cada bot de la ciudad con un marcador único en la parte posterior, al igual que los autos reales tienen números de registro estatales. Para esto, se eligieron los marcadores ArUco. Anteriormente se usaron en Duckietown, ya que es fácil trabajar con ellos y le permiten determinar la orientación del marcador en el espacio y la distancia a él.

Luego, era necesario hacer que el bot de patrulla se moviera estrictamente en el círculo exterior sin detenerse en las intersecciones. Por defecto, Duckiebot se mueve en un carril y se detiene en una línea de alto. Luego, usando señales de tráfico, determina la configuración de la intersección y toma una decisión sobre la dirección de la intersección. Para cada uno de los pasos descritos, uno de los estados de la máquina de estados del robot es responsable. Para deshacerse de las paradas en la intersección, el equipo cambió la máquina de estado para que, al acercarse a la línea de parada, el bot se dirigiera directamente al estado de paso de la intersección.

El siguiente paso fue resolver el problema de detener el robot intruso. El equipo asumió que el bot de patrulla puede tener acceso SSH a cada uno de los bots de la ciudad, es decir, tener alguna información sobre qué datos de autorización y qué identificación tiene cada bot. Por lo tanto, después de que se detectó al intruso, el bot de patrulla comenzó a conectarse a través de SSH al bot de intruso y apagó su sistema.

Después de confirmar que se completó el comando de apagado, el bot de patrulla también se detuvo.
El algoritmo del robot de patrulla se puede representar como el siguiente esquema:



Proyecto de trabajo


El trabajo se organizó en un formato similar a Scrum: todas las mañanas los estudiantes planificaban tareas para el día actual y por la noche informaban sobre el trabajo realizado.

En el primer y último día, los estudiantes prepararon presentaciones que describían la tarea y cómo resolverla. Para ayudar a los estudiantes a seguir sus planes elegidos, en las salas donde se trabajaban los proyectos, constantemente había maestros de Rusia y América que respondían preguntas. La comunicación se realizó principalmente en inglés.

Resultados y su demostración


El trabajo en proyectos duró una semana, después de lo cual los estudiantes presentaron sus resultados. Todos prepararon presentaciones en las que contaron lo que aprendieron en esta escuela, cuáles fueron las lecciones más importantes que les gustaron o no les gustaron. Después de eso, cada equipo presentó su proyecto. Todos los equipos hicieron frente a las tareas.

El equipo que implementa la calibración del color completó el proyecto más rápido que otros, por lo que lograron preparar la documentación para su programa. Y el equipo involucrado en el gráfico de carreteras, incluso el último día antes de la demostración del proyecto, trató de finalizar y corregir sus algoritmos.



Conclusión


Después de la escuela, les pedimos a los estudiantes que evaluaran actividades pasadas y respondieran preguntas sobre cómo la escuela cumplió con sus expectativas, qué habilidades adquirieron, etc. Todos los estudiantes notaron que aprendieron a trabajar en equipo, distribuir tareas y planificar su tiempo.

También se les pidió a los estudiantes que calificaran la utilidad y complejidad de los cursos. Y aquí se formaron dos grupos de evaluaciones: para algunos, los cursos no fueron muy difíciles, mientras que otros los calificaron como los más difíciles.

Esto significa que la escuela ha tomado la posición correcta, permaneciendo accesible para los principiantes en un área en particular, pero también brindando materiales para la repetición y consolidación a estudiantes experimentados. Cabe señalar que casi todos notaron un curso de programación (Python) como sencillo, pero útil. El más difícil, según los estudiantes, fue el curso "Arquitectura de computadoras".

Cuando se les preguntó a los estudiantes sobre las deficiencias y ventajas de la escuela, muchos respondieron que les gustaba el estilo de enseñanza elegido, en el cual los maestros brindaron asistencia de forma rápida e individual y respondieron preguntas.

Los estudiantes también notaron que les gustaba trabajar en el modo de planificación diaria de sus tareas y establecer plazos de forma independiente. Los estudiantes notaron la falta de conocimiento proporcionado, que era necesario cuando se trabajaba con el bot: al conectarse, entendiendo los fundamentos y principios de su trabajo como deficiencias.

Casi todos los estudiantes notaron que la escuela excedió sus expectativas, y esto indica la dirección correcta de la organización escolar. Por lo tanto, se deben mantener disposiciones generales al organizar la próxima escuela, teniendo en cuenta y, si es posible, eliminando las deficiencias observadas por los estudiantes y maestros, posiblemente cambiando la lista de cursos o el tiempo de su enseñanza.

Autores: Equipo de Laboratorio de Algoritmo de Robot Móvil de JetBrains Research

PD Nuestro blog corporativo tiene un nuevo nombre. Ahora se dedicará a los proyectos educativos de JetBrains.

Source: https://habr.com/ru/post/467425/


All Articles