Week 62 - Dataset teleoperado + DAgger
Construcción del dataset y entrenamiento del modelo
Se construyó un nuevo dataset, combinando la estrategia de teleoperación con la técnica DAgger (Dataset Aggregation). Esta última se implementó introduciendo perturbaciones aleatorias controladas sobre el vehículo (ruido gaussiano en dirección, aceleración y freno), lo que obliga al modelo a aprender a recuperarse de trayectorias desviadas. De esta forma, el dataset incluye tanto ejemplos de conducción ideal como situaciones de corrección, aumentando la robustez del modelo.
Además, se incorporó la detección de curvatura, lo que permitió etiquetar cada imagen según si pertenece a un tramo recto o curvo de la pista.
Con estas estrategias, se generó un dataset de 85,000 imágenes segmentadas, acompañadas de etiquetas de control y curvatura. Se realizó un balanceo completo entre datos de curvas y rectas.
Posteriormente, se entrenaron distintos modelos basados en EfficientNet:
- Modelo monolítico (general)
- Modelo especializado en curvas
- Modelo especializado en rectas
Resultados en pruebas offline
Los resultados obtenidos durante la evaluación offline fueron los siguientes:
Variable | MSE | MAE |
---|---|---|
Steer | 0.2910 | 0.1995 |
Throttle | 0.4920 | 0.4778 |
Prueba de conducción (piloto fuera de behavior)
- Tiempo de inferencia: 15.17 ms
- Velocidad promedio: 45 km/h
- Tiempo en completar la vuelta: 1:15 min
- Observación: conducción estable, con mejor toma de curvas y un comportamiento más suave en general.
Prueba online
Utilizando behavior metrics, se obtuvieron resultados preliminares (pendiente profundizar debido a problemas en la condición de terminación).
Resultados de la prueba online (BehaviorMetrics)
Modelo utilizado: efficientnet_CM_dagger.onnx
Métrica | Valor |
---|---|
% Completado | 0.0169 |
Lap checkpoint | 0 |
Punto de inicio (x, y) | (167.29, -105.56) |
Punto de inicio en mapa (x, y) | (18.99, 105.56) |
Distancia completada (m) | 773.37 |
Distancia efectiva (m) | 102.5 |
Vueltas completadas | 0 |
Tiempo simulado (s) | 117 |
Tiempo real (s) | 237.36 |
Velocidad promedio (km/h) | 23.79 |
Velocidad máxima (km/h) | 41.95 |
Velocidad mínima (km/h) | 10.04 |
Colisiones | 0 |
Invasiones de carril | 0 |
Colisiones por km | 0 |
Invasiones por km | 0 |
Desviación media posición (m) | 1.54 |
Error total de posición | 2393.42 |
Desviación media posición por km | 15.05 |
Repentinos (suddenness) - velocidad | 0.381 |
Repentinos (suddenness) - comandos control | 0.257 |
Repentinos (suddenness) - throttle | 0.227 |
Repentinos (suddenness) - steer | 0.075 |
Repentinos (suddenness) - brake | 0.0 |
Repentinos por km - velocidad | 3.717 |
Repentinos por km - comandos control | 2.507 |
Repentinos por km - throttle | 2.214 |
Repentinos por km - steer | 0.733 |
Repentinos por km - brake | 0.0 |

efficientnet_CM_dagger.onnx
.Trabajo pendiente
Actualmente no funciona correctamente la lógica de verificación de llegada al punto objetivo. Aunque se revisaron los parámetros en metrics.py
y test_suit_manager_carla.py
, el valor de self.termination_code
no se actualiza como debería.
Este punto sigue pendiente para poder repetir las métricas con una medición efectiva de distancia al objetivo, lo cual permitirá tener evaluaciones más precisas en las pruebas online.