habrahabr

Как гироскопом на руле машину измеряли

  • суббота, 5 апреля 2014 г. в 03:10:37
http://habrahabr.ru/post/218029/


И не только к рулю был привязан гироскоп! Второй был на ступне, а третий притянут резиновыми кольцами к крышке пепельницы. Все эти ухищрения — для того, чтобы узнать, не «лагает» ли руль и не «тупит» ли педаль газа.

Хотя руль механически связан с колесами, а педаль газа — с дроссельной заслонкой, автомобиль реагирует на команды водителя не сразу. Особенно если коробка передач автоматическая, а электроника «тупит». Задержки значительно затрудняют управление, могут приводить к нежелательным колебаниям. Поэтому важно знать, какова скорость реакции автомобиля на команды водителя.

Первый способ нахождения задержек — использовать данные из порта OBD (On-Board Diagnostics). Этот порт соединен с диагностической шиной (CAN bus) автомобиля. Именно она используется в сервисе для чтения кодов ошибок работы двигателя и трансмиссии. Также она содержит информацию о текущих оборотах двигателя, расходе топлива, угле педали газа, открытии дроссельной заслонки и т.п.
Чтобы подключиться к шине автомобиля я купил типичный китайский «obd reader” за тысячу рублей.

Этот прибор можно подсоединить к любому современному автомобиль. Однако, дешевый считыватель не дает больше информации чем на приборах автомобиля. Т.е. для наших целей он бесполезен. Да и в целом с диагностическим портом и шиной есть ряд проблем:
  • закрытые протоколы и стандарты данных в шине
  • неизвестная точность/погрешность данных
  • непредсказуемые задержки
  • я в этом ничего не понимаю
  • Поэтому было решено собрать собственные измерительные приборы из подручных гироскопов и ардуин.


Техника измерения


Первый гироскоп был “надежно” привязан к рулю малярной липкой лентой. Он определял угол поворота руля. Второй гироскоп притянут к ноге водителя резинками для волос. Он передавал нажатие на педаль тормоза/газа. Последний прибор был закреплен в салоне. Он кроме гироскопа имел аккселерометр и собирал данные с остальных датчиков. Затем данные отправлялись на ноутбук по виртуальному COM порту через usb.



Как подсказывает капитан очевидность, для измерения задержек необходимо синхронизировать время на всех датчиках. Сейчас синхронизация релизована “влоб”: принимающий датчик вычитает из времени поступления сигнала (определяем по прерыванию от беспроводного модуля) магическую константу — время необходимое на отправку и прием данных.



Чтобы определить эту магическую константу жетско прижал датчики друг к другу и повращал. Задержка между показаниями как раз и дает ту самую “магическую константу”.

О датчиках


Собрано два модуля на базе ардуино уно:
  • Дополнительная схема (шилд) для прототипирования, насаженный сверху на ардуину;
  • гироскоп на базе MPU-6050, впаян в шилд;
  • радио модуль nrf24l01+, впаян в шилд.

Один модель на базе ардуино микро:
  • двусторонняя плата по лазерно-утюжной технологии;
  • плата согласования логических уровней 5v <—>3.3v;
  • гироскоп на базе MPU-6050 по интерфейсу I2C;
  • радио nrf24l01+.


Измерения


Автомобиля у меня нет, поэтому тестировали мы на Mitsubishi Lancer моего друга, Константина.



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

Я в это время сидел с ноутбуком на пассажирском кресле и управлял получением данных с датчиков.
На следующем графике отражены типичные показания гироскопа, притянутого к ноге:



Вибрации от двигателя, рук водителя, дороги — все приводит к шумам. Особенно явно они проявляются на графиках ускорений кузова автомобиля.



Для борьбы с высокочастотными шумами данные предварительно обрабатывались низкочастотным фильтром (функция filtfilt матлаба). Фильтр выбирался так, чтобы не вносить в сигнал дополнительной задержки.

Отмечу, что гироскопы определяют скорость вращения педали газа и руля, а нам нужен угол. Для этого показания с датчиков на руле и ноге были проинтегрированы. Затем для вычисления задержек применялась кросс-корреляция (функция finddelay матлаба).

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



Костя нажал и отпустил педаль газа, а автомобиль отреагировал лишь через 124 миллисекунды. Скорость — около 30км/ч, обороты — 3000об/мин.
На скорости 30км/ч задержка машины на повороты руля по результатам отдельных тестов колебалась в диапазоне 90 — 95мс.



Планы


  • Измерить задержки на других автомобилях;
  • Измерить время с момента нажатия педали газа(или отпускания сцепления) до 100км/ч (или 402м).
  • Измерить силу реакции на руле в повороте (обратная связь);
  • Измерить пульс водителя до/во время/после прохождения трассы.