Source code for feature_extractor.ForeForeFeatureExtractor

from src.Roadway.roadway import Roadway
from src.Record.record import SceneRecord
from feature_extractor.neighbor_feature import get_neighbor_fore_along_lane_2, NeighborLongitudinalResult
from feature_extractor.interface import get_AccFs, convert_2_float


[docs]class ForeForeFeatureExtractor: def __init__(self, deltas_censor_hi: float = 100.): ''' "fore_fore_dist": total distance of the front vehicle from ego vehicle, 0 if no fore vehicle "fore_fore_relative_vel": the relative velocity of the front vehicle to ego vehicle, 0 if no fore vehicle "fore_fore_accel": the absolute acceleration of the front vehicle, 0 if no fore vehicle ''' self.num_features = 3 self.features = [0 for i in range(self.num_features)] self.deltas_censor_hi = deltas_censor_hi def __len__(self): return self.num_features
[docs] def pull_features(self, rec: SceneRecord, roadway: Roadway, veh_idx: int, models: {}, pastframe: int = 0): # reset features self.features = [0 for i in range(self.num_features)] scene = rec[pastframe] ego_vel = scene[veh_idx].state.v vtpf = "Front" vtpr = "Rear" fore_M = get_neighbor_fore_along_lane_2(scene, veh_idx, roadway, vtpf, vtpr, vtpf) if fore_M.ind is not None: fore_fore_M = get_neighbor_fore_along_lane_2(scene, fore_M.ind, roadway, vtpr, vtpf, vtpr) else: fore_fore_M = NeighborLongitudinalResult(0, 0.) if fore_fore_M.ind is not None: # total distance from ego vehicle self.features[0] = fore_fore_M.delta_s + fore_M.delta_s # relative velocity to ego vehicle self.features[1] = scene[fore_fore_M.ind].state.v - ego_vel # absolute acceleration self.features[2] = convert_2_float(get_AccFs(rec, roadway, fore_fore_M.ind, pastframe)) else: self.features[0] = self.deltas_censor_hi self.features[1] = 0. self.features[2] = 0. return self.features
[docs] def feature_names(self): return ["fore_fore_dist", "fore_fore_relative_vel", "fore_fore_accel"]
[docs] def feature_info(self): return { "fore_fore_dist": {"high": 50., "low": 0}, "fore_fore_relative_vel": {"high": 40., "low": -20.}, "fore_fore_accel": {"high": 9., "low": -9.} }