Overview
Robot simulation provides:- Test code without physical robot
- Rapid iteration during development
- Physics-based simulation
- Visualization with Glass GUI
- Integration with CI/CD pipelines
- Field visualization
- Mechanism visualization
Architecture
Core Concepts
HAL Simulation
Simulated hardware abstraction layer
Physics Simulation
Model robot physics and mechanisms
Field2d
Visualize robot position on field
Mechanism2d
Visualize robot mechanisms
Running Simulation
VS Code
- Press
Ctrl+Shift+P(orCmd+Shift+Pon macOS) - Type “WPILib: Simulate Robot Code”
- Select “Sim GUI” or “Command Line”
- Robot code runs in simulation mode
Command Line
HAL Simulation
Access and control simulated hardware.Motor Simulation (Java)
Encoder Simulation (Java)
Gyro Simulation (Java)
Available Simulated Devices
| Java Class | Simulates |
|---|---|
PWMSim | PWM motor controllers |
EncoderSim | Quadrature encoders |
DutyCycleEncoderSim | Duty cycle encoders |
AnalogInputSim | Analog inputs |
AnalogGyroSim | Analog gyroscopes |
ADXRS450_GyroSim | ADXRS450 SPI gyro |
DigitalInputSim | Digital inputs |
DigitalOutputSim | Digital outputs |
SolenoidSim | Pneumatic solenoids |
DoubleSolenoidSim | Double solenoids |
Physics Simulation
Model robot physics for realistic simulation.Drivetrain Physics (Java)
Single Jointed Arm (Java)
Elevator Simulation (Java)
Flywheel Simulation (Java)
Field2d
Visualize robot position on the field.Mechanism2d
Visualize robot mechanisms.Complex Mechanism Example
Simulation-Specific Code
Detect and handle simulation mode.Testing with Simulation
Unit Tests
Glass GUI
Visual debugging tool for simulation.Launch Glass
- Run simulation
- Glass opens automatically
- View NetworkTables, plots, and visualizations
Glass Features
- NetworkTables viewer
- Field2d visualization
- Mechanism2d visualization
- Plot values over time
- Joystick/gamepad input
- System metrics
C++ Simulation
Source Code
View the full source code on GitHub:Related Documentation
WPIMath
Physics models and system identification
HAL
Hardware abstraction layer
Testing
Unit testing robot code