JOURNAL OF PHYSICAL AGENTS, VOL. 7, NO. 1, JANUARY 2013 39 Progress in RoboComp Marco A. Guti´ errez, A. Romero-Garc´ es, P. Bustos, J. Mart´ ınez Abstract—During the last six years the RoboComp robotics framework has been steadily growing in the number of software components, the variety of robots supported and in new solutions to the maintenance of large robotics software repositories. In this paper we present recent advances in the formal definition of the RoboComp component model and a new set of tools based on Domain Specific Languages that have been created to simplify the whole development cycle of the components. Moreover, a new robot simulation tool has been created providing perfect integration with RoboComp and better control over experiments than current existing simulators. Finally, the paper describes a working solution to the important problem of communications middleware independence, which allows users to decide which middleware the components will be compiled with. Our solution has been validated by the integration of Nerve, a novel middle- ware for critical robotics tasks, in RoboComp. Index Terms—Robotics Framework, Software Engineering, middleware, performance, robotics I. I NTRODUCTION R OBOTICS software has to deal with very specic prob- lems such as complexity, code reuse, scalability, robust- ness, distribution, language and platform support, or hardware independence. These problems should be addressed with ap- propriate software engineering techniques and should be trans- parent to the developer when possible. Software complexity, from the developer point of view, is an important topic because scalability decreases as complexity increases. The robotics community is already aware of this fact and has steered towards component oriented programming (CBSD) [1]. Many different approaches have raised in order to solve the robotics specific issues. RoboComp [2] is a robotics framework focused on ease of use and rapid development that is continuously evolving to cope with the demanding requirements of current robots. According to our experience, the most challenging issues that these frameworks must face now are reusabil- ity, scalability, robustness and adaptability. Although these issues are common to other application domains, Robotics incorporates additional difficulties such as real/critical time, hardware interaction, physical security conditions and human- robot interaction just to name a few ones. In this paper we present some advances in the scalability and adaptability issues. Scalability is the problem of how to manage an increas- ing number of static components -in repositories- and running components -in deployed networks with dozens of processes. Adaptability is the problem of maintaining alive the framework technology during many years, given the huge number of dependencies from third party providers that unavoidably end up forming part of the software. Marco A. Guti´ errez and P. Bustos are with RoboLab at the University of Extremadura E-mail: marcog@unex.es A. Romero-Garc´ es and J. Mart´ ınez are with the University of M´ alaga We have approached these problems using Domain Specific Languages (DSL) based tools and a flexible component model that can be adapted to new and unforeseen requirements. Automatically generated code, online syntax checking, auto- mated components deployment and free generated parsers are some of the advantages that can be obtained from the use of these tools. Several DSLs have been designed to facilitate the work of developers. These languages provide a textual or graphical high-level definition of the internal structure of the components, interfaces, configuration parameters, deployment configurations and of the kinematics of the robots and the scene. The specific design of each of these languages and their role in the scalability and adaptability issues will be furtherly explained in section IV The availability of a DSL-based definition of the elements just mentioned opened new unexpected possibilities to tackle the adaptability problem. Up to now, RoboComp has based its communications on a third party industrial-quality middle- ware, Ice, from ZeroC [3]. Although this choice has never been a problem so far, it is true that sticking to an specific middleware entails some risks, for example staying out of some recent technological advances. An interesting solution to this problem is to have middleware independence in the framework, meaning that the user can select which commu- nications middleware will be used in the component. This feature adds even more flexibility to our framework in terms of components interconnection and developer abstraction, facili- tating the survival of the repository across technology changes. Another strategic decision that we have taken is to create a new 3D robotics simulator. There are several reasons for starting this gigantic endeavour that are discussed later but, essentially, we needed total control over the simulator and its interfaces because we wanted to integrate it as a native component in the RoboComp architecture. As it will be sketched below, a simulator component can be used in two ways: externally, as a regular provider of synthetic reality; and internally, as an inner-model of the perceived reality. It is this last use and its role in the new cognitive architecture we are constructing what has driven us to build the RCIS simulator. The rest of the paper is organized as follows: Section II will briefly review the most related frameworks. Section III gives a quick overview of the general features of RoboComp. Section IV explains the new DSL technology and its im- plementation in the life-cycle of component development. In Section V how middleware independence in RoboComp is achieved and a case of study are explained. Section VI de- scribes the intrinsics of the new 3D simulator tool. RoboComp packaging is explained through section VII. Finally VIII will provide some conclusions along with some future lines of work.