Skip to content

Releases: Unknownuserfrommars/booster-patch

Patch v2.2.9 - Fix v2.2.8 Field Regressions

Choose a tag to compare

@Unknownuserfrommars Unknownuserfrommars released this 14 Jul 05:20

v2.2.9 - Fix v2.2.8 Field Regressions

Three bugs seen running v2.2.8 on the robot, all traced to the aggressive speed push and the GlanceAtGoal node. Config/XML only - no C++ change, no recompile. Use this over v2.2.8 for matches.

Bug: robot stops midway / stops chasing completely

The v2.2.8 Chase speed of 1.8 m/s outran the head's ball tracking - the ball left the frame, ball_location_known went false after 3 s, Chase hard-stopped, and the decision flipped to find (which scans with the head while the body stands still - looked like it stopped chasing). Obstacle-avoidance veers and stop-to-turn caused the "stops midway".

  • Chase vx_limit 1.8 -> 1.2 (still faster than the original 0.9, but the head keeps the ball in view), vtheta_limit 2.0 -> 1.5.
  • obstacle_avoidance.chase_ao_safe_dist 1.5 -> 1.0 (avoidance only fires when genuinely close, cutting false stalls from depth misdetections).

Bug: not shooting in the correct direction

v2.2.8 near_ball_speed_limit 1.0 meant the robot reached the ball still moving fast and kicked before settling, scattering the aim.

  • near_ball_speed_limit 1.0 -> 0.6 (settle before the kick). The kick-direction geometry was verified correct and is unchanged.

Bug: GlanceAtGoal is bad

The node froze the robot (setVelocity 0,0,0) for 0.6-0.9 s mid-attack and swung the head off the ball - in a live match that just loses the ball or invites a steal, and the goalposts often weren't actually reacquired.

  • strategy.glance_at_goal.enable true -> false. Aim now relies on normal localization + goalpost detection during ball tracking. (Node left in place, dormant.)

Retained from v2.2.8

  • soft_kickoff: true (gentle short kick-off) - that one worked as intended.

Loading

Config/XML only: ./scripts/build_brain.sh (--symlink-install, fast, no C++ recompile) then ./scripts/start.sh.

Packaging

  • Source folder v2.2.9/ excludes .engine files; release asset v2.2.9.zip includes them.

Patch v2.2.8 - Chase Max Speed + Soft Kick-off

Choose a tag to compare

@Unknownuserfrommars Unknownuserfrommars released this 14 Jul 04:01

v2.2.8 - Chase at Max Speed + Soft Kick-off

Config/XML-only release on top of v2.2.7. No C++ changes, no recompile.

