Как можно обнаружить падение устройства (телефона) с помощью его 3-осевого акселерометра?

Я работаю над приложением для Android, чтобы использовать встроенный 3-осевой акселерометр, чтобы определить, упадет ли телефон.

Я погуглил и обнаружил, что если следующее значение меньше 2:

а "=" Икс 2 + у 2 + г 2

(где Икс , у , г это показания акселерометра)

Тогда устройство считается свободно падающим.

Я не уверен, как этот подход обнаруживает свободное падение и где условие а < 2 родом из.

Кто-нибудь может это объяснить?

Привет! Чтобы обсудить с ответчиком, прокомментируйте его ответ. Проверьте историю изменений (щелкнув ссылку «отредактировано X назад»), чтобы найти свои замечания.

Ответы (1)

TL;DR : Акселерометр записывает Икс , у , г проекции ускорения а р "=" а г , где а полное ускорение объекта.

Когда объект находится в свободном падении, зарегистрированное ускорение а р равен нулю до тех пор, пока сила сопротивления воздуха не станет достаточно большой. Увеличение скорости может привести к ускорению сопротивления воздуха до 1 м с 2 (0,1 G) на падении с высоты 1–1,5 метра. Записанный модуль ускорения рассчитывается как Икс 2 + у 2 + г 2 ( Икс , у , г - показания акселерометра). Это необходимая информация для обнаружения свободного падения вашего телефона.

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

Я имею в виду, рассмотрим эту простую картинку, которую вы могли видеть в школьном учебнике:

Как мы можем описать эти фотографии?

  1. Объект статичен. Если этот объект — вы, вы можете почувствовать, что вас прижимают к земле. Это нормальная сила. Вы определенно можете чувствовать гравитацию, но вы чувствуете ее только потому, что присутствует нормальная сила.

  2. Объект падает. Опять же, если это вы, вы почувствуете, что плывете (если для простоты не учитывать сопротивление воздуха). Вы не можете почувствовать гравитацию, так как ничто не останавливает ваше движение — вся сила гравитации идет на ваше ускорение, и ничто этому не препятствует.

Это потому, что мы находимся под действием постоянной (для фиксированной высоты над Землей) гравитационной силы. Что это означает?

  1. Если объект не движется, значит, ему что-то мешает . В этом случае что-то останавливает объект с ускорением г "=" 9,8 м с 2 , причем направление вектора ускорения противоположно вектору силы тяжести.
  2. Если объект падает, то это означает, что его либо ничто не останавливает (это свободное падение), либо что-то останавливает объект с ускорением менее г "=" 9,8 м с 2 (точнее, проекция тормозного ускорения на г оси меньше, чем г "=" 9,8 м с 2 )

Благодаря этому определению мы теперь можем перейти к следующему шагу:

Какие данные нам дает акселерометр?

По сути, акселерометр дает нам информацию для трех проекций (x, y, z) записанного ускорения.

Важное замечание : хотя я уже говорил об этом, необходимо понимать, что фактическое ускорение объекта — это не ускорение, регистрируемое акселерометром. Акселерометр регистрирует силу Ф "=" ( а г ) м которая останавливает его от свободного падения, что может включать в себя силу реакции земли или силу сопротивления воздуха, или любую другую силу, приложенную к объекту.

Но для простоты давайте рассмотрим двумерный мир всего с двумя осями: x и y. Здесь вы можете увидеть, какие данные фиксирует акселерометр, когда объект остается на земле и когда он наклонен на 45 градусов (хотя все еще статичен):

Рисовать это и все такое очень весело, но важный вывод: акселерометр рассчитает ускорение примерно г "=" 9,8 м с 2 (вектор, параллельный силе тяжести), если он статичен, т.е. когда он не падает

Рассмотрим еще два примера:

  1. Объект движется к земле с ускорением менее г "=" 9,8 (падение). Это означает, что платформа под объектом также движется с ускорением к земле, но не падает свободно.

  2. Объект движется к земле с ускорением примерно г "=" 9,8 (свободное падение). Это означает, что под объектом нет платформы или какой-либо опоры.

В первом случае общее ускорение, полученное от акселерометра, будет примерно 6,8 м с 2 , во втором случае - ок. 0 м с 2 .

В обоих случаях объект можно считать падающим, так как ускорение меньше г "=" 9,8 м с 2

Итак, какова формула?

Теперь мы можем, наконец, понять формулу.

Полное ускорение по модулю, полученное из ускорения, будет:

| а | "=" Икс 2 + у 2 + г 2

Если формула непонятна, можно сослаться на теорему Пифагора , одну из наших любимых школьных теорем:

Таким же образом можно вычислить длину вектора ускорения, где x, y, z — проекции. Если термин «проекция» неясен, вот краткое объяснение: возьмите палку в солнечный день, ее тень будет ее проекцией.

