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

Аватар пользователя
GennDALF
Сообщений: 8
Зарегистрирован: 30 сен 2011, 21:00

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

Сообщение GennDALF » 03 окт 2011, 05:33

Доброго времени суток всем!

Пишу сюда, т.к. застрял с проектом на работе, причем, как ни обидно, с самой (как думал) легкой частью :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 радиана.
Пересчитывал неоднократно разными программами, входные данные тоже сомнения не вызывают. Значит ошибка кроется где-то еще. У меня идеи закончились - прошу вашей помощи!

Спасибо!
Последний раз редактировалось GennDALF 28 ноя 2019, 19:18, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
grigoriy
Сообщений: 11916
Зарегистрирован: 18 ноя 2009, 21:00

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

Сообщение grigoriy » 03 окт 2011, 05:58

Всё не анализировал, но вот бросилось в глаза:
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$$
Последний раз редактировалось grigoriy 28 ноя 2019, 19:18, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
GennDALF
Сообщений: 8
Зарегистрирован: 30 сен 2011, 21:00

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

Сообщение GennDALF » 03 окт 2011, 08:29

Тьфу, черт - вот дожил же... Спасибо, Гришпута!

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

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

Аватар пользователя
homosapiens
Сообщений: 8400
Зарегистрирован: 16 июн 2008, 10:02

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

Сообщение homosapiens » 03 окт 2011, 08:31

Немного матчасти:
[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]
У меня такое ощущение, что вам достаточно вспомнить, что вы решаете стандартную задачу численного интегрирования, когда сама функция вам задана таблицей.
Последний раз редактировалось homosapiens 28 ноя 2019, 19:18, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
GennDALF
Сообщений: 8
Зарегистрирован: 30 сен 2011, 21:00

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

Сообщение GennDALF » 03 окт 2011, 08:47

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

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

Аватар пользователя
homosapiens
Сообщений: 8400
Зарегистрирован: 16 июн 2008, 10:02

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

Сообщение homosapiens » 03 окт 2011, 09:31

У вас даны ускорения. Вам нужны координаты. Дважды интегрированное ускорение дает координаты.
Последний раз редактировалось homosapiens 28 ноя 2019, 19:18, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
grigoriy
Сообщений: 11916
Зарегистрирован: 18 ноя 2009, 21:00

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

Сообщение grigoriy » 03 окт 2011, 11:04

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;
Последний раз редактировалось grigoriy 28 ноя 2019, 19:18, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
NT
Сообщений: 3384
Зарегистрирован: 25 янв 2010, 21:00

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

Сообщение NT » 03 окт 2011, 12:43

GennDALF писал(а):Source of the post
Сумма приращений угла упала до 3,2 радиан.

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

Вот у Гришпуты, совсем другое дело, у него подпорки корректируют результат.
Последний раз редактировалось NT 28 ноя 2019, 19:18, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
homosapiens
Сообщений: 8400
Зарегистрирован: 16 июн 2008, 10:02

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

Сообщение homosapiens » 03 окт 2011, 12:55

Гришпута на паскалевских подпорках
Последний раз редактировалось homosapiens 28 ноя 2019, 19:18, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
grigoriy
Сообщений: 11916
Зарегистрирован: 18 ноя 2009, 21:00

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

Сообщение grigoriy » 03 окт 2011, 13:23

homosapiens писал(а):Source of the post
Гришпута на паскалевских подпорках


И каждая подпорка оказывает давление на грунт 1Н/м2.
Последний раз редактировалось grigoriy 28 ноя 2019, 19:18, всего редактировалось 1 раз.
Причина: test


Вернуться в «Физика»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 12 гостей