smarts.env.gymnasium.wrappers.metric.costs module

exception smarts.env.gymnasium.wrappers.metric.costs.CostError[source]

Raised when computation of cost functions fail.

class smarts.env.gymnasium.wrappers.metric.costs.CostFuncsBase(collisions: ~typing.Callable[[], ~typing.Callable[[~smarts.core.road_map.RoadMap, ~smarts.core.vehicle_index.VehicleIndex, Done, ~smarts.core.observations.Observation], ~smarts.env.gymnasium.wrappers.metric.types.Costs]] = <function _collisions>, comfort: ~typing.Callable[[], ~typing.Callable[[~smarts.core.road_map.RoadMap, ~smarts.core.vehicle_index.VehicleIndex, Done, ~smarts.core.observations.Observation], ~smarts.env.gymnasium.wrappers.metric.types.Costs]] = <function _comfort>, dist_to_destination: ~typing.Callable[[~smarts.core.coordinates.Point, float, ~smarts.core.road_map.RoadMap.Route, ~smarts.core.road_map.RoadMap.Lane, ~smarts.core.coordinates.Point, float], ~typing.Callable[[~smarts.core.road_map.RoadMap, ~smarts.core.vehicle_index.VehicleIndex, Done, ~smarts.core.observations.Observation], ~smarts.env.gymnasium.wrappers.metric.types.Costs]] = <function _dist_to_destination>, dist_to_obstacles: ~typing.Callable[[~typing.List[str]], ~typing.Callable[[~smarts.core.road_map.RoadMap, ~smarts.core.vehicle_index.VehicleIndex, Done, ~smarts.core.observations.Observation], ~smarts.env.gymnasium.wrappers.metric.types.Costs]] = <function _dist_to_obstacles>, jerk_linear: ~typing.Callable[[], ~typing.Callable[[~smarts.core.road_map.RoadMap, ~smarts.core.vehicle_index.VehicleIndex, Done, ~smarts.core.observations.Observation], ~smarts.env.gymnasium.wrappers.metric.types.Costs]] = <function _jerk_linear>, lane_center_offset: ~typing.Callable[[], ~typing.Callable[[~smarts.core.road_map.RoadMap, ~smarts.core.vehicle_index.VehicleIndex, Done, ~smarts.core.observations.Observation], ~smarts.env.gymnasium.wrappers.metric.types.Costs]] = <function _lane_center_offset>, off_road: ~typing.Callable[[], ~typing.Callable[[~smarts.core.road_map.RoadMap, ~smarts.core.vehicle_index.VehicleIndex, Done, ~smarts.core.observations.Observation], ~smarts.env.gymnasium.wrappers.metric.types.Costs]] = <function _off_road>, speed_limit: ~typing.Callable[[], ~typing.Callable[[~smarts.core.road_map.RoadMap, ~smarts.core.vehicle_index.VehicleIndex, Done, ~smarts.core.observations.Observation], ~smarts.env.gymnasium.wrappers.metric.types.Costs]] = <function _speed_limit>, steps: ~typing.Callable[[int], ~typing.Callable[[~smarts.core.road_map.RoadMap, ~smarts.core.vehicle_index.VehicleIndex, Done, ~smarts.core.observations.Observation], ~smarts.env.gymnasium.wrappers.metric.types.Costs]] = <function _steps>, vehicle_gap: ~typing.Callable[[int, str], ~typing.Callable[[~smarts.core.road_map.RoadMap, ~smarts.core.vehicle_index.VehicleIndex, Done, ~smarts.core.observations.Observation], ~smarts.env.gymnasium.wrappers.metric.types.Costs]] = <function _vehicle_gap>, wrong_way: ~typing.Callable[[], ~typing.Callable[[~smarts.core.road_map.RoadMap, ~smarts.core.vehicle_index.VehicleIndex, Done, ~smarts.core.observations.Observation], ~smarts.env.gymnasium.wrappers.metric.types.Costs]] = <function _wrong_way>)[source]

Functions to compute performance costs. Each cost function computes the running cost over time steps, for a given scenario.

collisions() Callable[[RoadMap, VehicleIndex, Done, Observation], Costs]
comfort() Callable[[RoadMap, VehicleIndex, Done, Observation], Costs]
dist_to_destination(dist_tot: float, route: Route, prev_route_lane: Lane, prev_route_lane_point: Point, prev_route_displacement: float) Callable[[RoadMap, VehicleIndex, Done, Observation], Costs]
dist_to_obstacles() Callable[[RoadMap, VehicleIndex, Done, Observation], Costs]
jerk_linear() Callable[[RoadMap, VehicleIndex, Done, Observation], Costs]
lane_center_offset() Callable[[RoadMap, VehicleIndex, Done, Observation], Costs]
off_road() Callable[[RoadMap, VehicleIndex, Done, Observation], Costs]
speed_limit() Callable[[RoadMap, VehicleIndex, Done, Observation], Costs]
steps() Callable[[RoadMap, VehicleIndex, Done, Observation], Costs]
vehicle_gap(actor: str) Callable[[RoadMap, VehicleIndex, Done, Observation], Costs]
wrong_way() Callable[[RoadMap, VehicleIndex, Done, Observation], Costs]
smarts.env.gymnasium.wrappers.metric.costs.get_dist(road_map: RoadMap, point_a: Point, point_b: Point, tolerate: bool = False) Tuple[float, Route][source]

Computes the shortest route distance from point_a to point_b in the road map. Both points should lie on a road in the road map. Key assumption about the road map: Any two given points on the road map have valid routes in both directions.

Parameters:
  • road_map – Scenario road map.

  • point_a – A point, in world-map coordinates, which lies on a road.

  • point_b – A point, in world-map coordinates, which lies on a road.

  • tolerate – If False, raises an error when distance is negative due to route being computed in reverse direction from point_b to point_a. Defaults to False.

Returns:

Shortest road distance between two points in the road map. RoadMap.Route: Planned route between point_a and point_b.

Return type:

float

smarts.env.gymnasium.wrappers.metric.costs.make_cost_funcs(params: Params, **kwargs) CostFuncs[source]

Returns a dictionary of active cost functions to be computed as specified by the corresponding active field in params. Cost functions are initialized using kwargs, if any are provided.

Parameters:
  • params (Params) – Parameters to configure individual cost functions.

  • kwargs (Dict[str, Dict[str,Any]]) – If any, used to initialize the appropriate cost functions.

Returns:

Dictionary of active cost functions to be computed.

Return type:

CostFuncs

smarts.env.gymnasium.wrappers.metric.costs.on_route(road_map: RoadMap, route: Route, point: Point, radius: float = 7) Tuple[bool, Lane | None, Point | None, float | None][source]

Computes whether point is within the search radius distance from any lane in the route.

Parameters:
Returns:

True if point is nearby any road in route, else False. If true, additionally returns the (i) nearest lane in route, (ii) its nearest lane center point, and (iii) displacement between point and lane center point.

Return type:

Tuple[bool, Optional[RoadMap.Lane], Optional[smarts.core.coordinates.Point], Optional[float]]