Страница 1 из 2

Вычисление кинематических параметров движения

Добавлено: 03 окт 2011, 05:33
GennDALF
Доброго времени суток всем!

Пишу сюда, т.к. застрял с проектом на работе, причем, как ни обидно, с самой (как думал) легкой частью :huh:

Итак, имеется программа, которая должна восстановить траекторию движения тела, имея в качестве входных данных таблицу изменения во времени проекций ускорения на три декартовы оси.
Для построения траектории в программе мне нужны приращения перемещения и угла. Для этого я использую следующие формулы:

Вычисление проекций скорости:
$$Vx_i = Vx_{i-1} + Ax_{i-1}\cdot\left(t_i - t_{i-1}\right)$$, при $$i = [0,n]$$

... аналогично для $$Vy$$ и $$Vz$$


Вычисленеие проекций приращения перемещения:
$$dRx_i = Vx_i\cdot\left(t_{i+1}-t_i\right) + \frac {Ax_i\cdot\left|Ax_i\right|}{2}\cdot\left(t_{i+1}-t_i\right)$$

(модуль вместо квадрата, чтобы сохранить направление вектора)


Вычисление приращения угла поворота в плоскости XY:
$$dAxy_i = \arctg{\left(\frac{dRy_i}{dRx_i}\right)} - \arctg{\left(\frac{dRy_{i-1}} {dRx_{i-1}}\right)}$$


В результате получаются вот такие графики dRy(t) и dAxy(t):
Изображение

Совершенно неясен пик на синем графике - его не должно там быть. А так же сумма всех приращений угла, которая должна примерно колебаться около $$\pi/2$$, шкалит под 4,5 радиана.
Пересчитывал неоднократно разными программами, входные данные тоже сомнения не вызывают. Значит ошибка кроется где-то еще. У меня идеи закончились - прошу вашей помощи!

Спасибо!

Вычисление кинематических параметров движения

Добавлено: 03 окт 2011, 05:58
grigoriy
Всё не анализировал, но вот бросилось в глаза:
GennDALF писал(а):Source of the post
Вычисленеие проекций приращения перемещения:
$$dRx_i = Vx_i\cdot\left(t_{i+1}-t_i\right) + \frac {Ax_i\cdot\left|Ax_i\right|}{2}\cdot\left(t_{i+1}-t_i\right)$$

(модуль вместо квадрата, чтобы сохранить направление вектора)

Может так?
$$dRx_i = Vx_i\cdot\left(t_{i+1}-t_i\right) + \frac {Ax_i}{2}\cdot\left(t_{i+1}-t_i\right)^2$$

Вычисление кинематических параметров движения

Добавлено: 03 окт 2011, 08:29
GennDALF
Тьфу, черт - вот дожил же... Спасибо, Гришпута!

Пересчитал, оба графика стали более гладкими, но невыясненные пики на синем остались, приняв другую любопытную форму. Сумма приращений угла упала до 3,2 радиан.
Изображение

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

Вычисление кинематических параметров движения

Добавлено: 03 окт 2011, 08:31
homosapiens
Немного матчасти:
[url=http://ru.wikipedia.org/wiki/%D0%A7%D0%B8%...%BD%D0%B8%D0%B5]http://ru.wikipedia.org/wiki/%D0%A7%D0%B8%...%BD%D0%B8%D0%B5[/url]
У меня такое ощущение, что вам достаточно вспомнить, что вы решаете стандартную задачу численного интегрирования, когда сама функция вам задана таблицей.

Вычисление кинематических параметров движения

Добавлено: 03 окт 2011, 08:47
GennDALF
У меня такое ощущение, что вам достаточно вспомнить, что вы решаете стандартную задачу численного интегрирования, когда сама функция вам задана таблицей.

Хм... А какое отношение задача о траектории имеет к задаче численного интегрирования?
В том то весь смысл, что мне для задания траектории в движке необходимы именно приращения перемещений по трем осям, а также приращения поворотов вокруг тех же осей. А это уже, если на то пошло, ближе к дифференцированию. Но дело в том, что сама таблица задается дискретно - показания ускорения снимаются с датчика.
А сумму приращений поворота я считаю для проверки, потому что мне известно, что тело вокруг оси Z повернулось на $$\pi/2$$.

Вычисление кинематических параметров движения

Добавлено: 03 окт 2011, 09:31
homosapiens
У вас даны ускорения. Вам нужны координаты. Дважды интегрированное ускорение дает координаты.

Вычисление кинематических параметров движения

Добавлено: 03 окт 2011, 11:04
grigoriy
GennDALF писал(а):Source of the post
Я так думаю, что либо это движок, с которым я работаю, так замечательно считает арктангенсы,

Когда писал программу по балансировке турбоагрегата (на Паскале), то, при вычислении арктангенса,
не доверял встроенной функции (arctan(y/x)) на всём диапазоне возможных углов, и обставил
её своими подпорочками. Возможно, где-то перестраховался, но спал спокойно.

Код: Выбрать все

procedure atan(var s:real; x,y:real);
begin
 if (x=0) and (y=0)
 then s:=0
 else
 if x=0
 then
 if y>0 then s:=90 else s:=270
 else
 begin
 s:=arctan(y/x)*180/pi;
 if x<0
 then s:=180+s
 else if y<0 then s:=360+s
 end;
end;

Вычисление кинематических параметров движения

Добавлено: 03 окт 2011, 12:43
NT
GennDALF писал(а):Source of the post
Сумма приращений угла упала до 3,2 радиан.

Что-то мудрите с вычислением разности arctg-ов.
Функция ATAN нп. в "С" , возвращает значения в пределах: [-pi/2,+pi/2] rad.
Думаю в используемой вами библиотечной функции АТАN, тоже такие величины выходят.
В максимуме у вас должно получаться $$\pi$$, т.е. 3.14 радиан, но никак не 3.2 радиан.

Вот у Гришпуты, совсем другое дело, у него подпорки корректируют результат.

Вычисление кинематических параметров движения

Добавлено: 03 окт 2011, 12:55
homosapiens
Гришпута на паскалевских подпорках

Вычисление кинематических параметров движения

Добавлено: 03 окт 2011, 13:23
grigoriy
homosapiens писал(а):Source of the post
Гришпута на паскалевских подпорках


И каждая подпорка оказывает давление на грунт 1Н/м2.