Как получить скорость вращения вокруг 2 осей по заданному набору векторов положения

У меня есть огромный набор нормализованных векторов положения. Набор векторов регистрируется специальным измерительным устройством, при этом устройство вращается вокруг двух осей. Каждый вектор положения также является комбинацией гравитационных значений для X, Y и Z в определенное время. Моя задача - получить скорость вращения обеих осей.

Система координат измерительного устройства повернута примерно на 45° вокруг оси z по отношению к системе координат машины.

Ось Z измерительного устройства параллельна оси Z станка. системы координат

Я попытался преобразовать декартовы координаты в сферические координаты. Для этого я использовал Qt-Framework и MATLAB. В итоге у меня получилось 2 угла и радиус. На мой взгляд радиус не важен. Но 2 угла не подходят для моей задачи, потому что мне нужна скорость вращения машины вокруг оси Z и оси X. В этот момент важно знать, что скорость вращения настолько мала, что вектор гравитации всегда указывает на землю с отклонением 1g. Значения X-, Y- и Z измерительного устройства представляют ориентацию в зависимости от вектора силы тяжести. Например, если ось Z указывает на Землю, значение равно почти 1. А если ось параллельна земле (также ортогональна гравитационному вектору), значение почти равно нулю.

Если машина вращается только вокруг оси Z, я могу очень легко получить период одного оборота. График значений Y и X в зависимости от времени представляет собой синус или косинус. Таким образом, я могу получить период, выполнив поиск нулевой точки, максимума или минимума.

вращение вокруг оси Z вращение вокруг оси Z машины

Но это решение подходит только для проблемы с 1 осью. Если машина дополнительно вращается вокруг оси X, измеренные значения X, Y и Z являются комбинацией обоих вращений. Я понятия не имею, как я могу решить свою проблему.

вращение вокруг станков по оси z и оси x: вращение начинается через 55 секунд! вращение машин вокруг осей Z и X

Другая идея - инверсная кинематика, но для этого мне нужны размеры машины и точная точка, где установлено измерительное устройство.

вращение вокруг 1 оси вращение вокруг 1 оси

Вращение набора данных вокруг одной оси

вращение вокруг 2-х осей вращение вокруг 2-х осей

Вращение набора данных вокруг двух осей

Как я могу начать или продолжить?

Я попытался визуализировать процесс вращения с помощью этой картинки. процесс вращения


person Schulle    schedule 11.12.2013    source источник
comment
Вам нужно определить свои оси. У вас есть вложенные стабилизаторы? Если да, то в каком порядке они идут от акселерометра к земле? Первая серия выглядит так, как будто акселерометр вращается вокруг горизонтальной оси Z. Во-вторых, вращается ли он по-прежнему вокруг тела z карданного подвеса, который сам теперь вращается вокруг перпендикулярной горизонтальной оси, закрепленной на земле? Любое вращение неоднозначно в отношении того, в каком соглашении оно представлено. Это может быть крен, тангаж, курс или вращение вокруг одной оси, выраженное в координатах тела (акселерометра) или в координатах, привязанных к земле.   -  person PaulQ    schedule 12.12.2013
comment
Я попытался визуализировать процесс на последней картинке моего Вопроса. Если ось Z акселерометра указывает на землю (ось z параллельна вектору гравитации с тем же направлением), то значение z является диаметрально противоположным направлением, значение равно -1.   -  person Schulle    schedule 12.12.2013
comment
Куда вы пытаетесь пойти с этой системой? На самом деле это замечательная небольшая задача, которая может стать хорошим домашним заданием, курсовым проектом или магистерской диссертацией по инженерной оценке. Сложность решения будет зависеть от того, что это такое. Кроме того, вам нужно положение внутреннего узла акселерометра или углы поворота внутреннего и внешнего подвеса? Отношение проще, чем углы подвеса.   -  person PaulQ    schedule 14.12.2013
comment
Привет, да, это задание в модуле/курсе второго семестра. Это тоже что-то вроде семестрового проекта, но это не единственный проект в этом семестре, у меня есть еще 5. Я думаю, что более простое решение обоих в порядке. Но может ли отношение внутреннего узла акселерометра соответствовать моей проблеме? Я думаю, мне нужны углы поворота внутреннего и внешнего карданов, зависящие от времени каждого набора данных, чтобы получить скорость вращения двух осей вращения. Моя самая большая проблема в том, что я программист, а не хороший математик.   -  person Schulle    schedule 15.12.2013


Ответы (3)


Я пытался поместить это как комментарий, но там есть ограничение по длине. Итак, некоторые уточняющие вопросы/промежуточные выводы:

