Moustafa
Moustafa Data Engineer - Interested in autonomous drones, Scala, IoT, machine learning and AI

Drone Simulators

Drone Simulators

Let’s explore the world of simulators and find a good that will help us most to start programming autonomous drones. I will list a few possible alternative simulations with some pros and cons. Some of them are built for research purposes like AirSim from Microsoft and some of them were built to train pilots of FPV racing drones like DRL Simulator. In this post I will list only simulators that were built for research, however, the other simulators can help too, but will require extra effort for integration.

AirSim

AirSim

AirSim is built on Unreal Engine, open source, cross-platform and supports hardware-in-loop. It’s built for AI research like deep learning, computer vision and reinforcement learning. It can generate realistic FPV video input.

Because it depends on the Unreal Engine, it’s a little bit difficult to set up and requires to download a lot of stuff and also requires a powerful computer with a decent GPU.

It has got a Python and C++ API A tiny python hello world program will look like this: (example)

import airsim

# connect to the AirSim simulator 
client = airsim.MultirotorClient()
client.confirmConnection()
client.enableApiControl(True)
client.armDisarm(True)

# Async methods returns Future. Call join() to wait for task to complete.
client.takeoffAsync().join()
client.moveToPositionAsync(-100, 100, -100, 50).join()

Gazebo

Gazebo

Gezabo is a robot simulator and with PX4 plugin (source) you can use it for drone simulation and it can simulate FPV, but not as realistic as AirSim. Gazebo is often used with ROS and it has got a big community.

Udacity QuadRotor Simulator

UdaicytQuad

We used the FCND-simulator while studying FlyingCars nano degree in Udacity. It’s based on Unity and supports MAVLink (and I think ROS, but I didn’t try it yet!). I used it to learn path planning and building PID controller

There is another C++ simulator that we used in the course to implement PID Controler and EKF Estimator

QuadRotor simulator for Controls and Deep Learning projects

udacidrone (Python API)

DeepRL Quadcopter Controller

Udacity FixedWing Simulator

UdaicytFixedWing

This simulator is used for the fixed wing project in FlyingCars nano degree. It’s also based on Unity and uses python API.

V-REP

V-REP

This is a generic robot simulator that supports ROS and can be used for a drone with other kinds of robots.

Project Link