Здравствуйте, paradok, Вы писали:
N>> Сразу напрашивается фильтр Калмана, P>а чем он лучше обычной физ. модели по типу как моделируют машинки в Unity 3D ? (там физ движок из коробки)
Он не лучше, он включает в себя физ модель. Задача ставится таким образом: в реальном времени идёт поток неточных координат, на выходе надо получить реальный путь автомобиля. Просто в физ. модель шумные данные подавать нельзя, фильтр Калмана как раз позволяет по известному шуму и шумным измерениям подобрать параметры для известной физической модели.
Здравствуйте, Nuzhny, Вы писали:
Гугли Visual-Inertial-Odometry там с GNSS разжевано как работать. N>P.S. Пока нашёл опенсурсный навигатор и начал копаться в его исходниках.
Есть два подхода -- либо фильтрация, либо регрессия (оптимизация на фактор графе)
1) Первый это калман и различные нашлепки, если есть еще данные (OpenVINS)
2) Второй, если отбросить умные слова, решение задачи МНК с весами, соответствующими начальным неточностям твоих измерений (GT-SAM/ORB-SLAM если лень копаться) + факторы, которые описывают твою модель физическую
Можно показать, что Калман с моделью постоянного / минимального ускорения это первая итерация 2) подхода, поэтому они в целом схожи, но первое побыстрее, второе поточнее.
N> Просто в физ. модель шумные данные подавать нельзя
можно. Делается в юнити модель реальных машин (которые в теории по видео камере ИИ различит)
эта модель вполне адекватна реальности (может быть сделана) — в этом легко убедиться поиграв в разные машинки типа формулы 1 и гта-5 м тд
у модели есть руль масса мощность мотора — водитель с определенной реакцией и скоростью кручения руля и нажатия на газ и торомз
Ну и машина может ехать согласно своей физики, а зашумленные отсчеты можно подавать типа это желания водителя так ехать,
а нейронка водителя это преобразует в в кручение руля и нажатия газ-тормоз
Здравствуйте, paradok, Вы писали:
P>у модели есть руль масса мощность мотора — водитель с определенной реакцией и скоростью кручения руля и нажатия на газ и торомз
Мне понятно, что надо делать физическую модель. Но не понятно, как в неё подавать шумные данные.
P>Ну и машина может ехать согласно своей физики, а зашумленные отсчеты можно подавать типа это желания водителя так ехать, P>а нейронка водителя это преобразует в в кручение руля и нажатия газ-тормоз
По факту же не надо ехать туда, где нейронка засекла автомобиль, потому что эти данные в целом шумные. Автомобиль едет где-то около, минимизируя погрешности измерения с учётом своей физической модели. Такая модель в упрощённом виде закладывается в Калмана. То есть Калман для бабочки и автомобиля должен быть разным. Бабочка может реально находиться там, где её нашли. С автомобилем из-за массы, инерции и других особенностей такого не получится.
Здравствуйте, Alekzander, Вы писали: N>>Эти измерения производятся камерой, установленной сверху и наблюдающей автомобили A>А это разве законно?
кмк, камера стоит на беспилотнике, а автомобили — это танки и прочие бмп.
Здравствуйте, Nuzhny, Вы писали:
N>Кажется, что мне нужен всё таки какой-то Калман, в который можно передавать наверное не географиические координаты, а координаты в метрической системе (метры и секунды), это будут 3D координаты в пространстве (высота тоже), но в какой-то евклидовой системе координат. При этом модель должна учитывать физическую модель автомобиля (масса, инерция, радиусы поворота). Как-то с полпинка не могу понять, что начинать читать по этой теме. То есть не в целом про фильтра Калмана (если это именно он будет), а конкретно про автомобили (саомлёты, корабли — но тут тоже явно будет больше данных).
Здравствуйте, 3R, Вы писали:
3R>кмк, камера стоит на беспилотнике, а автомобили — это танки и прочие бмп.
Так было бы проще, хотя казалось бы. Стационарные камеры на дорогах чаще ставят кое какие, с дикой дисторсией, на замену и калибровку денег нет и желания тоже.
С кратерами всё легко: классные камеры, собственные ГНСС, ИНСС и другие плюшки. Поэтому есть конторы, которые привязывают к коптер к проводу питания, поднимают над перекрестком и мониторят траффик.
При этом камера смотрит под острым углом и автобусы с грузовиками перекрывают других участников. А камера с костре смотрит вниз ближе к вертикали. И нормальный трекинг для стационарной камеры сделать сложнее, при том что он ещё и важнее.
N>Мне понятно, что надо делать физическую модель. Но не понятно, как в неё подавать шумные данные.
Я бы начал с самой простой, реализация которой в виде Калмана стадами в инете и в готовых либах. А после уже добавлял по необходимости другие параметры в модель и усложнял ее.
Здравствуйте, Nuzhny, Вы писали:
N>Здравствуйте, paradok, Вы писали:
P>>у модели есть руль масса мощность мотора — водитель с определенной реакцией и скоростью кручения руля и нажатия на газ и торомз
N>Мне понятно, что надо делать физическую модель. Но не понятно, как в неё подавать шумные данные.
Ты кстати, учти, что калман он работает относительно неплохо только для определенного класса шумов (либо нормально распределенные, либо без тяжелых хвостов), любое отклонение приведет либо к смещенной оценке, либо просто калман разойдется. Когда с итеративными методами, ты можешь позволить путем развесовки измерений приводит их распределение к тому, которое тебе надо.
N>>Мне понятно, что надо делать физическую модель. Но не понятно, как в неё подавать шумные данные.
да вроде просто, очередная новая точка — это цель куда водитель хочет ехать. Туда он будет крутить руль
и газовать, а физ модель все остальное отработает и сгладит.
И физ модель машины не может разойтись или развалится, максимум она не сможет за отведенное время доехать
то точки — ну дык это и есть сглаживание
Здравствуйте, paradok, Вы писали:
P>да вроде просто, очередная новая точка — это цель куда водитель хочет ехать. Туда он будет крутить руль P>и газовать, а физ модель все остальное отработает и сгладит. P>И физ модель машины не может разойтись или развалится, максимум она не сможет за отведенное время доехать P>то точки — ну дык это и есть сглаживание
Там немного не так работает. Например, точки идут достаточно точно на дороге каждые 30 млсек. Потом машина начинает заезжать за грузовик, нейронка отрабатывает кривовато и может так оказаться, что несколько кадров подряд очки будут выдаваться на одном месте, хотя машина не меняет ни скорость, ни траекторию. Или резко перепрыгнет на соседнюю полосу, когда нижняя часть двухэтажного автобуса будет не видна. Рулить в ту сторону не надо — это просто шумные измерения. Простой Калман туда вильнет с задержкой. Калман с хорошей физ моделью может сделать это плавнее, а совсем кратковременные "прыжки" вовсе проигнорирует. Можно пробовать использовать МНК с выболсами, как советует denisko, он часть шума вовсе проигнорирует. Я пока экспериментирую с фильтрами.
Здравствуйте, Nuzhny, Вы писали:
N>Здравствуйте, paradok, Вы писали:
P>>да вроде просто, очередная новая точка — это цель куда водитель хочет ехать. Туда он будет крутить руль P>>и газовать, а физ модель все остальное отработает и сгладит. P>>И физ модель машины не может разойтись или развалится, максимум она не сможет за отведенное время доехать P>>то точки — ну дык это и есть сглаживание
N>Там немного не так работает. Например, точки идут достаточно точно на дороге каждые 30 млсек. Потом машина начинает заезжать за грузовик, нейронка отрабатывает кривовато и может так оказаться, что несколько кадров подряд очки будут выдаваться на одном месте, хотя машина не меняет ни скорость, ни траекторию.
вам стоит поиграться с моедлями машинок в Unity3D — там ничего подобного не происходит, там машина продолжит движение даже когда данные не поступают, на то она и физ модель!
ситуация дырок в данных — это стандартная хорошо проработанная ситуация — в сетевых многопользовательских играх так всегда и есть
>>Или резко перепрыгнет на соседнюю полосу,
нет, модели машин в Unity3D так не делают
1) Рулить в ту сторону не надо — это просто шумные измерения.
2) Простой Калман туда вильнет с задержкой.
вывод — ФК работает неоптимально
И вы не можете знать то шумное измерение или реально машина поехала туда.
Чтобы это понять надо сделать прогноз, расчет движение в будущем моедли машины — исходя из ее физ модели сможет ли она отсюда туда зарулить или нет.
Если нет — это шум, если да то вероятно надо все же туда рулить
Здравствуйте, paradok, Вы писали:
P>вам стоит поиграться с моедлями машинок в Unity3D — там ничего подобного не происходит, там машина продолжит движение даже когда данные не поступают, на то она и физ модель!
То есть я буду говорить ей ехать влево, но она не поедет? Или затормозить, но она не затормозит? Почему?
P>нет, модели машин в Unity3D так не делают
Не прыгнет, но команда ехать в ту сторону пойдёт или нет?
P>вывод — ФК работает неоптимально
Разумеется. Он только для определённого вида шума нормально работает.
P>И вы не можете знать то шумное измерение или реально машина поехала туда. P>Чтобы это понять надо сделать прогноз, расчет движение в будущем моедли машины — исходя из ее физ модели сможет ли она отсюда туда зарулить или нет. P>Если нет — это шум, если да то вероятно надо все же туда рулить
Это я понимаю, тут всё стандартно и ничего нового. Не понимаю, почему команда "повернуть налево" будет игнорироваться физ моделью. Каким механизмом?
P>>И вы не можете знать то шумное измерение или реально машина поехала туда. P>>Чтобы это понять надо сделать прогноз, расчет движение в будущем моедли машины — исходя из ее физ модели сможет ли она отсюда туда зарулить или нет. P>>Если нет — это шум,и ехать туда не надо, если да, туда можно доехать за данное время с параметрами физ модели и начальными условиями — то вероятно надо все же туда рулить
N> Не понимаю, почему команда "повернуть налево" будет игнорироваться физ моделью. Каким механизмом?
Здравствуйте, Nuzhny, Вы писали:
N>Здравствуйте, paradok, Вы писали:
P>>механизм описан выше
N>Это не механизм, а общие слова. Потому что примитивный линейный Калман так и работает, в котором в принципе может не быть физической модели.
а Калман точно линейный? Вроде он ускорение учитывает, а это a*t^2