Найти тему
Журнал «Код»

Как устроены беспилотные автомобили

Оглавление

В них много алгоритмов и датчиков, но водитель всё равно нужен

Беспилотный автомобиль — это когда машина сама умеет ездить по дорогам общего пользования, как будто ей управляет настоящий водитель. Она сама выбирает маршрут, следит за обстановкой на дороге, объезжает препятствия и не нарушает правила дорожного движения. Разбираемся, как это работает.

Уровни автопилота

В зависимости от того, что машина умеет делать сама, инженеры разделили автопилот на 6 уровней:

Level 0 — автопилота нет, водитель всё делает сам. Газель-маршрутка — это как раз машина с автопилотом Level 0.

Level 1 — помощь водителю. Автомобили такого уровня могут сами ускоряться или тормозить. Если на машине установлен круиз-контроль — это Level 1. Сюда же можно отнести некоторые системы автопарковки, когда водитель нажимает кнопку, а машина сама паркуется в сложном месте.

Level 2 — начальный уровень. Здесь машина уже может сама ехать, тормозить и ускоряться, но в разных ситуациях она сразу передаёт управление водителю. Первые Теслы умели как раз вот так.

Level 3 — средний уровень. Машина справляется почти со всеми ситуациями, но водитель всё равно нужен, чтобы среагировать, если что-то пойдёт не так. Сейчас это стало стандартом, и большинство беспилотных машин так умеют.

Level 4 — высокий уровень. В теории тут уже можно отпустить руль — машина сама со всем справится, а если нет — просто остановится. Но на практике водитель всё равно нужен — мало ли что, вдруг машина не сможет правильно среагировать и передаст управление. Самые современные беспилотники — здесь, их работу мы и будем разбирать.

Level 5 — полный автопилот. Можно ездить не держась за руль, можно сесть на пассажирское сиденье или вообще убрать руль из машины. Так пока никто не умеет, кроме робокаров-грузчиков на складах и закрытых площадках, где нет людей.

Что нужно для работы беспилотного авто

Чтобы превратить обычную машину в беспилотную, в неё нужно установить дополнительное железо и алгоритмы:

  • радар;
  • лидар;
  • камеры;
  • датчики погодных условий;
  • датчики работы основных узлов автомобиля;
  • система компьютерного зрения и распознавания образов;
  • алгоритмы принятия решений — что машина должна сделать в разных штатных и нештатных ситуациях.

Инженеры чаще всего так и делают — берут серийный автомобиль, навешивают на него всё это железо и ставят внутрь компьютер для обработки сигналов и команд.

Беспилотный автомобиль Яндекса на базе серийной Тойоты. На крыше видны основные датчики, но это не всё, что нужно, чтобы машина стала беспилотной
Беспилотный автомобиль Яндекса на базе серийной Тойоты. На крыше видны основные датчики, но это не всё, что нужно, чтобы машина стала беспилотной

Радар

Задача радара — провести первичную разведку того, что находится вокруг машины.

Основной радар на беспилотной машине всё время крутится на крыше, посылает радиоимпульсы и смотрит, какие из них вернулись раньше других. Чем раньше вернулся импульс — тем ближе объект к радару. Радар крутится быстро, и алгоритм анализирует изменения в сигналах. Так машина примерно понимает:

  • какое расстояние до каждого объекта;
  • что из этого движется, а что не движется.

Это очень грубые данные, но благодаря им машина понимает, на чём нужно сосредоточиться, а что пока не представляет опасности. Ещё есть несколько радаров спереди и сзади автомобиля — они контролируют скорость и расстояние до машин спереди и сзади.

-3

Лидар

Лидар — это более крутая версия радара, построенная на лазерах. Вместо радиосигнала лидар посылает лазерные лучи и моментально узнаёт точное расстояние до объекта:

-4

Но главный плюс лидара в том, что он позволяет строить трёхмерную модель окружающего пространства с точностью ±1 сантиметр. Для этого лидар сканирует пространство 50—100 раз в секунду, совмещает данные и формирует трёхмерное изображение:

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

Камеры

Задача камер в беспилотных авто — получать картинку вокруг машины, чтобы с ней могли потом работать алгоритмы распознавания образов. Обычно в машины ставят несколько камер для кругового обзора, камеру для анализа дорожного покрытия и несколько дополнительных камер для увеличения обзора.

