Skip to content

Patch v2.2.5 - CRITICAL ABORT Fix + Race Config

Choose a tag to compare

@Unknownuserfrommars Unknownuserfrommars released this 09 Jul 16:17

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's ABORT case set control_state = 1 - the gamepad/manual branch of game.xml. The only ways back to autonomous play are the startup RunOnce or 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)

  • GlanceAtGoal early-exit (goal outside head range) now zeroes velocity so the held glance decision cannot coast on a stale velocity command.
  • Kick::onRunning obstacle-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 .engine model files.
  • Release asset v2.2.5.zip contains the full patch folder, including model engines.
  • The v2.2.4 release 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.sh on the robot.
  • Shell scripts verified LF line endings.
  • Reminder for match day: verify game_control_ip, game.team_id, and per-robot game.player_id / player_role / player_start_pos before start.sh; calibrate via ./scripts/start_calibration.sh.