Я могу помочь вам с мульти-латерацией в целом.
В принципе, если вам нужно решение в 3d - вам нужно иметь как минимум 4 точки и 4 расстояния от них (2 - дать круг, в котором находится решение - потому что это пересечение между 2 сферами, 3 точками дать вам 2 возможных решения (пересечение между 3 сферами) - так, чтобы иметь одно решение - вам нужно 4 сферы). Таким образом, когда у вас есть несколько точек (4+) и расстояние между ними (есть простой способ преобразовать TDOA в набор уравнений, просто имея расстояния типа длина / не время /), вам нужен способ решить система уравнений. Во-первых, вам нужна функция стоимости (или функция решения ошибки, как я ее называю), которая будет выглядеть примерно так:
err(x,y,z) = sum(i=1..n){sqrt[(x-xi)^2 + (y-yi)^2 + (z-zi)^2] - di}
, где x
, y
, z
- координаты текущей точки в численном решении, а xi
, yi
, zi
и di
- координаты и расстояние до i-го эталона. точка. Чтобы решить эту проблему, мой совет НЕ использовать методы Ньютона / Гаусса или Ньютона. Вам нужна первая и вторая производные вышеупомянутой функции - и они имеют конечное прекращение в некоторых точках пространства - следовательно, это не гладкая функция, и эти методы не будут работать. Что будет работать, так это семейство алгоритмов прямого поиска для оптимизации функций (поиск минимумов и максимумов. В нашем случае - вам нужен минимум функции error / cost).
Это должно помочь любому, кто хочет найти решение для подобной проблемы.