2 minute read

Tabla resumen de pruebas (con métricas MSE/MAE)

Prueba Comparativa Modelo Dataset utilizado MSE Steer MAE Steer MSE Throttle MAE Throttle
1 Monolítico vs. Mixture of Experts (MoE) PilotNet (monolítico) DAgger 0.0311 0.0847 0.1698 0.4010
1 Monolítico vs. Mixture of Experts (MoE) ResNet18 (monolítico) DAgger 0.0466 0.1237 0.1961 0.4078
1 Monolítico vs. Mixture of Experts (MoE) EfficientNetV2-S (monolítico) DAgger 0.0544 0.1630 0.1669 0.3963
1 Monolítico vs. Mixture of Experts (MoE) MoE basado en ResNet18 (curva) DAgger 0.0583 0.1523 0.1981 0.4104
1 Monolítico vs. Mixture of Experts (MoE) MoE basado en ResNet18 (recta) DAgger 0.0527 0.1282 0.1826 0.3959
2 Dataset convencional (burbuja) vs. DAgger ResNet18 monolítico (dataset burbuja) Dataset burbuja 0.0544 0.1465 0.1879 0.4017
2 Dataset convencional (burbuja) vs. DAgger EfficientNetV2-S monolítico (dataset burbuja) Dataset burbuja 0.0478 0.1124 0.1966 0.3997
2 Dataset convencional (burbuja) vs. DAgger EfficientNetV2-S monolítico (DAgger) Dataset DAgger        

Tabla resumen metricas BehaviorMetrics

Métrica pilotnet_dagger.pth resnet_dagger.pth efficientnet_dagger.pth
completed_distance [m] 426.95 127.46 127.49
average_speed [m/s] 10.91 7.83 8.07
max_speed [m/s] 18.63 18.50 21.53
min_speed [m/s] -1.15 -0.61 -0.38
collisions 0 0 0
lane_invasions 0 0 0
effective_completed_distance [m] 407.5 97.0 97.0
position_deviation_mean [m] 0.480 1.278 1.260
position_deviation_total_err [m] 1352.46 1448.11 1430.96
position_dev_mean_per_km [m/km] 1.179 13.054 12.986
suddenness_distance_speed 0.173 0.197 0.207
suddenness_distance_control_cmd 0.116 0.163 0.173
suddenness_distance_throttle 0.108 0.145 0.138
suddenness_distance_steer 0.021 0.101 0.086
suddenness_distance_brake_command 0.0 0.0 0.0
suddenness_ctrl_cmd_per_km 0.284 1.682 1.787
suddenness_throttle_per_km 0.264 1.494 1.426
suddenness_steer_per_km 0.052 0.998 0.886
suddenness_brake_cmd_per_km 0.0 0.0 0.0
suddenness_speed_per_km 0.425 2.003 2.137
completed_laps 0 0 0
experiment_total_real_time [s] 291.54 134.77 135.50

Tabla resumen metricas BehaviorMetrics (Corrección)

Métrica pilotnet_dagger.pth resnet_dagger.pth efficientnet_dagger.pth
completed_distance [m] 405.39 666.80 378.28
average_speed [m/s] 11.34 10.01 10.89
max_speed [m/s] 21.87 24.04 26.82
min_speed [m/s] -19.23 -0.27 -4.26
collisions 0 0 0
lane_invasions 0 0 0
effective_completed_distance [m] 287.0 398.0 319.5
position_deviation_mean [m] 1.591 2.894 0.809
position_deviation_total_err [m] 2622.24 9245.48 1380.47
position_dev_mean_per_km [m/km] 5.544 7.271 2.533
suddenness_distance_speed 0.256 0.217 0.235
suddenness_distance_control_cmd 0.100 0.174 0.152
suddenness_distance_throttle 0.092 0.148 0.133
suddenness_distance_steer 0.018 0.067 0.055
suddenness_distance_brake_command 0.000 0.000 0.000
suddenness_ctrl_cmd_per_km 0.347 0.437 0.476
suddenness_throttle_per_km 0.319 0.371 0.416
suddenness_steer_per_km 0.063 0.169 0.168
suddenness_brake_cmd_per_km 0.000 0.000 0.000
suddenness_speed_per_km 0.892 0.544 0.735
completed_laps 0 0 0
experiment_total_real_time [s] 124 237 124

Nota: Para esta comparación se repitió el experimento utilizando exactamente las mismas condiciones de simulación, pero se modificó la frecuencia de inferencia establecida en el archivo de configuración de Behavior Metrics.

Discrepancias de Comportamiento al Usar BehaviorMetrics sobre ROS 2

Actualmente estoy revisando BehaviorMetrics. En esta herramienta, el modelo no parece presentar el mismo comportamiento que cuando se prueba directamente en ROS 2. En BehaviorMetrics se ralentiza en ocasiones y pierde reactividad, lo cual es contrario a lo que sucede en ROS 2, donde alcanza mayores velocidades y responde mejor en las curvas.

Estoy revisando el parámetro PilotTimeCycle: 50 definido en el archivo YAML de configuración. Sin embargo, en el módulo utils/configuration, que es donde se carga este parámetro, parece que no se está utilizando posteriormente.

También estoy revisando los parámetros MaxV: 25 y MaxW: 5, correspondientes a los actuadores, pero al parecer tampoco están siendo usados en el lugar donde se cargan en el código.