Git Product home page Git Product logo

ucnl / ucnlnav Goto Github PK

View Code? Open in Web Editor NEW
175.0 9.0 29.0 372 KB

Multilanguage (C#/Matlab/Rust) library for solving navigation (2D/3D) & geodetic problems: Multilateration (true range), Time-Of-Arrival (TOA), Time-Difference-Of-Arrival (TDOA), Angle-Of-Arrival AOA (Direction-Of-Arrival, DOA); Direct & inverse geodetic problems: Vincenty equations, Haversine formula; Virtual Long Baseline navigation (VLBL) etc.

License: GNU General Public License v3.0

C# 48.69% Rust 22.00% MATLAB 29.31%
haversine vincenty-formula vincenty-direct vincenty-inverse haversine-formula toa tdoa geolocation navigation nelder-mead

ucnlnav's Introduction

Latest news:

  • 21-JAN-2021

    • DOP calculation routines added (C#)
  • 19-AUG-2020

    • Angle-of-arrival routines added (C#/Rust/Matlab)
    • Hooke-Jeeves algorithm added in Matlab version for TOA/TDOA problems

UCNLNav

This library contains routines for:

  • Solving geodetic problems (C#/Rust/Matlab)
  • Solving TDOA & TOA positioning/navigation problems in 2D & 3D (C#/Rust/Matlab)
  • Solving AOA (angle of arrival) navigation problem in 2D (C#/Rust/Matlab)
  • Algorithms for Virtual Long Baseline positioning (C#)

Example of TDOA problem

  • Known times of arrival to/from base points with known locations
  • Known target depth

    Calculated residual function:

    Residual function and estimated target location:

    Nelder-Mead vs. Hooke-Jeeves on TDOA 2D problem:

The pics above are generated by a script from this library.

HISTORY

21-JAN-2021

  • DOP calculation routines added (C#)

19-AUG-2020 Update

23-JAN-2020 Update:

30-NOV-2019 Update:

  • Added partial implementation of the library in Rust:
    • All the functionality from Algorithms.cs & from Navigation.cs

22-NOV-2019 Update:

  • In GeoPoints.cs new classes for metric point (MPoint and MPoint3D)
  • In Navigation.cs new methods for calculating centroids of clouds of MPoint and MPoint3D, converting between local and geographic coordinate systems, methods for calculating statistics (CEP, SEP, STD, MRSE, DRMS)

26-AUG-2019 Update:

  • Routines for VLBL (Virtual long baseline) positioning
  • TDOA solution in 3D

Please, let us know that our work is useful for you: star this repository =)

ucnlnav's People

Contributors

alekunderwater avatar da9l avatar daredevil2033 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ucnlnav's Issues

Computed value in eps_tdoa3d

In the computed value returned by eps_tdoa3d (in rust), as all the intermediate elements are summed squared, shouldn't the square root be returned?

Precision Threshold

I have a doubt regarding the value of the precision threshold for the termination of the iteration. Why did you choose '1E-8' as the precision threshold value? Can I change it into my own value? In what perspective, you choose that value.

TDOA solution in 3D

Can you please update your code with including the solution for solving TDOA in 3D?

Case study for Localization algorithm

Is there any case study for this localization algorithm using Nelder-Mead method to refer so that it can be implemented in some real-life scenarios? Can you please share any case study papers based on this or any other similar things with you?

Vincenty inverse

In the vincenty inverse function (I've only checked the rust code), when cos_sq_alpha is not different from 0.0 then cos_sq_alpha is set to 0.0, it should be cos_2_sigma_m which is set to 0.0 according to http://www.movable-type.co.uk/scripts/latlong-vincenty.html

It would also be better to compare cos_sq_alpha to be less than an epsilon value than equality to 0.0

Ellipsoid eccentricity

Eccentricity is computed as (a*a - b*b) / a*a whereas wikipedia is giving sqrt(1 - (b*b)/(a*a)) for definition.
Did you forget the sqrt in your code ?

Iteration Limit

I want to know in what perspective, you have chosen 600 as the value for maximum iteration limit. Can I change it to my own?

build_base_lines iterations

In rust (not checked other) code, the build_base_lines iterate over: 0 .. (base_points.len() - 1) and (i+1) .. base_points.len()
shouldn't it be: 0 .. (base_points.len() - 1) and (i+1) .. base_points.len() - 1 ?

nlm_2d_solve termination

The termination condition is

is_finished = (it_cnt < max_iterations) && (tmp1.sqrt() <= precision_threshold);

shouldn't it be ?

is_finished = (it_cnt > max_iterations) || (tmp1.sqrt() <= precision_threshold);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.