Skip to content

snlpatel001213/AirControl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 favourite 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 and can be compiled on Linux, macOS, and Windows. Binary will be released for all the platforms.
  • AirControl uses Nvidia Physx for the best possible Newtonian physics simulation.
  • AirControl allows users to take advantage of aerodynamic 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.
  • Airplane behaviour can be fine-tuned using a configuration file.
  • Available for Linux, Windows, Mac, and Linux headless mode.
  • Support simultaneous multiple instances at different ports

Available Airplane

Two airplanes are avialble F4UCorsair and Cessna152. F4UCorsair about 3X in size and weight compared to Cessna152.

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.

Interfaces

Controlling with python

AirControl can be fully controlled through python. Along with flight other functions like lidar range, capture camera, scene camera, level reset, host port setting, etc.. can be controlled through python.

Sr. No. Client Example Details
1 Input Output Python API Commanding AirControl through python
2 Reinforcment Learning Flight loop Example reinforcement learning flight loop
3 Finetuning Airplane Finetune flight experience
4 Launch from command line Launching Aircontrol from command line
5 Launch from python Launching Aircontrol from Python
6 Primitive API Simple Client to interact with the server. It does not require the AirControl Pypi package. Just for unit tests, not for long runs
7 Primitive API - 2 Simple Client to interact with server. More detailed than the previous one. An end-to-end flight loop is demonstrated. It does not require the AirControl Pypi package. Just for unit tests, not for long runs
8 Lidar Controls Demonstrate how to control lidar from the python client.
9 Camera Controls Demonstrate how to control Camera from the python client. It allows switching the camera. It allows for capturing Depth, Semantic segmentation, Object segmentation, and Optical flow variant of the scene.
10 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.
11 UI and Audio Controls Allows controlling the visibility of Airplane control on UI and Airplane Audio.

Controlling with keyboard

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

Getting started with AirControl is very simple. If you are a beginner with Unity use the build provided for different OS. If you are a Unity pro use provided unity package.

%%{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]
	C_1 --> G[Headless Linux]
    A[Skills] --> B[Familiar 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 the source
  2. Linux - Tested
    1. Download Binaries - https://github.com/snlpatel001213/AirControl/releases
    2. Build it from the source
  3. macOS - Not Tested [Need Contributors]
    1. Download Binaries - https://github.com/snlpatel001213/AirControl/releases
    2. Build it from the 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

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