Hackathon ROBO-RACE y taller práctico sobre IA en Artin: cómo fue

Buenas tardes, queridos lectores! Recientemente tuve la suerte de participar en un hackathon sobre inteligencia artificial, organizado por el grupo Roboauto de Artin en Brno (República Checa), que lideró el desarrollo de un vehículo no tripulado. En este artículo me gustaría compartir mis impresiones y contar cómo fue todo, qué aprendí y qué útil aprender. A quién le importa, por favor, debajo del gato.

Sobre hackathon


Este fue el primer hackathon sobre el tema del aprendizaje automático y la inteligencia artificial, y el grupo Roboauto logró un gran éxito en esta área, por lo que me registré inmediatamente por adelantado. El hackathon estaba dirigido principalmente a estudiantes de la Universidad Técnica de Brno. Como los autores dijeron de antemano en la página de Facebook del hackathon, se suponía que el hackathon era una competencia de juego entre equipos en un simulador de autos de carrera. Los autores prometieron proporcionar un proyecto de simulador en Java, al que puede conectar su programa. El objetivo principal: escribir un programa Java para su automóvil de tal manera que el automóvil pase un círculo más rápido que sus rivales. Puede usar redes neuronales o lógica programada.

Se publicó un video de la pista de competencia en la página del evento en Facebook, que tuvimos que revisar:



Unos días antes del día del hackathon, se envió un correo electrónico a todos los participantes con breves instrucciones sobre cómo prepararse para el evento. Fue necesario instalar Intellij Idea IDE con Gradle, soporte de Java versión 8 y crear una cuenta en GitLab.

Puede registrar su equipo o registrarse usted mismo. En el segundo caso, los organizadores te conectan con algún equipo. Me asignaron a un equipo con un chico de mi compañía NXP, que también se registró de forma independiente.

imagen

Parte teórica - introducción


Todo comenzó con un bloque de teoría de 2 horas. Nos dieron acceso a wifi y tuvimos una presentación de los organizadores y el programa de hackathon. Durante el día desde las 12 hasta la medianoche, el hackathon se planeó con varias series de carreras y descansos para el almuerzo y la cena. De 17 a 19 horas hubo una sección sobre el paso de una carrera de obstáculos en automóviles controlados por radio en una habitación separada.

El primer orador, Pavel, hizo la aprobación de la presentación: presentación del entorno del simulador, conexión de sus proyectos, introducción a la IA. Propósito: enseñar un modelo de automóvil en un simulador para que conduzca lo más rápido posible. También puede controlar modelos desde el teclado. Nos mostraron una demostración en un simulador y una implementación en código.

imagen

imagen

imagen

Nos dieron un enlace a un proyecto en Gitlab. Todos tenían que solicitar acceso al repositorio, clonar el proyecto localmente en la computadora e importarlo a IntelliJ IDEA. El proyecto incluyó soporte para Gradle, un sistema de generación de tipo Maven o CMake. Puede comenzar el proyecto de inmediato: se abre una ventana de un simulador como este:

imagen

Después de eso, otro orador, Stepan, hizo una breve introducción a la teoría del aprendizaje automático y aclaró que el hackathon usará redes neuronales como Feed forward y capacitación con un maestro. El objetivo es enseñarle al automóvil a conducir. Para hacer esto, primero manejaremos la pista nosotros mismos con control manual, guardaremos los puntos de la trayectoria. El conjunto de datos de trayectoria se almacena en la tabla CSV: la distancia desde la línea media de la carretera, el ángulo con respecto a la carretera y uno de los valores 0, 1, -1 para el valor de giro. Luego, enseñaremos a la red a conducir por el camino lo más cerca posible del camino atravesado por el control manual.

Entre las preguntas de los participantes había una pregunta interesante: cómo indicar para la red datos sobre las posiciones de otros autos rivales. Stepan dijo que los datos sobre los rivales también se pueden configurar en la entrada de una red neuronal. También puede establecer datos de velocidad en la entrada, si esto ayuda en el entrenamiento.

