Казалось бы, предельно простая штука, но на самом деле все не так просто и сейчас объясню почему.
Ручной газ
Люди были ленивыми ещё до изобретения круиз-контроля, поэтому для начала они придумали такую штуку как ручной газ.
Во многих старых машинах она есть. Выглядит просто: ручка на торпеде которую можно вытягивать. Она управляет дроссельной заслонкой точно также как педаль газа. То есть это параллельный орган управления, а отличие от педали газа в том что эту ручку можно оставить в любом промежуточном положении. То есть мы разогнались до какой-то в нужной нам скорости, вытянули ручку соответствующего текущему положению педали газа и все, машина едет с постоянным газом.
Конечно же скорость будет меняться на подъемах, спусках и так далее. То есть мы чуть-чуть будем ее терять на подъемах и чуть-чуть будем разгоняться на спусках. Но если мы едем по более или менее равнинной дороге то скорость будет плюс минус одна и этаже. Это было очень удобно, но к сожалению с ростом трафика эта фишка становилось все более бесполезной, потому что когда много соседей по потоку мы начинаем им мешать своими постоянными притормаживаниями и разгонами. И вот в этом месте пришлось изобрести круиз-контроль.
Круиз контроль
Как же работает круиз? Если просто подумать из общих соображений, как он должен работать?... Вот мы разогнались, нажали на кнопочку и круиз понимает что текущую скорость надо поддерживать. Соответственно, если скорость по каким-то причинам снизилась, ветер встречный дул, в гору дорога пошла, неважно. Когда скорость снизилась, очевидно нужно добавить газу, чтобы вернуть скорость. Если скорость наоборот выросла каким то причинам, то педальку надо приотпустить. Все очень просто.
Сложности начинаются тогда, когда мы пытаемся формально объяснить мозгам автомобиля насколько именно надо нажимать педаль газа, ну или отпускать ее чтобы поддерживать одну и ту же скорость.
Вариант первый
Первое что приходит в голову: привязать линейно нажатии на педаль газа к отклонению к установки от скорости которую мы назначили. Вот допустим, что мы на скорости 100 километров час нажали на кнопку и круиз должен эту скорость поддерживать. Если скорость снизилась до 99 то компьютер должен вирутально нажать на педаль на условный миллиметр, если снизилась до 98 то на 2 миллиметра. И так далее.
И на горизонтальной дороге такая схема вполне себе будет работать. Но представьте что мы едем, едем, у нас все хорошо и начинается подъем. Чтобы забраться с той же скоростью педаль надо нажать на 5 миллиметров, а иначе мы потеряем скорость.
Как будет работать в этом случае вот наш круиз? Он увидит что скорость упала до 99 и нажмёт педаль лишь на миллиметр, скорость продолжит естественно при этом падать, тяги не хватает. На 98 он нажмет на 2 миллиметра там и так далее. И только когда скорость упадет до 95, он нажмет на нужные 5 миллиметров и машина даже начнет разгоняться. Но как только она разгонится до 96 круиз наш отпустит педальку на миллиметр и все, разгон прекратится.
То есть, по сути мы получим ну почти тот же самый ручной газ. В горку мы будем ехать медленнее под горку мы будем ехать быстрее, потому что когда мы двигаемся вниз по склону логика ровно та же, только в обратную сторону
В общем точность отвратительная. Плюс когда начнется спуск, там еще и нешуточный разгон будет из-за такой вот странной логики.
То есть, в общем как то это работать будет, но при том что мы назначили 100 километров в час скорость мы будем болтаться в диапазоне от 95 до 110.
Второй вариант
Все тоже самое, но немножечко модифицируем логику. Когда падает скорость мы нажимаем потихонечку на педаль, чем сильнее падает тем сильнее нажимаем, здесь все тоже самое. Но когда разгон все-таки начнется, мы педаль не отпускаем, мы считаем это положение педали при котором все таки начался разгон - новым эталонным положением педали газа.
Вернемся к нашему примеру. Когда мы назначили 100 и надо нажать на педаль на 5 миллиметров, когда мы ее дожмем с этим положением педали газа мы доедем обратно до ста километров в час, и даже наверное чуть-чуть проскочим мимо. Работает ну тоже не фонтан в принципе, да но уже гораздо лучше, потому что машина все-таки научилась поддерживать постоянную скорость, пусть она и болтается на изгибах дороги туда-сюда.
Вариант третий
А можно ли как-то обойтись без существенного замедления? В принципе можно, но придётся модифицировать логику, а именно когда у нас скорость упала со 100 до 99, мы добавляем тот самый миллиметр и наблюдаем что при этом происходит. Если скорость начала расти и ушла обратно на сто, то значит все хорошо. А вот если она продолжила падать, то мы понимаем что это как то совсем мало, что мы едем в гору. И в этом случае мы можем оценить время за которые у нас скорость упала с 99 до 98 и исходя уже из этого времени тоже добавить газу так чтобы вернуться к ста. Человек когда управляет ногами, он довольно неплохо делает это подсознательно, а вот научить круиз гораздо сложнее, но в принципе вполне реально. И вот в этом случае наш круиз будет гораздо точнее держать скорость.
Вариант четвертый
Есть еще 4 схема, привинчиваем к круизу акселерометр и кучу других датчиков которые оценивают что происходит. И по сложным алгоритмом вычисляем насколько в текущих условиях надо давить на педаль. Это все классно, но на самом деле с какого-то момента по-большому счету теряет смысл. Поэтому большинство круизов работает по второму и первому варианту.
Надо понимать что у круиза нет дара ясновидения, он не видит в отличии от нас что сейчас начнется подъем. Он это понимает непосредственно только тогда, когда подъем по факту уже начался и скорость упала. То есть, он всегда лечит следствие.
Можно ли при этом сделать круиз который не будет допускать отклонения больше чем на один километр в час? Да можно, если он будет реагировать даже на небольшое изменение скорости но такой круиз неминуемо будет достаточно дёрганым. У меня была машина pajero sport 2 поколения. Там круиз, вот просто зубами держал скорость. И не всегда это было приятно, когда едешь по дороге с более или менее сложным рельефом это было не очень-то комфортно. Но если мы хотим достичь комфорта, придется смириться с тем что скорость может плавать в относительно небольшом диапазоне, никуда от этого не убежишь. К сожалению здесь конструкторам приходится искать компромисс между точностью и комфортом.
Если скорость сильно упадет, как тогда отреагирует круиз?
Допустим по каким-то причинам у нас машина замедлилась до 60 километров в час, например грузовик догнали и нам пришлось притормозить. Наш круиз по любому из приведенных выше алгоритмов увидит что у нас недостаточно скорости аж 40 километров в час, и что он сделает? Правильно, он вдавит педаль в пол, это может быть очень опасно. Поэтому круизы, когда они видят что скорость фактическая сильно отличается от заданной он разгоняет машину плавно.
Адаптивный круиз-контроль
В современных автомобилях, даже в не очень дорогих круиз умеет не только разгонять машину путем нажатия на в виртуальную педаль газа, но и тормозить на спусках путем переключения передач в автоматической коробке, а в относительно премиальных машинах может даже уметь воздействовать на рабочую тормозную систему. То есть круиз умеет в таких автомобилях воздействовать на две виртуальные педали.
Вернемся к тому с чего начали, с ростом трафика ручной газ вот такого рода автомобилях стал бесполезным потому что ну много соседей по потоку, все начинают друг другу мешать и в общем пришлось изобрести круиз. По мере уплотнения трафика на дорогах круиз становится все более бесполезной штукой, потому что вокруг много машин и все едут с разной скоростью. Поэтому добавляют датчик на морде автомобиля который смотрит что там впереди, и пока можно ехать наши допустим 100 километров в час мы так и едем. Но когда датчик видит что впереди есть машина он начинает ехать за ней с ее скоростью без всякого воздействия на органы управления. Так работает адаптивный круиз-контроль