Target localisation for multi-static radar using ellipse intersections. Not a dating app.
See a live instance at http://3lips.30hours.dev.
- Provides a JSON API for geolocation of targets given blah2 radar nodes.
- Uses a CesiumJS web front-end to visualise data.
- Ability to compare a number of algorithms for target localisation.
- Install docker and docker-compose on the host machine.
- Clone this repository to some directory.
- Create a
.envfile based on.env.exampleand configure your environment variables. - Run the docker compose command.
sudo git clone http://github.com/30hours/3lips /opt/3lips
cp .env.example .env # Create and edit your .env file
sudo docker compose up -d —buildThe API front-end is available at http://localhost:49156.
The following environment variables can be configured:
RADAR_NAMES- a comma separated list of identifiable radar namesRADAR_URLS- a comma separated list of urls from which to poll data
MAP_LATITUDE,MAP_LONGITUDE- Center coordinates of the mapMAP_CENTER_WIDTH,MAP_CENTER_HEIGHT- Map dimensionsTAR1090_URL- URL for TAR1090 service
ELLIPSE_N_SAMPLES,ELLIPSE_THRESHOLD,ELLIPSE_N_DISPLAY- Ellipse sampling parametersELLIPSOID_N_SAMPLES,ELLIPSOID_THRESHOLD,ELLIPSOID_N_DISPLAY- Ellipsoid sampling parameters
ADSB_T_DELETE- Time to delete ADSB data
THREE_LIPS_SAVE- Whether to save data (true/false)THREE_LIPS_T_DELETE- Time to delete old data
The association uses the following algorithm:
- ADS-B associator will associate the closest target within some delay and Doppler around the truth.
The target localisation uses 1 of the following algorithms:
-
Ellipse parametric samples an ellipse (2D) at 0 altitude. Find intersections between 3 or more ellipses such that the distance to each point is under some threshold.
-
Ellipsoid parametric samples an ellipsoid (3D). Find intersections between 3 or more ellipsoids such that the distance to each point is under some threshold.
-
Spherical intersection a closed form solution which applies when a common receiver or transmitter are used. As described in Two Methods for Target Localization in Multistatic Passive Radar.
The system architecture is as follows:
- The API server and HTML pages are served through a Flask in Python.
- An initial API request with a new set of parameters (algorithms or radar nodes) will add these parameters to a common processing loop. This is so fair comparisons can be made on the same input data.
- A set of API parameters will continue to be processed unless there is no API call in some specified time - see main.py to update. This allows the latest geolocation to be provided, rather than adding to the processing loop and waiting for the update from the next time increment.
- Implement an association algorithm that is not reliant on ADS-B truth.
- Choose to use detection or track data from each radar.
- Long term plots to show metrics such as 2D location accuracy to ADS-B, number of aircraft tracked, etc.
- Scale number of samples in ellipse/ellipsoid to size of shape.
