Имеются два движущихся объекта. Каждый объект достаточно точно измеряет пройдённое расстояние(одометром). Кроме этого, каждый объект периодически определяет свои абсолютные координаты в пространстве с некоторой случайной ошибкой. На некотором достаточно длинном(абсолютных координат намеряно много, с ошибками) участке траектория движения объектов совпадала(или была достаточно близкой). Требуется найти начало и конец этого участка(тут особая точность не нужна). И с как можно большей точностью определить разность показаний одометров на этом участке. У кого есть идеи, как такую задачу решать?
Black_mirror Уточните, что за траектория. Как обьекты зависят друг от друга. Тоже не понятно, что за участок.
В общем случае для трёхмерного пространства показания одометров должны быть на 3 порядка точнее показаний абсолютных координат.
Clerk Объекты друг от друга никак не зависят, это могут быть два автомобиля с GPS которые проехали несколько километров по некоторой узкой дороге(в разное время), а до этого и после их пути были различны. Ну а определить нужно насколько отличались показания их одометров когда они проходили одну и ту же точку на этой дороге. В принципе для всех других точек этой дороги разница должна быть такой же.
Clerk Абсолютные координаты объекты определяют редко(через десятки метров). И ошибка(случайная) их определения тоже может быть порядка десятка метров. То есть в явном виде траектории у нас нету. Есть только множество точек лежащих около неё и показания одометра в моменты получения точек.
Black_mirror Тебе надо совместить определенный отдельные участки траекторий так чтобы они максимально совпадали. Пространство 2D Траектории прямые или кривые? Хотелось бы пример увидеть. Можно МНК лучше метод максимального правдоподобия использовать . Но если честно они дают большую ошибку. Есть ли что-то лучше не знаю. Единственное что могу предложить выбрать определенные точки или признаки которые помогу. Плюс отбросить явно большые выбросы.
Код (Text): 1. Функция определения принадлежности двух траекторий участку по координатам (погрешность в единицах абсолютных координат); 2. Функция нахождения начала/конца участка (погрешность в единицах абсолютных координат); 3. Ну и f1(p) - f2(p). (показания одометра в начале/конце участка); P.S. 4. Накопительная статистическая функция нахождения участков в итоге даст достаточно точные данные => 5. Точность определения разности показаний одометров будет расти. 6. В итоге точность разности показаний одометров зависит от погрешности измерения траектории; 7. Для повышения точности измерений при одновременном изменении нескольких координат надо увеличивать частоту измерения координат.
Простое, не очень точное решение(работает если общий участок был один, а за его пределами траектории приближались к друг другу в небольшом числе точек): s=sum(i=0..n) sum(j=0..m) (s1-s2[j])*W(|x1-x2[j]|) w=sum(i=0..n) sum(j=0..m) W(|x1-x2[j]|) delta=s/w (s1-s2[j]) - разность показаний одометров в точках с индексами i и j. Для первого объекта имеется n точек в которых производилось определение координат, для второго - m. W(|x1-x2[j]|) - весовая функция пропорциональная вероятности получить расстояние r между измеренными координатами объектов в случае когда на самом деле они находились в одной точке. Правда при большом количестве точек работает так же функция, которая принимает ненулевое константное значение при r<k, где k некоторое расстояние которое получить при двух определениях координат для одной и той же точки практически невозможно, и 0 при r>=k. Начало и конец участка в принципе тоже можно похожим методом искать, но до практической проверки ломать голову дальше над этим не буду.
Я бы тоже рекомендовал Xq как критерий и вообще по всем точкам замеров получить обе функции движения (чем приближать - навскидку не могу сказать).