Алгоритм выхода на траекторию

Различные геометрические алгоритмы.
GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Алгоритм выхода на траекторию

Сообщение GAGArin » 22.05.2008 (Чт) 8:45

Есть обьект у которого известна позиция и в первом приближении известны направление и курс во втором приближении известно ускорение. Есть последовательность точек которыми задана траектория. Необходим алгоритм выхода на траекторию (не на точку) с учетом того что обьект может оказаться достаточно далеко от траектории и имеет свою инерционность (тоесть не умеет менять направление движения мгновенно) Минимальный радиус поворота, если он необходим, можно считать известным. Алгоритм должен быть мгновенным. Тоесть он должен решать куда повернуть и насколько сильно в данный конкретный момент, а не строить длинные планы. Максимум - анализ прошлого положения, скорости, ускорения и предугадывание последующего положения.

Вот вдруг кто-то с таким сталкивался. Если кто-то вообще сталкивался с алгоритмами выхода на траекторию - тоже пишите плиз. Может что-то интересное из других алгоритмов возьму.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.05.2008 (Чт) 8:53

Хм... Математически так не решал.
Частное решение как-то делал, в каком-то конкретном случае, брал просто следующую производную и приводил по ней к нужным значениям. То есть если тебе надо выйти на уравнение движения вплоть до второй производной (ускорения), то считаешь дельту на третьей производной (ускорении ускорения) и ее уже вычитать из текущей.
Но мне надо было не на траекторию выйти, а обеспечить плавное изменение (а не рывком).
Lasciate ogni speranza, voi ch'entrate.

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 22.05.2008 (Чт) 9:11

Уравнения нет, есть набор точек. Я могу его конечно попробовать интерполировать, но я очень не уверен в том что хватит процессора. И главное алгоритму надо помимо всего решать на какой отрезок траектории вообще выходить. Третью производную позиции брать вобщем-то неоткуда. Спидометра нету, а считать её по позиции - страх и жуть ибо позиция обновляется недостаточно часто.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.05.2008 (Чт) 10:11

Недочитал, думал, что есть уравнение :)
Но это особой роли не играет, разве что тогда придется моделировать движение объекта с учетом его инерции (вернее, моделировать его траекторию при облете точек).
Собственно, данный алгоритм обязателен в любом случае — при пролете от одной точки траектории к другой он же и должен использоваться, только. Только входные данные будут отличаться.
У нас имеется точка 0, из которой мы только что вышли, точка 1, в которую надо попасть, и точка 2, которая будет следующей за 1. Кратчайшим путем будет отрезок 01. Но во первых, нам надо войти в точку 1 под углом, перпендикулярным биссектрисе угла 012. А во вторых, у нас имеется инерция, которая будет сглаживать полученную траекторию. В данном случае сглаживание будет осуществляться сплайнами, кривыми Безье второго порядка (первый - скорость, второй - ускорение).
Это часть задачи, как объект будет проходить по точкам. Но есть еще и другая часть задачи, как надо выйти на эту траекторию. Отличия тут будут в том, что в неизвестна оптимальная точка 1, в которую лучше всего выходить.
Если вход на траекторию должен осуществляться за минимальное время, критерии выбора этой точки будут одни, если за минимальный расход горючего (минимальные ускорения), то другой.
Если исходить из минимального времени, то мне кажется надо брать такой сплайн, длина выпуклой оболочки которого будет минимальной. Правда математически это обосновать не могу, забыл всю математику :)
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.05.2008 (Чт) 10:55

Хотя нет, я передумал :)
Это не сплайны будут, а баллистическая траектория.
Lasciate ogni speranza, voi ch'entrate.

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 22.05.2008 (Чт) 11:17

Мне пока идея проследовать по всем точкам кажется не лучшей. Если его в трех метрах от радиуса захвата первой точке бросит в сторону (приборы скачок дадут или ураган пройдется) то ему вобщем-то не обязательно должно быть возвращаться назад и брать точку. Ему главное - лететь поближе к траектории. Причем постоянно.

А вариант с точками будет такой:За два километра от точки его кинуло в сторону на 35 метров. Радиус которым он может вписаться в повороты, выйти на нужную траекторию в итоге - два метра (например) и он будет все два километра лететь в стороне от траектории и приблизится к ней только в конечной точке. Там два метра на маневры и он рад до невозможности. А надо чтобы он сразу понял что он далеко от траектории, вышел на неё и пошел дальше по ней.

Один алгоритм - разделить плоскость на две полуплоскости (отрицательную и положительную) если находится в отрицательной то рулить влево (к траектории) если в положительной то вправо (тоже к траектории). Но только до тех пор пока курс не превысит какой-то угол к траектории (иначе при далеком выносе с траектории он будет по кругу летать) Вот как раз определение максимального угла под которым надо стремиться к траектории и выбор отрезка траектории к которому этот угол считать - задачка которую я пытаюсь понять. Выход на прямую - штука довольно простая получается. Но вот какую из прямых брать...


Вернуться в Геометрия

Кто сейчас на конференции

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

    TopList