| | |
| | |
| | |
| | |
| | |
| |
|
| | """ |
| | Data models for the Road Traffic Simulator Environment. |
| | |
| | The agent controls a single car navigating from a start to end point |
| | in San Francisco, surrounded by background traffic. |
| | """ |
| |
|
| | from typing import Optional |
| | from pydantic import Field |
| |
|
| | from openenv.core.env_server.types import Action, Observation |
| |
|
| |
|
| | class RoadTrafficSimulatorAction(Action): |
| | """ |
| | Action for the traffic navigation environment. |
| | |
| | At each intersection, the agent chooses which outgoing road segment to take. |
| | The index is into the list of available outgoing edges at the current node, |
| | sorted by edge ID for determinism. Invalid indices are clipped to valid range. |
| | """ |
| |
|
| | next_edge_index: int = Field( |
| | default=0, |
| | description=( |
| | "Index (0-based) of the outgoing edge to take at the current intersection. " |
| | "Must be in [0, available_actions - 1]. Out-of-range values are clipped." |
| | ), |
| | ) |
| |
|
| |
|
| | class RoadTrafficSimulatorObservation(Observation): |
| | """ |
| | Observation from the traffic navigation environment. |
| | |
| | Includes the agent car's current GPS position, goal position, |
| | distance to goal, number of route choices available, and a |
| | bird's-eye-view screenshot of the map showing real-time traffic |
| | density (green=free-flow → red=congested). |
| | """ |
| |
|
| | |
| | lat: float = Field(default=0.0, description="Current latitude of the agent car") |
| | lon: float = Field(default=0.0, description="Current longitude of the agent car") |
| |
|
| | |
| | goal_lat: float = Field(default=0.0, description="Destination latitude") |
| | goal_lon: float = Field(default=0.0, description="Destination longitude") |
| | distance_to_goal: float = Field( |
| | default=0.0, description="Straight-line distance to goal in meters" |
| | ) |
| |
|
| | |
| | available_actions: int = Field( |
| | default=1, |
| | description="Number of valid outgoing edges from current node (action range: [0, available_actions-1])", |
| | ) |
| |
|
| | |
| | map_screenshot: str = Field( |
| | default="", |
| | description=( |
| | "Base64-encoded PNG (400×400 px) showing the road network coloured by " |
| | "traffic density. Blue dot = agent, green star = start, red star = goal, " |
| | "dashed cyan = planned shortest route." |
| | ), |
| | ) |
| |
|