Project AirSim

Welcome to Project AirSim

Project AirSim is a simulation platform for drones, robots, and other autonomous systems.

Building on the previous work of AirSim, it leverages Unreal Engine 5 to provide photo-realistic visuals, while providing the simulation framework needed to integrate custom physics, controllers, actuators, and sensors to develop an autonomous system.

Project AirSim consists of three main layers:

  1. Project AirSim Sim Libs - Base infrastructure for defining a generic robot structure and simulation scene tick loop

  2. Project AirSim Plugin - Host package (currently an Unreal Plugin) that builds on the sim libs to connect external components (controller, physics, rendering) at runtime that are specific to each configured robot-type scenario (ex. quadrotor drones)

  3. Project AirSim Client Library - End-user library to enable API calls to interact with the robot and simulation over a network connection

For more details on the architecture, see Project AirSim Architecture Overview.

Project AirSim currently supports Windows 11 and Ubuntu 22. For more info about hardware specs for working with Project AirSim, see System Specifications.

Drone flying in Blocks environment

Getting Started

See Installing system prerequisites for information about Windows/Linux system setup needed before running Project AirSim.

1. Develop with Project AirSim source

I’m going to build the sim libs, Plugin, Blocks, and my own UE project environment from the ground up so I can customize it to my application.

Build from source as a developer

2. Drop-in Project AirSim Plugin

I want to try adding the Project AirSim Plugin to my own UE project environment so I can build some autonomous stuff.

Use Project AirSim Plugin in custom environments

Running Headless (Docker)

If you need to run a Project AirSim simulation on a headless system, such as in a Docker container, you can enable off-screen rendering by adding the -RenderOffScreen argument when launching the Unreal environment executable:

Blocks{.exe/.sh} -RenderOffScreen

If you are running without GPU access and want to run without any image rendering, you can disable rendering completely by adding the -nullrhi argument:

Blocks{.exe/.sh} -nullrhi

These arguments can also be used while debugging in VS Code by modifying the launch.json file, or in Visual Studio 2022 by modifying the project’s Configuration Properties. See Running Headless (Docker, Azure Cloud) for more details.

Reference

Configuration JSONC Settings

Client API

ROS Integration

Controllers

Sensors

Scene

Physics

Autonomy Blocks

FAQ

If you run into problems, check the FAQ for help.

Transitioning from AirSim

See Transitioning from AirSim for guidance on converting an AirSim Unreal environment and client code from AirSim to Project AirSim.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies.


Copyright (C) Microsoft Corporation. Copyright (C) IAMAI Consulting Corporation.

MIT License

Settings