Пролог
В данном тексте изложена концепция распознавания аварии по данным с MEMS акселерометра.
В этом тексте Вы узнаете зачем программисту микроконтроллеров надо знать дифференциальную геометрию.
Постановка задачи
Есть автомобиль с акселерометром внутри. Надо по измерениям с акселерометра определить факт возникновения аварии. При этом следует учитывать следующие ограничения.
1–Предел измеряемого ускорения: 16g.
2–Максимальная частота дискретизации измерений ускорения: 5.376 kHz.
3–Системы координат автомобиля и акселерометра могут не совпадать.
4–Аварию необходимо определить в реальном времени автономно.
5–Акселерометр жестко закреплен к кузову автомобиля.
6--В принятии решения об аварии мы не можем использовать информацию о скорости из CAN или GNSS.
Определения
Прежде чем кидаться распознавать аварии надо понять, что же такое авария?
Авария - опасное техногенное происшествие, создающее на объекте, определенной территории угрозу жизни и здоровью людей и приводящее к разрушению зданий, сооружений, оборудования и транспортных средств, нарушению производственного и транспортного процесса, а также нанесению ущерба окружающей природной среде.
Авария - повреждение, поломка детали, механизма, движущегося средства во время работы или движения
Концепция - система взглядов на что-н.; основная мысль чего-н.
Оси автомобиля Yaw Pitch Roll


Обзор возможных решений распознавания аварии
Подобного рода системы строятся по такой схеме.

В результате обзора источников я выяснил, что в подобного рода системах выделают аварии четырех родов.
Авария первого рода: Удар (Impact)
На этот алгоритм ссылается большинство текстов по автоматической регистрации аварий. Высокое ускорение опасно для здоровья. Поэтому высокое ускорение это авария. Считываем вектор ускорения. Вычисляем длину этого вектора. Получаем скалярную величину. Подаем значение на компаратор. Если превышен порог (threshold) (2g), то интерпретировать это как аварию.
Превышение одного из порогов ускорения по осям автомобиля - это формально авария. По требованиям ГОСТ факт ДТП будет определён, если от акселерометра поступят значения ускорений, превышающие значение 1 g в течение 25 мс по продольной или поперечной оси, и/или значение 2 g в течение 25-35 мс по вертикальной оси для транспортного средства с включенным зажиганием.
Особо хочется отметить работу в тексте “A new decision making algorithm for airbag control”. Автор предлагает измерять не только изменение скорости за интервал времени, но и длину графика ускорения за последний скользящий интервал, чтобы использовать эту величину в качестве критерия принятия решения об столкновении. Очевидно, что если ускорения нулевое, то длина “нити” равна временному интервалу. Как только ускорение уходит в минус и начинаются флуктуации, так сразу длинна графика ускорения сильно увеличивается.

Тут автор применил такой раздел математики как дифференциальная геометрия. Таким образом программа получает количественную оценку эффекта колебаний в графике отфильтрованного ускорения.
Первая величина для принятия решения - это интеграл ускорения за время T1. То есть изменение скорости за T1. Вторая величина для принятия решения это длина графика ускорения за расширенное время T2.
На бугристой дороге параметр L будет высокий, но скорость не изменится.

