«Что вы тут делаете?» – спросил полицейский, и Долгов просто улыбнулся и объяснил, что тестирует технологию для Google. В Маунтин-Вью этого, слава богу, достаточно, чтобы удовлетворить любопытство офицера полиции.
Чтобы научить автомобиль-робот водить, нужно с нуля привить ему навыки, которыми обладает человек: взять, к примеру, тщательно выверенную последовательность действий при нажатии педали тормоза. Большинство водителей никогда не давят резко на педаль что есть силы. Наоборот, они наращивают усилие постепенно, мягко вводя машину в режим замедления, постепенно нарастающего до момента полной остановки – и тогда водитель снимает усилие мгновенно. Долгов воспроизвел в программном обеспечении Chauffeur подобную кривую.
Далее возникает проблема постоянного подруливания на дороге, которое знакомо любому водителю из его собственного опыта. Никто не держится неподвижно в центре своей полосы, вместо этого он (или она) все время слегка «плавает» внутри нее под действием тысячи внешних факторов. Машины, припаркованные у правой обочины, заставляют сместиться влево. Приближающиеся по встречной – вправо. Мелкая коррекция траектории проводится много раз в минуту и является необходимым условием того, что пассажиры чувствуют себя в безопасности.
Один из заездов Prius, в котором машина показала обнадеживающие результаты, проходил на летном поле Федерального аэродрома Моффетт, всего в нескольких минутах к востоку от кампуса Google. Как только Prius научился без проблем кататься по взлетно-посадочной полосе аэропорта, Урмсон решил, что пора выводить машину на дороги общего пользования. Но было ли это, по крайней мере, законно? Адвокаты компании внимательно исследовали законодательство штата в части дорожного движения и обнаружили, что оно не запрещает компьютеру управлять автомобилем. Закон безоговорочно требовал, чтобы человек находился в водительском кресле, но ни слова не говорил о том, что тот должен управлять автомобилем.
В мае 2009 года Урмсон выбрал участок дороги общего пользования для первого испытания Prius – центральную автомагистраль Маунтин-Вью. Довольно логичный ыбор: она была прямой, содержалась в хорошем состоянии, и посередине ее тянулся широкий бульвар, надежно изолирующий робота от встречного трафика. Ради безопасности других водителей Урмсон организовал сопровождение Prius несколькими машинами, следовавшими за ним сзади и образовывавшими барьер между роботом и остальными участниками движения. Долгов занял место на пассажирском сиденье, Урмсон вывел машину на магистраль, активировал систему автоматического управления – и обнаружил, что машина безостановочно мечется по полосе. Любой незначительный ориентир: фонарный столб, почтовый ящик, знак парковки – заставлял ее рыскать то вправо, то влево.
Во время подготовки к DARPA Urban Challenge на подобные вещи не обращали внимания, потому что автономные автомобили не были рассчитаны на перевозку пассажиров. Но в проекте Chauffeur их комфорт и безопасность превратились в обязательное условие. Долгов внес небольшие изменения в код, в основном сводившиеся к запрету Prius смещаться внутри полосы, кроме случаев реагирования на стационарные препятствия в непосредственной близости от себя. На следующий день они снова выехали на дорогу. Правка сделала свое дело: ехать стало значительно удобнее. «Незаметно для себя мы проехали одну милю, а затем и десять», – вспоминает Урмсон.
Потом за спиной остались и сто, и тысяча миль. Тогда, весной 2009 года, стало очевидно, что таким образом группа пытается избежать по-настоящему трудной задачи – Larry1K, маршрутов примерно по 160 км каждый, предложенных Пейджем и Брином в качестве проверки возможностей машины. «Наступил момент, когда мы сказали друг другу: давайте попробуем», – вспоминает Урмсон. Первой трассой они выбрали участок Тихоокеанского шоссе (Pacifc Coast Highway) от Кармел-бай-те-Си до Сан-Луис-Обиспо. На первый взгляд он мог показаться самым опасным: на некоторых его участках все время дул сильный ветер с гор, при этом с одной стороны дорога была ограничена вертикальной скалой, а с другой – легким ограждением или просто стальной полосой. Больше ничто не отделяло машину от многометрового обрыва – и волн Тихого океана далеко внизу.
Но Урмсон предположил, что на самом деле задача относительно проста. Дорога содержалась в хорошем состоянии, с четкой разметкой. Многие участки – прямые с относительно слабым движением. На шоссе почти не было перекрестков – а следовательно, и светофоров. Пока машина держится между белой и желтой линиями разметки, понял Урмсон, все должно быть в порядке. «По сути, нужно было просто все время ехать в своей полосе, остановиться на паре светофоров – вот и все», – говорит Урмсон, который тем не менее признавал, что любая ошибка была чревата роковым падением со скал в Тихий океан: «Было интересно и страшно одновременно».
После того как по дороге прошел автомобиль со сканирующим оборудованием, Долгов обработал результаты специальным программным обеспечением, прокладывающим точную траекторию для Prius. Иными словами, оно рассчитывало, в какой точке должен находиться автомобиль в любом месте дороги. Затем Долгов и его жена Анна, работавшая в Chauffeur в группе тестирования, сели в машину и отправились вдоль побережья. Долгов вел, а Анна корректировала найденную программой траекторию. Если ей казалось, что расчетная точка находится слишком близко к краю дороги, Анна простым нажатием кнопки на клавиатуре ноутбука смещала ее вправо или влево в пределах десяти сантиметров.
Во время первой попытки Prius преодолеть трассу в машине находились Урмсон, Долгов и Левандовски. Они выехали утром. Буквально через несколько миль стало очевидно, что та часть кода, которая отвечает за торможение перед входом в поворот, нуждается в правке. Долгов написал его таким образом, что до вершины кривой машина не тормозила вообще. В результате она входила в поворот слишком быстро, затем резко тормозила и черепашьим темпом проходила вторую половину – мягко говоря, пугающее поведение на извилистой дороге вдоль тихоокеанского побережья. На каждом повороте Урмсон сжимал кулаки так, что белели костяшки. Но все трое сопротивлялась искушению отключить автопилот: для боевого духа команды было бы очень хорошо пройти один из десяти маршрутов с первой попытки. Со временем Prius нагнал медленно движущийся грузовик с пивом, и, когда тот тормозил на поворотах, робот тоже замедлялся, потому что был запрограммирован держать дистанцию. Пройдя довольно большое расстояние, Prius уперся в участок, где велись ремонтные работы и движение регулировал один из рабочих. Сигналы регулировщика представляли собой одну из сложнейших задач для автономных автомобилей. Дополнительное затруднение заставило Урмсона отключить автопилот и взять управление на себя.
Они не сдались. Наоборот, они вернулись на старт. Долгов поправил код так, чтобы Prius заблаговременно сбрасывал скорость на участке перед вершиной кривой. Во второй половине того же дня они предприняли вторую попытку. Новое поведение машины в поворотах воспринималось гораздо спокойнее. Когда они достигли точки, где при первой попытке был отключен автопилот, у дорожных рабочих уже закончился рабочий день. Для движения были открыты две полосы, как положено, и регулировщика уже не было. Со второй попытки они благополучно достигли Сан-Луис-Обиспо. 212 км извилистой дороги по обрыву над океаном – и машина проекта Chauffeur прошла их в полностью автономном режиме.