Беспилотный автомобиль — это когда машина сама умеет ездить по дорогам общего пользования, как будто ей управляет настоящий водитель. Она сама выбирает маршрут, следит за обстановкой на дороге, объезжает препятствия и не нарушает правила дорожного движения. Разбираемся, как это работает.
Уровни автопилота
В зависимости от того, что машина умеет делать сама, инженеры разделили автопилот на 6 уровней:
Level 0 — автопилота нет, водитель всё делает сам. Газель-маршрутка — это как раз машина с автопилотом Level 0.
Level 1 — помощь водителю. Автомобили такого уровня могут сами ускоряться или тормозить. Если на машине установлен круиз-контроль — это Level 1. Сюда же можно отнести некоторые системы автопарковки, когда водитель нажимает кнопку, а машина сама паркуется в сложном месте.
Level 2 — начальный уровень. Здесь машина уже может сама ехать, тормозить и ускоряться, но в разных ситуациях она сразу передаёт управление водителю. Первые Теслы умели как раз вот так.
Level 3 — средний уровень. Машина справляется почти со всеми ситуациями, но водитель всё равно нужен, чтобы среагировать, если что-то пойдёт не так. Сейчас это стало стандартом, и большинство беспилотных машин так умеют.
Level 4 — высокий уровень. В теории тут уже можно отпустить руль — машина сама со всем справится, а если нет — просто остановится. Но на практике водитель всё равно нужен — мало ли что, вдруг машина не сможет правильно среагировать и передаст управление. Самые современные беспилотники — здесь, их работу мы и будем разбирать.
Level 5 — полный автопилот. Можно ездить не держась за руль, можно сесть на пассажирское сиденье или вообще убрать руль из машины. Так пока никто не умеет, кроме робокаров-грузчиков на складах и закрытых площадках, где нет людей.
Что нужно для работы беспилотного авто
Чтобы превратить обычную машину в беспилотную, в неё нужно установить дополнительное железо и алгоритмы:
- радар;
- лидар;
- камеры;
- датчики погодных условий;
- датчики работы основных узлов автомобиля;
- система компьютерного зрения и распознавания образов;
- алгоритмы принятия решений — что машина должна сделать в разных штатных и нештатных ситуациях.
Инженеры чаще всего так и делают — берут серийный автомобиль, навешивают на него всё это железо и ставят внутрь компьютер для обработки сигналов и команд.
Радар
Задача радара — провести первичную разведку того, что находится вокруг машины.
Основной радар на беспилотной машине всё время крутится на крыше, посылает радиоимпульсы и смотрит, какие из них вернулись раньше других. Чем раньше вернулся импульс — тем ближе объект к радару. Радар крутится быстро, и алгоритм анализирует изменения в сигналах. Так машина примерно понимает:
- какое расстояние до каждого объекта;
- что из этого движется, а что не движется.
Это очень грубые данные, но благодаря им машина понимает, на чём нужно сосредоточиться, а что пока не представляет опасности. Ещё есть несколько радаров спереди и сзади автомобиля — они контролируют скорость и расстояние до машин спереди и сзади.
Лидар
Лидар — это более крутая версия радара, построенная на лазерах. Вместо радиосигнала лидар посылает лазерные лучи и моментально узнаёт точное расстояние до объекта:
Но главный плюс лидара в том, что он позволяет строить трёхмерную модель окружающего пространства с точностью ±1 сантиметр. Для этого лидар сканирует пространство 50—100 раз в секунду, совмещает данные и формирует трёхмерное изображение:
Камеры
Задача камер в беспилотных авто — получать картинку вокруг машины, чтобы с ней могли потом работать алгоритмы распознавания образов. Обычно в машины ставят несколько камер для кругового обзора, камеру для анализа дорожного покрытия и несколько дополнительных камер для увеличения обзора.
Именно от камер и алгоритмов обработки зависит то, как машина будет вести себя на дороге. Дело в том, что вся нынешняя разметка, знаки и сигналы направлены на визуальное восприятие — водитель их видит и принимает правильное решение. Чтобы компьютер мог делать то же самое, ему нужно научиться видеть окружающий мир так, как его видит человек.
В камерах инженеры всё время ищут баланс между качеством картинки и скоростью передачи сигнала. Чем качественнее видео, тем больше битов нужно для кодирования такого потока, а значит, алгоритму нужно больше времени, чтобы получить готовый кадр. Наоборот тоже работает: чем хуже и проще картинка, тем быстрее она попадает в обработку, но точность распознавания там тоже хуже.
Алгоритмы компьютерного зрения
Компьютер постоянно распознаёт кадры, поступающие с камер, чтобы найти на них что-то знакомое:
- другие автомобили;
- пешеходов;
- дорожные знаки;
- разметку;
- здания и деревья;
- типичные препятствия, например столб, шлагбаум или открытый люк.
Эта информация потом используется компьютером, чтобы понять — можно тут проехать или нет с соблюдением всех правил дорожного движения.
Как «видит» машина окружающий мир — зависит от алгоритма, который там используется:
Датчики погоды
Машине всё время важно знать, в каком состоянии находится дорога, для этого она использует камеру, направленную вниз, и датчики погоды. Например, если идёт дождь, то компьютер вносит поправки в коэффициент сцепления шин с дорогой и пересчитывает возможную скорость движения. Температурный датчик помогает понять, возможен ли гололёд, а от датчика освещённости зависит максимальная скорость — ночью машина будет ехать медленнее, чем днём.
Система управления основными узлами автомобиля
Чтобы компьютер мог управлять машиной, её нужно доработать — добавить блоки управления на основные части:
- педали газа и тормоза,
- руль,
- поворотники,
- фары и фонари,
- сигнал клаксона.
Благодаря этому компьютер может делать всё то, что делает настоящий водитель: управлять машиной и подавать сигналы остальным участникам дорожного движения. В современных серийных машинах всем, кроме торможения, можно управлять электронно, а в электрокарах даже это можно сделать с помощью бортового компьютера. Почти все современные беспилотные авто — электрические, потому что ими гораздо проще управлять: достаточно подключить блок управления к внутренней проводке машины.
Алгоритмы принятия решений
Это самый важный компонент в любой беспилотной машине — от него зависит, что будет делать машина в любой ситуации:
- как объехать препятствие;
- когда включать поворотник;
- когда нужно снизить скорость перед поворотом;
- что делать, если на дорогу внезапно выбежит человек.
Для этого используются линейные алгоритмы, нейросети и самообучающиеся алгоритмы — они обрабатывают огромный поток данных со всех радаров, камер и датчиков и принимают решение, что делать дальше. Это позволяет избежать аварии в сложных ситуациях — посмотрите на эту подборку, где автопилот спасает жизни водителей, пешеходов и даже животных:
Но если с такими ситуациями компьютер уже справляется, то с остальными всё пока сложно. И это нас приводит к моральной проблеме беспилотных машин.
Моральная проблема беспилотных машин
Существует принципиальная проблема, которую не могут решить разработчики беспилотных авто — что делать, когда ситуация угрожает жизни пассажиров или пешеходов? Классический пример — едет такая машина с двумя пассажирами, на дорогу внезапно выбегают дети, а единственный способ избежать столкновения с ними — увести машину в столб.
Это не вопрос автоматизации, программирования и алгоритмов — в современном виде инженер может запрограммировать любое поведение машины, и она это исполнит (в рамках законов физики). Проблема в том, что люди ещё не сталкивались с вопросом, как алгоритму доверить такой сложный моральный выбор, связанный с жизнью людей, поэтому ни у кого нет правильного ответа. По этой причине все автомобили с подобными системами до сих пор требуют, чтобы водитель держал руки на руле — и в сложной ситуации сам принял решение.