Разработка AI-системы автономного вождения Perception Planning Control

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

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • 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%.

Получите коммерческое предложение с детальным планом работ — свяжитесь с нами для оценки вашего проекта. Мы предложим решение под ключ с учётом ваших сроков и бюджета. Закажите консультацию, чтобы обсудить детали.