AstroSim is the simulator built for WRO competitors. Write Python, run missions on official maps, and iterate twenty times before your bricks even leave the box.
1from pybricks.hubs import PrimeHub2from pybricks.pupdevices import Motor3from pybricks.robotics import DriveBase4from linefollow1 import black_error, black_width56robot = DriveBase(left, right, 56, 112)78SPEED, KP, TARGET = 130, 25, 2910for _ in range(2):11 crosses, was_wide = 0, False12 while crosses < TARGET:13 err = black_error()14 wide = black_width() >= 615 if wide and not was_wide:16 crosses += 117 was_wide = wide18 robot.drive(SPEED, err * KP)19 wait(20)20 robot.turn(180)21
Live capture Β· MBC line-follower with cross counting on the real WRO 2026 mat.
How it works
WRO 2026 mats out of the box. Need a Rescue arena? Hit Generate and a tile-based RoboCupJunior / OBR map is built procedurally, with a seed so a coach can hand the same map to every student.
DriveBase, Motor, ColorSensor, IMU, multitask β the same API your team uses on the brick. Pybricks-aware autocomplete and 21 ready-to-load examples (P / PD / MBC line follow).
Animated playback with frame-by-frame scrubbing. Live 8-channel MBC tiles, IMU heading, runtime variables. Overlay any past run as a ghost trail to see what actually got better.
Features
Built by robotics coaches. Tuned for the way teams actually train.
Not blocks. Not pseudocode. Real CPython via Pyodide, with a MicroPython compat layer (ustruct, ujson, utimeβ¦) β the exact code you write here runs unchanged on a SPIKE Prime hub.
Junior, Elementary, and Senior (Mosaic Masters) β pre-loaded mission presets with random object placement to simulate real round-to-round variation.
Full MBC support via PUPDevice.read(9) β 7 packed registers, per-channel reflectance, black/white error, line width. Built-in helpers for sequential and async (multitask) line follow.
Visual 2D editor for your robot's footprint: body parts, wheels, color sensors, MBC, functional grippers. Live geometry validation flags overlaps, port exhaustion, and out-of-canvas sensors.
Procedural tile-based generator for RoboCupJunior Rescue Line and OBR Resgate. Seedable random maps, intersection markers, gaps, debris, obstacles β practice exactly what shows up at competition.
Step through every frame: IMU heading, 8-channel MBC tiles, color sensor cards, live runtime variables. Run History overlays past attempts as a ghost trail so you can see what actually improved.
Why AstroSim
Most "robotics simulators" weren't built for teenagers training for WRO. AstroSim is.
Hours installing Python, pip, Pybricks, and configuring an IDE on every team device β re-done every time IT wipes the lab.
Open a tab. CPython 3.13 already loaded. First run happens before the next team finishes pip install.
Webots, CoppeliaSim, Gazebo β powerful, but built for grad-school research, not for a 14-year-old chasing a mosaic tile across a WRO mat.
Top-down view, official WRO 2026 mats, and the exact Pybricks API your team already uses. No 3D modeling, no ROS, no licensing.
Pure block languages are great for getting started β and a wall when teams want to learn what actually runs on the brick at competition.
Real Python by default, Blockly available on Pro, and a one-click toggle between them. Skills transfer straight to SPIKE Prime, EV3, and every CS class after.
Create a class with a 6-character join code. Author activities with a fixed map, starter code, layered hints, and an auto-graded goal β reach a zone, follow a line, hit a target distance. Students submit; the simulator scores 0β3β on its own.
Pricing
Start free. Upgrade when your team needs more.
Free
Try the simulator β no card required.
Basic
For a team training through the season.
or $99/yr
Pro
For coaches and serious competitors.
or $199/yr
FAQ
No β and it's not trying to. AstroSim covers the 90% of training time when the brick is in someone's backpack. Plan strategies, debug logic, refine missions, then take the same .py file to the real hub. Export to .py is included on Basic and Pro.
Yes. Chrome, Edge, and Safari (macOS + iOS) are all supported, plus Chromebooks and Android tablets down to 768 px. Firefox isn't supported yet β it lacks the SharedArrayBuffer behavior the Python worker needs.
Yes β that's the whole point. CPython 3.13 via Pyodide with a MicroPython compatibility layer (ustruct, ujson, utime, urandomβ¦). DriveBase, Motor, ColorSensor, UltrasonicSensor, PrimeHub / InventorHub / TechnicHub IMU, multitask, StopWatch β same code, same imports, same behavior.
Yes. `PUPDevice.read(9)` returns 7 packed 16-bit registers with per-channel reflectance, black/white error, line width, and bitmask. Built-in helpers `lineSensorPyFunc` (sync) and `lineSensorPyFuncForMultitask` (async) ship in the uploaded files panel β no extra setup. The debug panel shows all 8 channels live.
Shipped. The Map panel has a Generate rescue map button that builds a tile-based course (start, straights, curves, intersections with green markers, gaps, debris, obstacles, U-turn decoys) procedurally. Pass a seed and you get a reproducible map β great for handing the same assignment to a whole class.
Yes β just shipped. Teachers create a class with a 6-char join code, build activities with a map, starter code, hints, and a goal (reach this zone, follow the line N mm, β¦). Students join, see the activity panel, and submit runs that are auto-scored 0β3 stars. Write to support@astrogenius.com.br for team billing.
Open AstroSim now. Free forever β no card, no setup, no excuses.