Code Monkey home page Code Monkey logo

flights-pro's Introduction

flights-pro

Air traffic control system and flight simulator - a test example for the rete4frames expert system shell. It uses Flightradar24 web service, Leaflet JavaScript library, Cesium WebGL virtual globe and map engine, geonames geographical data web service and Protege-3.5 ontology editor as server-side GUI and Clojure/ClojureScript IDE.

screenshot

- WARNING! Uncomment this line for Java 9 and above in project.clj file before the start:
;; :jvm-opts ["--add-modules" "java.xml.bind"]

Start

$ cd <..>
$ git clone https://github.com/rururu/flights-pro.git
$ cd flights-pro
$ lein run

In a Protege GUI open a project FlightPro.pprj from a folder <..>/flights-pro/pro-projects and execute a menu item Edit -> Clojure Work. When the Pro server starts, open two browser windows, one on the address: http://localhost:4444 (Cockpit view), second on the address: http://localhost:4444/chart (Chart view).

Usage

Chart view

Commands

In the chart view select in the "Commands" selector the item "Watch Visible Area". This begins a process of collection and display information of the flights in the visible area. Black icons means aircrafts on the ground, green ones are descending, blue ones are climbing and purple - on a level flight.

If you want to see an air traffic around some other airport, execute the command "Move to Airport", select a country and an airport in this country.

A click on the aircraft icon brings up a popup with general data of the flight and 3 buttons. The button "Trail" draws the current way of the aircraft. The button "Follow" starts moving of the visible area along this flight and periodically displays the trail of the flight. The button "Stop" ends up this moving.

You can plan your own flights. To do this, use the command "Schedule Flight". Input a call sign of your flight, a time of departure, select a country and an airport of departure and a country and an airport of arrival. That's all. When your flight starts you can follow it.

The Command "Toggle Wikipedia" starts/ends a process of search of Wikipedia articles about places of interest in the visible area. This places would be shown on the chart with the special icons and summaries of articles would be stored in Protege ontology as the instances of a class "WikiArticle". A click on the icon brings up a popup with the summary.

The command "Ask Question" gives possibility to ask Expert system different questions about environment and current situation.

The command "Clear" removes flights from the screen.

Cockpit view

Camera

"Onboard" selector gives possibility to select flight to get on board, or get on board a MANUAL, flight that you control yourself through "Autopilot". If you see some flight on the chart and don't see it in the "Onboard" selector, click "select" once more. This updates list of flight callsigns in sight.

When you stay on board of the regular flight and switch on the MANUAL flight, it continues this regular flight strictly forward until you begin to maneuver yourself.

Through "View" selector and "Pitch" and "Roll" fields you control direction of the camera's view.

Autopilot

"Autopilot" controls gives you possibility to set target values of course, speed and altitude of the MANUAL flight. Values would be changing gradually. You can accelerate change of the corresponding value by "accel" selector.

When a longitude value changes, the MANUAL flight turns on course to a location, defined by a latitude and the longitude values, if "ins" checkbox is off. So, set the needed latitude before the longitude. If "ins" checkbox is on, that means "instantly", and thus you go to corresponding location at once.

Alternatively, you can go instantly to some location while in MANUAL mode by clicking chart view in this location.

Programming

You can do Expert System, Clojure and ClojureScript programming and debugging in IDE based on Protege-3.5 during air traffic monitoring and simulation (see screencasts below).

Screencasts

  1. Landing of a regular Air Berlin flight in JFK airport, New-York.

    AirBerlin Landing JFK

  2. Scheduled flight simulation from Cochabamba to Santa Cruz de la Sierra, Bolivia.

    Part 1. Takeoff

    Part 2. Level flight

    Part 3. Continuation of the level flight

    Part 4. Landing

  3. Programming and debugging Expert system rules and Clojure functions:

    Adding new question to Expert System. Adding new rule to ES for answer question. Adding new function for rule's right hand side ("local-cities"). Adding second rule for answer question. Filling function's body with code. Fixing bugs using exrernal text editor ("LightTable") to locate bug places. Restarting ES. Testing new question. Programming1

  4. Programming and debugging ClojureScript, HTML and CSS.

    Programming2

Planning of scheduled flights

Flight plan for scheduled flights is described in an active instance of a class "GeneralPlan" (active instance marked with "yellow sticker").

You can change this plan before scheduling flight or replace it with your own plan by shifting yellow sticker (removing from the old instance and sticking on new one).

For example, to safely takeoff from Cochabamba you have to icrease and accelerate lifting by changing value of a slot "Altitude-vector" in a "Basic Takeoff Plan" from [1500 6] on [4000 8] (here the first value is a target altitude and the second value is an acceleration of lift).

screenshot

Airplane dynamics

You can change dynamics of your own airplanes (of manual flight and of scheduled flights). These dynamics described in the instances of "AirplaneDynamics" class. To change dynamics click on the button "Update Dynamics" on a corresponding instance.

screenshot

You can easy create your own instances of "AirplaneDynamics" using the "Create Instance" button (with a shining diamond on it).

Copyright and license

Copyright © 2016 Ruslan Sorokin.

Licensed under the EPL (see the file epl.html).

flights-pro

flights-pro's People

Contributors

rururu avatar

Watchers

 avatar

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.