Вопрос

управление углом поворота руля в Linux

Я пытаюсь отправить на свой автомобиль команды по изменению угла поворота рулевого колеса.
Это довольно новая машина (Renault Espace IV). Для доступа к ней я использую порт OBD2, а также у меня есть ShieldCan. С помощью этих инструментов и pyserial мне удалось считать данные с автомобиля, но не удалось ввести угол поворота.



Есть ли способ это сделать? Как, например, ввести «угол x°» и заставить руль менять угол?



Если с таким автомобилем это невозможно, то на какие характеристики мне следует обратить внимание, чтобы это стало возможным?



Мы будем очень признательны за любую помощь.



РЕДАКТИРОВАТЬ: судя по обсуждениям в комментариях, этот вопрос может быть слишком привязан к типу моего автомобиля, но я думаю, что всем будет интереснее узнать, какими системами/характеристиками должен обладать автомобиль, чтобы мы могли задавать угол поворота руля.



Перефразирую: какой тип автомобиля может получать данные об угле поворота рулевого колеса? Какие технологии для этого нужны? Стоит ли мне искать систему удержания в полосе или есть другие характеристики, которые позволят мне это сделать?



Перевод вопроса с Mechanics Stack Exchange
Лицензия: CC BY-SA (2.5–4.0)
Оригинальный вопрос: https://mechanics.stackexchange.com/questions/38224/control-cars-steering-angle-from-linux

14 Комментариев

  1. То, что вы пытаетесь сделать, — сложная задача, для решения которой потребуется взлом микроэлектроники. Возможно, вам также потребуется считать данные с некоторых чипов, чтобы получить доступ к фирменной флэш-памяти.



    Скорее всего, вам больше всего повезёт с автомобилем с электроприводом, у которого руль не имеет механического соединения с колёсами. Вместо этого у него будет только датчик положения. Вам понадобится осциллограф, чтобы увидеть, какой сигнал этот датчик передаёт на компьютер для определения положения колёс. Как только вы получите нужную волну с правильным напряжением и силой тока, можно приступать к программированию для её имитации. Скорее всего, для управления сигналом вы будете использовать Raspberry Pi, но потенциально можно использовать последовательный порт или даже USB-порт, но тогда вам, возможно, придётся изготовить специальную плату, чтобы обеспечить соответствие напряжения и силы тока.



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



    Ещё один момент, который следует учитывать: если при возвращении к обычному вождению руль находится в неправильном положении, то и управление может быть неправильным. В этом случае может потребоваться исправить ситуацию, сохранив положение руля и восстановив его в компьютере с помощью чего-то, что «наращивает» положение руля до текущего.



    Было бы намного проще просто добавить шкив или цепную передачу на рулевую колонку любого автомобиля и управлять им с помощью серводвигателя.



    С помощью цепного механизма можно модернизировать что угодно, даже Ford Model T. Всё, что вам понадобится, — это серводвигатель, плата управления двигателем и пара переключателей для сигнала о максимальном угле поворота. Компьютер будет вращать колесо вперёд и назад, чтобы определить центр и обе точки остановки. Вам понадобится настройка триммера, так как центровка неидеальна, а вы управляете автомобилем с помощью контроллера PS3.



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



    Если у вас модель с цепным приводом, это будет намного проще.


  1. Пожалуйста, подумайте о том, чтобы создать чат и перенести обсуждение туда. Комментарии становятся довольно длинными. Хотя тема очень интересная.
  1. Это должно быть «как работает электроусилитель руля Infiniti» в связи с комментарием @Pᴀᴜʟsᴛᴇʀ2. Я не уверен, что это возможно с традиционными системами электроусилителя руля. Вам нужно будет установить связь с компьютером, управляющим электроусилителем руля, и попытаться активировать двигатель. Я не уверен, что это возможно без перепрошивки модулей.
  1. Mitchell — это сайт с инструкциями по эксплуатации, доступный по подписке. Если вы введете в поисковике «как работает гидроусилитель руля Infiniti», на сайте Car and Driver вы найдете краткий обзор принципа работы системы.
  1. @Ben отлично! Есть ли у вас ссылки, по которым я мог бы прочитать больше об этом? Что такое «Митчелл»?
  1. Датчик угла поворота рулевого колеса обычно устанавливается на автомобилях с электронной системой стабилизации, такой как EBD / ESP. Датчик используется для считывания данных с рулевого механизма, чтобы определить, какие действия водитель пытается совершить с автомобилем. В этой конфигурации система работает только на считывание данных.



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


  1. На самом деле, если почитать дальше, то можно узнать, что механическое управление рулевым колесом заканчивается на колонке, а всё остальное управляется электроникой. Это довольно круто.
  1. Значит, дело не только в компьютере ? Хм. Значит, @Pᴀᴜʟsᴛᴇʀ2 предполагал, что рулевое управление с электроприводом позволит задавать углы поворота. Но вы говорите, что компьютер здесь ни при чём.
  1. Я бегло просмотрел информацию в Mitchell. Похоже, что за эту функцию отвечают несколько двигателей на рулевой рейке и в рулевой колонке. (в Infiniti)
  1. Я не уверен, что это возможно. Усилитель рулевого управления, электрический или гидравлический, по сути, является мультипликатором крутящего момента. Я также не знаю, как работает функция «оставаться в полосе при дрифте» и есть ли разница в рулевой рейке или всё дело в компьютере. Я предполагаю, что рулевая рейка должна быть устроена иначе.
  1. Нет, у него нет функции удержания в полосе. @Ben, если он гидравлический, то, думаю, я не смогу этого сделать, верно? Тогда предположим, что он электрический. Как я могу это сделать? Я потом разберусь, электрический он или гидравлический
  1. Усилитель рулевого управления может быть гидравлическим или электрическим. Есть ли в автомобиле функция удержания в полосе движения? Она есть в некоторых новых автомобилях с усовершенствованным круиз-контролем.
  1. У него «рулевое управление с усилителем», не так ли?
  1. Есть ли в вашем Renault электроусилитель руля?
Вы уже ответили на этот вопрос