1 minute read

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.
  • Se resolvió un problema crítico de incompatibilidad de state_dict debido a desalineación en los nombres de capas (backbone vs m), 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).
  • Se corrigió asegurando que:
    • el modelo en inferencia definiera self.backbone,
    • la arquitectura coincidiera exactamente con la usada en entrenamiento.
  • 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 → Normalize se 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 steer con activación tanh.
  • 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:

Updated: