AI-система планирования пути для автономных транспортных средств
Планирование пути в автономных ТС — трёхуровневая задача: глобальное (маршрут A→B), локальное (объезд препятствий), реактивное (аварийное торможение за 100 мс). RL решает средний и реактивный уровни там, где классические алгоритмы (A*, RRT, MPC) требуют ручного кодирования сотен edge cases.
Стек автономного вождения
Perception: LiDAR (Velodyne, OUSTER, Livox) + Camera (RGB, stereo) + Radar + GPS/IMU. Fusion через Kalman Filter или Deep Fusion.
Локализация: NDT matching, LOAM/LIO-SAM, HD Map matching. Точность: <10 cm в городе.
Планирование:
- Глобальное: A* / Dijkstra на HD Map (OpenStreetMap + Lanelet2)
- Локальное/реактивное: RL, MPC, lattice planner
Управление: Pure Pursuit, Stanley, MPC → сигналы рулению/газу/тормозам.
Фреймворки: Autoware (ROS2-based, open source), Apollo (Baidu), CARLA (симулятор).
RL для локального планирования
CARLA симулятор: Python/C++ API, фотореалистичный рендеринг, физика транспорта, пешеходы, другие участники. Идеален для обучения RL агентов.
State space:
# Bird-eye view (BEV) representation
state = {
'bev_map': np.zeros((256, 256, 7)), # occupancy, lanes, route, vehicles...
'ego_state': np.array([vx, vy, heading, steer, throttle]),
'route_waypoints': waypoints[:20], # следующие 20 точек маршрута
'traffic_light': light_state # red/green/yellow
}
Action space (continuous):
action_space = spaces.Box(
low=np.array([-1.0, 0.0, 0.0]), # steer, throttle, brake
high=np.array([1.0, 1.0, 1.0]),
dtype=np.float32
)
# или discrete: {turn_left, go_straight, turn_right, stop}
Reward shaping для безопасного вождения:
def compute_reward(self, action, info):
reward = 0
# прогресс по маршруту
route_completion = info['route_completion']
reward += route_completion * 5.0
# скорость (не слишком медленно, не слишком быстро)
target_speed = 30 / 3.6 # 30 km/h в м/с
speed_diff = abs(info['speed'] - target_speed)
reward -= speed_diff * 0.1
# нарушения
if info['collision']:
reward -= 100.0
if info['lane_invasion']:
reward -= 10.0
if info['red_light_violation']:
reward -= 50.0
# комфорт (jerk)
jerk = abs(action[1] - self.prev_throttle) + abs(action[0] - self.prev_steer)
reward -= jerk * 0.5
return reward
Нейросетевая архитектура
CNN + LSTM для BEV входа:
class ADPlanningNet(nn.Module):
def __init__(self):
super().__init__()
# BEV encoder
self.bev_encoder = nn.Sequential(
nn.Conv2d(7, 32, 5, stride=2), nn.ReLU(),
nn.Conv2d(32, 64, 5, stride=2), nn.ReLU(),
nn.Conv2d(64, 128, 3, stride=2), nn.ReLU(),
nn.AdaptiveAvgPool2d(4),
nn.Flatten()
) # → 2048
# waypoints encoder
self.waypoint_encoder = nn.GRU(2, 64, batch_first=True)
# actor
self.actor = nn.Sequential(
nn.Linear(2048 + 64 + 5, 256), nn.ReLU(),
nn.Linear(256, 128), nn.ReLU(),
nn.Linear(128, 3), nn.Tanh()
)
Transformer для multi-agent сценариев: Attention над другими участниками (pedestrians, vehicles). Масштабируется на переменное число объектов.
Иерархическое планирование
Level 3: Mission Planner (A* на HD Map)
→ sequence of waypoints
Level 2: Behavioral (RL агент)
→ выбор тактики: обгон/следование/уступка приоритета
Level 1: Motion Planner (MPC / lattice)
→ trajectory за 3–5 сек
Level 0: PID Controller
→ actuator commands @ 100 Hz
RL на Level 2 принимает высокоуровневые решения (обгонять/не обгонять) за ~10 Hz. MPC на Level 1 обеспечивает smooth trajectory following.
Safety Constraints
Для автономных ТС safety layer обязателен поверх RL:
RSS (Responsibility-Sensitive Safety): Intel формальная модель безопасности. Вычисляет safe distance в реальном времени. Override RL action при нарушении RSS условий.
Control Barrier Functions (CBF): Математически гарантированное избегание столкновений через модификацию actions RL агента.
from cbf_safety import CBFSafetyLayer
safety_layer = CBFSafetyLayer(safety_margin=1.5) # 1.5m buffer
raw_action = rl_policy.predict(state)
safe_action = safety_layer.project(raw_action, obstacles)
# safe_action ≈ raw_action, но гарантированно безопасен
Тестирование
Scenario-based testing: CARLA scenarios library — corner cases: внезапно выбегающий пешеход, автомобиль-призрак, скользкая дорога.
Adversarial testing: RL adversarial agent специально создаёт сложные ситуации для проверки политики.
Метрики:
- Route completion rate (RCR) — % успешно завершённых маршрутов
- Infraction rate — нарушений на 1 км
- Comfort: acceleration/jerk metrics
Сроки: 24–48 недель
Базовый RL агент в CARLA на прямых городских маршрутах — 12 недель. Полноценная система с hierarchy, safety layer, сложными сценариями — 24–32 недели. Реальное железо (дорожные испытания) — за рамками типичного проекта разработки ПО.







