Patch v2.2.5 - CRITICAL ABORT Fix + Race Config
v2.2.5 - CRITICAL ABORT Fix + Race Config + Review Hardening
Use this version for matches. v2.2.4 and earlier v2.2.x contain a critical latent bug (below).
CRITICAL: ABORT team signal permanently disabled receiving robots (latent since v2.2)
handleReceivedTeamSignal'sABORTcase setcontrol_state = 1- the gamepad/manual branch ofgame.xml. The only ways back to autonomous play are the startupRunOnceor a gamepad LT+B, neither available mid-match. One received ABORT idled a robot for the rest of the match.- The two-on-one wall-pass tactic broadcast ABORT on every abort (setup timeout 2.5s, stale partner comms 1.4s, a second opponent entering the corridor) - near-certain to fire within minutes of real 3v3 play with
two_to_one.enabled: true. First failed wall-pass = all other robots permanently frozen. - Fix, both ends: receiving ABORT now stops for one tick, releases tactic/lead, and resumes autonomous play; the wall-pass abort path sends the targeted
WALL_PASS_COMPLETE(partner releases its wall-pass state only) instead of a team-wide ABORT.
Race config profile (no-warmup, no-intervention match defaults)
All reversible in config.yaml, each documented inline:
enable_auto_visual_kick: false- whether this firmware's RL VisualKick physically kicks was never verified; its failure mode (track-forever) repeats all match with nobody able to intervene. The band-split + stall hand-off code stays in and can be re-enabled after post-race verification.two_to_one.enabled: false- never field-verified; avoids 7-second two-robot choreography variance (and makes the ABORT path structurally unreachable, on top of the code fix).enable_stable_kick: false- the 1s stabilize plus ~1.8s kick exceeds the 2.5s decision-commit window and could reintroduce mid-kick decision flapping; without it a kick completes in ~1.8s, safely inside the window.
Review hardening (full pre-race code audit)
GlanceAtGoalearly-exit (goal outside head range) now zeroes velocity so the held glance decision cannot coast on a stale velocity command.Kick::onRunningobstacle-avoid branch: min-speed amplification disabled (-0.1 was amplified to -0.3; matches the onStart fix).- Audit also verified: decision-chain priority and scoping, all three kick aim points, field-frame math of the kick-direction helper, RLVisionKick stall/cooldown/halt paths, goalie decision chain, brace/encoding integrity vs the released v2.2.2 baseline, and that the autostart tree (
chase.xml) is untouched by all v2.2.3+ changes.
Packaging
- Repository source folder
v2.2.5/excludes TensorRT.enginemodel files. - Release asset
v2.2.5.zipcontains the full patch folder, including model engines. - The
v2.2.4release asset has been restored to its original release content (post-release edits were withdrawn and moved into this version).
Validation
- Full ROS/colcon build was not run on this PC (no ROS locally) - build with
./scripts/build.shon the robot. - Shell scripts verified LF line endings.
- Reminder for match day: verify
game_control_ip,game.team_id, and per-robotgame.player_id/player_role/player_start_posbeforestart.sh; calibrate via./scripts/start_calibration.sh.