Именно от камер и алгоритмов обработки зависит то, как машина будет вести себя на дороге. Дело в том, что вся нынешняя разметка, знаки и сигналы направлены на визуальное восприятие — водитель их видит и принимает правильное решение. Чтобы компьютер мог делать то же самое, ему нужно научиться видеть окружающий мир так, как его видит человек.

В камерах инженеры всё время ищут баланс между качеством картинки и скоростью передачи сигнала. Чем качественнее видео, тем больше битов нужно для кодирования такого потока, а значит, алгоритму нужно больше времени, чтобы получить готовый кадр. Наоборот тоже работает: чем хуже и проще картинка, тем быстрее она попадает в обработку, но точность распознавания там тоже хуже.

Алгоритмы компьютерного зрения

Компьютер постоянно распознаёт кадры, поступающие с камер, чтобы найти на них что-то знакомое:

  • другие автомобили;
  • пешеходов;
  • дорожные знаки;
  • разметку;
  • здания и деревья;
  • типичные препятствия, например столб, шлагбаум или открытый люк.

Эта информация потом используется компьютером, чтобы понять — можно тут проехать или нет с соблюдением всех правил дорожного движения.

Как «видит» машина окружающий мир — зависит от алгоритма, который там используется:

Компьютер нашёл все припаркованные машины, разметку, шлагбаум и принял решение остановиться
Компьютер нашёл все припаркованные машины, разметку, шлагбаум и принял решение остановиться

Технология распознавания Nvidia — выделены машины, светофоры и дорожные знаки
Технология распознавания Nvidia — выделены машины, светофоры и дорожные знаки

Датчики погоды

Машине всё время важно знать, в каком состоянии находится дорога, для этого она использует камеру, направленную вниз, и датчики погоды. Например, если идёт дождь, то компьютер вносит поправки в коэффициент сцепления шин с дорогой и пересчитывает возможную скорость движения. Температурный датчик помогает понять, возможен ли гололёд, а от датчика освещённости зависит максимальная скорость — ночью машина будет ехать медленнее, чем днём.

Система управления основными узлами автомобиля

Чтобы компьютер мог управлять машиной, её нужно доработать — добавить блоки управления на основные части:

  • педали газа и тормоза,
  • руль,
  • поворотники,
  • фары и фонари,
  • сигнал клаксона.

Благодаря этому компьютер может делать всё то, что делает настоящий водитель: управлять машиной и подавать сигналы остальным участникам дорожного движения. В современных серийных машинах всем, кроме торможения, можно управлять электронно, а в электрокарах даже это можно сделать с помощью бортового компьютера. Почти все современные беспилотные авто — электрические, потому что ими гораздо проще управлять: достаточно подключить блок управления к внутренней проводке машины.

Алгоритмы принятия решений

Это самый важный компонент в любой беспилотной машине — от него зависит, что будет делать машина в любой ситуации:

  • как объехать препятствие;
  • когда включать поворотник;
  • когда нужно снизить скорость перед поворотом;
  • что делать, если на дорогу внезапно выбежит человек.

Для этого используются линейные алгоритмы, нейросети и самообучающиеся алгоритмы — они обрабатывают огромный поток данных со всех радаров, камер и датчиков и принимают решение, что делать дальше. Это позволяет избежать аварии в сложных ситуациях — посмотрите на эту подборку, где автопилот спасает жизни водителей, пешеходов и даже животных:

Но если с такими ситуациями компьютер уже справляется, то с остальными всё пока сложно. И это нас приводит к моральной проблеме беспилотных машин.

Моральная проблема беспилотных машин

Существует принципиальная проблема, которую не могут решить разработчики беспилотных авто — что делать, когда ситуация угрожает жизни пассажиров или пешеходов? Классический пример — едет такая машина с двумя пассажирами, на дорогу внезапно выбегают дети, а единственный способ избежать столкновения с ними — увести машину в столб.

Это не вопрос автоматизации, программирования и алгоритмов — в современном виде инженер может запрограммировать любое поведение машины, и она это исполнит (в рамках законов физики). Проблема в том, что люди ещё не сталкивались с вопросом, как алгоритму доверить такой сложный моральный выбор, связанный с жизнью людей, поэтому ни у кого нет правильного ответа. По этой причине все автомобили с подобными системами до сих пор требуют, чтобы водитель держал руки на руле — и в сложной ситуации сам принял решение.