Значения датчика акселерометра Android

Я играю с датчиком акселерометра на Android Wear. Когда я читаю значения в слушателе, он дает мне массив, например [-19,594337 -19,594337 19,594337]. Я имею в виду, правда? 19 м/с^2 во всех измерениях? Держу пари, Майк Тайсон не может добиться большего. Может ли кто-нибудь объяснить мне, если я делаю что-то не так?

Код просто

public void onSensorChanged(SensorEvent event){ ... event.values ...}

для слушателя TYPE_LINEAR_ACCELERATION.


person Ivan Tamashevich    schedule 20.10.2015    source источник


Ответы (1)


Нет ничего плохого в outout. Результат, который вы получили, называется raw output датчиков. Это означает, что сила гравитации не исключена из выходных данных TYPE_LINEAR_ACCELERATION. Вы должны исключить его самостоятельно.

TYPE_LINEAR_ACCELERATION: измеряет силу ускорения в м/с2, приложенную к устройства по всем трем физическим осям (x, y и z), исключая силу тяжести.

person Apurva    schedule 20.10.2015
comment
Может быть, если телефон движется под одинаковым углом во всех трех направлениях - person Apurva; 20.10.2015
comment
Нет, сначала вычтите гравитацию из выходного сигнала датчика. - person Apurva; 20.10.2015
comment
И даже если я исключаю 1G, это все равно слишком много. 10 м/с^2. Я читал, что профессиональный боксер может показать скорость 14 м/с. - person Ivan Tamashevich; 20.10.2015
comment
Из вывода можно сделать вывод, что вы стоите с телефоном в руке перед грудью и кладете его на стол, который находится слева от вас, перед вами, и высота также меньше, чем высота положения вашей руки. - person Apurva; 20.10.2015
comment
исключая силу тяжести - надеюсь уже исключили? - person Ivan Tamashevich; 20.10.2015
comment
@IvanTamashevich Но в документации по Android сказано, что «гравитация не исключена». И значение, которое вы указали для удара боксера, дает скорость, а скорость и ускорение - разные вещи. - person Apurva; 20.10.2015
comment
@Apurva, разве это не должно быть включая силу гравитации? - person Zharf; 20.10.2015
comment
@Apurva Но я прочитал здесь для Sensor.TYPE_LINEAR_ACCELERATION Трехмерный вектор указывающее ускорение вдоль каждой оси устройства, исключая гравитацию. Все значения указаны в м/с^2. Система координат та же, что используется датчиком ускорения. Выходные данные акселерометра, датчиков гравитации и линейного ускорения должны подчиняться следующему соотношению: ускорение = сила тяжести + линейное ускорение - person Ivan Tamashevich; 20.10.2015
comment
@Apurva Acceleration - это производная от скорости (извините за мой английский, возможно, я использую неправильное слово). Значит, если я получу 19 м/с2 за 1 секунду, я получу 19 м/с для своего устройства. На мой взгляд, это слишком много. Я получил эти значения, просто пробивая воздух) Могу показать GoogleSheet с таблицей event.values. - person Ivan Tamashevich; 20.10.2015
comment
@IvanTamashevich Да, значение кажется таким большим, потому что предположим, что вы перемещаете руку на 1 метр за 1 секунду, тогда скорость вашей руки составляет 1 м / с, а ускорение - 1 м / с2. Если мы добавим гравитацию к вашему выводу, ускорение станет около 9,7 м/с2, что звучит как большое ускорение, и я думаю, что это близко к ускорению Ламборгини или Феррари. - person Apurva; 20.10.2015