Week 89 - Robustez del piloto, Caso Canónico, 15 Casos y Pruebas de Velocidad
En esta entrada reporto los resultados de robustez en CARLA Town02 comparando cinco políticas/datasets bajo el mismo circuito de prueba, con 6 repeticiones por condición (valores reportados como promedio de las repeticiones).
Circuito base
- Caso canónico: recorrido siguiendo la malla externa (outer loop) de Town02, manteniéndose en el carril derecho.
- Casos 1–15: se ejecuta el mismo circuito, pero cambiando las condiciones iniciales (posición y orientación) para evaluar recuperación.
- Pruebas de velocidad (30/50/80/100 km/h): mismo circuito. Se impone manualmente una velocidad inicial; cuando el vehículo alcanza la velocidad objetivo, inicia la inferencia del modelo.
- Caso aleatorio: se seleccionan tres posiciones aleatorias de inicio dentro de la malla externa, manteniendo el mismo punto final.
Datasets / políticas evaluadas
El dataset original (~95k imágenes) estaba dominado por conducción recta y aceleración constante, por lo que se aplicó una estratificación 5×4 (steer × throttle), generando 20 clases balanceadas y reduciendo el dataset a 50k muestras equilibradas, denominado Burbuja. Luego, Burbuja se combinó con DAgger y Noise Injection para entrenar un PilotNet modificado (salidas: steer y throttle).
Como entrada, se utilizó la imagen segmentada procesada: se extrajo únicamente la calzada para generar una máscara binaria, se recortó la región superior, se redimensionó a 66×200, y se normalizó tipo ImageNet. Esto permite que el modelo aprenda directamente la geometría de la vía, reduciendo distracciones visuales y complejidad perceptual.
- Noise Injection
Burbuja 50k + perturbaciones artificiales controladas
- Se inyecta ruido gaussiano en steering
- El label sigue siendo humano
- Se generan pequeños offsets laterales
- No hay intervención estructural de recovery Objetivo:
- Aprender tolerancia a perturbaciones pequeñas
- DAgger Corto (Suave)
Burbuja 50k + 16.4k muestras DAgger
- Ventanas breves de intervención
- Acciones moderadas
- Correcciones controladas Objetivo:
- Introducir recuperación sin alterar demasiado la distribución
Total aproximado: 66.4k muestras
- DAgger Suave Ampliado
Burbuja 50k + 27.6k muestras DAgger
- Mayor exposición a estados fuera del manifold
- Más recuperación
- Mayor diversidad de escenarios desviados
Total aproximado: 77.6k muestras
- DAgger Agresivo Ampliado
Burbuja 50k + 27.6k muestras DAgger con acciones más fuertes
Aquí las acciones forzadas incluyen:
- Drift lateral amplio
- Salidas parciales de carril
- Recovery de alta exigencia
Esto implica:
- Mayor offset lateral
- Mayor error angular
- Mayor demanda de corrección
Objetivo:
- Entrenar recuperación extrema
- Expandir significativamente el espacio de estados
En las tablas se usan estos nombres:
- Burbuja (Baseline): dataset de 50k muestras de conducción humana natural.
- Noise Injection: Burbuja + perturbaciones artificiales controladas.
- DAgger Corto (suave): Burbuja 50k + 16.4k muestras DAgger.
- DAgger Suave Ampliado: Burbuja 50k + 27.6k muestras DAgger.
- DAgger Agresivo Ampliado: Burbuja 50k + 27.6k muestras DAgger, con acciones más fuertes, lo que exige más esfuerzo de recuperación.
Métricas y unidades
- Route completed (%):
percentage_completed_ideal(más alto es mejor). - Average speed (km/h):
avg_speed_dist_over_time_kmh(más alto es mejor). - Dev mean (m):
position_deviation_mean(más bajo es mejor). - Lane invasions (eventos): número de invasiones de carril (más bajo es mejor).
- Collisions (eventos): colisiones (más bajo es mejor).
- Suddenness throttle (1/s):
suddenness_throttle_per_s(más bajo es mejor). - Suddenness steer (1/s):
suddenness_steer_per_s(más bajo es mejor).
Nota sobre suddenness (1/s): throttle/steer son comandos normalizados (adimensionales). Al expresarse “por segundo”, la unidad queda como 1/s.
Caso canónico
Descripción: recorrido estándar en la malla externa de Town02, pensado como “trayecto nominal” para comparar desempeño sin perturbaciones iniciales.
| Métrica | Burbuja | Noise | DAgger Suave Corto | DAgger Suave Ampliado | DAgger Agresivo Ampliado | Mejor |
|---|---|---|---|---|---|---|
| Route completed (%) | 98.005 | 99.24 | 99.022 | 99.173 | 99.242 | DAgger Agresivo Ampliado |
| Average speed (km/h) | 60.372 | 61.77 | 59.45 | 59.578 | 58.838 | Noise |
| Dev mean (m) | 0.428 | 0.496 | 0.761 | 0.473 | 0.463 | Burbuja |
| Lane invasions (eventos) | 1.833 | 2 | 4.833 | 2 | 1.833 | Empate |
| Collisions (eventos) | 0 | 0 | 0 | 0 | 0 | Empate |
| Suddenness throttle (1/s) | 0.657 | 0.736 | 0.623 | 0.757 | 0.73 | DAgger Suave Corto |
| Suddenness steer (1/s) | 0.207 | 0.22 | 0.216 | 0.286 | 0.204 | DAgger Agresivo Ampliado |
Casos 1–15 (robustez por condición inicial)
Descripción: se definieron 15 posiciones iniciales para evaluar la robustez del modelo en Town02.
Las configuraciones combinan:
5 posiciones laterales dentro del carril (≈ 4 m de ancho)
- Duro izquierda: −1.8 m
- Suave izquierda: −0.9 m
- Centrado: 0 m
- Suave derecha: +0.9 m
- Duro derecha: +1.8 m
3 orientaciones respecto al carril
- −15°: desviado a la izquierda
- 0°: alineado al carril
- +15°: desviado a la derecha
En total:
\[5\;\text{posiciones laterales} \times 3\;\text{orientaciones} = 15\;\text{configuraciones}\]por cada caso se realizan 6 repeticiones para un total de 90 experimentos realizados.
Estas posiciones permiten evaluar:
- Corrección lateral (volver al centro del carril),
- Corrección angular (alinear yaw),
- y errores combinados (offset + yaw).
A continuación se presenta tabla resumen con cada metrica promediada:
Tabla resumen (Caso 1-15)
| Métrica | Burbuja | Noise | DAgger Suave Corto | DAgger Suave Ampliado | DAgger Agresivo Ampliado | Mejor |
|---|---|---|---|---|---|---|
| Route completed (%) | 97.997 | 99.191 | 99.239 | 99.957 | 99.222 | DAgger Suave Ampliado |
| Average speed (km/h) | 58.917 | 60.734 | 58.652 | 59.608 | 57.809 | Noise |
| Dev mean (m) | 0.629 | 0.657 | 0.826 | 0.623 | 0.635 | DAgger Suave Ampliado |
| Lane invasions (eventos) | 1.833 | 2.333 | 4.333 | 2.5 | 2 | Burbuja |
| Collisions (eventos) | 0 | 0 | 0 | 0 | 0 | Empate |
| Suddenness throttle (1/s) | 0.659 | 0.703 | 0.626 | 0.737 | 0.711 | DAgger Suave Corto |
| Suddenness steer (1/s) | 0.216 | 0.222 | 0.223 | 0.272 | 0.201 | DAgger Agresivo Ampliado |
Pruebas de velocidad (mismo circuito, velocidad inicial manual)
Descripción: se aplica manualmente una velocidad inicial 30, 50, 80 y 100 km/h.
Cuando el vehículo alcanza la velocidad objetivo, el modelo inicia la inferencia y el control.
Para cada caso de velocidad inicial se hacen 6 repeticiones.
30 km/h
| Métrica | Burbuja | Noise | DAgger Suave Corto | DAgger Suave Ampliado | DAgger Agresivo Ampliado | Mejor |
|---|---|---|---|---|---|---|
| Route completed (%) | 97.993 | 99.192 | 99.044 | 99.163 | 99.02 | Noise |
| Average speed (km/h) | 61.947 | 63.187 | 60.839 | 60.954 | 60.445 | Noise |
| Dev mean (m) | 0.426 | 0.5 | 0.766 | 0.486 | 0.466 | Burbuja |
| Lane invasions (eventos) | 2 | 2.333 | 5 | 2 | 2.333 | Empate |
| Collisions (eventos) | 0 | 0 | 0 | 0 | 0 | Empate |
| Suddenness throttle (1/s) | 0.664 | 0.692 | 0.624 | 0.735 | 0.751 | DAgger Suave Corto |
| Suddenness steer (1/s) | 0.208 | 0.221 | 0.225 | 0.273 | 0.212 | Burbuja |
50 km/h
| Métrica | Burbuja | Noise | DAgger Suave Corto | DAgger Suave Ampliado | DAgger Agresivo Ampliado | Mejor |
|---|---|---|---|---|---|---|
| Route completed (%) | 97.998 | 99.134 | 99.218 | 99.217 | 99.258 | DAgger Agresivo Ampliado |
| Average speed (km/h) | 63.335 | 63.711 | 61.937 | 61.973 | 61.996 | Noise |
| Dev mean (m) | 0.431 | 0.491 | 0.762 | 0.488 | 0.461 | Burbuja |
| Lane invasions (eventos) | 2.5 | 2.333 | 5 | 2.5 | 1.833 | DAgger Agresivo Ampliado |
| Collisions (eventos) | 0 | 0.333 | 0 | 0 | 0 | Empate |
| Suddenness throttle (1/s) | 0.674 | 0.709 | 0.62 | 0.782 | 0.715 | DAgger Suave Corto |
| Suddenness steer (1/s) | 0.213 | 0.221 | 0.218 | 0.296 | 0.204 | DAgger Agresivo Ampliado |
80 km/h
| Métrica | Burbuja | Noise | DAgger Suave Corto | DAgger Suave Ampliado | DAgger Agresivo Ampliado | Mejor |
|---|---|---|---|---|---|---|
| Route completed (%) | 97.984 | 99.211 | 99.225 | 99.222 | 99.246 | DAgger Agresivo Ampliado |
| Average speed (km/h) | 65.631 | 67.014 | 64.787 | 64.943 | 64.764 | Noise |
| Dev mean (m) | 0.418 | 0.493 | 0.69 | 0.431 | 0.447 | Burbuja |
| Lane invasions (eventos) | 1.667 | 1.333 | 3.333 | 1.833 | 1.667 | Noise |
| Collisions (eventos) | 0 | 0 | 0 | 0 | 0 | Empate |
| Suddenness throttle (1/s) | 0.699 | 0.729 | 0.612 | 0.75 | 0.744 | DAgger Suave Corto |
| Suddenness steer (1/s) | 0.211 | 0.242 | 0.225 | 0.279 | 0.212 | Burbuja |
100 km/h
| Métrica | Burbuja | Noise | DAgger Suave Corto | DAgger Suave Ampliado | DAgger Agresivo Ampliado | Mejor |
|---|---|---|---|---|---|---|
| Route completed (%) | 98.007 | 61.331 | 99.221 | 99.012 | 87.324 | DAgger Suave Corto |
| Average speed (km/h) | 65.282 | 33.851 | 65.379 | 66.375 | 55.392 | DAgger Suave Ampliado |
| Dev mean (m) | 0.462 | 2.659 | 0.758 | 0.455 | 0.565 | DAgger Suave Ampliado |
| Lane invasions (eventos) | 2.667 | 1.833 | 5.167 | 3 | 2.833 | Noise |
| Collisions (eventos) | 0.333 | 1 | 0.333 | 0 | 0.5 | DAgger Suave Ampliado |
| Suddenness throttle (1/s) | 0.676 | 0.541 | 0.667 | 0.783 | 0.71 | Noise |
| Suddenness steer (1/s) | 0.219 | 0.234 | 0.26 | 0.284 | 0.204 | DAgger Agresivo Ampliado |
Casos aleatorios 3 casos
| Métrica | Burbuja | Noise | DAgger Suave Corto | DAgger Suave Ampliado | DAgger Agresivo Ampliado | Mejor |
|---|---|---|---|---|---|---|
| Route completed (%) | 92.911 | 95.992 | 94.036 | 94.593 | 93.851 | Noise |
| Average speed (km/h) | 45.174 | 46.921 | 45.514 | 44.257 | 45.292 | Noise |
| Dev mean (m) | 0.325 | 0.380 | 0.445 | 0.371 | 0.314 | DAgger Agresivo Ampliado |
| Lane invasions (eventos) | 1.167 | 1.333 | 0.889 | 1.278 | 1.222 | DAgger Suave Corto |
| Collisions (eventos) | 0.000 | 0.000 | 0.000 | 0.222 | 0.000 | Empate (4) |
| Suddenness throttle (1/s) | 0.588 | 0.678 | 0.626 | 0.621 | 0.579 | DAgger Agresivo Ampliado |
| Suddenness steer (1/s) | 0.219 | 0.204 | 0.206 | 0.254 | 0.172 | DAgger Agresivo Ampliado |
Interpretación de Resultados: Robustez, Control y Recuperación
Tras ejecutar el conjunto completo de experimentos (caso canónico, 15 condiciones iniciales, pruebas de velocidad y escenarios aleatorios), es posible extraer conclusiones claras sobre el comportamiento de cada política entrenada con PilotNet.
El objetivo del análisis no es únicamente identificar quién completa más porcentaje de ruta, sino determinar qué modelo ofrece:
- Mayor robustez estructural
- Mejor control lateral
- Mejor capacidad de recuperación
- Menor brusquedad en los comandos
- Estabilidad ante velocidades altas
1. Robustez Global
En condiciones nominales (caso canónico), todas las políticas alcanzan valores cercanos al 99% de completado. Sin embargo, la verdadera diferencia aparece cuando se introducen perturbaciones iniciales (Casos 1–15) o condiciones dinámicas exigentes (80 y 100 km/h).
El modelo DAgger Suave Ampliado presenta el comportamiento más consistente:
- Mejor promedio en Casos 1–15 (99.957%).
- Mantiene estabilidad en 80 km/h.
- No colapsa en 100 km/h (a diferencia de Noise Injection).
- Buen desempeño en casos aleatorios.
Esto indica que la expansión moderada del espacio de estados mediante DAgger permite al modelo aprender recuperación sin comprometer estabilidad global.
2. Control Lateral
El control lateral se evalúa mediante:
position_deviation_meanlane invasions
En escenarios exigentes, el modelo DAgger Suave Ampliado presenta menor desviación promedio que la mayoría de variantes DAgger y mantiene invasiones de carril controladas.
El modelo Burbuja muestra buen desempeño en condiciones nominales, pero su capacidad de recuperación es limitada al no haber sido expuesto a estados fuera del manifold durante entrenamiento.
Noise Injection mejora la tolerancia a pequeñas perturbaciones, pero no enseña recuperación estructural.
En conjunto, el mejor equilibrio entre centrado y capacidad correctiva lo ofrece DAgger Suave Ampliado.
3. Recuperación ante Estados Fuera del Manifold
Los Casos 1–15 (offset lateral + error angular) son la prueba más directa de recuperación.
Se observa el siguiente patrón:
- Burbuja: buen seguimiento nominal, recuperación limitada.
- Noise Injection: tolerancia local, pero no recuperación profunda.
- DAgger Corto: introduce recuperación, pero aún sensible a desviaciones grandes.
- DAgger Suave Ampliado: mayor estabilidad ante errores combinados.
- DAgger Agresivo: fuerte capacidad correctiva, pero mayor reactividad.
El mejor balance entre recuperación y estabilidad lo presenta DAgger Suave Ampliado.
4. Estabilidad Dinámica a Alta Velocidad
La prueba a 100 km/h es especialmente reveladora:
- Noise Injection colapsa significativamente.
- DAgger Agresivo pierde estabilidad parcial.
- DAgger Suave Corto y Ampliado mantienen altos niveles de completado.
- DAgger Suave Ampliado combina alto completion, baja desviación y cero colisiones.
Esto confirma que la robustez no solo depende de tolerar perturbaciones estáticas, sino de mantener estabilidad dinámica bajo mayores exigencias.
5. Suavidad de Comandos (Suddenness)
En términos de suavidad:
- DAgger Suave Corto produce los comandos más suaves en throttle.
- DAgger Agresivo presenta menor brusquedad en steer.
- DAgger Suave Ampliado tiende a ser más reactivo, consistente con su capacidad de recuperación ampliada.
Existe un trade-off claro:
- Mayor recuperación → mayor reactividad.
- Mayor suavidad → menor exposición a estados extremos.
Conclusión General
Considerando todos los experimentos de forma integrada, el modelo que ofrece el mejor compromiso entre:
- Robustez global\
- Control lateral\
- Recuperación ante perturbaciones\
- Estabilidad a alta velocidad\
- Generalización en escenarios aleatorios
es:
DAgger Suave Ampliado
No es el modelo más suave. No es el mejor en condiciones completamente nominales. Pero es el más consistente bajo estrés estructural.
Los resultados confirman un comportamiento esperado desde la teoría de Imitation Learning:
- Noise Injection mejora tolerancia local.
- DAgger introduce recuperación real.
- Una expansión moderada del espacio de estados mejora robustez.
- Una expansión excesiva puede incrementar reactividad sin mejorar estabilidad global.
En este conjunto de experimentos, el punto óptimo se encuentra en una expansión intermedia del manifold mediante DAgger.