Week 34 – Inferencia en closed-loop con ResNet18 y control híbrido: throttle dinámico y ajuste manual de steer en CARLA
Trabajo realizado
- Se completó la integración end-to-end del pipeline de lane-following basado en ResNet18 entrenado con DAgger.
- Se implementó un script de inferencia en closed-loop que:
- carga el modelo entrenado (
resnet18_steer_best.pt), - aplica el mismo preprocesado visual utilizado en entrenamiento (incluyendo máscara de carretera),
- ejecuta la política en tiempo real dentro de CARLA 0.9.15.
- carga el modelo entrenado (
- Se resolvió un problema crítico de incompatibilidad de
state_dictdebido a desalineación en los nombres de capas (backbonevsm), asegurando coherencia estructural entre entrenamiento e inferencia.
Alineación estructural del modelo
- Durante la carga del modelo se detectó un error de
Missing key(s)/Unexpected key(s)causado por:- diferencias en la definición de la clase
ResNet18Steer, - uso inconsistente del atributo que encapsula la red (
backbone).
- diferencias en la definición de la clase
- Se corrigió asegurando que:
- el modelo en inferencia definiera
self.backbone, - la arquitectura coincidiera exactamente con la usada en entrenamiento.
- el modelo en inferencia definiera
- Esto permitió restaurar correctamente los pesos entrenados y eliminar errores de carga.
Preprocesado visual consistente
- Se mantuvo el uso de:
- máscara trapezoidal fija orientada a carretera,
- eliminación de cielo y regiones irrelevantes,
- resize a 224×224 con normalización ImageNet.
- Se confirmó que el mismo flujo de:
mask → RGB → Resize → Normalizese ejecuta tanto en entrenamiento como en inferencia.
- Esta consistencia eliminó problemas de train–inference mismatch previamente observados.
Control en tiempo real (closed-loop)
Se diseñó un esquema híbrido de control:
1. Predicción principal
- El modelo predice únicamente
steercon activacióntanh. - Se aplica suavizado exponencial (EMA) para reducir vibración:
steer_smoothed = EMA(steer_pred)
2. Ajuste manual (steer trim)
- Se añadió un mecanismo de ajuste fino en runtime:
- Flecha izquierda/derecha → desplazamiento incremental del steer.
- Permite recentrar el vehículo sin reiniciar el sistema.
- El comando final aplicado es: