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 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
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
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
Udacity FixedWing Simulator
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
This is a generic robot simulator that supports ROS and can be used for a drone with other kinds of robots.