Mientras los desarrolladores se preparan para re:Invent 2024, se enfrentan nuevamente a los desafíos únicos de las carreras físicas. ¿Cuáles son los obstáculos? Echemos un vistazo.
En esta publicación del blog, analizaré qué hace que las carreras físicas de AWS DeepRacer (un automóvil real en una pista real) sean diferentes a las carreras en el mundo virtual (un modelo en un entorno 3D simulado). Hablaré de los conceptos básicos, las diferencias entre lo virtual y lo físico y los pasos que he dado para comprender mejor el desafío.
La AWS DeepRacer League está llegando a su fin. En dos días, 32 corredores se enfrentarán en Las Vegas por última vez. Este año, la clasificación ha sido completamente virtual, por lo que la transición de las carreras virtuales a las físicas será un desafío.
Aspectos básicos
AWS DeepRacer se basa en el entrenamiento del corredor de un modelo dentro del simulador, un entorno 3D creado alrededor de ROS y Gazebo, originalmente creado en AWS RoboMaker.
El modelo entrenado se utiliza posteriormente para carreras virtuales o físicas. El modelo consta de un red neuronal convolucional (CNN) y un espacio de acción que traduce las etiquetas de clase en velocidad y movimiento del acelerador. En el escenario básico que involucra una sola cámara, se captura una imagen en escala de grises de 160 bits y 120 x 8 píxeles (similar a la siguiente figura) 15 veces por segundo, se pasa a través de la red neuronal y se ejecuta la acción con el mayor peso (probabilidad).
La pequeña parte de la magia de la IA es que durante la evaluación del modelo (en las carreras) no hay contexto; cada imagen se procesa independientemente de la imagen anterior y sin conocimiento del estado del propio coche. Si procesas las imágenes en orden inverso, los resultados siguen siendo los mismos.
Lo virtual comparado con lo físico
Los mundos virtuales son mundos 3D creados en Gazebos, y el software está escrito en Python y C++ usando ROS como marco. Como se muestra en la siguiente imagen, la simulación 3D es bastante plana, con texturas y superficies básicas. Hay pocos o ningún reflejo o brillo, y el entorno es tan limpio visualmente como lo desee. Las imágenes de entrada se capturan 15 veces por segundo.
En este mundo se simula un coche pequeño. Comparado con un coche real, el modelo es muy básico y carece de bastantes de las cosas que hacen que un coche real funcione: no tiene suspensión, los neumáticos son cilindros rígidos, no hay Dirección AckermannY no hay diferenciales. Es casi sorprendente que este coche pueda conducirse. El lado positivo es que la cámara es perfecta; independientemente de las condiciones de iluminación, se obtienen imágenes nítidas y claras sin borrosidad por movimiento.
Un coche virtual típico se desplaza a velocidades de entre 0.5 y 4.0 metros por segundo, dependiendo de la forma de la pista. Si vas demasiado rápido, es probable que el coche sobrevire y se salga de la curva debido al agarre relativamente bajo.
En cambio, el mundo real es menos perfecto: la simulación se corresponde con la realidad. brecha #1 Se trata del ruido visual creado por la luz, los reflejos (si la pista está impresa en material reflectante) y el ruido de fondo (por ejemplo, si las barreras que rodean la pista son demasiado bajas y el coche ve personas y objetos detrás). Las imágenes de entrada se capturan 30 veces por segundo.
El coche en sí, basado en los modelos disponibles WLToys A979—tiene todo lo que el modelo no tiene: neumáticos, suspensión y diferencial adecuados. Un problema es que el coche es pesado (alrededor de 1.5 kg) y la colocación de algunos componentes hace que el centro de gravedad esté muy alto. Esto hace que la simulación se parezca más a la realidad. brecha #2:El balanceo y el cabeceo en las curvas a alta velocidad hacen que la cámara gire, confundiendo la red neuronal a medida que se mueve el horizonte.
Brecha n.° 3 proviene del desenfoque de movimiento cuando la luz es demasiado tenue; el desenfoque puede hacer que la línea central discontinua parezca una línea sólida, lo que dificulta distinguir la línea central de las líneas internas y externas sólidas, como se muestra en la siguiente figura.
La geometría de la dirección, los diferenciales, la falta de precisión de ingeniería del A979 y la correspondiente dificultad para calibrarlo, provocan brecha #4Incluso si el modelo quiere ir en línea recta, el coche sigue desplazándose hacia la izquierda o hacia la derecha, por lo que necesita una corrección constante para mantenerse en la pista. Esto se nota más cuando el coche no puede conducir por las rectas en línea recta.
El AWS DeepRacer original, sin modificaciones, tiene un rango de velocidad más pequeño, de unos 2 metros por segundo. Tiene un mejor agarre, pero sufre los movimientos de balanceo mencionados anteriormente. Si vas demasiado rápido, subvirará y posiblemente volcará. Desde 2023, los equipos de boxes de AWS operan sus flotas de AWS DeepRacers con espaciadores de amortiguadores para endurecer la suspensión, reducir el balanceo y aumentar la velocidad máxima efectiva.
Cuatro preguntas
Al observar las brechas entre lo simulado y lo real, hay cuatro preguntas que queremos explorar:
- ¿Cómo podemos entrenar el modelo para manejar mejor el mundo real? Esto incluye modificar el simulador para cerrar algunas de las brechas, junto con la adaptación de la función de recompensa, el espacio de acción y la metodología de entrenamiento para hacer un mejor uso de este simulador.
- ¿Cómo podemos evaluar mejor lo que hace el automóvil y por qué? En el mundo virtual, podemos realizar análisis de registros para investigar; en el mundo real esto aún no ha sido posible.
- ¿Cómo podemos evaluar nuestros modelos recién entrenados? Una pista estándar de AWS DeepRacer, con un tamaño de 8 metros x 6 metros, es prohibitivamente grande. ¿Es posible reducir el tamaño de la pista para que quepa en una casa?
- ¿Un coche modificado rendirá mejor? ¿Mejorar mi AWS DeepRacer con mejores amortiguadores? ¿Agregar cojinetes de bolas y calzas para mejorar la precisión de la dirección? ¿O construir un auto nuevo y más liviano basado en una Raspberry Pi?
Soluciones
Para responder a estas preguntas, se requieren algunas soluciones que respalden los experimentos. A continuación se supone que está utilizando Deepracer para la nube ejecutar la capacitación localmente o en un Nube informática elástica de Amazon (Amazon EC2) Por ejemplo, no entraremos en detalles, pero te daremos referencias que te permitirán probar cosas por tu cuenta.
Simulador personalizado
Lo primero que hay que ver es cómo se puede alterar el simulador. código simulador Está disponible y no se necesitan demasiadas habilidades para modificarlo. Puedes alterar el coche y la física del mundo o ajustar el entorno visual.
Cambiar el ambiente
Cambiar los entornos significa alterar el mundo 3D. Esto se puede hacer modificando las características de una pista preexistente agregando o quitando partes de la pista (como líneas), cambiando la iluminación, agregando características de fondo (como paredes o edificios), intercambiando texturas, etc. Hacer cambios en el mundo requerirá crear una nueva imagen de Docker, lo que puede llevar bastante tiempo, pero hay formas de acelerar el proceso. Yendo un paso más allá, también es posible hacer que el mundo se pueda modificar mediante programación (línea de comandos o código) durante el tiempo de ejecución.
El punto de partida son los archivos de pista COLLADA (.dae) que se encuentran en el mallas Puede importarlo a Blender (como se muestra en la siguiente figura), realizar los cambios y exportar el archivo nuevamente. Tenga en cuenta que Gazebo no tiene en cuenta las luces y las posiciones de la cámara de Blender. Para modificar las condiciones de iluminación, deberá modificar las .world
archivo en mundos—los archivos son archivos XML en formato sd.
See Pistas personalizadas para algunos ejemplos de pistas sintonizadas.
El coche y la física
Los coches de competición propiedad de AWS no se pueden modificar, por lo que el objetivo de ajustar el coche en el simulador es hacer que se comporte de forma más similar al real. Las redes neuronales entrenadas tienen una expectativa incorporada de lo que sucederá a continuación; lo que significa que el coche simulado aprendió que al realizar una acción específica, obtendría un giro de un radio determinado. Si el coche del simulador gira más o menos que el físico en una situación determinada, el resultado se vuelve impredecible.
No tiene dirección Ackermann, no tiene diferenciales, pero las ruedas pueden desviarse hasta 30 grados (las ruedas reales solo se desvían un poco más de 20 grados hacia afuera y menos hacia adentro). Mi experiencia es que, sorprendentemente, el auto real tiene un radio de giro más corto que el virtual.
Los modelos de coches se encuentran en el Urdf carpeta. Hay tres coches diferentes, relacionados con las diferentes versiones de la física, que configuras en tu espacio de acciones (model_metadata.json
). Hoy en día, sólo el deepracer
(física v3 y v4) y deepracer_kinematics
Los modelos de física (v5) son relevantes. Existen modelos variantes para cámara única y para cámara estereoscópica, tanto con LIDAR como sin él.
Cada versión física es diferente; la gran pregunta es qué impacto, si lo hay, tiene cada versión en el comportamiento del coche físico.
- Versión 3:La dirección y el acelerador se gestionan mediante un Controlador PID, lo que hace que los cambios de velocidad y dirección sean suaves (y lentos). El entorno de simulación se ejecuta en todo momento, incluso durante el procesamiento y la inferencia de imágenes, lo que genera una mayor latencia entre la captura de imágenes y la acción que entra en vigencia.
- Versión 4La dirección y el acelerador se gestionan a través de un controlador PID, pero el mundo se pone en espera durante la inferencia, lo que reduce la latencia.
- Versión 5:La dirección y el acelerador se controlan mediante un controlador de posición y velocidad, y el mundo se pone en pausa durante la inferencia, eliminando casi por completo la latencia. (Esto es muy poco natural; el auto puede tomar curvas alternadas de 30 grados a la izquierda y a la derecha y seguirá avanzando casi en línea recta).
El controlador PID para v3 y v4 se puede cambiar en el archivo de control de coche de carrerasAl cambiar los valores P, I y D, puedes ajustar qué tan rápido o qué tan lento acelera y gira el auto.
También puedes ajustar la fricción. En nuestro simulador, la fricción se define para las ruedas, no para las superficies sobre las que se desplaza el coche. Los valores (llamados mu y mu2) se encuentran en coche de carreras.gazebo; aumentarlos (¡una vez por neumático!) permitirá que el automóvil conduzca más rápido sin girar.
Finalmente, implementé una versión experimental de las Geometría de dirección Ackermann Incluyendo los diferenciales. ¿Por qué? Al girar, las ruedas de un coche describen dos círculos con el mismo punto central, siendo el interior el que tiene un radio menor que el exterior. En resumen, las ruedas interiores tendrán que girar más (mayor curvatura), pero girarán más lentamente (menor circunferencia) que las ruedas exteriores.
Software de coche personalizado
El trabajo inicial para crear una pila de software modificada para el AWS DeepRacer original comenzó en 2022. Los primeros experimentos incluyeron operar el AWS DeepRacer con un controlador R/C y capturar las imágenes de la cámara y IMU Datos para crear un video en el auto. Había mucho que aprender sobre ROS2, incluida la creación de un nodo personalizado para publicar datos de sensores IMU y capturar y crear videos sobre la marcha. Durante la Cumbre de Berlín en 2022, ¡también pude dar una vuelta en la pista con mi auto modificado!
En el contexto de las carreras físicas, la motivación para personalizar el software del coche es obtener más información: qué hace el coche y por qué. En el siguiente vídeo se puede apreciar claramente el movimiento de balanceo en las curvas y el desenfoque de ciertas partes de la imagen que hemos comentado anteriormente.
La obra desencadenó la necesidad de alterar varios de los Paquetes de código abierto de AWS DeepRacer, e incluyó trabajos como optimizar el rendimiento desde la cámara hasta la inferencia mediante la compresión de imágenes y la habilitación de la aceleración de la GPU y el dispositivo de cómputo de la inferencia. Esto se tradujo en varios scripts que comprendían todos los cambios en los diferentes nodos y la creación de un paquete de software actualizado que se podía instalar en un automóvil AWS DeepRacer original.
El trabajo evolucionó y un mecanismo de registro que utiliza ROS Bag nos permitió analizar no solo las imágenes, sino también las acciones que realizaba el automóvil. Biblioteca Deepracer-Viz Junto con Jochem Lugtenburg, un líder de la comunidad de AWS DeepRacer, agregué una superposición de GradCam en la transmisión de video (que se muestra en el siguiente video), lo que permite comprender mejor lo que está sucediendo.
El resultado de esto ha evolucionado hasta convertirse en la comunidad. Automóvil personalizado AWS DeepRacer repositorio que permite a cualquier persona actualizar su AWS DeepRacer con un software mejorado con dos comandos y sin tener que compilar los módulos ellos mismos.
Los beneficios son:
- Mejora del rendimiento mediante el uso de transporte de imágenes comprimidas para el proceso de procesamiento principal.
- Inferencia utilizando OpenVINO con GPU Intel (AWS DeepRacer original), OpenVino con Myriad Neural Compute Stick (NCS2) o TensorFlow Lite.
- Almacenamiento en caché del Optimizador de modelos, acelerando el cambio de modelos.
- Capture los resultados de la cámara del automóvil y de la inferencia en una bolsa ROS para el análisis de archivos de registro.
- Ajustes y correcciones de la interfaz de usuario.
- ¡Compatibilidad con Raspberry Pi4, lo que nos permitirá crear el DeepRacer Pi!
Pruebas en una pista personalizada
Capturar datos es genial, pero necesitas una forma de probarlos todos: llevar modelos entrenados en un entorno personalizado a una pista para ver qué funciona y qué no.
La pregunta resultó ser: ¿Qué tan difícil es hacer una pista que tenga el mismo diseño que las pistas oficiales, pero que ocupe menos espacio que los 8m x 6m de la pista de re:Invent 2018? Después de re:Invent 2023, comencé a investigar. El objetivo era crear una pista personalizada que cupiera en mi garaje con un tamaño máximo teórico de 5.5 mx 4.5 m. La pista debería poder imprimirse en vinilo además de estar disponible en el Simulador para pruebas virtuales.
Después de un poco de prueba y error, resultó bastante sencillo, incluso si requiere varios pasos: comenzar en un Jupyter Notebook, pasar a un programa de dibujo vectorial (Inkscape) y finalizar en Blender (para crear las mallas del simulador).
La pista trapezoidal que se muestra en las dos figuras siguientes (línea central y boceto final) es un buen ejemplo de cómo crear una pista completamente nueva. cuaderno comienza con ocho puntos en una matriz y construye la pista paso a paso, agregando la línea exterior, la línea central y el color.
Al final, opté por imprimir una versión más estrecha de Trapezoid (Trapezoid Narrow, que se muestra en la siguiente figura) para que cupiera detrás de mi garaje, con dimensiones de 5.20 mx 2.85 m, incluidos los bordes verdes que rodean la pista. La imprimí en PVC con un grosor de 500 gramos por metro cuadrado. El material, comparativamente pesado, fue una buena elección. Evita pliegues y arrugas y, en general, garantiza que la pista se mantenga en su lugar incluso cuando caminas sobre ella.
Alrededor de la pista, añadí un cerramiento de malla de PVC montado sobre unos postes de aluminio de 20 x 20 centímetros. No fue un éxito total, porque la luz traspasaba la pista y tuve que añadir un revestimiento de vellón negro. La siguiente imagen muestra la pista terminada antes de añadir el vellón negro.
Experimentos y conclusiones
Re:Invent está a pocos días de su lanzamiento. Los experimentos aún están en marcha y, como tengo que abrirme paso en la carrera de comodines, no es el momento de incluir todos los detalles. Digamos que las cosas no siempre son tan sencillas como se espera.
Como adelanto de lo que está sucediendo, terminaré esta publicación con la última versión del video desde el automóvil, que muestra un AWS DeepRacer Pi dando vueltas en el garaje. ¡Vuelva después de re:Invent para ver la gran revelación!
Acerca del autor.
Lars Lorentz Ludvigsen es un entusiasta de la tecnología que conoció AWS DeepRacer a fines de 2019 y quedó cautivado al instante. Lars trabaja como director general en Accenture, donde ayuda a los clientes a desarrollar la próxima generación de productos inteligentes conectados. Además de su función en Accenture, es un desarrollador de la comunidad de AWS que se enfoca en desarrollar y mantener las soluciones de software de la comunidad de AWS DeepRacer.
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- PlatoData.Network Vertical Generativo Ai. Empodérate. Accede Aquí.
- PlatoAiStream. Inteligencia Web3. Conocimiento amplificado. Accede Aquí.
- PlatoESG. Carbón, tecnología limpia, Energía, Ambiente, Solar, Gestión de residuos. Accede Aquí.
- PlatoSalud. Inteligencia en Biotecnología y Ensayos Clínicos. Accede Aquí.
- Fuente: https://aws.amazon.com/blogs/machine-learning/aws-deepracer-how-to-master-physical-racing/