Does anyone know of a robotics developer environment ideal for testing AI programs for drones (e.g. quadrocopters, planes, helicopters, etc.)? I would like something like Microsoft Robotics Developer Studio that includes a virtual environment (such as an outdoor environment with gravity, wind, etc.) to test out flight dynamics. I would like the options to add sensors to the virtual drone, such as gps, altimeter, gyros, etc. that the AI program can then use to steer the drone.
3 Answers
For testing simple algorithms, you might be able to get by with a 2D simulator. There are a few out there that I am aware of:
- Stage: http://playerstage.sourceforge.net/index.php?src=stage
- STDR: http://stdr-simulator-ros-pkg.github.io/
Stage is an older, but useful, simulator which has integration with ROS (http: //wiki.ros.org/stage_ros) which will allow you to write code to interact with and manipulate robots in C++/Python.
STDR is a newer 2D simulator which also has ROS bindings.
If you want a full 3D simulator I can think of three, which again are not AI or quadrotors specific, that might meet your needs:
- Gazebo: http://gazebosim.org/
- MORSE: https://www.openrobots.org/wiki/morse/
- V-REP: http://www.coppeliarobotics.com/
Gazebo is the 3D counter part to Stage and has ROS support, and it has been used with quadrotors (http://www.ros.org/news/2012/03/announcement-of-hector-quadrotor-stack.html), though it has no out-of-the-box support for them.
MORSE is based on blender and its game engine, it has ROS and YARP and Raw socket support.
V-REP is a free for education simulator with support for many languages and platforms, including Windows and C#, if that is your kind of thing.
-
$\begingroup$ V-REP looks very promising and it does include a quadcopter. Thanks for all the great information! $\endgroup$ Commented Sep 10, 2014 at 1:06
Microsoft AirSim is a photorealistic simulator for drones. You'll find videos, instructions, and downloads on this page:
With Flightgear, which is open source, you can define and fly custom aircraft and custom algorithms for handling its automatic flight controller.
Flightgear allows flying all around the world, and you could add / integrate sensor models into it.
It also has quite a flexible API, to integrate to existing codes, models, and algorithms.