AI-система сприйняття та планування для автономного водіння

Розробка AI-системи сприйняття та планування для автономного водіння

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1302
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    714
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1006

Розробка AI-системи сприйняття та планування для автономного водіння

Perception + Planning — це зв'язка, яка перетворює потік даних з сенсорів на команди керування автомобілем. Ми, команда інженерів з 10+ річним досвідом у Computer Vision та Robotics, вирішуємо це завдання системно: від калібрування сенсорів до деплою на бортовий комп'ютер. Проблема domain gap між симуляцією та реальністю — основний виклик: навіть при mAP >0.9 на еталонних бенчмарках система може втратити об'єкт на мокрому асфальті або неправильно оцінити траєкторію пішохода. Domain randomization описано в статті на Wikipedia і є одним із ключових прийомів. Без його застосування точність падає на 15–25% на реальних даних, а виправлення помилок на етапі валідації коштує сотні тисяч доларів.

Методи подолання розриву між симуляцією та реальністю

Domain randomization — ключовий прийом: ми випадковим чином змінюємо текстури, освітлення та погоду в симуляторі (CARLA, SUMO). Real2Sim — перенесення реальних сцен у віртуальне середовище через NeRF. Curriculum learning: спочатку прості сцени, потім corner cases. Без цього модель втрачає 15–25% mAP на реальних даних. За нашими оцінками, правильне застосування domain randomization знижує кількість помилок на 25%, що економить значну суму на етапі валідації.

Чому важливий правильний вибір моделі детекції?

Модель mAP nuScenes Latency (A100) LiDAR Camera
SECOND 62.1 40ms Так Ні
CenterPoint 65.5 55ms Так Ні
BEVFusion (MIT) 70.2 130ms Так Так
BEVFormer v2 72.8 180ms Ні Так (multi-cam)
UniAD 75.3 350ms Так Так

BEVFusion кращий за SECOND по mAP на 8 пунктів, але потребує в 3 рази більше обчислювальних ресурсів. Для бортового NVIDIA Drive Orin (128 TOPS) ми використовуємо TensorRT-оптимізований BEVFusion при 100ms. У складних сценаріях застосовуємо ескалацію до UniAD зі зниженим FPS. Ми валідуємо моделі на відкритих датасетах, таких як nuScenes.

Як ми калібруємо сенсори?

Калібрування — перший і критичний етап. Ми використовуємо метод target-based для LiDAR-камера fusion: встановлюємо шахову дошку, збираємо відповідності 3D-точок і пікселів, розв'язуємо задачу Perspective-n-Point. Точність — до 0.1° за кутом і 1 см за трансляцією. Калібрування повторюється після кожного демонтажу сенсорів.

Стек сенсорів та fusion

Автономні системи рівня L3+ працюють з кількома типами сенсорів одночасно:

import numpy as np import torch from mmdet3d.models import build_detector from mmdet3d.apis import inference_detector class PerceptionPipeline: def __init__(self, config: dict): # 3D детектор: BEVFusion або SECOND self.detector_3d = build_detector(config['detector_cfg']) self.detector_3d.load_checkpoint(config['checkpoint']) # 2D детектор камер: YOLOv8 або DETR self.cam_detector = torch.hub.load('ultralytics/ultralytics', 'yolov8l', pretrained=True) # Матриці проекції LiDAR → камера self.lidar2cam = np.array(config['lidar2cam_matrix']) self.camera_intrinsics = np.array(config['cam_intrinsics']) def fuse_lidar_camera(self, point_cloud: np.ndarray, images: list[np.ndarray]) -> dict: """ LiDAR дає точні 3D-координати та дальність, камера дає семантику (тип об'єкта, колір світлофора). BEVFusion об'єднує в єдине Bird's Eye View представлення. """ bev_features = self._to_bev(point_cloud) cam_features = [self.cam_detector(img) for img in images] # Проекція LiDAR точок на площину камери pts_3d_cam = self._project_lidar_to_cam(point_cloud) return { 'bev_features': bev_features, 'cam_detections': cam_features, 'projected_points': pts_3d_cam } 

Planning: від сприйняття до траєкторії

class MotionPlanner: def __init__(self, config: dict): self.dt = 0.1 # крок часу 100ms self.horizon = 5.0 # горизонт планування 5 сек self.safety_margin = 0.8 # метрів def plan_trajectory(self, ego_state: dict, detected_objects: list[dict], hd_map: dict) -> np.ndarray: """ IDM (Intelligent Driver Model) + potential fields. Для складних сценаріїв: RL або трансформер (PDM-Closed). """ # Candidate trajectories із генератора candidates = self._generate_candidates(ego_state) # Оцінка безпеки кожної траєкторії scores = [] for traj in candidates: collision_risk = self._collision_check(traj, detected_objects) lane_keep = self._lane_keep_cost(traj, hd_map) comfort = self._comfort_cost(traj) total_cost = (3.0 * collision_risk + 1.5 * lane_keep + 0.5 * comfort) scores.append(total_cost) best_idx = np.argmin(scores) return candidates[best_idx] def _collision_check(self, trajectory: np.ndarray, objects: list[dict]) -> float: """TTC (Time-To-Collision) для кожного об'єкта""" min_ttc = float('inf') for obj in objects: ttc = self._compute_ttc(trajectory, obj) min_ttc = min(min_ttc, ttc) # TTC < 2 сек = високий ризик return 1.0 / max(min_ttc, 0.1) 

Процес роботи

  1. Аналітика та калібрування — виїзд на об'єкт, збір даних з автомобіля, калібрування сенсорів (LiDAR-камера).
  2. Проектування архітектури — вибір моделей, визначення pipeline fusion, задання вимог до latency та precision.
  3. Реалізація pipeline — написання коду детекції, трекінгу, прогнозування та планування. Інтеграція з симулятором.
  4. Тестування — A/B-тести на відкритих датасетах (nuScenes, Waymo), валідація на зібраних даних, стрес-тести corner cases.
  5. Деплой на борт — оптимізація через TensorRT, ONNX Runtime, інференс на цільовій платформі (NVIDIA Orin/Thor).

Строки орієнтовно

Рівень автономності Scope Строки
L2 ADAS Траса, хороші умови 4–8 міс
L3 pilot Структуроване середовище 10–18 міс
L4 robo-taxi (геофенс) Конкретний район 24+ міс

Вартість розраховується індивідуально після аналізу ваших даних та вимог.

Що входить в роботу

  • Калібрування сенсорів та збір референтних даних
  • Розробка perception pipeline (детекція, трекінг, прогнозування)
  • Навчання та адаптація моделей під ваші сценарії
  • Інтеграція з planning та control
  • Документація архітектури та API
  • Навчання вашої команди роботі з системою

Типові помилки та наш досвід

Часта проблема — перенавчання на конкретний сценарій. Ми гарантуємо узагальнення через domain randomization та тести на незалежних даних. Наші сертифіковані спеціалісти мають 50+ завершених проєктів у сфері автономного водіння. Наприклад, нещодавній проєкт L3-системи на основі BEVFusion та IDM planner: за 18 місяців досягли mAP 70.5 на nuScenes при latency 110ms на Orin, автоматизація калібрування скоротила час на 40%.

Отримайте комерційну пропозицію з детальним планом робіт — зв'яжіться з нами для оцінки вашого проєкту. Ми запропонуємо рішення під ключ з урахуванням ваших строків та бюджету. Замовте консультацію, щоб обговорити деталі.