-
Notifications
You must be signed in to change notification settings - Fork 0
R3 Simulation Spec
Sumer edited this page Mar 6, 2026
·
6 revisions
This document outlines a schema for the scenario payload (content) for the given release.
{
version?: number // defaults to 1
start_time: string, // "HH:MM" timestamp
end_time: string, // "HH:MM" timestamp
vehicle_battery_capacity: number, // probably should have check that it isn't 0
stations: [
{
name: string,
position: [number, number], // [lon, lat]
initial_task_count?: number, // defaults to 0
scheduled_tasks: string[] // list of "DAY:HH:MM" 8601 timestamps
}
],
vehicles: [
{
name: string,
position?: [number, number] | string, // [lon, lat] or station name - can be omitted
battery_count?: number // assume 0 if not provided
}
],
drivers: [
{
name: string, // is a name necessary?
shift: {
start_time: string, // "DAY:HH:MM" timestamp
end_time: string, // "DAY:HH:MM" timestamp
lunch_break?: string, // "DAY:HH:MM" timestamp marking beginning of 30 minute lunch break - can be omitted
}
}
],
traffic?: { // optional section which defaults to "default" if omitted
traffic_level: string
},
}- There must be at least 1 station, 1 vehicle, 1 driver, and 1 task in any scenario created.
- There must be as many drivers that are on-shift at simulation start time as there are vehicles with a specified position.
- No vehicle should have a
battery_countthat is greater thanvehicle_battery_capacity. - If traffic provided, the field
traffic_levelmust be one of the following strings: "default", "no_traffic", "low_congestion", "medium_congestion" or "high_congestion".
interface R2Payload {
simId: string
tasks: {
id: number
stationId: number
state: 'open' | 'assigned' | 'inprogress' | 'closed'
assignedDriverId: number | null
}
stations: {
id: number
name: string
position: [number, number]
taskIds: number[]
}
drivers: {
id: number
position: [number, number]
taskIds: number[]
route?: {
coordinates: [number, number][]
}
state:
| 'off_shift'
| 'on_route'
| 'servicing_station'
| 'lunch_break'
| 'idle'
| 'ending_shift'
shift: {
start_time: number
end_time: number
lunch_break?: number // Might NOT be omittable if in the end we decide all lunch breaks on sim init / start - tbd.
}
inProgressTaskId: number | null
vehicleId: number | null // null implies at HQ, not on route
}
vehicles: {
id: number
driverId: number | null // null implies at HQ, not on route
batteryCount: number
batteryCapacity: number
}
clock: {
simSecondsPassed: number
simMinutesPassed: number
realSecondsPassed: number
realMinutesPassed: number
startTime: number
}
}Simulation Meeting Minutes
Frontend Meeting Minutes
Backend Meeting Minutes
Risks
User Consent and End-User License Agreement
Legal and Ethical Issues
Economic
Budget
Personas
Diversity Statement
Overall Architecture and Class Diagrams
Infrastructure and Tools
Name Conventions
Testing Plan and Continuous Integration
Security
Performance
Deployment Plan and Infrastructure
Missing Knowledge and Independent Learning
Glossary
Mockups
UI Evolution
Logging
Metrics
VeloSim Observability & Performance Insights
User Manual
Usability Tests