Как стать автором
Обновить

Автопилот своими рукам. Добавляем электронное управление steer-by-wire на обычный автомобиль

Время на прочтение10 мин
Количество просмотров24K
Всего голосов 35: ↑35 и ↓0+35
Комментарии22

Комментарии 22

Цель — довести до тестов автономного руления на машине, дальше будет видно в зависимости от результатов.
То есть управление будет аналоговое, имитацией сигнала датчика? Штатных функций поворота руля в контроллере двигателя ЭУРа нет?
Да, будет аналоговое. Функции возможно есть (на каких-то сидах вроде бы есть система удержания в полосе, значит как-то она с ЭУРом в состоянии общаться). Но во-первых все протоколы закрытые, т.е. их пришлось бы тоже разбирать с нуля с дампов шины на реальном авто, это сложно. А во-вторых там часто ограничения по режимам (например, система удержания в полосе поворачивает руль не более, чем на 5 градусов; автопарковщик крутит рулём только на задней передаче, итд). В illmatics.com/car_hacking.pdf можно почитать примеры проблем с рулением по CAN. Через датчики получается сильно проще, хотя свою систему управления простенькую на удержание нужного угла придется писать.
Удержания в полосе нет, а вот автопарковщик — есть.
А, точно, там только предупреждение о покидании полосы, спасибо!
По поводу полного руления через обычный ЭУР — насколько это вообще надежно? Например в вики написано, что:
При тяжёлом режиме работы, например, при длительном движении по раскисшей грунтовой дороге электродвигатель ЭУР перегревается. Для предовращения его отказа блок управления начинает ограничивать максимальный ток, соответственно руль «затяжеляется», и в конечном итоге отключается совсем. Для восстановления нормальной работы необходимо остановить автомобиль на некоторое время, с целью охлаждения обмоток электродвигателя, после чего работоспособность восстановится.

Кажется это может быть весьма критичным для SDC. То есть по факту в SDC ЭУР будет эксплуатироваться в режиме для которого он не предназначен, что будет приводить к его отказам с большой вероятностью прямо во время рулежки.

Т.е. такая эксплуатация просто не безопасна.
Значит, по раскисшей грунтовой дороге придется взяться за руль самому. Только и всего. Ведь проблема там не в постоянной рулежке, а в том, что при поворотах в таких условиях приходится прикладывать большее усилие.
Когда машина рулит сама, т.е. 100% через ЭУР, то на ЭУР нагрузка в любом случае много выше чем когда рулит человек (так как когда рулит человек, то часть работы делает человек, руками). На такой режим ЭУР просто не рассчитан.

В этом случае езда, скажем, по автодрому (с его обычными упражнениями) будет по нагрузке сопоставима с езде по раскисшей грунтовой дороге с человеком. Это раз.

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

Т.е. да, чтобы хоть как-то начать, ЭУР годится, но будет ряд ограничений в плане маневров и надежности. Чтобы ограничений не иметь, имеет смысл либо что-то допиливать руками (но могут быть проблемы с мощностью потребителя в сети машины), либо брать машину которая сразу приспособлена к полноценной самостоятельной рулежке, в том числе и при нулевой скорости (с фунцией автоматической парковки например).
На cee'd есть опция автоматической паковки: youtu.be/w6in-pDUvqE?t=32s

А вообще будем решать проблемы по мере возникновения :)
Ну, тогда звезды сошлись :-)

Единственное, стоит глянуть отличается ли что-то в плане рулевого механизма и ЭУР у авто с этой опцией и без этой опции (если у вас конечно авто без этой опции).

Но, думаю в любом случае допилить авто без опции до авто с опцией уже вполне посильаная задача, которая может быть решена по мере возникновения проблем :-)

Удачи.
Благодарю!

