1. Introduction
The unmanned aerial vehicle (UAV), also known as a drone, was originally developed for military missions in the twentieth century because it has no human pilot, crew, or passengers on board and can be used to conduct dull, dirty, or dangerous assignments [
1]. Nowadays, the UAV has been widely utilized in various fields, e.g., aerial photography [
2], emergency rescue [
3], item deliveries [
4], policing and surveillance [
5], science [
6], inspections [
7], and racing [
8]. In recent years, applications of UAV are gradually shifting from single to swarm, because compared with single UAVs, a swarm has obvious advantages, such as flexibility, governance, control, scalability, extensibility, interoperability, integration, and high fault tolerance [
9,
10,
11].
Before implementing applications or algorithms on real machines, testing them on simulators is a necessary step, because such a practice can aid in minimizing the potential risks and expenses involved in real-world UAV testing and improving safety and productivity. For instance, it is critical to consider the costs and risks in a real environment when hundreds or even thousands of UAVs will be involved. As we all know, a UAV is generally costly [
12], have certain requirements for the test environment [
13], and need professional licensed operators [
14]. Due to the uncertainty of the applications or algorithms, UAV could collide with each other, and even crash, which will bring in big security threat to the experimenters once the test fails [
15]. More importantly, it would be challenging to find a suitable area for testing since there are more and more no-fly zones for UAVs based on the air traffic control [
16].
In the past decades, a considerable number of robot simulation platforms have been developed. They have many aspects, such as built-in model libraries, physics engines, and programming languages [
17]. It makes it hard for developers to choose a proper simulation platform as it is tedious to fully understand all the functions of various platforms or make a choice by testing them one by one. For instance, some developers employ MATLAB or other tool-kits for verification of a UAV platform [
18,
19]. Such platforms have poor visualization performance; UAVs are only regarded as particles in the simulation process; no attitude information of a UAV, no environment interaction, and no physics engines are involved. Thus, they cannot simulate the friction, airflow, and other factors that should be considered in the real environments, which inevitably reduces the accuracy of simulation [
20]. To put it differently, selecting a simulation platform that is suitable for the actual utilization of UAVs is crucial for users. This enables them to test and verify the performances of UAVs and adapt to various environments/conditions. However, for the time being, users are confused about choosing a simulation platform to ensure that it caters to their needs and delivers reliable solutions for their UAV applications, even though they could evaluate their objectives and requirements.
Currently, there are some academic surveys on simulation platforms [
21,
22,
23], but these studies are focused on the introduction of the parameters of platforms, such as sensors. Such information can be easily collected from the websites. In other words, these studies are similar to a summary of the characteristics of the simulators, rather than a real survey. Because, on the one hand, no analysis and comparison are conducted between different simulation platforms; and on another hand, no investigations are presented on the requirements of UAV swarm simulation.
To alleviate the above-mentioned dilemma, this paper presents a survey on commonly used open-source simulation platforms for multi-copter UAV swarms, including Webots [
24], Gazebo [
25], CoppeliaSim [
26], ARGoS [
27], MRDS [
28], MORSE [
21], and USARSim [
29]. It should be noted that we suppose the platforms that can be tried or used for free for non-commercial purposes (e.g., education use) are also open-source. The contribution of this survey is that it presents detailed comparisons of the simulation platforms in the field of UAVs swarm, rather than just listing parameters of simulators, which can directly help researchers, developers, educators, and engineers in seeking a appropriate simulation platform(s) for application developments, especially for the UAVs swarm. The remainder of this paper is organized as follows. The next section introduces and compares the seven open-source simulators.
Section 2 describes the concerns for selecting proper simulation platforms for multi-copter UAVs swarm.
Section 3 demonstrates a use case based the selected platform—Webots, and finally presented the experimental results.
Section 4 concludes the whole work.
2. Seven Widely Used Open-Source Platforms
The history of simulation platforms can be traced back to the 1980s. Since then, computer-aided design (CAD) software packages became capable of robot simulations [
17], such as XAnimate [
30], SAMMIE [
31], and GraspIt! [
32]. After a decade, emulation platforms are showing increasingly diverse capabilities. For instance, the Player Project [
33], the modular robot simulation platform for humanoid robots [
34], PhysX physics engine, and OpenGL-based simulation platform [
35,
36,
37]. In the last few years, a growing number of open-source simulation platforms have been released, including Simbad [
38], Open Dynamics Engine (ODE) [
39], and Carnegie Mellon Robot Navigation Toolkit (Carmen) [
40]. These open-source platforms offer several advantages over earlier platforms developed by research institutions, including built-in robotic libraries, sophisticated physical environment simulation, and user manual support. These features make open-source simulation platforms more accessible to researchers and developers worldwide.
In this paper, we have chosen to focus on seven widely used open-source simulation platforms, including Webots, Gazebo, CoppeliaSim, ARGoS, MRDS, MORSE, and USARSim. The motivation for this selection is that we found that these seven platforms have a large user base, and can satisfy the testing requirements of most researchers and developers.
2.1. Webots
Webots, developed by Cyberbotics Company [
24], is an open-source simulation platform, which can simulate three-dimensional agents (models). This platform is highly compatible with the mainstream operation systems, such as Windows, Linux, MAC OS. It can support C, C++, Java, Python, MATLAB and other programming languages [
41]. The simulation of a UAV in a jungle by Webots is shown in
Figure 1.
Webots includes a variety of built-in agents (models) such as wheeled robots, underwater robots, UAVs, pedestrians, humanoid robots, and bionic robots. These agents can be easily customized by developers with enriched attributes such as shape, material, and color. Additionally, developers can create their own models by using other tools. For instance, Webots can import files in VRML97 format, which can be produced using SolidWork [
42]. Developers also can easily obtain the parameters of the agents, such as motor speed, accelerometer, camera screen, and other such parameters of the robot, via its interface. Webots also includes a range of sensors that are commonly used in robots, such as distance sensors, cameras, gyroscopes, and LIDARs. Moreover, Webots is capable of supporting the Robot Operating System (ROS) [
22], an open-source framework that assists researchers and developers in creating and reusing code across various robotics applications. Additionally, Webots allows for the simulation of physical properties such as gravity, illumination, density, and friction coefficients. To simulate collision and dynamics, Webots uses an open-source physical simulation engine known as the Open Dynamics Engine (ODE). This engine facilitates the simulation of rigid body dynamics and collision systems, bringing the simulations closer to realism and greatly enhancing their reliability [
43].
In addition to its reliable updates and maintenance, Webots has a thriving community and official technical support. The platform is widely used for simulation and control of UAV, offering numerous examples and tutorials for UAV simulation, as well as support for popular open-source flight control systems such as ArduPilot [
44]. There is also an abundance of open-source tutorials available to developers who wish to learn from them. Because of its rich functionality and diverse development environments, more than two hundred universities and research centers use this platform to test applications and algorithms [
45]. For example, it can be utilized to evaluate the performance and reliability of UAVs swarm algorithms, such as obstacle avoidance algorithms [
46].
2.2. Gazebo
Gazebo, developed by Dr. Andrew Howard from the University of Southern California in 2002 [
25], is a widely used open-source simulation platform in scientific research and engineering, particularly due to its close integration with ROS. Typically, it is used in conjunction with ROS, as Gazebo-ROS [
47], to simulate complex robot systems, especially robot swarms [
48].
Gazebo is compatible with Windows, Mac OS, Ubuntu, and other Linux distributions. It supports applications and algorithms developed in C, C++, and Python. Gazebo also offers a range of physical simulation engines, including ODE, Bullet [
49], Simbody [
21], and Dynamic Animation and Robotics Toolkit (DART) [
50]. This enables the platform to simulate physical properties such as friction, gravity, and lighting [
51]. Additionally, Gazebo can provide high-quality lighting and texture simulations by using its use of the Object-Oriented Graphics Rendering Engine (OGRE).
Figure 2 illustrates the main interface and a simulation example of Gazebo.
Gazebo comes with various built-in robot models, mainly wheeled and flying robots such as TurtleBot, PR2, and iRobot Create. The default model is relatively simple but suitable for complex validation calculations [
23]. With ROS integration, this platform supports motion path planning. Sensors such as laser radar, monocular, stereo, RGB-D, and infrared sensors can also be simulated. Developers can customize plug-ins for robots and sensors using plug-in functions, including GUI, system, sensor, world, model, and visual. The sensor plug-in is used to model laser radar and infrared sensors. Additionally, the internal data of Gazebo can be directly accessed by its application program interface (API). Gazebo also offers cloud simulation, enabling developers to run projects on an online server [
52].
The user operability of Gazebo is relatively poor. It can be difficult to install, and has a high threshold for users [
17]. Built-in models are accessed online instead of locally, resulting in longer loading times or failure to load when the internet is unstable. Moreover, the built-in models are not well classified, making it difficult for users to locate the desired models quickly. Developers cannot edit models using this platform; they need to use 3D modeling software (such as Blender, SketchUp) and learn an XML-based SDF specification [
52]. However, Gazebo can support for mainstream open-source flight control systems, such as PX4 and ArduPilot, which are widely used on real UAVs, has attracted researchers to evaluate the performance and reliability of UAV control algorithms, such as UAVs swarm validation and visual target tracking [
53,
54].
In short, the advantage of Gazebo is its close connection with the ROS, which maximizes the use of advantages of ROS. Additionally, its built-in models are accessible online, providing developers with unrestricted access. However, the downside is that poor network connectivity can make it difficult for developers to connect to the server and load the models.
2.3. CoppeliaSim
CoppeliaSim is a powerful simulation platform for robots, formerly known as V-rep [
26]. It supports ODE, Bullet, Vortex, and Newton physics engines, allowing for the simulation of dynamic scenarios such as collisions, rolling, gravity, and other physical factors [
55,
56]. Other than that, this platform is able to simulate dynamic particles such as jet engines, water jets, and propellers [
57]. Its distributed architecture allows for scene object association or an unlimited number of scripts [
58], and it supports applications or algorithms developed using C, C++, Python, Java, LUA, Matlab, or Octave. The conventional API is written in C or LUA. CoppeliaSim is highly portable, performs well on Windows, Mac OS, and Linux systems, and has kinematics solver and data visualization functions [
56,
59].
CoppeliaSim offers a variety of built-in agent models, such as biped, wheeled, bionic, flying, hexapod, and others. The user-friendly interface (
Figure 3) allows developers to easily select appropriate models. Additionally, the platform supports importing models in mainstream formats such as URDF, COLLADA, DXF, OBJ, STL, and glTF. There are six options for developing applications or algorithms, including embedded script, plugin, add-on, ROS node, remote API, and node talking TCP/IP. CoppeliaSim also provides various sensors for detecting distances, visuals, and pressures. Each type of sensor has different variants; for instance, proximity sensor includes ray-type, randomized ray-type, pyramid-type, cylinder-type, disk-type, and cone-type; vision sensors are divided into orthogonal projection-type and perspective projection-type [
60,
61]. These sensors can meet the needs of most developers. Furthermore, this platform has rich development resources such as a large number of tutorials, API documents for developers, and an official forum. It is still frequently updated and released, making it a great tool for developers working with robotics simulations.
To put it simply, this platform offers a rich selection of built-in models that can fulfill most simulation requirements. It also provides various UAV models, including multi-copter UAVs, with high realism and flexibility, enabling users to simulate different UAV behaviors and motion modes. To enhance UAV behavior simulation, CoppeliaSim allows users to incorporate different sensors such as cameras, LIDAR, GPS, and inertial navigation systems that provide perception and navigation capabilities to help UAVs perform tasks better. With the powerful physics engine, users can simulate various physical effects and model UAV behavior more realistically. In simulations of UAVs swarm, communication and coordination between UAVs are crucial. This platform enables users to set communication protocols and frequencies between UAVs, simulating information exchange and collaborative actions. On the basis of network simulation, researchers can better understand and study UAVs swarm behavior. Many researchers currently use this platform to simulate and verify UAVs swarm algorithms such as entrapping multiple targets [
62], formation control [
63], and collaborative transportation [
64]. However, due to the high accuracy and precision of the built-in models, they may not be suitable for simulating large numbers of swarms [
23].
2.4. ARGoS
ARGoS is a simulation platform developed by the European Union as part of the Swarmanoid project. It is designed to support large-scale robot simulations, and provides a flexible and modular architecture that enables researchers to experiment with a wide range of algorithms and scenarios. ARGoS integrates several engines, including ODE-based 3D dynamics engine, 3D particle engine, Chipmunk-based 2D dynamics engine, and 2D dynamics engine [
27]. It also comes with a built-in LUA script editor that allows researchers to easily create and modify simulation scenarios. While ARGoS lacks a scene editor, its modular architecture and built-in scripting capabilities enable researchers to customize and manipulate the simulation environment through custom scripts. The platform supports Ubuntu/Kubuntu, OpenSuse, and Mac OS, but does not currently support Windows [
65].
Figure 4 illustrates the main interface of this platform and a simulation example based on it.
The most significant feature of ARGoS is its ability to divide the simulation space into independent subspaces, and each is controlled by a separate physics engine. This enables concurrent execution of multiple simulations, resulting in significant reductions in processing time [
27]. Additionally, the platform has a multi-threaded structure that includes master and slave threads. The master thread assigns the task of updating a single plug-in, such as a sensor, actuator, or physics engine, to the slave thread, which effectively employs multi-core processors to significantly improve computing performance, particularly for multi-robot or swarm simulations. ARGoS can support the simulation of thousands of robots simultaneously, saving 40% of time compared to the two-dimensional dynamic verification of 10,000 robots [
27].
The robot library comprised ARGoS relatively limited and includes only a few simple models such as e-puck, eye-bot, Kilobot, marXbot, and spiri robots. These robots can be programmed using LUA script or C++, but mesh importing is not supported, and the object representation is encoded with OpenGL [
66]. While ARGoS does provide an official technical support forum and manuals for developers, the update frequency is not very high, and the development tutorial resources are not extensive.
In summary, ARGoS is a powerful simulation platform that is particularly well-suited for simulating robot swarms, especially when large numbers of robot models need to be generated and involved. It has been widely adopted for simulating swarm foraging robots due to its ability to simulate large-scale swarms of robots quickly [
67]. This feature is also applicable to simulating UAVs swarms, where ARGoS is better suited for simulating large-scale swarms of UAVs compared to high-precision simulation of individual UAVs. However, ARGoS still has room for improvement. Its robot library needs to be enriched, and its poor cross-platform performance cannot be ignored. Additionally, 3D mesh models are currently not supported, which limits its use in certain applications. Despite these limitations, nonetheless, ARGoS remains a valuable tool for researchers in swarm robotics and related fields.
2.5. MRDS
The full name of MRDS is Microsoft Robotics Developer Studio, which is a 3D robot simulation platform designed and developed by Microsoft [
28].
Figure 5 shows an outdoor scene simulated by MRDS. In addition to CPU, MRDS can also leverage other independent floating-point processors such as GPU and PPU for computation, making it capable of completing intensive computing-based simulations [
68]. The platform is based on Physx Engine, which is commonly used on various simulation platforms for modeling rigid bodies and liquids [
35,
69,
70].
MRDS can only be used on the Windows operating system, and the applications or algorithms for MRDS can be developed by VPL, C#, Visual Basic, Jscript, or Python [
41]. Although MRDS is not an open-source platform, it can be used free of charge for non-commercial purposes. It uses decentralized software services (DSS) and concurrency and coordination runtime (CRR) to improve the performance of multi-line programming capabilities and to reuse the multi-core capabilities of processors [
71]. This means that each service component can operate independently without synchronizing, allowing visual and acoustic services to be delivered independently without interruption. Even if one of the sensors fails, other functions will continue to operate normally. Unfortunately, this platform only provides limited robot models, such as iRobot, Lego NXT, and MobileRobotics, and it cannot support path planning [
72]. The tutorials and development resources for MRDS are also very limited. Furthermore, the platform has not been updated for a long time, and its maintenance is becoming more and more difficult.
To be brief, the Physx Engine integrated into MRDS provides significant advantages to this platform, particularly in simulating harsh environments, such as sand. Additionally, the decentralized framework enhances its robustness and fault tolerance; even if one sensor fails, other robot functions can continue to operate normally. Users can leverage the Visual Simulation Environment (VSE) tool in MRDS to create and modify UAV models to suit their needs. Within VSE, users can design and adjust the physical entities, sensors, behaviors, and more of the UAV before controlling them with MRDS services. However, the platform has shortcomings such as limited built-in models, variable cross-platform performance, and maintenance challenges.
2.6. MORSE
MORSE (Modular Open Robots Simulation Engine) is a simulation platform developed based on Blender engine [
21], which offers a realistic graphics environment that can be used for testing and evaluating robots without any further modifications in real-life scenarios [
73]. The simulation engine utilizes the Bullet library to define physical properties such as object shapes, mass, friction, boundary collision, and other physical factors. This platform provides three types of robot components, namely, sensors, actuators, and robots. Robots carry two components: sensors and actuators. The former is used for data collection, while the latter is responsible for executing instructions. In addition, there are three components related to environment interaction, including scenes, middlewares, and modifiers. Scenes are simulated environments such as buildings, indoor environments, and jungles. Middlewares are responsible for binding sensors and actuators. As the data generated by sensors in simulation do not contain any noise, the modifier is used to simulate the noise data to achieve an effect that is much closer to the real environment.
MORSE can be deployed on Linux, Windows, and Mac OS, but with a better support for Linux. This platform generates simulation scenes using a set of Python classes called Builder API, which provides a special internal language called domain-specific language (DSL) [
74]. This allows developers to use Python to configure MORSE, even if they are not familiar with Blender. The built-in models contain agents such as iRobot ATRV unmanned ground vehicle (UGV) and Yamaha RMAX UAV, which can be enriched by importing Collada, DXF, 3DS Max, VRML, and other formats. MORSE also has built-in sensors such as cameras, gyroscopes, GPS, accelerometers, thermometers, and lasers [
73], making it suitable for simulating realistic graphics. MORSE has unique advantages in human-computer interaction and UAVs attitude simulation. It provides UAV models such as multi-copter UAV in the model library. Users can define parameters such as the number of UAVs, their positions, sensors, controllers, etc. by editing Python scripts. The platform also provides a variety of simulation scenarios, such as the outdoor (environment), which meets the needs of UAV simulation, and users can also model the environment based on it. Researchers use MORSE to simulate UAVs, such as multi-UAV communication [
75] and path planning [
76,
77]. The simulation of an UAVs swarm using MORSE is shown in
Figure 6.
Unfortunately, the lack of updates since 2016 and limited community resources and development tutorials make it challenging for developers to use MORSE effectively. Furthermore, the absence of a graphical user interface and the requirement for developers to be familiar with command line tools and the Blender engine can be a barrier to entry for beginners. Additionally, MORSE lacks built-in algorithms such as path planning, which can make it challenging for developers to use it for more complex projects. Overall, while MORSE is not a good choice for entry-level developers due to its technical requirements and limited support resources.
2.7. USARSim
USARSim is a simulation platform developed by the National Institute of Standards and Technology in the USA for researching rescue robots and intelligence agents [
29]. The platform is based on the Unreal Engine 2.0 developed by Epic Games [
78], which provides high-quality 3D rendering capabilities using the PhysX physics engine. Applications and algorithms can be developed using C, C++, Java [
41], or the built-in Unreal Script language. Control codes are developed using the GameBot interface, which is a communication interface exclusive to the phantom engine. USARSim is compatible with Windows, Linux, and Mac OS. An example of USARSim simulating UAVs can be seen in
Figure 7.
The Mobility Open Architecture Simulation and Tools (MOAST) framework of USARSim offers a range of hierarchical and modular controllers, interfaces, and tools that provide motion generation, world modeling, and sensor information processing [
79]. In addition, USARSim includes two controllers, Pyro and Player [
80]. Pyro is a controller for AI exploration and robot development, which includes Python libraries, environments, a GUI, and drivers. Player is a robot service that can control the robot and sensors, such as touch sensors, lasers, and acoustics, in the simulation environment. Users can easily and fully control the controller and actuator carried by a robot using Player.
USARSim supports eight types of ground robots, including P2AT, P2DX, ATRV-Jr, Zerg, Tarantula, Talon, Telemax, and Soryu; four types of vehicles, namely, Hummer, Sedan, SnowStorm, and Cooper; two bipedal robots, QRIO and ERS, a helicopter, and a submarine. As USARSim is developed by using Unreal Engine 2.0, it has high-quality 3D capabilities. Furthermore, it supports multiple types of UAVs, including multi-copter UAV, as well as different sensors and controllers. It provides predefined scenarios such as buildings, earthquake zones, and tunnels, while also allowing users to create custom scenarios. Users can write their algorithms to control the UAV. Although USARSim was primarily designed for search and rescue missions, it has also been used by many researchers for UAV simulation, such as obstacle avoidance and navigation [
81,
82]. However, the robot library is limited, and similar to MRDS, this platform has not been updated or maintained, resulting in poor support for new types of robots and sensors. While there are some official communities and manuals, community activity is weak, and tutorials are inadequate [
21].
3. Selection of Simulation Platforms for Multi-Copter UAVs Swarm
This section provides an example of selecting a suitable simulation platform for the development of multi-copter UAVs swarm. Firstly, a general list of seven platforms is presented from the aspects of programming language, operating system (OS), physical engine, and sensors (
Table 1). Then, the requirements for multi-copter UAVs swarm simulation are further refined into eight items. After comparing the eight items of the seven platforms, it is concluded that Webots is the comprehensive optimal choice for the simulation of multi-copter UAVs swarm.
3.1. The Requirements of Multi-Copter UAVs Swarm Simulation
Nowadays, UAVs swarm technology has been investigated in various applications, such as capture [
83], target searching [
84], cooperative operation [
85], path planning [
86], formation control [
87], and artificial intelligence algorithms [
88]. Having them in mind, and considering UAVs are not always work in outdoors, a simulation platform should be able to simulate other environments/scenarios, such as indoor, pipeline, forest, jungle, and canyon. Moreover, a simulation platform should have a good performance on computation when conducting simulations of multi-robot or swarm. Other than that, a platform should support applications developed by multiple programming languages, have rich built-in models, be compatible with multiple OS, have rich learning resources or technical support, and be user-friendly. To specify the requirements, we refer to previous surveys and summarize the following concerns [
89,
90].
Multi-sensors. It can simulate the general sensors, such as GPS, radar, camera, sonar, and inertial measurement unit (IMU).
Built-in models. It should have commonly used built-in agents/robots, e.g., UAVs, pedestrians, humanoid robots, unmanned underwater vehicles (UUV).
Realism of the simulated environment. It can simulated both outdoor and non-outdoor environments/scenarios, such as indoor, jungle, and pipeline. Moreover, the simulation results should be as close as possible to the real environment. Meanwhile, the simulated data can be directly applied to real UAVs.
Computation performance and accuracy. It can make full use of the existing computing resources to support a large number of UAVs swarm and a wide range of scenarios. The simulation accuracy meets certain requirements.
Multiple programming languages and OS. It can support a variety of mainstream programming languages. Further, the developments can be directly transplanted to real machines.
Usability. It has rich documents, technical support, and friendly interfaces. More importantly, it is easy to be reused (e.g., reuse the developed codes).
Stability and maintenance. It is still being updated and maintained by developers or communities.
Have commonly used functions or applications. It can support or has built-in commonly used applications, such as path planning, artificial intelligence algorithm, etc.
Table 1.
Main characteristics of the seven simulation platforms.
Table 1.
Main characteristics of the seven simulation platforms.
| Programming Languages | OS | Physics Engines | Main Sensors | Access Addresses (accessed on 28 March 2023) |
---|
Webots [91] | C, C++, Java, Python, MATLAB | Windows, Linux, MAC OS | ODE | Accelerometer, altimeter, compass, GPS, gyroscope, distance sensor, inertial unit, position sensor, receiver, touch sensor, camera, LIDAR, radar, rangefinder | https://cyberbotics.com |
Gazebo [92] | C, C++, Python | Mac OS, Linux, Windows | ODE, Bullet, Simbody, DART | Laser sensor, camera, inertial measurement, contact sensor, force sensor, torque sensor | https://gazebosim.org/home |
CoppeliaSim [93] | C, C++, Python, Java, LUA, Matlab, Octave | Windows, Mac OS, Linux | ODE, Bullet, Vortex, Newton | Proximity sensors, Force sensors, Vision sensors, Cameras | https://www.coppeliarobotics.com |
ARGoS [23] | Lua, C++ | Ubuntu, KUbuntu, OpenSuse, Mac OS | ODE, 3D particle engine, 2D-dynamics open-source physics engine library Chipmunk, 2D-kinematics engine | | https://www.argos-sim.info |
MRDS [94] | VPL, C#, Visual Basic, JavaScript, Iron-Python | Windows | PhysX engine | Analog sensor, Analog sensor, Array, GPS, Contact sensors, Depth Camera, Encoder, Sonar, WebCam, SICK Laser Range Finder | https://learn.microsoft.com/en-us/previous-versions/microsoft-robotics/bb648760(v=msdn.10) |
MORSE [95] | Python | Linux, Windows, Mac OS | Blender engine, Bullet | Accelerometer, Airspeed, Armature Pose sensor, Barometer, Attitude sensor, Collision, Battery sensor, Depth camera, Generic Camera, GPS, Gyroscope, Infrared Proximity sensor, Laser Scanner Sensors, Magnetometer, Odometry, Inertial measurement unit, Radar Altimeter, Thermometer sensor, Proximity Sensor, Velocity | https://www.openrobots.org/morse/doc/stable/morse.html |
USARSim [96] | C, C++, Java | Windows, Linux, Mac OS | Unreal engine | State Sensor, Range sensor, Range Scanner sensor, Odometry sensor, GPS, INS, Encoder sensor, Touch Sensor, RFID, Sound sensor, Human-motion sensor, Robot Camera, Omnidirectional Camera | https://sourceforge.net/projects/usarsim |
3.2. Comparisons of the Seven Platforms
3.2.1. Multi-Sensors
A UAV typically consists of three key components: the main flight controller, IMU, and navigation unit. The main flight controller is responsible for receiving and processing signals from the ground control station, then outputting the corresponding PWM signals to control the motors to execute specific actions. The IMU, which includes sensors such as barometers, accelerometers, gyroscopes, and compasses, receives and measures the attitude data of UAV. Finally, a navigation unit such as the global navigation satellite system (GNSS) is typically carried to provide accurate positioning and navigation information for the UAV.
Some previous studies have investigated the types of sensors required for UAVs [
22]. Based on the sensors commonly equipped on UAVs and previous surveys, we consider the following five types of sensors to be important for UAVs swarm: GNSS, radar, camera, sonar, and IMU (
Table 2). In the table, ‘Yes’ or ‘No’ indicates whether the sensor is supported or not by a particular platform, while ‘NaN’ indicates that there is no information available regarding support for that sensor. We also propose a ’Score’ column to evaluate the level of support for multiple sensors, with a higher score being awarded for platforms that support more sensors. In this scoring system, a ‘+’ symbol adds one point to the score, while a ‘−’ symbol represents a score of zero. The meaning of the symbols in the following sections is the same.
3.2.2. Various Types of Built-in Models
In general, UAVs are designed to fly in outdoor environments, but they may also need to operate in non-outdoor environments, such as indoor areas [
97], jungles [
98], and pipelines [
99]. One notable feature of non-outdoor environments is that GNSS signals may be weak or even unavailable, which means that UAVs cannot rely on GNSS for positioning and navigation. In simulations, the main difference between outdoor and non-outdoor environments is whether the UAV carries GNSS sensors. If a GNSS sensor is loaded, the simulated environment can be regarded as outdoor; otherwise, it is considered non-outdoor. In addition to the environment type, the shapes of terrain and obstacles are also different between outdoor and non-outdoor scenarios. For instance, in indoor scenes, developers can create different shapes of obstacles without considering their appearance, color, material, and other information. However, if cameras on UAVs are used to detect the surroundings, developers need to add textures to the obstacles to make the model closer to the real world. Thus, simulation platforms need to support textured scenarios. Other than the environments, a simulation platform should also have general built-in agents/robots, such as UAVs, pedestrians, and humanoid robots.
In short, the ability of a simulation platform to simulate different environments depends on its built-in models. Moreover, the simplicity of the platform’s modeling method determines the threshold of development and the efficiency of modeling. One of the easiest ways is to provide a user-friendly interface that allows developers to directly drag and drop models into the simulation environment [
52]. The comparison of different platforms on the built-in models and ease of the modeling process is shown in
Table 3.
3.2.3. Realism of Simulated Environment
The realism of the simulated environment is another critical aspect of simulation platforms because real-world environments involve physical factors such as air density, wind speed, gravity, friction, and more [
100]. Thus, physical engines are developed, and their richness determines the realism of simulated environments.
To evaluate the ability of platforms to create realistic simulations, we investigate the physical engines used by each platform. The most widely used physical engines in simulation platforms are ODE, Bullet, PhysX, Unreal, and Blender. While ODE may not be as good as Bullet and PhysX in simulating collisions, it has better constraint and stacking stability. ODE also does not simulate friction as well as Bullet, but it is slightly better than PhysX in this aspect [
101]. PhysX engine is excellent at collision detection and stacking stability, but it falls short in simulating friction. Although the Blender engine is not designed for simulation platforms, it can achieve advanced graphical details [
73]. ODE has good documentation support and a stable API, but Bullet does not, and its API often changes [
102]. Because there is no clear distinction between the advantages and disadvantages of each engine, and all seven platforms have their own physical engines, we consider all platforms to have the same score.
3.2.4. Computation Performance and Accuracy
The computational performance of simulation platforms is one of the major concerns for developers, especially when it comes to swarm simulations. Among the seven platforms, ARGoS is more suitable for simulating swarms compared to Gazebo and CoppeliaSim. CoppeliaSim is known to consume the most computing resources [
23], while MORSE is more efficient than Gazebo for large-scale robot environment simulations [
103]. In the comparison of the average CPU efficiency load among Webots, Gazebo, CoppeliaSim, and MORSE, Webots was found to be the best performing simulation platform. On the other hand, Gazebo has the lowest CPU efficiency, while the performance of MORSE and CoppeliaSim is similar [
104]. However, it is worth noting that if Webots, USARSim, or Gazebo is used to simulate more than a dozen robots, it may become slower than on a physical robot [
27].
When it comes to accuracy, taking the IMU simulation as an example, CoppeliaSim has the smallest error, followed by Gazebo, and MORSE has the worst performance. As stated on their official website, the authors do not consider MORSE as a physically accurate simulator [
105]. Webots is similar to CoppeliaSim in terms of IMU angular velocity accuracy, but it lags behind in IMU linear acceleration accuracy [
104]. While the Unreal engine of USARSim offers better image quality, its physical simulation performance is not good, making it unsuitable for accurate physical simulation [
79,
106]. The accuracy of MRDS in purely longitudinal motion and trajectory tracking simulations is not as good as the ODE engine [
107]. For accurate physical simulation, it is recommended to use the ODE engine simulator rather than MRDS. While ARGoS offers the best computational performance, its simple model makes it difficult to use for high-precision simulation experiments.
Table 4 shows the scores for the computational performance and accuracy of the seven platforms.
3.2.5. Multiple Programming Languages and OS
One of the most significant considerations for developers when choosing a simulation platform is its ability to support multiple programming languages. If programming language in the simulation platform does not match that of real robots, developers will have to translate it, which can increase their workload. For instance, Python is widely used in deep learning (DL) and machine learning (ML) applications [
108]. Therefore, developers proficient in Python who want to simulate DL and ML algorithms or applications are likely to avoid choosing a platform that does not support Python. Additionally, a simulation platform that supports multiple mainstream programming languages can facilitate the process of transplanting simulated results to real machines, making it an attractive option for developers.
In addition, different developers prefer to or are familiar with different OS, and transferring knowledge from one type of OS to another can be time-consuming. Thus, the type of OS supported by a simulation platform also affects the preferences of developers, since programming languages are usually matched or associated with OS. We make scores on the two aspects together (
Table 5).
3.2.6. Usability
The usability of simulation platforms is determined not only by their features but also by technical support factors such as official manuals, user guides, open-source projects, maintenance, and update frequency. Developers need to become familiar with the interface and framework of platforms before using, making these resources critical. Simulation platforms with active technical communities and development projects tend to be more popular among developers [
90]. When facing complex technical issues, developers require adequate technical support to quickly solve problems.
Table 6 displays the scores of technical supports and communities.
3.2.7. Stability and Maintenance
The ongoing updating and maintenance of a simulation platform is crucial because new versions are typically developed to address bugs and stability issues in older versions. In the update log of CoppeliaSim, for example, each new version fixes previous errors and instabilities [
109]. Continuous maintenance can improve the stability of simulation platforms, which further helps to ensure reliable simulation processes.
In addition, robots are constantly being updated and replaced with newer models, which makes it crucial for simulation platforms to keep pace with these changes. If a simulation platform is rarely updated or has stopped receiving maintenance, it will eventually become unstable and fall behind in terms of compatibility with new robot models. This means that its simulation results cannot be used to test and evaluate new robots effectively.
Table 7 lists the maintenance and update status of seven simulation platforms. It should be added that although the three platforms (MRDS, MORSE, and USARSim) are no longer being updated, many researchers continue to use them [
110,
111,
112], which is why we still consider them in this survey.
3.2.8. Have Commonly Used Functions and Applications
Last but not least, the availability of commonly used functions and applications in a simulation platform is another crucial factor for developers to consider, because they want to focus their efforts on the specific issues they need to address rather than on a platform itself. For example, ROS is widely used in robot development, as it provides developers with access to many basic robot functions. Specifically, ROS can improve code utilization and enable developers to make the best use of their code [
117]. This simplifies the development process by allowing developers to focus on the application layer. Therefore, the ability of a simulation platform to support ROS is an important criterion to consider when selecting a platform.
In addition, in recent years, as artificial intelligence (AI) algorithms such as reinforcement learning and deep learning have advanced, developers have begun to consider whether a simulation platform can support these algorithms as a critical factor in their selection criteria. Therefore, the ability of a simulation platform to support commonly used functions and applications is reflected in its support for ROS and AI algorithms (see
Table 8).
3.3. A Case Study of Multi-Copter UAVs Swarm Based on Webots
Table 9 provides an overall comparison of the seven simulation platforms. Based on the scores, Webots is highly recommended for simulating multi-copter UAVs swarm. This platform offers a range of built-in sensors for UAVs, including accelerometers, compasses, GPS, gyroscopes, inertial sensors, cameras, LIDARs, and altimeters. Since it has built-in DJI Mavic Pro model, developers can easily obtain data on motor speed, gyroscope readings, GPS coordinates, and other relevant information via the interface. The parameters of the built-in models are fully aligned with the physical models, making it easy to transfer simulated data to a physical UAV and ensuring the reliability of the simulation results.
The case study here is to simulate a swarm with three UAVs (DJI Mavic 2 Pro) in an urban environment. The whole process includes six steps:
Create project and world files. To create a new simulation environment, start by clicking on “Wizards” in the top menu bar and selecting ‘New Project Directory’. Then, enter the name of the project and choose a storage location. Once done, click on ‘File’ and select ‘New World’ to begin setting up the simulation.
Designing the simulation environment. We firstly created an urban environment. To do this, navigate to the ‘Scene Tree’ and click on ‘Add New’. From there, select ‘PROTO nodes (Webots Projects)’ > ‘floors’ > ‘Floor(solid)’ to import the ground node. Adjust the ‘size’ parameter in the node to modify the size of the ground, and reset the material by clicking on ‘appearance’. Delete the original material and select the ground material from ‘PROTO nodes (Webots Projects)’ > ‘appearances’ > ‘Soil(PBRAppearance)’. Then, add obstacles including buildings, roads, and traffic by selecting ‘PROTO nodes (Webots Projects)’ > ‘objects’. To add a UAV, navigate to ‘rbots’ > ‘dji’ > ‘mavic’ > ‘Mavic2Pro(Robot)’ and add it to the simulation. Give it a name like ‘leader’. We also can add other vehicles and humans by selecting ‘vehicles’ and ‘humans’, respectively. The designed urban environment can be seen in
Figure 8.
Set UAV models. Continuing from the previous step, we created two additional ‘Mavic2Pro’ models identical to the first one, and named them as ‘follower’. After that, we selected the ‘leader’ UAV node and right-click on ‘bodySlot’ > ‘Add New’ > ‘Base node’ > ‘Emitter’ to add a communication transmitter. Then, we selected ‘Receiver’ as the communication receiver on the ‘follower’ UAVs. We also set the communication distance, noise, channels, and any other parameters required for communication between the UAVs.
Set up controllers. Click on the ‘Wizards’ option in the top menu bar and select ‘New Robots Controller’. Choose the Python programming language as the controller language. Name the first controller as ‘leader control’, and similarly create the second controller called ‘follower control’. Write the control algorithm code, which includes UAV motion control, communication, sensor definition, and other necessary functions.
Set simulation parameters and start the simulation. In the ‘Scene Tree’, navigate to ‘WorldInfo’ and set the simulation parameters such as ‘basicTimeStep’ and ‘FPS’. We set the ’basicTimeStep’ to 64 and ’FPS’ to 60. After saving the project, click on the ‘Run the simulation in real-time’ button located at the top of the interface to start the simulation. Once the simulation starts, we can see the UAVs swarm moving in the environment
Figure 9. These UAVs can take off, land, and move forward and backward simultaneously.
Debug the simulation and show results. Based on the simulation results, we can modify the controller code and the simulation environment. This may involve tweaking the parameters or algorithms used in the controller code, changing the obstacles or adding new elements to the environment. Use the ’Show Robot Window’ feature to observe the sensor parameters of the UAV during the simulation. This allows us to gather data on the performance of the UAV in the environment. We can observe sensor parameters such as GPS, Gyro, InertialUnit, etc. Analyze the sensor data obtained during the simulation to refine the control algorithm and improve the performance of UAVs. Use the GPS data obtained during the simulation to analyze the UAV’s movement and improve its navigation capabilities. We visualized the GPS data and plotted it to gain insights into the UAV’s movement patterns (
Figure 10).
3.4. Discussion
The above example shows how to make UAVs swarm simulations based on Webots. In addition to the Mavic2Pro UAV models, developers can import new (custom) models using VRML files. Developers can also add other sensors to their UAV models and develop their own controllers to achieve specific goals.
Other than the Webots, there are two suboptimal platforms for this case: ARGoS and MORSE. As mentioned in
Section 2.4, ARGoS has significant advantages in simulating swarms with a large number of robots. If primary concern of a developer is simulating a large swarm, then ARGoS is a suitable choice. However, it should be noted that ARGoS has some drawbacks, including poor built-in models and sensors, limited technical support, and fewer available models compared to Webots. If a user does not require a large-scale simulation but needs high-precision simulation, it is not recommended to use the ARGoS. In such cases, Webots or CoppeliaSim will be a better choice as they offer more robust modeling and simulation capabilities.
MORSE provides many built-in sensors for UAVs, including accelerometer, flight speed sensor, an attitude sensor, barometer, magnetometer, IMU, odometer, and radar. It also contains a cloud platform unit, quad-rotator dynamic controller, rotator attitude motion controller, and rotator speed motion controller. In the simulation, UAVs have detailed representations instead of particle-like models used in some other platforms. However, one of the main disadvantages of MORSE is that it only supports Python and has limited technical resources. Additionally, it lacks graphical interfaces, which requires developers to have a good understanding of command-line interfaces and the Blender engine, increasing the learning curve for beginners. Moreover, MORSE is no longer being updated or maintained, which makes it less recommended for developers who want to build a long-term project. Therefore, we recommend developers to carefully consider their specific requirements before choosing a simulation platform, as each platform has its own strengths and weaknesses.
4. Conclusions
This paper provides a comprehensive review of seven open-source simulation platforms commonly used for simulating multi-copter UAV swarms, including Webots, Gazebo, CoppeliaSim, ARGoS, MRDS, MORSE, and USARSim. After reviewing the basic features of them, we presented the requirements of multi-copter UAVs swarm simulation, and then conducted a detailed analysis, proposed our own evaluation criteria, and finally compared of each platform from eight aspects: (i) multi-sensors; (ii) various types of built-in model libraries; (iii) realism of the simulated environments; (iv) computation performance and accuracy; (v) multiple programming languages and OS; (vi) usability; (vii) stability and maintenance; and (viii) commonly used functions or applications. Such a survey provides scientific researchers, developers, and users with a reference when choosing a simulation platform. Based on our evaluation, we conclude that Webots is the most suitable platform for simulating multi-copter UAV swarms, and we provide specific steps and simulation results to validate the effectiveness of the swarm control algorithm in an urban environment.
This research is of great value to researchers, developers, educators, and engineers who are seeking appropriate simulation platforms for their application developments, not only for multi-copter UAV swarms but also for other types of robots. Proper platforms can help them save expenses on testing and speed up the development progress. However, it should be noted that there have been few recent review papers on this topic, so some of the literature cited in this paper may be outdated, and some simulation platforms are updated frequently, which may lead to some discrepancies between our research and the current state of the platforms. Therefore, developers should follow the latest versions of the platforms to ensure their research and applications are up to date.