← Selected work

Systems project / TypeScript and ROS 2

NodeAI.

Robot missions, navigation and replay.

A browser fleet simulator and a separate ROS 2 Jazzy bridge for real Nav2 actions. The simulator runs without an account, backend or robot hardware.

01 / PLANCommand → validated mission

Typed subtasks · eligible robot

02 / EXECUTEFixed-step state machine

A* routes · bounded recovery

03 / INSPECTRecorded frames and events

Seek · playback · JSON export

Follow a mission through failure and recovery.

Supported commands compile into typed mission plans. Three simulated robots execute navigation, delivery, inspection, charging and docking tasks. A four-neighbour A* planner respects static obstacles and no-go regions.

Blocking a robot exercises a bounded replacement policy. A replacement carrying out a delivery can visit the stopped robot for a simulated cargo handoff. Unavailable replacements or exhausted retries produce explicit failures.

Mission replay reads captured frames and events, with seek and speed controls. Validated browser snapshots preserve the fleet between visits, and runs can be exported as JSON.

A separate path for Nav2.

The ROS bridge sends actual NavigateToPose actions and subscribes to localization and battery telemetry. Single-pose commands and routes of up to 20 waypoints share one robot assignment. Later waypoint dispatches recheck readiness.

Cancellation waits for the action's terminal result. Uncertain outcomes hold the assignment, and per-leg callback guards prevent stale feedback from changing a later waypoint. Nav2 owns robot planning and motion; the simulator's A* routes are not sent to hardware.

Check the state transitions.

The repository has 56 TypeScript checks and 30 ROS lifecycle/integration checks. Real ROS action clients and servers exercise waypoint completion, later rejection and cancellation in a Jazzy fixture. CI builds both paths.

The browser demo was exercised through dispatch, fault injection, replacement recovery and replay. Its default 2D workspace also works without WebGL.

Current boundaries.

Local robots are point agents on a static map. Fleet collision avoidance, dynamic traffic and physical pickup or docking protocols remain outside the simulator. The ROS path was validated against an action fixture; physical robots and a full Nav2 deployment still need validation.

ROS deployment guide