RobotWin Studio is split into four primary parts that coordinate through a fixed-step simulation clock.
- CoreSim: deterministic scheduler, state orchestration, and IPC coordination.
- NativeEngine: C++ physics and environment runtime.
- FirmwareEngine: firmware emulation and guest OS virtualization.
- RobotWin (Unity): visualization, authoring, and interaction.
graph TD
subgraph Frontend
Unity[RobotWin (Unity)]
end
subgraph Orchestration
Core[CoreSim]
end
subgraph Native
NativeEngine[NativeEngine (C++)]
end
subgraph Firmware
FirmwareEngine[FirmwareEngine]
AVR[MCU Emulation]
QEMU[QEMU Guest]
FirmwareEngine --> AVR
FirmwareEngine --> QEMU
end
Unity -->|calls into| Core
Core <-->|C-ABI / plugin| NativeEngine
Core <-->|named pipe (RTFW)| FirmwareEngine
- Collect inputs (user actions, external IO, and device state).
- Step firmware.
- Solve circuit and signal propagation.
- Step physics.
- Publish outputs and telemetry.
- Named pipes for control and low-rate data.
- Shared memory for high-rate streams (camera, lidar) when enabled.
- A single master clock defines simulation time.
- Firmware timing and IO: FirmwareEngine.
- Physics stepping: NativeEngine.
- UI/rendering: Unity consumes the latest committed outputs and does not advance time.
- Fixed dt and explicit step counters.
- Unity renders the latest committed state and does not advance time.
- Input logs enable replay and regression checks.