%% 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