Название: Движение по заданному маршруту Отправлено: Igors от Апрель 18, 2011, 20:05 Добрый день
Есть некоторый объект "машина" который движется в пространстве шаг за шагом. Пользователь управляет движением с помощью таких ручек: - газ (ускорение) - тормоз (гашение) - повороты руля (угол) Но это только управление со стороны пользователя, конечная скорость зависит от многих др. факторов (гладкость дороги, трение и.т.п.). В любом случае на каждом шаге известно - текущее положение машины - вектор скорости 1/сек Теперь пользователь хочет чтобы машина двигалась по заданному пути, т.е. по кривой которую он нарисовал. Сложность в том что кривая никак не привязана ко времени и скорости - это просто "маршрут" а с какой скоростью где ехать - то он желает управлять газом/тормозом. На первом (начальном) шаге позиция машины совпадает с первой точкой маршрута. Задача: на каждом шаге вычислять такое положение руля (угла поворота) которое бы обеспечивало максимально приближенное движение по маршруту. Спасибо Название: Re: Движение по заданному маршруту Отправлено: m_ax от Апрель 21, 2011, 01:56 Вот вечно у Вас какая то размытая формулировка задачи))
Попробую переформулировать условие. Задана траектория. Тело (машина) движется по этой заданной траектории. Фактически пользователь меняет силу, действующую на тело. В случае газа сила увеличивается и направлена параллельно вектору скорости в данный момент, в случае тормоза - увеличивается сила, направленная противоположно вектору скорости. Вектор скорости всегда направлен по касательной к траектории. Текущее положение машины и вектор скорости, судя по всему и нужно найти. Они не могут быть заданы изначально, поскольку определяются из уравнения: mvt=F(t) Откуда следует, что нужно знать ещё масу тела. Если известен вектор скорости в каждый момент времени и положение тела на траектории то положение руля должно быть пропорционально углу между вектором скорости в данный момент t и вектором скорости в момент t+dt. Так? Название: Re: Движение по заданному маршруту Отправлено: Igors от Апрель 21, 2011, 10:20 Вот вечно у Вас какая то размытая формулировка задачи)) Постановки когда "все всем сразу понятно" возможны только в учебных примерах (и то в относительно простых) :).. Нет, не так. Вектор скорости зависит не только от руля, но и от множества др. факторов и в общем случае направлен как угодно на каждом шаге. Поэтому вовлекать их все нет никакого смысла - просто запутаемся. Также и величиной скорости пользователь управляет как хочет. Задача "рулить" таким образом чтобы машина стремилась/выезжала на заданную траекторию/маршрут. Понятно что это не всегда возможно. Напр. если машина уткнулась в препятствие, то пусть уже пользователь рулит и объезжает как хочет. Или если скорость слишком велика - то как ни рули, по маршруту не проедешь. Мы полагаем что пользователь дает разумные данные, и наша задача - простой "автопилот". Так? Название: Re: Движение по заданному маршруту Отправлено: MoPDoBoPoT от Апрель 21, 2011, 19:56 Что-то мне это напоминает ТАУ (конкретней, регулятор с обратной связью)... Более конкретного ничего не могу подсказать, ибо знания давно пропиты и забыты, к сожалению.
Название: Re: Движение по заданному маршруту Отправлено: Igors от Апрель 22, 2011, 11:04 Ну ничего особо фантастического в задаче нет. Сделал, работает, правда слабенько :)
На каждом шаге проецирую позицию машины на путь, т.е. на маршруте нахожу условную точку. Если машина достигла конца пути - то все, путь пройден, оставляю руль как есть (ушла в свободный полет). Иначе нахожу угол между вектором скорости и вектором "текущая позиция машины - следующая точка маршрута" - это и есть угол поворота руля. Все это так-сяк работает, но я получил полный классический букет "неустойчивости градиентного метода" - результат зависит от "следующей точки маршрута". Когда она далеко - все очень неплохо, направление на цель устойчиво. Но вот когда она близко - руль начинает "вилять" туда-сюда :) Подлатал кое-как damping'ом (угол руля может быть изменен не более чем на 5 градусов за 1 шаг). А вообще-то странно - я полагал здесь много людей с верхним образованием (не чета моему политеху) - ну или на пути к нему. Слышал даже названия ВУЗов которые в моем представлении элитарны. Мдааа... Название: Re: Движение по заданному маршруту Отправлено: Waryable от Апрель 22, 2011, 12:23 Метод оптимизации - тяжелый шарик. Наверняка выручит.
|