Repository navigation
Planner and sim speed-ups, trajsample overhaul, motion metrics - #144
Merged
Merged
Conversation
- Add fast raw step buffer to robosim C++ extension and wrapper - Optimize Frame generation and avoid redundant dict copies - Add C++ FastPathPlanner implementation and exact equivalence tests
…uite - Fix transverse tube reachability expansion in collision_numba (remove 1.34m over-inflation) - Implement global duration-optimal candidate selection with 0.15s hysteresis - Add symmetric intermediate target fan with compact radius scaling (0.6m to 1.0m) - Implement Sumatra-aligned fallback progress ranking towards target - Implement role-aware priority ordering (ball-carrier outranks off-ball teammates) - Expand motion planning benchmark to 29 scenarios (all passing 100%) - Add unit test test_has_priority_role_aware_ball_carrier_and_fallback
- Motion planning metrics: Added robot_overlap_ticks, teammate_overlap_ticks, near_miss_ticks, and worst_clearance_m to MatchStats and round-robin summary reporting, with a fast vectorized motion_stats analysis tool. - 25x faster robosim subprocess startup: Launch .pixi/envs/robosim/bin/python directly with PATH and LD_LIBRARY_PATH instead of invoking 'pixi run', slashing startup time from 469ms to 18.7ms. - Simulator process reuse: Enabled sim reuse across matches in tournament evaluations to avoid repeated ODE world instantiation. - Trajectory sampling collision optimizations: Returned obstacle kind directly from Numba to eliminate redundant second collision scans on static obstacles. - Clearance and allocations: Replaced multi-pass loops with single-pass scans, added slots=True to core trajectory and plan dataclasses.
CI doesn't run `pixi run build-planner`, so importing `_fastpathplanner` failed test collection there. The planner already falls back to the numba kernels; the test module now skips the same way. Restore the pybind11 URL_HASH dropped with the 2.13.6 bump, in both the rSim and FastPathPlanner CMake files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Speed-ups for the planner and simulator, a trajectory-sampling overhaul, motion and collision metrics, and a per-strategy preferred control scheme.
What's in it
Simulator and startup
vendor/rSim): a raw step buffer (step_fast,get_state_array) and a Release-O3 -march=nativebuild. pybind11 is bumped to 2.13.6, with its hash pinned.robosim_wrapperfalls back to the old calls when the extension doesn't have them, so CI'src-robosimis unaffected..pixi/envs/robosim/bin/pythondirectly instead of throughpixi run, cutting startup from about 469 ms to 19 ms. The sim is reused across matches within a tournament.FastPathPlanner
fastpathplanning/cpp, built withpixi run build-planner). It's used when present; the numba kernels are used otherwise. Exact-math mode stays bit-identical (fastpathplanner_equivalence_test.py). The C++ fast path matches numba to 1e-9 (test_fastpathplanner_cpp.py), and that module skips when the extension isn't built (it isn't built in CI).Trajectory sampling
collision_numba.Metrics and control scheme
motion_statsandMatchStats: robot and teammate overlap ticks, near-miss ticks, worst clearance, and discrete collision incidents, reported in the round-robin summary.AbstractStrategy.control_scheme).round_robin's default (fpp) is unchanged, and no strategy declares one yet.Caveats
tournament_20261014_105956) had 10 of 66 matches stall and 248 goals. The 2026-10-10 fpp run on the same 66 pairings had no stalls and 471 goals.Tests
origin/main+ this branch + Real SSL logs as replays, goal ledger, situation bench, and referee fixes #143 merged: lint passes, andpytest utama_core/tests/ --headless --level quick --ignore-glob "**/*grsim*"gives 12680 passed, 87 xfailed, 0 failed.utama_core/tests/motion_planning/gives 1612 passed, 1 skipped (the C++ module), 87 xfailed. With it built,test_fastpathplanner_cpp.pypasses 9 of 9.🤖 Generated with Claude Code