Спасибо за цифры! Таким образом, это выглядит из вашего 4-го рисунка выше, на котором показаны синусоидальные волны с двумя осями xyz, и из вашей схемы машины, как будто у вас есть три системы координат: первая - это земная система координат, назовите ее x1, y1, z1, как вы показываете это на диаграмме "картинка машины". Второй кадр, назовем его x2,y2,z2, вращается вокруг осей x1 и x2 (они остаются параллельными). Третий кадр x3,y3,z3 вращается вокруг оси z2 (=z3). Ваши акселерометры зафиксированы в системе координат x3,y3,z3.

В вашем наборе данных с одной осью z3=z2 выровнено с землей z1 и вращается вокруг z, так что x3 и y3 вращаются вокруг силы тяжести в квадратурных синусоидальных волнах.

Во втором наборе данных внешний подвес x1=x2 вращается с постоянной скоростью, что приводит к идеальной синусоидальной волне на акселерометре z, в то время как внутренний подвес z3=z2 также вращается, возможно, с постоянной скоростью, но теперь акселерометры на Амплитуды x3 и y3 модулируются путем умножения на косинус угла поворота x1/x2.

Все это звучит правильно?

Еще одна вещь, которую нам всегда нужно знать при оценке скорости по измерениям положения, — это какая-то модель или концепция того, как ваша система изменяется во времени: можем ли мы предположить некоторое максимальное угловое ускорение? Или мы можем предположить, что, как только скорость вращения достигнет определенной скорости, она станет постоянной? Это станет особенно важным при попытке сшить угол карданного подвеса z2/z3 в моменты времени, когда угол x1/x2 проходит через +/-pi/2 радиана, где угол z2/z3 становится на мгновение ненаблюдаемым, поскольку акселерометры x и y не работают. ортогонален вектору силы тяжести и будет показывать только шум. Это также поможет нам решить, поднялся ли подвес x1/x2 до pi/2 и снова опустился, или продолжал вращаться в том же направлении до > pi/2, потому что оба движения выглядят одинаково на z-акселерометре, а угол z2/z3 там не наблюдается.

person PaulQ    schedule 12.12.2013

Простой ответ:

Use two-argument arctangent.
The roll angle is atan2(ay, ax).
The pitch angle is atan2(az, sqrt(ax*ax + ay*ay)).
Then time-difference these to get angle rates.

У этого упрощенного решения есть ряд проблем, но это хорошее место для начала.

person PaulQ    schedule 12.12.2013

Вероятно, ключ, который вам нужен, заключается в следующем: вы должны преобразовать ускорения x и y из координат измерения в координаты машины, прежде чем оценивать шаг вокруг оси x машины. Это требует, чтобы вы сначала знали угол крена (относительно оси z машины). В синтаксисе Matlab,

[x_machine; y_machine] = [cos(roll) -sin(roll); sin(roll) cos(roll)] * [x_meas; y_meas].
z_machine = z_meas, always.

Учитывая x, y, z в координатах машины, вы можете напрямую оценить угол наклона и скорость относительно оси x машины:

pitch = atan2(z_machine, -y_machine)  (right hand rule about the machine x axis; positive acceleration pointing down); 
pitch_rate = -asin((xyz_i cross xyz_i-1)_x) / dt_i, 

где на английском языке скорость вычисляется из арксинуса компонента x_machine векторного произведения последнего вектора ускорения координаты машины с предыдущим, деленного на время между ними (1/8 секунды в вашем случае). Тот же подход работает для оценки крена и скорости крена (относительно оси z машины):

roll = atan2(-x_meas, -y_meas) * cos(pitch) / abs(cos(pitch));  
roll_rate = -asin((xyz_meas_i cross xyz_meas_i-1)_z) * cos(pitch) / abs(cos(pitch)) / dt_i.

Это проблема курицы и яйца, где вам нужно знать тангаж и крен, чтобы оценить тангаж и крен и их скорость. Таким образом, вам нужно начать с хорошего предположения о правильных углах тангажа и крена (в пределах 15 градусов или около того должно быть хорошо). Все измерения зашумлены, поэтому оценки тоже будут. Скорость оценивает особенно так. Таким образом, вы захотите отфильтровать оценки во времени. Распространяйте оценки углов тангажа и крена во времени, используя отфильтрованные оценки угловой скорости. Кроме того, ваши оценки угла крена и скорости становятся чистым шумом, поскольку шаг близок к +/-pi/2, поэтому вам, вероятно, следует уменьшить входные данные для фильтров крена на что-то вроде cos ^ 2 (шаг).

person PaulQ    schedule 06.01.2014