Code Monkey home page Code Monkey logo

mlat-server's Introduction

mlat-server

This is a Mode S multilateration server that is designed to operate with clients that do not have synchronized clocks.

It uses ADS-B aircraft that are transmitting DF17 extended squitter position messages as reference beacons and uses the relative arrival times of those messages to model the clock characteristics of each receiver.

Then it does multilateration of aircraft that are transmitting only Mode S using the same receivers.

License

It is important that you read this section before using or modifying the server!

The server code is licensed under the Affero GPL v3. This license is similar to the GPL v3, but it has an additional requirement that you must provide source code to users who access the server over a network.

So if you are planning to operate a copy of this server, you must release any modifications you make to the source code to your users, even if you wouldn't normally distribute it.

If you are not willing to distribute your changes, you have three options:

  • Contact the copyright holder (Oliver) to discuss a separate license for the server code; or
  • Don't allow anyone else to connect to your server, i.e. run only your own receivers; or
  • Don't use this server as a basis for your work at all.

The server will automatically provide details of the AGPL license and a link to the server code, to each client that connects. This is configured in mlat/config.py. If you make modifications, the suggested process is:

  • Put the modified source code somewhere public (github may be simplest).
  • Update the URL configured in mlat/config.py to point to your modified code.

None of this requires that you make your server publically accessible. If you want to run a private server with a closed user group, that's fine. But you must still make the source code for your modified server available to your users, and they may redistribute it further if they wish.

Prerequisites

Developer-ware

It's all poorly documented and you need to understand quite a bit of the underlying mathematics of multilateration to make sense of it. Don't expect to just fire this up and have it all work perfectly first time. You will have to hack on the code.

Running

$ mlat-server --help

Clients

You need a bunch of receivers running mlat-client: https://github.com/mutability/mlat-client

Output

Results get passed back to the clients that contributed to the positions. You can also emit all positions to a local feed, see the command-line help.

mlat-server's People

Contributors

mutability 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

Watchers

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

mlat-server's Issues

Community

Is there a mailing list or anywhere else to discuss mlat-client and mlat-server (and maybe your dump1090 variants)? Specifically I'm looking for experience reports: What's the current status, does it work, how well does it work, etc.?

MLAT results port

Hi, I have noticed the server sends results in beast format and to port 30104, it is like piaware does.
I do not know if it is a problem when running Piaware and mlat-client at the same time and if it is related with the problem to get mlat results from mlat-client.

Receiver set to type Beast will not show sync with Rx type Radarcape.

An actual beast, set to --input-type beast, will never show sync stats towards receivers of type radarcape. If set to dump1090, it will show sync.

The log file indicates that the receiver pair is used for solutions, so it actually has sync, but not shown in the sync stats table.

If 2 dump1090 system are both set to --input-type beast (for testing this issue, or by mistake), they will also not show sync with radarcapes, not with real beast systems, and not with each other, but with normal dump1090 systems....

(The client will auto-detect the correct format but has already informed the server of the manually set format, and as discussed, the on-the-fly format change is not implemented in mlat-server. )

What is the difference between beast and dump input formats?

Altitude in output

Output altitude should be decoded altitude (ac.altitude ? ) if available, otherwise multilaterated altitude?

Today we get relatively big errors in altitude even when aircraft xmits its own altitude.

MLAT server partitioning

In working to load balance MLAT, I noticed that the mlat-server code includes partitioning support. Is there a corresponding piece of infrastructure that you've used to route MLAT data or aggregate single clients to multiple MLAT instances?

Change Cairo python binding to cairocffi

Py2cairo is as someone on the web said "notoriusly hard to install".

For coverage generation cairocffi bind works perfectly and it is a lot easier to install (works with just pip install + necessary dev libs)

Example:
tmuic@024a52d

cant run mlat-server --help

i have installed all the pre-reqs, but when i attempt to run mlat-server --help
i get: "mlat-server: command not found"

any guidance would be greatly appreciated

Beast format output

It would be nice with a beast-format output with MLAT timestamp so that VRS and other display softwares understand that it is an mlat position. Just like mlat-results in mlat-client.

Errors using old and new pygraph

Hi.
I'm trying to run mlat-server, but I'm getting some errors with new and old version of pygraph. I've tried with new pygraph library (new repo, link in old one). Got this error (a lot!) and no tracking at all:

AttributeError: module 'pygraph.algorithms.minmax' has no attribute 'minimal_spanning_tree'
20181210 10:55:01.056  ERROR    asyncio              Exception in callback MlatTracker._resolve(<mlat.server....x7f30f2c904a8>)
handle: <TimerHandle when=1080929.026755315 MlatTracker._resolve(<mlat.server....x7f30f2c904a8>)>
Traceback (most recent call last):
  File "/usr/lib64/python3.6/asyncio/events.py", line 145, in _run
    self._callback(*self._args)
  File "/home/satradar/mlat-server/mlat/server/mlattrack.py", line 174, in _resolve
    timestamp_map=timestamp_map)
  File "/home/satradar/mlat-server/mlat/server/clocknorm.py", line 186, in normalize
    mst_forest = pygraph.algorithms.minmax.minimal_spanning_tree(g)

Now, using old pygraph repository (link in mlat-server README), I can get it running and tracking some aircrafts, but still wth errors in log:

Dec 10 11:12:42 skynet4 python3.6[12654]: future: <Task finished coro=<JsonClient.handle_connection() done, defined at /home/satradar/mlat-server/mlat/server/jsonclient.py:262> exception=CancelledError()>
Dec 10 11:12:42 skynet4 python3.6[12654]: concurrent.futures._base.CancelledError
Dec 10 11:12:42 skynet4 python3.6[12654]: 20181210 11:12:42.656  ERROR    asyncio              Task exception was never retrieved
Dec 10 11:12:42 skynet4 python3.6[12654]: future: <Task finished coro=<JsonClient.handle_connection() done, defined at /home/satradar/mlat-server/mlat/server/jsonclient.py:262> exception=CancelledError()>
Dec 10 11:12:42 skynet4 python3.6[12654]: concurrent.futures._base.CancelledError
Dec 10 11:12:42 skynet4 python3.6[12654]: 20181210 11:12:42.656  ERROR    asyncio              Task exception was never retrieved
Dec 10 11:12:42 skynet4 python3.6[12654]: future: <Task finished coro=<JsonClient.handle_connection() done, defined at /home/satradar/mlat-server/mlat/server/jsonclient.py:262> exception=CancelledError()>
Dec 10 11:12:42 skynet4 python3.6[12654]: concurrent.futures._base.CancelledError
Dec 10 11:13:16 skynet4 python3.6[12654]: 20181210 11:13:16.893  INFO     kalman               E48994 acquiring.
Dec 10 11:15:51 skynet4 python3.6[12654]: 20181210 11:15:51.559  INFO     kalman               E47EC0 acquiring.

any tips how to solve it?!

Mode A/C

Is the server can manage the Mode A/C?

Wrong Callsign

For most aircraft displays the wrong callsign (aircraft sends valid) or it is not there.
Knowing one letter or number is incorrect.

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.