%% Referencias de código (no se renderizan en el PNG, solo para mantenimiento futuro)
%% Viene de: schemes/flowcharts/obstacles/mermaid/flujo-parte1-conduccion.mmd (última vuelta completada)
%% Interruptor: src/config/navigation/parking/parking.toml
%% attempt_after_final_lap = false <-- LO QUE EMBARCA
%% Parada en la sección de meta: core_navigator.py (_handle_finish)
%% ParkController (presente pero no invocado con el flag en false):
%% src/python/src/navigation/maneuvers/parking/
%% activación: core_navigator.py (_should_engage_parking) -- radio 0.45 m
%% STAGE: _handle_stage(); pos_reach_dist_m = 0.04 m, speed = 0.12 m/s
%% reposicionamiento: _pursue_with_reposition() / _start_reposition()
%% ENTER: _handle_enter(); wall_standoff_m = 0.05 m, marker_standoff_m = 0.01 m
%% DONE: _footprint_inside() + comparación de yaw contra zone.target_yaw
%% -
%% REESCRITO 2026-09-10. La versión anterior dibujaba el estacionamiento como el
%% final normal de la carrera. No lo es: attempt_after_final_lap = false, así que
%% tras la última vuelta el robot se DETIENE EN LA SECCIÓN DE META y nunca entra
%% al hueco. El diagrama describía código que existe pero no se ejecuta.
%% -
%% El motivo está medido, no es una tarea pendiente: la bahía es geométricamente
%% inalcanzable -- 0.194 m de chasis contra 0.20 m de hueco, es decir 3 mm por
%% lado, por debajo del error de pose. Sobre el corpus de 256, ciego, OFF vs ON:
%% -
%% en tiempo 158 vs 62
%% colisiones 4 vs 51
%% timeouts 61 vs 110
%% laps>=3 159 vs 159 (idéntico: perseguir la bahía no gana vueltas)
%% -
%% O sea: perseguir el hueco no aportaba ni una vuelta y costaba 96 rondas en
%% tiempo y 47 colisiones. Los puntos de estacionamiento (7 de 15) siguen sin
%% cobrarse; los 7 del arranque EN bahía sí se cobran, y esos se ganan en la
%% Parte 1, no aquí.
%% -
%% NOTA DE MEDICIÓN: la parada en la sección de meta embarca pero el SIMULADOR
%% NO PUEDE VERLA, así que no busques su efecto en una tabla de corpus.
flowchart TD
Start(["Se completaron
las 3 vueltas"]) --> Flag{"¿Está habilitada la
persecución de la bahía?
(attempt_after_final_lap)"}
Flag -- "NO - lo que embarca" --> FinishStop["Sigue conduciendo hasta la
sección de meta y se detiene
por completo dentro de ella"]
FinishStop --> End(["Carrera terminada"])
Flag -- "Sí - apagado, se conserva
por si la geometría cambia" --> EngageCheck
subgraph DESHABILITADO["Maniobra de estacionamiento - CÓDIGO PRESENTE, NO SE EJECUTA"]
EngageCheck{"¿Está en el corredor del
estacionamiento y ya cerca
(a 0.45 m) del punto
de espera?"}
EngageCheck -- "No" --> KeepDriving["Sigue conduciendo
con normalidad (ver Parte 1)"]
EngageCheck -- "Sí" --> Stage["Acercamiento (STAGE): avanza
en línea recta hacia el punto
de espera, justo antes del hueco"]
Stage --> StageReach{"¿Llegó a menos
de 4 cm del punto
de espera?"}
StageReach -- "No: el volante se saturó
o el objetivo quedó detrás" --> Reposition["Retrocede y
se reacomoda"]
Reposition --> Stage
StageReach -- "Sí" --> Enter["Entrada (ENTER): avanza hacia
el centro del hueco"]
Enter --> Breach{"¿Tocaría la pared
o un poste de
la señalización?"}
Breach -- "Sí" --> GiveUp["Se detiene donde está:
prioriza no chocar sobre
completar el estacionamiento"]
Breach -- "No" --> Inside{"¿Ya quedó completamente
dentro del hueco y
alineado con la pared?"}
Inside -- "No" --> Enter
Inside -- "Sí" --> Done["Estacionamiento
completado"]
end
Geo>"Por qué está apagado: el chasis mide
0.194 m y el hueco 0.20 m. Son 3 mm por
lado, menos que el error de pose. Sobre
256 escenarios, perseguirlo no ganó ni
una vuelta y costó 96 rondas en tiempo"]
KeepDriving --> Geo
GiveUp --> Geo
Done --> Geo
Geo --> End