BinnodeOpen Workbench

Binnode 2D MAPF Guide

Create repeatable multi-agent grid problems, compare planning strategies, replay movement, and inspect validation. Everything runs in your browser. This is an experimental planning workbench, not a physical robot safety controller.

Random Test

Set Grid, Agents, Obstacle, Seed, Generation Preset and Goal Rule, then use Generate Scenario. Editing a field changes the draft, not the displayed applied map. Generate becomes available only when a new scenario is needed. Open reads Binnode Scenario Snapshot JSON; Save downloads the applied problem, not ungenerated inputs.

Cross Traffic pairs opposite side regions. Random Pairs randomizes edge-region pairings. Bottleneck encourages a central passage, but outer bypass routes may remain. Obstacle is a generator input, not a guaranteed final percentage. Endpoint-Aware prefers less obstructive goals; it does not guarantee that goals never block traffic.

Map Builder

Map Builder is independent of Random Test. Start with a blank map, use New with the Map Settings dimensions, open a Builder JSON, or explicitly Copy From Random Test. Draw walls by dragging. Erase removes walls. Add Agent starts a pair of clicks: Start, then Goal. Click a numbered marker to select it; drag it or tap a destination cell to move it. Overlapping markers require an explicit choice. Move pans and More contains Rectangle. One drag is one undo step.

Test Map applies the draft and compares solvers. Edit Map returns to editing. Cancel Edit returns to the last applied Builder document. Wall painting never silently moves an agent. Switching modes pauses playback and retains both workspaces in the current tab.

After testing, Pin Baseline stores the full result for Before / After comparison. Terrain-only changes under matching tasks and solver conditions permit cost deltas. Changed tasks or execution conditions are reference comparisons; missing costs stay unavailable. Baselines are this-tab-only, not part of Recovery or Save JSON. Export Comparison is a report, not a Builder project import.

Solvers & Rank By

Priority First is a Binnode custom priority heuristic. Prioritized ST A* plans ordered reservations. CBS adds constraints to resolve conflicts and searches Sum of Costs. It uses obstacle-aware lower bounds and conflict bypasses, but can still stop at its limits. The default CBS budget is 1.4 seconds, 1,600 high-level nodes and up to 12 agents. Reason and Validation describe the actual termination condition. Timeout is not proof that a problem is unsolvable.

Rank By only evaluates existing results. It never changes paths or restarts a solver. Makespan orders by makespan, then waits, then Sum of Costs. Wait orders by waits, then makespan, then Sum of Costs. Balanced mixes weighted makespan and waits. Runtime never breaks ties. Only validated complete results can receive Best; Best · Tied means equal ranking, not identical algorithms or certified global optimality.

Older files may contain Completion First, which ties all valid complete candidates. It appears as a saved setting until you explicitly choose a new ranking. It is excluded from the everyday choices because it does not distinguish complete results.

Metrics & Model

The model is a 4-way grid with wait actions and unit tick costs. Final goal occupancy remains part of collision checks even when trailing goal records no longer add cost. There is no physical speed, acceleration, vehicle footprint, or jobs-per-second model.

MetricMeaning
Travel / Avg TravelAdjacent-cell moves, excluding waits and final padding.
Wait TicksStationary ticks before final settlement, including temporary goal visits.
MakespanLatest final arrival tick in a valid, completely solved plan.
Sum of CostsSum of all final arrival ticks.
Goal OccupancyAgents currently at their goals. This can decrease after yielding; it is not throughput.
HotspotsRepeated canonical path samples. A single waiting agent can contribute; these are not proven bottlenecks or validated collisions.
RuntimeMeasured solver and validation work inside the Worker. Cached results keep their original measurement.

Full-plan costs are unavailable for incomplete or invalid results. Diagnostic stationary replay on a failed search is not search progress.

Save, Favorites & Recovery

Favorite saves the exact applied Random Test grid and ordered Start/Goal positions, plus generation and planner metadata. It does not save the draft or regenerate from Seed. Partial and timed-out problems can be saved for further testing. Favorites supports up to 100 entries and 8 MiB per origin; reaching a limit never silently evicts older items. Identical problem data is not duplicated.

Use Favorites to search, Load, Rename, Export JSON or Remove an item. Load validates the stored snapshot and computes current solver results. Map data is preserved; solver versions, runtime and time-budget outcomes may differ. Export JSON backs up an individual favorite; open the file in Random Test and use Favorite again to restore it.

Favorites and Builder Recovery are stored only in this browser profile and site origin. Site-data deletion, private browsing and storage policies can remove local data. They are not cloud synchronization or permanent backups. Keep important work with Save JSON.

Builder Recovery autosaves committed edits, including unfinished endpoints. Resume Draft restores the document, not undo history, cached plans or Baselines. It uses a separate store from Favorites. A failed save never means Saved Locally; Retry and JSON backup remain available.

Export includes problem and result JSON. Builder can also export MovingAI .map terrain and .scen ordered start/goal rows, or a Scenario Pair ZIP. The .scen reference distance uses octile distance with sqrt(2) diagonals and no corner cutting; the simulator remains 4-way plus wait. No external .map/.scen Import is provided. The Scenario Pair ZIP is not a Cloudflare application deployment.

Replay & Validation

First, Previous, Next and Final pause automatic playback before seeking. Hovering Replay Profile inspects values only; clicking or tapping pauses and seeks to that tick. Distant seeks jump directly rather than drawing a fictitious route. Select an agent on the grid or use the number selector. Validation issues focus the relevant tick, agent and cell.

A Vertex Conflict is same-cell occupancy at a tick. An Edge Swap is simultaneous movement along one edge in opposite directions. The validator also checks coordinates, obstacles, starts, goals and replay consistency. Validity is not an industrial safety approval.

Space Play/Pause · ← → Seek · Home First · End Final · F Fit · Esc Cancel or clear selection. Input fields keep their normal keyboard behavior. Reduced Motion disables interpolation without changing plans or ticks.

Drag the analysis divider or use Expand / Restore / Reset. Switching tabs changes content only, not grid size or camera. Help buttons open on hover, focus or tap and close with Escape.