Stepan mostró cómo hacer dos ejemplos de control manual: incorrecto (arbitrario) y correcto (ordenado, cerca de la mitad del camino). Al demostrar la red entrenada, el automóvil tuvo grandes problemas en las esquinas.

Fue posible configurar varios parámetros de red: el número de entradas, salidas, el número de eras de entrenamiento, el número de neuronas en la capa oculta. El programa para implementar redes neuronales utilizó la biblioteca DL4J : deeplearning4j.org . Desafortunadamente, la biblioteca no funciona en un sistema operativo de 32 bits (tuve un problema en una computadora portátil con Ubuntu 12.04).

La parte principal es la competencia.


Cada equipo determina el color de su automóvil, que debe indicarse en el código del programa. Inmediatamente nos dijeron cómo usar la API de la aplicación para controlar su automóvil en una competencia.

imagen

Mi colega y yo comenzamos resolviendo el problema de atravesar rápidamente una ruta utilizando los métodos habituales basados ​​en API. Nuestra solución fue esta: dependiendo de la distancia al siguiente giro y la dirección del giro, ajustamos la aceleración y el ángulo de rotación del automóvil. Para obtener información sobre la proximidad de un giro, utilizamos el objeto Grid de la API del sistema. La esencia de Grid: para un automóvil, puede obtener una cuadrícula rectangular de la superficie del campo de juego frente al automóvil (izquierda y derecha del automóvil) de tamaño arbitrario (por ejemplo, un ancho de 8 y una longitud de 10 celdas). Para cada celda, puede determinar si la pista la atraviesa y si hay otro automóvil actualmente en ella.

Aquí hay un enlace a nuestro proyecto . Archivos principales: Driver_team12.java, Team12.java y RunDev.java. La lógica de control se encuentra en el archivo Driver_team12.java.

Hacia la tarde, comencé a tratar con redes neuronales. Comenzó con una grabación de trayectoria simple con control manual. Al entrenar sobre los datos registrados y ajustar los parámetros (número de iteraciones, número de épocas de entrenamiento, velocidad de aprendizaje), se lograron varios mejores resultados del curso.

Durante el hackathon, se realizaron varias competiciones, en cada una de las cuales se realizó una serie de carreras entre grupos de equipos. En el proceso, los participantes mejoraron constantemente sus decisiones. El gran problema fue la colisión de varios automóviles, bloqueando completamente el movimiento en la carretera. Aquí ganan los equipos que implementaron el mejor manejo de obstáculos.

imagen

imagen

imagen

imagen

En la competencia, la mitad de los equipos presentaron una solución basada en redes neuronales. El ganador es uno de estos equipos. Uno de los equipos líderes construyó una red neuronal de 25 capas, recibió muchos parámetros en la entrada (entre ellos la distancia al centro de la carretera, la velocidad y los datos del objeto Grid). Otro equipo usó dos redes neuronales: una para la sección recta (para minimizar la desviación del centro de la carretera) y otra para el giro.

Hackathon carreras disponibles:


Otras cosas interesantes


Además del hackathon en sí, se incluyó un evento emocionante en el programa: el paso de una carrera de obstáculos en automóviles controlados por radio. De 17 a 19 horas en una habitación separada, podría intentar superar obstáculos difíciles en modelos de automóviles con control de radio.

imagen

imagen

imagen

Se organizaron almuerzos y meriendas durante todo el día. Por la noche pedimos pizza. También fue posible verter cerveza en la cocina sin restricciones.

imagen

Tan interesante, emocionante y enérgico fue todo el día del hackathon. Hubo muchas impresiones agradables, muchos momentos divertidos de las competiciones por equipos. El hackathon fue un buen entrenamiento mental durante el fin de semana, en el que podías apilarte el cerebro en tareas de la vida real e intentar aprender a conducir un automóvil no tripulado en un simulador simple.

¡Buena suerte a todos y hasta pronto!

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


All Articles