1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| class MinimumRiskManeuver: """ 最小风险机动 """ def __init__(self): self.adas = ADASController() self.brake = BrakeController() self.steering = SteeringController() self.communication = CommunicationModule() def execute(self, vehicle_state, road_state): """ 执行MRM """ lane_info = road_state['lane'] traffic_info = road_state['traffic'] if self.is_highway(vehicle_state): strategy = 'highway_mrm' elif self.is_urban(vehicle_state): strategy = 'urban_mrm' else: strategy = 'default_mrm' if strategy == 'highway_mrm': self.highway_mrm(vehicle_state, lane_info, traffic_info) else: self.urban_mrm(vehicle_state, lane_info, traffic_info) self.communication.call_emergency() def highway_mrm(self, vehicle_state, lane_info, traffic_info): """ 高速MRM策略 """ self.adas.enable_lka() target_speed = max(30, vehicle_state['speed'] - 20) self.adas.set_target_speed(target_speed) safe_stop = self.find_safe_stop(lane_info, traffic_info) if safe_stop: self.adas.change_lane(safe_stop['lane']) self.brake.full_stop() else: self.brake.gradual_stop() def urban_mrm(self, vehicle_state, lane_info, traffic_info): """ 城市MRM策略 """ target_speed = max(10, vehicle_state['speed'] - 15) self.adas.set_target_speed(target_speed) self.steering.steer_to_side() self.brake.full_stop() self.adas.enable_hazard_lights()
|