Там есть пара разных индексов рулевых колонок, но вроде разница только в наличии кнопки старт-стоп вместо ключа и подсветки руля (видимо разница по проводке и механизму блокировки без ключа), надеюсь по собственно приводу разницы нет.
Это конечно фактор, надо держать в голове, но больше в контексте разработки — сырая или недообученная система управления может «шуметь» и пытаться интенсивно дергать руль туда-обратно. В этом её надо ограничивать, иначе усилитель действительно можно убить. Что касаемо эксплуатации, когда и если до неё дойдет дело — то на асфальте современные усилители вполне справляются. Насколько я знаю, та же Udacity ездит на ЭУР вполне себе, Polysync, ещё пара компаний точно. Просёлки же по весне в деревне Гадюкино думаю не покорятся роботам ещё долго :)

В общем если совсем глупостей не творить, нагрузка на эур в обычном городском режиме не должна быть проблемой.
Это конечно фактор, надо держать в голове, но больше в контексте разработки — сырая или недообученная система управления может «шуметь» и пытаться интенсивно дергать руль туда-обратно.

Ага, как это было у Яндекса весной: www.youtube.com/watch?v=1Yc1v-LXl-0
Не будет ли более безопасно поставить суммирующий усилитель в разрыв датчиков усилия, на один из входов которого подать сигнал с ЦАПа, причем настроить так, что на этом входе ноль (еще притянутый резистором к земле) при отсутсвии вашей команды на руление? Тогда при зависании ардуино все будет продолжать работать.
Да, так должно быть надёжнее. Единственное нужно будет ещё как-то сделать, чтобы при зависании напряжение к нулю возвращалось относительно плавно, т.к. в усилителе есть детектор резких скачков напряжения на датчиках, и он просто отключается по нему. Вообще по надёжности тут просто конь не валялся, у меня опыта ноль в электронике и голова сейчас больше болит в направлении «нейросеть хочет уехать в канаву». А по уму конечно надо будет перепроектировать это всё.
«Интеграция с CAN шиной, чтение оттуда текущего угла поворота» — не вижу в существующей системе датчика положения РУ, который мог бы этот угол выдать. Ну хорошо, его можно присобачить.
Но с точки зрения ТАУ, регулируемый параметр у вас — угол поворота, а в качестве уставки вы имеете возможность использовать лишь усилие, приложенное между рулевым валом и карданом к рулевой рейке. Передаточная функция между двумя этими величинами вряд ли тривиальна; даже её детерминированность, в реальных условиях, вызывает большие сомнения.
Думаю, для решения конечной задачи следовало бы построить желаемый в теории контур регулирования, определить требуемые для него характеристики, а затем понять, можно ли доработать имеющееся железо и как это сделать. Навскидку, куда правильнее было бы подменять не сигнал от аналогового датчика, а целиком «мозги» усилителя, чтобы было возможно напрямую рулить его двигателем. Кроме того, могут потребоваться дополнительные датчики ( например, очень полезно было бы знать реальный момент на кардане к рулевой рейке).
«Интеграция с CAN шиной, чтение оттуда текущего угла поворота» — не вижу в существующей системе датчика положения РУ, который мог бы этот угол выдать. Ну хорошо, его можно присобачить.

Датчик есть, жгут проводов у него общий с датчиком момента (сами провода другие естественно). Я даже не стал разбираться, как он работает, т.к. ЭБУ его оцифровывает и с достаточно высокой частотой выдает текущий угол поворота в CAN (см. «Воспроизведение записи шины на стенде» в статье, первые 2 байта пакетов 2B0 и есть угол (в десятых долях градуса вроде бы).

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

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

Думаю, для решения конечной задачи следовало бы построить желаемый в теории контур регулирования, определить требуемые для него характеристики, а затем понять, можно ли доработать имеющееся железо и как это сделать. Навскидку, куда правильнее было бы подменять не сигнал от аналогового датчика, а целиком «мозги» усилителя, чтобы было возможно напрямую рулить его двигателем. Кроме того, могут потребоваться дополнительные датчики ( например, очень полезно было бы знать реальный момент на кардане к рулевой рейке).

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

Публикации