В настоящее время я работаю над устройством, которое использует постоянно включенный 3D-акселерометр (с использованием шкалы + -2g) и 3D-гироскоп (с использованием шкалы + -250g).
Я могу прочитать все возможные векторы (X, Y, Z) и их ускорение (g) и угловую скорость (dps), а также угол, в котором находится устройство в данный момент. Но моя проблема заключается в том, что когда устройство находится на наклоне (0g, когда нет наклона), ускорение находится между (вниз) 0g -> - 1g или между (вверх) 0g-> 1g в зависимости от того, под каким углом устройство находится в данный момент. Ниже картина, которая, надеюсь, проясняет идею.
Устройство будет находиться в автомобиле и должно измерять ускорение при замедлении автомобиля (торможение). Однако, если устройство уже наклона, акселерометр будет измерять некоторое ускорение, которое вызывает наклон, что затрудняет определение того, действительно ли устройство имеет некоторое ускорение, или это просто наклон, который вызывает ускорение.
Оси X и Y дают 0g, а ось Z составляет 1g, когда устройство не имеет наклона и находится на плоской поверхности. Наклон заставляет показание оси X двигаться в направлении 1g, если наклон направлен вверх, и до -1g, когда вниз. + -1g достигается, когда устройство находится на 90 * градус от исходного положения
Я думал о том, как устранить то ускорение, которое вызывает наклон, и измерить только реальное ускорение устройства, но просто не могу придумать выход из этой проблемы со следующими данными, которые я могу произвести.
По сути, я думаю, что если бы я мог измерить только ускорение оси X (изображение), даже если датчик наклонен, как на рисунке.
Надеюсь, это сообщение не слишком сложно понять из-за моих навыков английского и того, как я пытаюсь объяснить свою проблему.
источник
Ответы:
Только набросок решения.
Примите во внимание все 3 оси.
Ускорение из-за силы тяжести, независимо от наклона, всегда будет равно 1G, как векторная сумма X, Y, Z, независимо от наклона. Вы можете изобразить ускорение в покое или устойчивое движение как точку на сфере с радиусом 1G. (Если вы находитесь совершенно горизонтально, эта точка будет (0, 0, -1), то есть прямо под вами).
Ускорение из-за торможения приведет к искажению самой сферы; векторная сумма X, Y, Z больше не будет 1G.
Так
Если вы также не поворачиваете или заносите, поэтому вам нужны входы от рулевого колеса и ABS, чтобы быть уверенным; это становится проблемой слияния данных. Этот подход обеспечит оценку ускорения. Чтобы проверить правильность и уточнить эту оценку, объедините ее с другими (также ненадежными) источниками данных, как в ответе Фила Фроста, используя фильтр Калмана.
источник
Ваша главная ошибка в том, что вы не рассматриваете ускорение как единый вектор. Когда машина находится в состоянии покоя, этот вектор всегда будет на 1 г вверх. Не смотрите только на X-компонент необработанных данных акселерометра. Сделайте реальную векторную математику.
Нет, это главное. То, что вы говорите, может быть верным для X-компонента выходного сигнала акселерометра, но это не так для ускорения, когда автомобиль находится в состоянии покоя.
Идеальным измеренным ускорением всегда будет фактическое ускорение автомобиля (относительно земли) плюс ускорение в 1 г из-за силы тяжести. Последний всегда в направлении вверх. Если вы знаете ориентацию автомобиля, то вы можете вычесть это 1 г из-за силы тяжести, чтобы найти ускорение, которое вы на самом деле ищете.
Обратите внимание, что в таких показаниях есть значительная ошибка, особенно от дешевых MEMS-датчиков. В то время как вы должны иметь возможность получить представление о краткосрочных событиях, таких как резкое ускорение или резкое торможение, эти данные далеко не достаточно хороши, чтобы выполнять инерциальную навигацию в лучшем случае более чем на несколько секунд.
источник
Как указывали другие ответы, акселерометр выдает трехмерный вектор, который представляет собой сумму силы тяжести и другого ускорения на автомобиле, вызванного двигателем, тормозами или другими силами, действующими на автомобиль. Ваша цель - вычесть гравитационное ускорение из выходного сигнала акселерометра, чтобы найти остальные силы.
Для лучшей точности нельзя полагать, что сила тяжести всегда "вниз" относительно акселерометра. Например, машина может быть на холме. Все ваши расчеты должны выполняться с использованием трехмерного векторного математического анализа, и вы должны иметь некоторую оценку ориентации автомобиля, чтобы знать направление вектора гравитации, которое необходимо вычесть.
Фильтр Калмана общий подход здесь. Идея состоит в том, чтобы взять все имеющиеся у вас данные, которые могут изменить ориентацию автомобиля, затем выполнить средневзвешенное значение измерений, объединить это с тем, что вы знаете о физике, действующей на автомобиль, чтобы получить вероятностную оценку новая ориентация автомобиля и какой путь "вниз".
Чем больше данных у вас есть, и чем точнее вы можете смоделировать физику автомобиля, тем более точной может быть эта оценка.
Например, если у вас есть гироскоп, и вы измеряете скорость автомобиля, вы можете предсказать, что гравитационный вектор будет вращаться в направлении задней части автомобиля. В краткосрочной перспективе, скажем, когда машина только начинает подниматься в гору, это может помочь вектору гравитации быстро принять правильную ориентацию.
Вы также можете предположить, что автомобиль в среднем не будет тормозить или ускоряться. Таким образом, отфильтрованный по нижним частотам выходной сигнал акселерометра может влиять на оценку направления «вниз». Это обеспечивает долговременное измерение, не подверженное инерционному дрейфу.
Объединение данных из акселерометра и гироскопа для оценки направления силы тяжести, таким образом, обеспечивает более точную оценку, чем одно из измерений.
Вы можете также включить то, что вам известно о возможной рабочей зоне транспортного средства. Например, автомобиль не может двигаться вверх или вниз по склонам, которые слишком крутые, поэтому, когда акселерометр показывает такие экстремальные углы, вы можете весить его меньше, предполагая, что большая часть его мощности обусловлена тормозами или двигателем, а не силой тяжести.
Вы знаете, что если водитель нажмет на тормоза, это сместит вектор ускорения, и вы можете вычесть это из оценочной составляющей «вниз».
Или, если у вас есть GPS и картографические данные, вы можете включить оценку наклона автомобиля в зависимости от местоположения. Если у вас есть точные данные, вы можете точно знать, на каком холме находится транспортное средство. Если у вас есть только данные с низкой точностью, это может быть полезно. Например, если машина находится в Канзасе, холмы маловероятны. Если машина находится в Сан-Франциско, холмы более вероятны, и вы можете придать акселерометру меньший вес.
Если у вас есть данные о расходе топлива и скорости, зная, что при движении в гору расходуется больше топлива, вы можете использовать это для оценки того, как автомобиль поднимается или опускается в зависимости от эффективности использования топлива.
И так далее. Чем больше вы знаете, тем лучше может быть ваша оценка.
источник
Вам потребуется алгоритм слияния и использовать 3D-акселерометр, 3D-гироскоп и 3D-магнитные датчики. С этим алгоритмом слияния вы получаете ориентацию, гравитация Земли помогает в качестве ориентира для определения горизонта - углов тангажа / рыскания / крена. Два других датчика mag / gyro помогают отфильтровать динамическое движение. Когда ваша машина также повернет влево / вправо, центробежная сила будет добавлена. Если у вас есть ориентация, вы можете вычесть гравитационный вектор и разобрать результирующее ускорение по всем трем осям.
источник
В качестве базового подхода вы можете использовать фильтр верхних частот, чтобы устранить постоянную часть ускорения (которая соответствует гравитации) и сохранить переменную часть, которая обусловлена динамикой автомобиля. Предположим,
raw
что это вектор, содержащий ваши измерения X, Y и Z, иacc
это ускорение автомобиля без гравитации. потомОтдельные компоненты по-
acc
прежнему подвержены наклону, но векторной нормы нет:Конечно, этот метод не очень точен, особенно если наклон изменяется с высокой скоростью. Это о том, насколько наивная математика дает вам. Если вам нужна лучшая точность, узнайте, как использовать фильтр Калмана.
источник
Ответ заключается в точном определении «замедления» .
Из вашего вопроса:
Однако замедление не равно торможению . Есть два возможных определения:
Эта разница значительна при подъемах и спусках. На скоростных спусках скорость автомобиля будет увеличиваться, если не будут задействованы тормоза. И в гору, скорость может замедляться, даже когда не тормозит.
Оказывается, обнаружение 1. значительно сложнее, чем 2. Давайте определим оси относительно ориентации автомобиля: X: направление вперед-назад, Y: направление влево-вправо, Z: направление вверх-вниз. Все оси ориентированы на автомобиль.
Решения:
Для определения 1. лучший подход состоит в том, чтобы предположить, что скорость автомобиля может изменяться только в направлении X. Затем измеренное ускорение a = g + v, где g - ускорение за счет сил, противодействующих гравитации, а v - ускорение за счет изменения скорости. Можно предположить, что длина g всегда равна 9,8 м / с², а v всегда в направлении X. Итак (g_x + v_x, g_y, g_z) = (a_x, a_y, a_z) , что дает v_x = a_x - sqrt ((9,8 м / с²) ² - g_y² - g_z²) . Это будет работать только до тех пор, пока | v | меньше чем | г |или, другими словами, ускорение, вызванное двигателем или тормозами, составляет менее 1G. Должно быть довольно безопасное предположение, если только у вашей машины нет ракеты-носителя.
Для определения 2. вы можете просто взять ось X непосредственно. Если автомобиль не разгоняется или не тормозит, единственная сила противодействия гравитации, действующая на него, - это нормальная сила поверхности дороги. Эта сила всегда находится в направлении z относительно автомобиля, поэтому она не меняет показания оси X. Тормоза и двигатель действуют только в x-направлении, и будут видны в этом показании.
источник
Похоже, что вы используете «избыточное» устройство для вашего приложения. Вы должны использовать устройство, которое измеряет только x & y ускорение, таким образом, наклон не будет иметь никакого измеримого эффекта. Хотя общее ускорение может быть меньше или больше, из-за наклона устройство будет измерять только компоненты x & y ускорения на плоскости, на которой находится транспортное средство.
источник