Как мы помним, можно считать, что устройство падает, если | а | меньше 9,8, но это без учета погрешности расчета и сопротивления воздуха.

Эксперимент

В вашем случае вы упоминаете, что телефон можно считать падающим, если | а | меньше чем 2 . Это верно для грубого приближения (20%), но не обязательно, по крайней мере, для iPhone при небольших падениях (без большого сопротивления воздуха). Я уронил свой iPhone на кровать и измерил следующие ускорения при падении с высоты 1,5 метра:

Икс Д Z т (время)
-0,016 -0,03 -0,151 0,00 с
-0,021 0,015 -0,13 0,04 с
-0,023 0,013 -0,202 0,08 с
-0,016 0,014 -0,245 0,12 с
-0,017 0,017 -0,308 0,16 с
-0,028 0,02 -0,399 0,20 с
-0,017 0,026 -0,462 0,24 с
-0,019 0,023 -0,545 0,28 с
-0,023 0,023 -0,622 0,32 с
-0,031 0,021 -0,717 0,36 с

Таблица 1. Исходные данные акселерометра X/Y/Z.

Рассчитав ускорение по формуле, получим такие значения для начала падения:

Ускорение Ошибка или/и удар сопротивления воздуха
0,154 ~ 1,5%
0,132 ~ 1,3%
0,203 ~ 2%
0,245 ~ 2,4%
0,308 ~ 3,1%
0,4 ~ 4%
0,463 ~ 4,7%
0,545 ~ 5,5%
0,622 ~ 6,3%
0,739 ~ 7,2%

Таблица 2. Расчетное ускорение и его погрешность.

Ошибка (Y) и время (X) на графике

Как мы видим, ошибка меняется по нарастающей.

Интересные наблюдения

Я считаю, что из-за сопротивления воздуха присутствует возрастающая ошибка . Мой телефон огромен, и я уронил его плашмя параллельно земле, что объясняет максимально возможное сопротивление воздуха - именно это Z значения оси говорят нам (я имею в виду, проверьте последний столбец таблицы 1).

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

Заключение

Ошибка в 20% звучит как перебор для обнаружения начала падения.

Хотя, если вы хотите учитывать весь процесс падения, этого может быть вполне достаточно - все зависит от того, насколько замедляется ускорение при падении. Тем не менее, я сомневаюсь, что есть смысл учитывать падение высоты на милю, потому что... телефон вряд ли прослужит долго.

Еще одной интересной задачей будет запись окончания падения. Это не так уж сложно — удар заставит ускорение внезапно подскочить до 5G (50 м с 2 ) и даже больше, что облегчило бы обнаружение. У меня пик около 7,5 G при падении телефона на кровать с высоты около 1 метра.

888 слов, из которых, вероятно, получился бы самый длинный мой ответ.
Мне не удалось понять, почему график ошибки/времени выглядит довольно линейно, по крайней мере, в течение 0,12–0,36 с падения (разве сопротивление воздуха не должно быть как v^2?). Что касается первых 0,00–0,12 с, я полагаю, что, возможно, есть небольшое трение между пальцами после того, как я почти выпустил iPhone, но он не покинул «начальное» положение полностью.
«Когда ваше устройство лежит на вашем столе, или на ладони, или на чем-либо, что не позволяет ему упасть, оно испытывает постоянное ускорение » (курсив наш). Нет, это неправильно, если только вы не имеете в виду, что ускорение равно нулю.
Показания акселерометра явно не являются истинным ускорением (в обычном ньютоновском смысле). Ф "=" м а ); это связано с ускорением, но явно отличается.
@hft да, это справедливо, конечно; я отредактировал сообщение
Хорошо спасибо! Я проголосовал. Это исчерпывающий ответ.
@hft спасибо! Я всегда готов исправить любые ошибки, мне важно дать интересный и полезный ответ
Привет, как ты получил данные с телефона, чтобы сделать таблицы и график? У меня телефон на андроиде. @никаэль
@Носорог привет! К сожалению, у меня нет телефона Android, я скачал приложение «Акселерометр» на свой iPhone. Но вы можете поискать в Play Store (или в любом другом магазине приложений, который поддерживает ваш телефон) приложение с названием, похожим на «Акселерометр».
@Rhino Я считаю, что Phyphox предлагает это как функцию.
@никаэль. Большое спасибо за ваш хорошо продуманный ответ, и это много значит для меня, я обобщил свое понимание в своем вопросе, не могли бы вы поправить меня, если я неправильно понял
@tomtom Я присоединюсь к вам в специальном чате, который вы создали, чуть позже. Пожалуйста, переместите свои баллы из вопроса в чат, на Stack Exchange нехорошо редактировать ответ в вопросе (поэтому вам лучше удалить последнее редактирование)
@tomtom Я ответил на ваши вопросы в чате . Если все в порядке и вы удовлетворены ответом, пожалуйста, нажмите на галочку под подсчетом голосов (оценкой) моего ответа.