Chase speed / mid-chase stalling

  • Chase node now runs at the robot's true max forward speed. subtree_striker_play.xml Chase vx_limit 0.9 -> 1.8 (= robot.vx_limit, the hard ceiling enforced in setVelocity; chase had been capped at half the robot's legs). vtheta_limit 1.0 -> 2.0 so it turns faster and spends less time in Chase's vx *= sigmoid(|targetDir|,1,3) "stop-to-turn" low-speed phase - a major cause of the visible mid-chase halting.
  • strategy.near_ball_speed_limit 0.6 -> 1.0: less crawling within 2 m of the ball. (setVelocity has a 0.3 m/s floor; dial back toward 0.6-0.8 if the faster approach starts bumping the ball before the kick sets up.)
  • Two remaining stall causes are left as opt-in toggles (documented in CHANGELOG): obstacle_avoidance.avoid_during_chase (drops to a fixed 0.5 m/s veer near any obstacle/misdetection - likely the #1 stall on a crowded field) and the ball_location_known dead-stop after >3 s without sight of the ball.

Soft kick-off

  • strategy.soft_kickoff false -> true: during the kickoff window (isKickingOff / isFreekickKickingOff) the Kick node walks through the ball at soft_kickoff_speed (0.3 m/s) instead of 0.9-1.2, giving a gentle short kick-off (~1/3 the momentum) for controlled possession instead of a long blast. Applies to both game and freekick kickoffs. 0.3 is effectively the softest possible (0.3 m/s floor); for an even shorter kick-off, shorten kick contact time (min_msec_kick), not the speed.

Stability note

1.8 m/s + 2.0 rad/s turns is aggressive for a K1 biped. If it falls during chase, lower Chase vx_limit toward ~1.4 (still a big jump from 0.9).

Loading the changes

All changes are non-compiled (config + behavior-tree XML). On the robot run ./scripts/build_brain.sh (--symlink-install, fast, no C++ recompile) then ./scripts/start.sh.

Packaging

  • Repository source folder v2.2.8/ excludes TensorRT .engine model files.
  • Release asset v2.2.8.zip contains the full patch folder, including model engines.

Patch v2.2.7 - Rerun Post-Match Logging

Choose a tag to compare

@Unknownuserfrommars Unknownuserfrommars released this 11 Jul 07:02

v2.2.7 - Rerun Post-Match Logging On By Default

Config-only release on top of v2.2.6 (which is frozen at its released state). Implements the team's rerun.docx usage guide, adapted to tournament conditions where matches run unobserved (ethernet unplugged, no live monitoring allowed).

What changed

  • rerunLog.enable_file: true - every match now writes .rrd recordings to /home/booster/Workspace/rrlog, split into 5-minute files. This is the post-match flight recorder: camera stream with detections, field-map replay (green circle = self), every tree/Decide decision with its reasons, team lead/cost election, comms latency, debug/RLVisionKick and debug/teamSignal channels.
  • rerunLog.img_interval: 1 -> 10 (~3 fps image logging instead of every frame) - protects match-day CPU on the Orin and keeps file sizes sane.
  • enable_tcp stays false for matches; the config now documents the live-view workflow for pre-match testing: set enable_tcp: true + server_ip to your PC's wired IP, open the Rerun Viewer on the PC first, then ./scripts/start.sh.

Usage

  • After a match: scp booster@<robot>:~/Workspace/rrlog/*.rrd . and open in the Rerun Viewer (top-left menu -> Open). File names are the recording start timestamp.
  • Viewer/SDK version must match: check the robot's rerun_sdk version, then pip install rerun-sdk==<version> on your PC (the rerun command is the viewer) or download the matching viewer binary from Rerun's GitHub releases.
  • Housekeeping: clear ~/Workspace/rrlog before each match day so disk does not fill.
  • Calibration check trick (from rerun.docx): place the ball at a measured spot; the viewer shows ball X/Y/C in robot frame. If off, adjust vision.yaml pitch_compensation (shifts X) / yaw_compensation (shifts Y) until they match reality.

Packaging

  • Repository source folder v2.2.7/ excludes TensorRT .engine model files.
  • Release asset v2.2.7.zip contains the full patch folder, including model engines.
  • Config-only change vs v2.2.6 - no rebuild needed on robots that already built v2.2.6; just update src/brain/config/config.yaml (it is read at launch).

Patch v2.2.6 - Tournament Anti-Interference Compliance

Choose a tag to compare

@Unknownuserfrommars Unknownuserfrommars released this 10 Jul 15:03

v2.2.6 - Tournament Anti-Interference Rules Compliance

Implements the organizer's rules update (upd.docx, 避免外部连接干扰比赛-解决方案). Referees pull system logs during matches; non-compliant external connections are penalized. Functionally identical to v2.2.5 otherwise.

What changed

Automated by this patch

  • Bundled the official scripts/kill_booster_server.sh (verbatim from the organizer's attachment - do not modify): stops the boosterserver / server.motion service that provides phone-App and Bluetooth connectivity. Handles firmware 1.7 (bdb service), 1.6 (bdb container), and pre-1.6 (BoosterServer process) automatically.
  • scripts/start.sh runs it in the background at the exact position the official doc specifies (after ./scripts/stop.sh, before jetson_clocks):
    sudo -v && sudo -b bash ./scripts/kill_booster_server.sh >/dev/null 2>&1
    The service auto-starts on every boot, so each match start re-disables it. After it runs, the rear breathing light turns red - this is the expected Bluetooth-off indicator, not a fault. Daily (non-match) App usage is unaffected: the service returns after a reboot.

Manual steps per robot (cannot be automated - do before the match)

  1. Block booster-studio connections: sudo passwd booster (studio logins require the user password).
  2. Report each robot's wireless IP to the organizers: run ifconfig and read the wlP1p1s0 inet address. Only the registered eight robot IPs are permitted on the field network - anything else is removed and blacklisted.
  3. Do not connect to the field network outside of matches.

Packaging

  • Repository source folder v2.2.6/ excludes TensorRT .engine model files.
  • Release asset v2.2.6.zip contains the full patch folder, including model engines.

Validation

  • kill_booster_server.sh shipped byte-identical to the official attachment; LF endings verified on it and the modified start.sh.
  • No brain/vision code changes vs v2.2.5 - no rebuild required if v2.2.5 is already built on the robot; just update scripts/.

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.

Patch v2.2.4 - Deployment + Manual Calibration Fixes

Choose a tag to compare

@Unknownuserfrommars Unknownuserfrommars released this 09 Jul 09:51

v2.2.4 - Deployment + Manual Calibration Fixes

Race-prep release on top of v2.2.3: merges the robot-side deployment fixes and makes the manual hand-eye calibration (ros2 run vision calibration_node handeye ...) work reliably on the patched tree.

What changed

Deployment (merged from the "fixed-for-robot" package)

  • scripts/assist.sh + robocup_game_assist.service: tree:=assisttree:=chase. assist.xml never existed in behavior_trees/, so the assist autostart crashed the brain at init.
  • robocup_game_assist.service: Restart=never is not a valid systemd value → Restart=no; added WorkingDirectory; fixed missing trailing newline.
  • distribution/install.sh / uninstall.sh: install root is now /home/booster/Workspace/robocup_demo (override with ROBOCUP_WORKSPACE); an existing install is backed up (.backup-<timestamp>) instead of rm -rf'd; set -e, quoted paths, and tolerant stop/disable ordering on uninstall.

Manual hand-eye calibration

  • src/vision/CMakeLists.txt: install(DIRECTORY model ... OPTIONAL). Source checkouts from this repo have no model/ dir (engines are stripped; git drops empty dirs), which failed the vision install step and produced Package 'vision' not found after a build. Vision now installs regardless; copy the engines from this release zip into src/vision/model/ for detection to work.
  • calibration_node.cpp: intrinsics topic rgb/camera_infodepth/camera_info, matching the robot-verified K1_5v5_Demo_v1.6_fixed reference (rgb/camera_info is not published on some firmware; intrinsics still bootstrap from vision.yaml either way).
  • scripts/start_calibration.sh: now verifies the workspace is built and the vision package resolves after sourcing, with actionable error messages. Reminder: the vision package only builds ON the robot (CUDA/TensorRT required) - Package 'vision' not found on a PC is expected.

How to calibrate (on the robot)

./scripts/stop.sh
./scripts/build.sh
./scripts/start_calibration.sh   # runs calibration_node handeye + copies result to /opt/booster/vision.yaml

The calibration UI needs an X-capable terminal (MobaXterm / ssh -X).

Packaging

  • Repository source folder v2.2.4/ excludes TensorRT .engine model files.
  • Release asset v2.2.4.zip contains the full patch folder, including model engines.

Validation

  • Deployment-script changes were hash-diffed against the working robot package; the vision package with the same calibration_node lineage built and installed calibration_node on the robot (verified from the reference workspace's build/install tree).
  • start_calibration.sh verified LF line endings.
  • Full ROS/colcon build was not run on this PC because ROS/colcon is not installed locally - build with ./scripts/build.sh on the robot.

Patch v2.2.3 - Kick Pipeline Fixes + RL Kick Hand-off + GlanceAtGoal

Choose a tag to compare

@Unknownuserfrommars Unknownuserfrommars released this 06 Jul 15:21

v2.2.3 - Kick Pipeline Fixes + RL Kick Hand-off + GlanceAtGoal

Fixes the two biggest on-field problems observed with v2.2.2: the robot hesitating ~15 seconds before kicking, and kicks going visibly off target even while the camera tracked the ball.

What changed

Kick hesitation (P0)

  • Fixed the inverted goalpost-margin fallback in Brain::isAngleGood() — the strict 0.5m margin applied whenever the goal window was smaller than 120° (i.e. almost always), leaving a ±6-8° shot-acceptance window at range. The big margin now only applies close to the goal.
  • Relaxed reachedKickDir (static threshold 0.1 → 0.2 rad) while tightening the sign-flip release (π/6 → 0.25 rad).
  • Added a 2.5s kick-decision commit latch in StrikerDecide so the robot's own motion can no longer flap the angle conditions and halt the stateful Kick node mid-execution.
  • Fixed the "stabilize" phase of Kick: applyMinX amplified a -0.05 m/s hold command into a 0.3 m/s backward walk that pushed the ball out of kick range. Now stands still.
  • Retunes: near_ball_speed_limit 0.4 → 0.6, Adjust tangential_speed_near 0.15 → 0.3, kick gate tolerates ≤400ms ball-detection dropout at contact range.

Kick direction (P0)

  • Kick now crab-walks through the ball along the planned kickDir (aiming 0.3m beyond the ball, clamped ±0.35 rad of the ball bearing) instead of walking at the raw ball bearing.
  • GoalieDecide writes its clear direction into data->kickDir so goalie kicks aim correctly.

RL VisualKick band split — enable_auto_visual_kick re-enabled

  • The RL branch now only triggers in a 1.2-4.0m band (code-enforced floor of kick_range * 1.2), so it can never shadow the deterministic Kick window again. RL owns the approach; the scripted kick owns the finish.
  • Stall hand-off: if the ball sits within 0.85m essentially unmoved for 2.5s ("track-but-never-kick" firmware behavior), RLVisionKick exits and the scripted kick takes over.
  • Implemented the previously stubbed isMinIntervalSatisfied() as a real 4s re-entry cooldown — no more exit/re-enter thrash.

New: GlanceAtGoal

  • Before a kick/safe_shoot, if no opponent-half goalpost was seen and no successful re-localization happened within 4s, the robot pauses ~0.6s and looks at the goal to acquire goalposts / re-localize, then shoots. Config: strategy.glance_at_goal.*.

Other fixes

  • Removed the empty-decision goalie freeze branch (ball 0.5-2.0m ahead caused no-op ticks).
  • Possession detection now measures opponent distance from vision-confirmed Opponent robots instead of raw depth-grid obstacles (teammates/referees no longer hijack the kick into steal/defend).
  • Steal-vs-defend risk roll cached 1s instead of re-rolled every 10ms tick; lead election got a sticky margin; onHalted seconds-vs-ms timer bugs fixed; duplicated leg-selection block removed.

Packaging

  • Repository source folder v2.2.3/ excludes TensorRT .engine model files.
  • Release asset v2.2.3.zip contains the full patch folder, including model engines.

Validation

  • All changes cross-checked for symbol/registration/config consistency (new BT node registered, params declared, XML wired).
  • Full ROS/colcon build was not run on this PC because ROS/colcon is not installed locally — build with ./scripts/build_brain.sh on the robot before deploying.
  • Field-test tip: watch the debug/RLVisionKick rerun channel — exit reasons show whether the RL policy actually kicks in the band (ball_too_far exits) or relies on the stall hand-off (stall_handoff exits).

Patch v2.2.2 - GameController Safety + Build Fixes

Choose a tag to compare

@Unknownuserfrommars Unknownuserfrommars released this 27 Jun 12:57

v2.2.2 - GameController Safety + Build Fixes

What changed

  • Added hard zero-velocity override for GameController SET, END, penalty, free-kick STOP, and free-kick SET states.
  • Added immediate stop when transitioning into SET.
  • Made malformed GameController values fail closed instead of leaving stale PLAY walking behavior active.
  • Fixed the NONE macro collision from RoboCupGameControlData.h by renaming new symbols to INACTIVE / NO_COMMAND.
  • Included scripts/auto_calib.sh in the packaged patch.

Packaging

  • Source tree excludes model engine binaries.
  • Release asset v2.2.2.zip contains the full patch folder, including model engines.

Validation

  • Local macro-collision syntax probe passed with RoboCup header included before patched headers.
  • scripts/auto_calib.sh exists and uses LF line endings.
  • Full ROS/colcon build was not run on this PC because ROS/colcon is not installed locally.

Patch v2.2.1 - 3v3 Two-on-One Wall-Pass Tactic

Choose a tag to compare

@Unknownuserfrommars Unknownuserfrommars released this 27 Jun 01:02

v2.2.1

Patch update for the v2.2 team-signal communication system, focused on the current 3v3 match setup.

Highlights

  • Adds a conservative 3v3 two-on-one wall-pass tactic.
  • Adds targeted wall-pass CIDs:
    • 2600 + PID: WALL_PASS_START
    • 2700 + PID: WALL_PASS_READY
    • 2800 + PID: WALL_PASS_RUN_READY
    • 2900: WALL_PASS_COMPLETE
  • Adds configurable strategy.two_to_one.* thresholds, timing, offsets, readiness radius, and abort behavior.
  • Sets default game.number_of_players to 3 for the current match setup.
  • Updates README/release archive entry and patch metadata.

Packaging

  • Repository source folder excludes TensorRT .engine model files.
  • Release asset v2.2.1.zip contains the full v2.2.1 code package, including runtime engine files for deployment.

Validation

  • YAML config parse OK.
  • Striker BT XML parse OK.
  • Team-signal CID registry standalone C++ syntax check OK.
  • Full ROS/colcon build was not run locally because this machine does not have colcon/ROS installed.

Patch v2.2 - Team Signal CID Communication System

Choose a tag to compare

@Unknownuserfrommars Unknownuserfrommars released this 26 Jun 13:29

Highlights

  • Adds the �2.2/ patch archive with the team signal CID communication system.
  • Introduces the CID registry, send/receive queues, team/single-target signal handling, and config-driven signal tendencies.
  • Wires practical signals into defensive behavior and keeps unimplemented complex CIDs documented as TODO/not-done for later training.
  • Includes the safe-shoot striker fallback and communication robustness fixes from the latest local work.

Local validation

  • Parsed src/brain/config/config.yaml successfully.
  • Parsed subtree_striker_play.xml successfully.
  • Compiled/static-checked the standalone eam_signals.h registry.
  • Full ROS/colcon build was not run on this PC because local ROS 2/colcon is not installed; robot-side validation is still recommended after SSH access.