![]() |
SUBSIM: The Web's #1 resource for all submarine & naval simulations since 1997 |
|
![]() |
#1 | |
Mate
![]() Join Date: Aug 2007
Location: Seattle
Posts: 51
Downloads: 27
Uploads: 0
|
![]() Quote:
I discovered a small problem with the least squares method as described, which is that it can sometimes produce solutions on the reciprocal bearing line (e.g. on a bearing 270 instead of 90, for instance). As an example, see the solution below: ![]() when the expected solution is something like this: ![]() (from an early test version of my software using Dr. Sid's least squares approach) One solution to the problem is to use quadratic programming instead of linear least squares. Quadratic programming can solve a linear least squares problem with additional linear constraints on the solution. All you need are constraints of the form (using Dr. Sid's variables) sx*(ax+vx*t-px) + sy*(ay+vy*t-py) >= 0. However, the math involved in writing a QP solver is quite hard (too hard for me, anyway). There are third-party frameworks that can handle it, like the Microsoft Solver Foundation (for .NET). I used one, and tested the idea. It works, but I don't like relying on third-party software. So instead I came up with a solution that involves numerically minimizing a five-dimensional function. It works pretty well, and can accept flexible constraints such as "speed between 6-8 knots and course between 30 and 60 degrees". It would be trivial to add other constraints like range. I wrote about some of the technical details here (http://www.adammil.net/blog/v103_Per..._Analysis.html). I implemented it in software, which is available there too. It supports both bearing and point observations (e.g. from passive and active sonar, respectively) from multiple observers, and all observations are taken into account to find the best TMA solution. The software and source code are freely available under the GPL. However, it's at an alpha stage, so some things are missing... like a manual. :-P Nonetheless it's already pretty useful. ![]() (more recent version of auto TMA) Last edited by AdamMil; 09-20-11 at 07:23 AM. |
|
![]() |
Thread Tools | |
Display Modes | |
|
|