Skip to main content

AirControl is an Open Source, Modular, Cross-Platform, and Extensible Flight Simulator For Deep Learning Research.

Project description

GitHub release (latest by date) GitHub repo size GitHub repo size Documentation Status GitHub issues GitHub pull requests GitHub closed pull requests GitHub commit activity visitors Gitter PyPI version aircontrol

Supported OS

Apple Windows Linux

Supported Language

CSharp Python Jupyter Notebook

Welcome to AirControl

AirControl is an Open Source, Modular, Cross-Platform, and Extensible Flight Simulator For Deep Learning Research. AirControl offers a realistic simulation experience with a variety of airplanes. The AirControl is built on Unity Game engine. Following are the salient features of the AirControl:

  • Built with C#, it has Python API to control it from your favorite Deep learning Framework.
  • Complete source code is open on Github.
  • Aircontrol takes full advantage of object-oriented programming. It is developed fully modular from day one. You can easily introduce new features such as vertical takeoff. You can bring your own alien plane to AirCotrol.
  • AirControl is truly cross-platform, can be compiled on Linux, macOS, and Windows. Binary will be released for all the platforms.
  • The AirControl uses Nvidia Physx for the best possible Newtonian physics simulation.
  • AirControl allows users to take advantage of aerodynamics effects such as Ground effect.
  • All the control surfaces (Throttle, Rudder, Ailerons, and Flaps) accept normalized input between -1 and 1. This makes AirControl even more friendly with AI.

System Requirement

It depends on how big your Unity environment is. The environment which comes with the AirControl binary releases is the basic one and tested with the following config:

  • Operating System : Ubuntu, Windows, Mac
  • CPU: Intel Core i7
  • GPU: Nvidia 1070 or Higher
  • RAM: 16 GB

AirControl may work with lower than the specified requirements, but it's not tested.

You can run AirControl in server-client mode with two different machines or both in a single machine.

Control Inputs

Keyboard Mappings

  1. To change the keyboard layout mapping manual, refer to : keyboard-layout-editor
  2. Export the Layout as PNG and replace the file AirControl/docs/images/keyboard-layout.png
  3. Submit a pull request

Getting started

Version number (MAJOR.MINOR.PATCH) follows Semantic Versioning 2.0.0. Version numbers change as follows:

  1. MAJOR version when making incompatible API changes
  2. MINOR version when adding API in a backward-compatible manner
  3. PATCH version when making backward-compatible bug fixes Note that semantic versioning also applies to the Pypi release, Git release, and Snap releases.
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ffcccc', 'edgeLabelBackground':'#ffffee', 'tertiaryColor': '#fff0f0'}}}%%
graph TD
    A[Skills] --> C[Not Familier with Unity Engine]
    C --> C_1[Use Binaries]
    C_1 --> D[Windows]
    C_1 --> E[Ubuntu]
    C_1 --> F[Mac]
    A[Skills] --> B[Familier with Unity Engine]
    B --> H[Wants to Add/Edit Airplane/Assets etc..]
    H --> I[yes]
    H --> J[No]
    I --> K[Build from source]
    J --> C_1
  1. Windows - Tested
    1. Download Binaries - https://github.com/snlpatel001213/AirControl/releases
    2. Build it from source
  2. Linux - Tested
    1. Download Binaries - https://github.com/snlpatel001213/AirControl/releases
    2. Build it from source
  3. macOS - Not Tested [Need Contributors]
    1. Download Binaries - https://github.com/snlpatel001213/AirControl/releases
    2. Build it from source

Python Package Installation

  cd Python
  Python3 setup.py install
  OR 
  Use relative imports

Pypi Release-Alpha Not Tested PyPI version : https://pypi.org/project/aircontrol-python/

  pip install airctrl

Snap Release-Alpha Get it from the Snap Store

  1. Install : snap install aircontrol
  2. Invoke: aircontrol.AirControl
  3. Fly manually or use python API.

Documentation

  1. AirControl Documentation: https://aircontrol.readthedocs.io/
  2. C#/Python API Documentation - https://snlpatel001213.github.io/AirControl/html/index.html

Client examples

Sr. No. Client Example Details
1 Primitive API Simple Client to interact with the server. It does not require the AirControl Pypi package. Just for unit test, not for long runs
2 Primitive API - 2 Simple Client to interact with server. More detailed than the previous one. End to end flight loop is demonstrated. It does not require AirControl Pypi package. Just for unit test, not for long runs
3 Lidar Controls Demonstrate how to control lidar from the python client.
4 Camera Controls Demonstrate how to control Camera from the python client. It allows switching the camera. It allows capturing Depth, Semantic segmentation, Object segmentation, Optical flow variant of the scene.
4 Time of Day Controls Allows controlling the time of day and light conditions. It allows controlling sun position based on Longitude, Latitude, Hour, and Minutes.
5 UI and Audio Controls Allows controlling visibility of Airplane control on UI and Airplane Audio.

Future Release

Refer to the Project page for the future release, features, and bug tracking : https://github.com/snlpatel001213/AirControl/projects/1 Projects Tab Mappings

Tools and Technology

Contribute

We love your input! We want to make contributing to AirControl as easy and transparent as possible. Please see our Contributing Guide CONTRIBUTING.md to get started. Thank you to all our contributors! Open in Gitpod

Current Contributors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

airctrl-1.3.3.tar.gz (18.6 kB view details)

Uploaded Source

File details

Details for the file airctrl-1.3.3.tar.gz.

File metadata

  • Download URL: airctrl-1.3.3.tar.gz
  • Upload date:
  • Size: 18.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.3

File hashes

Hashes for airctrl-1.3.3.tar.gz
Algorithm Hash digest
SHA256 2fe8346975b3117b5a43580241c9527e502299049b3842a5e240056d3b743f69
MD5 0364ad59e6bdb9494740cc6b2077c1f4
BLAKE2b-256 9c537d64d76ad57095d2c137b7619813be2d92c279bdc4fe66446791fd2798bf

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page