Достоинства
++Простота алгоритма
++Нужен всего одноосевой акселерометр
Недостатки
–Пороговые значения dV для каждого типа автомобиля надо выбирать свои.
–Нужна стабильная частота дискретизации при чтении акселерометра.
–надо постоянно делать потоковые вычисления. Так и напрашивается применить FPGA
Авария второго рода: Опрокидывание (Vehicle Rollover)
Переворот автомобиля это тоже своего роде авария. Если произошел переворот, то это авария. Надо дать акселерометру понять какое направление является направлением в центр Земли. Периодически вычислять угол между трехмерными векторами. Технически, угол больше 46 градусов и меньше -46 градусов приводит к опрокидыванию транспортного средства. Если абсолютное значение roll или pitch угла больше 46 градусов, то прошивка микроконтроллера может понимать это, как аварию опрокидывания.
Авария третьего рода: Свободное падение (free fall)
В случае падения автомобиля, например с моста или с эстакады (виадука). Автомобиль несколько десятков миллисекунд будет находится в состоянии свободного падения. Акселерометр это увидит как нулевая длина вектора ускорения. До того как транспортное средство разобьется о землю телематика может успеть отправить сигнал бедствия. Так же работают акселерометры в LapTop компьютерах. При обнаружении свободного падения происходит парковка считывателей жесткого диска, чтобы уменьшить вероятность расцарапать диски накопителя.
Авария четвертого рода: Занос (Skid)
Занос тоже можно рассматривать, как аварию. В случае наличия компаса (датчика магнитного поля) и GPS приемника можно зарегистрировать занос. Но это требует очень дорогой GNSS-RTK аппаратуры (сотни евро). Можно поставить 2 GNSS антенны и вычислять по GNSS RTK ориентацию (3ю степень свободы на плоскости). Так два GNSS ресивера будут образовать одноосевой гироскоп. Можно сделать датчик дрифта автомобиля. Измерять угол дрифта в реальном времени, и показывать это на приборной панели автомобиля. Однако средствами только акселерометра занос не определить.
Таблица принятия решения
Комбинируя критерии аварий можно составить вот такую матрицу принятия решения. Это чем-то похоже на Размытую Логику (Fuzzy Logic). Тут красная область это состояние аварий. Зеленая ячейка - это безопасное состояние. Желтая область - предупреждение.

В тексте An Automated System for Accident Detection есть даже более расширенная таблица принятия решения, которая учитывает скорость автомобиля и показания датчика угловой скорости.

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

Суммирую вышесказанное, чтобы научиться определять аварию по акселерометру надо:
1–вычислять углы между векторами в 3D.
2–Сделать алгоритм преобразования координат из системы координат акселерометра (axp,ayp,azp) в систему координат автомобиля (axr,ayr,azr).
3–Надо научиться определять значения ускорения по каждой оси автомобиля. Продольная, поперечная, вертикальная. Также надо определять превышение порогов ускорений для этих осей.
Выводы
В данном тексте представлен обзор алгоритмов определения аварий по акселерометру. Большинство текстов по распознаванию аварий предлагают помимо датчика ускорения использовать ещё и скорость от GNSS приемника, микрофон, данные с CAN шины, гироскоп, датчики вибраций и прочее.
Аварии часто сопровождаются вибрациями. Для анализа спектра вибраций надо акселерометр опрашивать непрерывно (live data) и на максимально доступной частоте (400 Hz). Подобно микрофону. В связи с этим для этого акселерометр следует подключать не по I2C, а по SPI, читать семплы на предельных частотах и одновременно анализировать семплы. В случае обнаружения определённых частот можно косвенно судить о произошедшей аварии.
В случае когда акселерометр подключен по интерфейсу I2C, часть измерений отсчетов ускорения неизбежно теряется, поэтому можно определить разве, что опрокидывание транспортного средства.
Многие тексты рекомендуют детектировать аварии не сколько телематическим блоком, сколько обыкновенным мобильным смартфоном с Android приложением внутри. То есть на уровне приложения (User-Space App).
Словарь
Акроним |
Расшифровка |
ТС |
транспортного средства |
I2C |
Inter-Integrated Circuit |
SPI |
Serial Peripheral Interface |
GPS |
Global Positioning System |
NMEA |
National Marine Electronics Association |
PCB |
printed circuit board |
Ссылки
монографии
№ |
Название |
страниц |
1 |
A new decision making algorithm for airbag control |
8 |
2 |
An Automated System for Accident Detection |
5 |
3 |
Real Time Detection and Reporting of Vehicle Collision |
6 |
4 |
S-CarCrash: Real-time Crash Detection Analysis and Emergency Alert using Smartphone |
7 |
сайты
№ |
Название |
URL |
1 |
Обзор Акселерометра LIS3DH |
|
2 |
Bringing a reliable car crash detection feature to personal electronics |
https://blog.st.com/bringing-car-crash-detection-to-personal-electronics/ |
3 |
Калибровка MEMS Акселерометра [Часть 2] |
|
8 |
||
4 |
Геометрия Стенда для Калибровки MEMS Акселерометра |
|
5 |
<-- |
|
6 |
Портал скачивания научных текстов |
|
7 |
Машинное обучение в навигационных устройствах: определяем маневры машины по акселерометру и гироскопу @lamerman |