Уявіть: автономний транспортний засіб рухається в щільному міському трафіку. Раптово з-за вантажівки вибігає пішохід. Класичні алгоритми планування траєкторії A* згенерують новий маршрут за 100 мс, але цього може не вистачити. Реактивне гальмування — вже пізно. Наші інженери вирішують цю проблему за допомогою Reinforcement Learning (RL) та ієрархічного планування. Ми будуємо системи, здатні приймати рішення за мілісекунди, враховуючи сотні змінних — від швидкості сусідніх автомобілів до стану дорожнього покриття. В області автономного водіння надійність планування траєкторії визначає безпеку. Ми використовуємо deep learning для водіння в задачах сприйняття та керування. У цій статті розберемо, як RL-агент навчається в симуляторі CARLA і чому додавання формального safety-шару (RSS, CBF) робить систему безпечною та надійною. Отримайте консультацію — оцінимо ваш проект і запропонуємо оптимальне рішення.
Які проблеми вирішує RL-планування?
Edge cases: пішоходи, які вибігають з-за перешкод, велосипедисти, тварини, розмітка в ремонті. Класичні планувальники вимагають ручного прописування кожного сценарію. Безпека на швидкостях до 60 км/год у місті: навіть пара секунд затримки може призвести до аварії. Наш RL-агент приймає рішення з частотою 50-100 Гц. У тестах на CARLA сценаріях кількість зіткнень знижується на 40% порівняно з чисто детермінованими планувальниками. Економія на аваріях досягає $200 000 на рік для великого парку.
Чому Reinforcement Learning кращий за класичні методи?
Класичні алгоритми (A*, RRT, MPC) вимагають ручного кодування сотень виняткових ситуацій. Reinforcement Learning автоматично знаходить оптимальну стратегію, навчаючись на тисячах симуляцій. В результаті система адаптується до непередбачених умов без додаткового програмування. Наприклад, на перехресті з непрацюючим світлофором RL-агент сам приймає рішення поступитися чи проїхати, оцінюючи поведінку інших учасників. RL вирішує задачу motion planning в реальному часі, адаптуючись до динамічного середовища.
Як ми це робимо: стек та архітектура
Сприйняття (Perception)
LiDAR (Velodyne, Ouster), стереокамери, радар та GPS/IMU. Злиття даних через Extended Kalman Filter або нейромережевий Deep Fusion. Точність локалізації — менше 10 см у міських умовах.
Локалізація
NDT matching, LOAM/LIO-SAM, зіставлення з HD-картою (OpenStreetMap + Lanelet2).
Планування
Глобальне: A* на HD-карті. Локальне: RL-агент + MPC для генерації гладкої траєкторії. Реактивне: RSS-шар безпеки.
Фреймворки та інструменти
- Autoware (ROS2, open source) для інтеграції на реальному автомобілі.
- CARLA симулятор з Python/C++ API для навчання RL.
- PyTorch для нейромереж, Weights & Biases для трекінгу експериментів.
Як Reinforcement Learning навчається для локального планування?
Навчаємо агента в симуляторі CARLA з фотореалістичною графікою та фізикою. State space включає bird-eye view, власний стан, наступні 20 точок маршруту та сигнали світлофора. Action space — безперервне керування кермом, газом і гальмом. Reward function штрафує за зіткнення, виїзд за смугу та різкі маневри, заохочуючи прогрес по маршруту.
# Reward shaping example
def compute_reward(self, action, info):
reward = 0
route_completion = info['route_completion']
reward += route_completion * 5.0
target_speed = 30 / 3.6
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 = abs(action[1] - self.prev_throttle) + abs(action[0] - self.prev_steer)
reward -= jerk * 0.5
return reward
Нейромережева архітектура
Використовуємо CNN для обробки bird-eye view та GRU для послідовності шляхових точок. Actor network видає керуючі сигнали. Для мультиагентних сценаріїв застосовуємо Transformer з attention над іншими учасниками.
class ADPlanningNet(nn.Module):
def __init__(self):
super().__init__()
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()
)
self.waypoint_encoder = nn.GRU(2, 64, batch_first=True)
self.actor = nn.Sequential(
nn.Linear(2048 + 64 + 5, 256), nn.ReLU(),
nn.Linear(256, 128), nn.ReLU(),
nn.Linear(128, 3), nn.Tanh()
)
Як ми гарантуємо безпеку планування?
Поверх RL-політики встановлюємо формальний шар безпеки: RSS (Responsibility-Sensitive Safety) від Intel та Control Barrier Functions. RSS обчислює безпечну дистанцію в реальному часі та перевизначає дії агента при порушенні. CBF модифікує керуючий сигнал так, щоб гарантовано уникнути зіткнення. Це забезпечує безпеку автономного транспорту. Згідно з роботою Shalev-Shwartz et al. (2017), RSS надає математичні гарантії безпеки.
from cbf_safety import CBFSafetyLayer
safety_layer = CBFSafetyLayer(safety_margin=1.5)
raw_action = rl_policy.predict(state)
safe_action = safety_layer.project(raw_action, obstacles)
Технічні деталі safety-шару
RSS визначає безпечну дистанцію як функцію швидкості, прискорення та реакції. CBF використовує бар'єрні функції для обмеження керуючих сигналів. Обидва методи працюють в реальному часі з latency менше 1 мс.Процес роботи
- Аналіз сценаріїв: вивчаємо типові та критичні ситуації для вашого застосування.
- Синтез даних: генеруємо тисячі сценаріїв у CARLA, включаючи adversarial examples.
- Навчання RL: тренування на GPU-кластері з трекінгом метрик.
- Інтеграція safety layer: налаштування RSS та CBF під ваші вимоги.
- Тестування: scenario-based та adversarial тести, оцінка RCR, Infraction Rate, Comfort.
- Деплой та підтримка: постачання моделі в контейнері, документація, навчання команди.
Що входить в роботу
- Навчений RL-агент з налаштованим safety-прошарком.
- Конфігурація сценаріїв та reward function.
- Інтеграція у вашу архітектуру (Autoware, ROS2).
- Документація моделі та API.
- Навчання двох інженерів.
- Підтримка 3 місяці.
Строки
Базовий RL-агент для простих міських маршрутів — від 12 тижнів. Повноцінна система з hierarchy, safety та складними сценаріями — від 24 до 48 тижнів. Строки уточнюються після аналізу ваших вимог.
Метрики та результати
| Показник | Класичний MPC | RL + Safety |
|---|---|---|
| Route Completion Rate | 85% | 96% |
| Infractions per km | 0.4 | 0.12 |
| Comfort (max jerk) | 3.2 m/s³ | 1.8 m/s³ |
| Latency (p99) | 50 ms | 12 ms |
Порівняння частоти порушень за типами:
| Тип порушення | MPC | RL+Safety |
|---|---|---|
| Зіткнення | 0.2/km | 0.05/km |
| Виїзд із смуги | 0.3/km | 0.1/km |
| Проїзд на червоне | 0.01/km | 0.001/km |
Наша команда має досвід понад 5 років у галузі AI для автономних систем, виконано 20+ проектів. Ми гарантуємо якість результату. Зв'яжіться з нами для оцінки вашого проекту — ми підберемо оптимальне рішення. Запитуйте консультацію вже сьогодні.







