Simulating Complex Robotic Scenarios with MORSE
Total Page:16
File Type:pdf, Size:1020Kb
Simulating complex robotic scenarios with MORSE Gilberto Echeverria, Séverin Lemaignan, Arnaud Degroote, Simon Lacroix, Michael Karg, Pierrick Koch, Charles Lesire, Serge Stinckwich To cite this version: Gilberto Echeverria, Séverin Lemaignan, Arnaud Degroote, Simon Lacroix, Michael Karg, et al.. Simu- lating complex robotic scenarios with MORSE. 3rd International Conference on Simulation, Modeling, and Programming for Autonomous Robots, Nov 2012, Tsukuba, Japan. pp.197-208, 10.1007/978-3- 642-34327-8_20. hal-00988475 HAL Id: hal-00988475 https://hal.archives-ouvertes.fr/hal-00988475 Submitted on 8 May 2014 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Simulating complex robotic scenarios with MORSE Gilberto Echeverria1⋆, S´everin Lemaignan1,2⋆⋆, Arnaud Degroote1⋆⋆⋆, Simon Lacroix1†, Michael Karg2‡, Pierrick Koch3§, Charles Lesire4¶, and Serge Stinckwich3,5k 1 CNRS, LAAS, 7 avenue du colonel Roche, F-31077 Toulouse, France / Universit´e de Toulouse, UPS, INSA, INP, ISAE, LAAS, F-31077 Toulouse, France 2 Institute for Advanced Studies, Technische Universit¨at M¨unchen, D-85748 Garching, Germany 3 UMR 6072 GREYC Universit´ede Caen-Basse Normandie/CNRS/ENSICAEN, France 4 ONERA – the French Aerospace Lab, F-31055, Toulouse, France 5 UMI 209 UMMISCO IRD/IFI/Vietnam National University, Vietnam Abstract. MORSE is a robotic simulation software developed by roboti- cists from several research laboratories. It is a framework to evaluate robotic algorithms and their integration in complex environments, mod- eled with the Blender 3D real-time engine which brings realistic rendering and physics simulation. The simulations can be specified at various levels of abstraction. This enables researchers to focus on their field of interest, that can range from processing low-level sensor data to the integration of a complete team of robots. After nearly three years of development, MORSE is a mature tool with a large collection of components, that pro- vides many innovative features: software-in-the-loop connectivity, multi- ple middleware support, configurable components, varying levels of simu- lation abstraction, distributed implementation for large scale multi-robot simulations and a human avatar that can interact with robots in virtual environments. This paper presents the current state of MORSE, high- lighting its unique features in use cases. 1 Introduction Simulations are an essential component in robotics research, allowing the eval- uation and validation of many sorts of developments before their integration ⋆ [email protected] ⋆⋆ [email protected] ⋆⋆⋆ [email protected] † [email protected] ‡ [email protected] § [email protected] ¶ [email protected] k [email protected] on-board real robots. For such validations to be useful, the simulation must pro- vide enough fidelity with respect to the real world, within the requirements of the considered robotics application. Creating a fully realistic simulation in every aspect remains nearly impossible and sometimes can also be seen as an incon- venience. Therefore numerous simulators are focused on a given specific aspect (e.g. terramechanics to study locomotion, contact forces to study manipulation, realistic photo-rendering to study vision algorithms, ...). The MORSE simulator presented here is not targeted to the study of a spe- cific domain of robotics, but is rather meant as a tool that can be used to test and evaluate integrated robot software, i.e. the suite of processes required to au- tonomously achieve complex missions. Using Blender to simulate photo-realistic 3D worlds and the associated physics engine, it brings enough realism to eval- uate complete sets of software components within a wide range of application contexts. The simulator is designed to be useful under varied environments, and pro- vides features to adapt itself to existing robotic architectures, without imposing any changes on them to connect with MORSE. It has modular components that are versatile and configurable, to permit software-in-the-loop testing of robotics software. Input from several researchers has guided the evolution of this tool to satisfy the requirements of different labs, while keeping to its design principles. MORSE works on all major software platforms: win32, Linux and OS X. It is developed as an open–source project with a BSD 3-clause license. 6 The outline of this paper is as follows: Section 2 reviews other compara- ble robotics simulators, and Section 3 introduces the main design principles of MORSE. Section 4 is the heart part of the article: it depicts the main features of MORSE, each being exemplified with the projects for which they were developed. Finally Section 5 gives the conclusion and future plans for the simulator. 2 Related Work The Player/Stage/Gazebo[1] is a well known robotics suite. It is a full set of tools that include the Player communication layer and two integrated simula- tors: Stage [2] is basically a 2D simulator optimized for navigation on flat and closed environments. One of its advantages is the capability to handle very large numbers of simplified robots [3]. However, it is not ideal for more complex sce- narios, specially in 3D space. The more recent Gazebo [4] was developed to cover these shortcomings. It has received an important boost in its development with its integration into the ROS platform, and has thus become the most commonly used robotics simulator. It integrates very well with ROS and Player, but con- nectivity with other middlewares requires additional programming. The Unified System for Automation and Robot Simulation (USARSim)[5] shares many design concepts with MORSE. It was initially developed as a simu- 6 User documentation and additional information are available at http://morse. openrobots.org, and the source code can be downloaded from http://github. com/laas/morse.git. lator for search and rescue operations, uses the Unreal Engine gaming platform and is built with the concept of modular components. It is widely used as an evaluation tool for the well known RoboCup competitions. However, it uses an adhoc interface to communicate with external software and does not support some of the most common robotics middlewares. The Unreal Development Kit (UDK) used is a closed-source library and is not available on every platform. Webots [6] is a popular commercial simulator. It provides a full programming environment to create customized robots and environments, but the interface to construct new components and robots is unintuitive and complex, requiring searching trough data trees to adjust physical and geometrical parameters. It also has an integrated code editor, but the control programs created in it must later be converted and transferred to the final robot platform. Another commercial simulator is V-REP [7], with a large variety of com- ponents and sensors available. It allows scripting of the components using the LUA language. Being modular, it allows for copy-and-paste functionality of the components. However, it provides no native method for communication with middlewares; such functionality must be provided by the user in the form of add-ons. 3 MORSE Architecture Overview The Modular Open Robots Simulation Engine (MORSE) is a library of Python scripts that run on the Blender Game Engine (BGE) to interface a 3D virtual environment with external robotics software. Its main design principles have been described in [8], they are quickly recalled here. The BGE is used as the base platform for the graphical display of the sim- ulated world and the physics simulation, using the Bullet physics library. The simulation is organized as a main core of control functionality that initializes and coordinates the events in the BGE, and a collection of components that can be used to assemble a robot with sensors and actuators. A variety of communication tools allow each of the MORSE components to connect with external robotics software through middlewares. MORSE has support for some of the most com- monly used robotics middlewares nowadays, including ROS [9], Pocolibs [10] and YARP [11]. Other middlewares are regularly being added, mainly driven by the needs of new users. This process is simple, as existing middleware bindings can be used as templates for the new ones. MORSE sensors and actuators are minimalistic in their functionality and completely middleware agnostic. They can provide similar data as their real world counterparts, but some of them have multiple variants that can work at different levels of realism and abstraction. The data employed by the components can be altered through the use of components called modifiers. These add noise or change the data as required to better match the data with real sensors/actu- ators (for instance, transforming the coordinate frame used by Blender into the Universal Transverse Mercator coordinate system, or adding noise to images cap- tured by Blender cameras). When a simulation scene is created, the components are linked to middlewares as specified in a configuration script, and the neces- sary functionality is added to the components to be able to transmit/receive data through the middleware as data streams or synchronous/asynchronous requests. The whole data flow in MORSE can be seen in the diagram of Fig. 1. Fig. 1: Overview of the data flow in MORSE, between the simulated world in Blender and the external robotics software MORSE can be easily extended by adding new components that inherit from the existing base classes. All components are programmed in Python, since this is the language that Blender uses for its scripts. However, when coding components that require a faster processing time, they can be implemented in C/C++ and interfaced with Python using Swig.