My research interests mainly revolves around the application of Software Engineering methodologies in the Robotics domain. In particular I’m interested in:

  • Component Based Software Engineering,
  • Software Architectures,
  • Software Product Lines
  • Model Driven Engineering
  • Domain Specific Languages.

During my PhD I worked for the European Project FP7 BRICS, Best Practice in Robotics. As a member of the University of Bergamo I contributed to the work-package 7, whose topics were the Openness and Flexibility of Robotics Software. In this context my research focused on the modeling and resolution of software variability and on the design of approaches and tools for improving the flexibility of Robotics Software.
The major contribution of my PhD research focused on the modeling, composition and resolution of software variability in component based robotic systems. The results, which build on the top of two promising approaches to software reuse, i.e. Software Product Line (SPL) and Model-Driven Engineering (MDE), can be organized in three categories: (a) a development process that aims at leveraging the huge corpus of robotic software currently available as open source libraries; (b) a set of models for designing and composing stable software architectures and modeling their functional variability; (c) a set of tools that simplify systems configuration and application deployment by system integrators without advanced skills in software development. The models and the tools that I have designed and developed are part of the open source project HyperFlex, which I founded together with my advisor Davide Brugali.

In the last months my research is focusing on the extensions of the techniques designed during my PhD in order to define new models and tools for representing runtime variability and supporting runtime adaptation of robotic systems. The research is motivated by the necessity of postponing some design decisions at runtime, where more information about the state of the robot and its surrounding environment is available. In order to make it possible, the software system needs to be able to reason about its current state and automatically adapt its architecture to provide the best configuration. In this direction, in collaboration with Nico Hochgeschwender, I founded the Robotics Runtime Adaptation Project (RRA), which aims to define a set of models that orthogonally represent the system architecture, its runtime variability, the state of the robot and the state of the environment. Additionally I’m designing and developing new tools, which continuously reason about the knowledge represented in the aforementioned models, resolve the run-time variability, and consequently adapt the system architecture.

Currently I’m also working on the software architecture of the Flying Machine Arena. In particular I’m in charge of refactoring existing components and designing and developing new software components, which run on standard PCs and on micro-controllers.

A list of my main PhD projects is reported below

  • HyperFlex. HyperFlex is a collection of Eclipse plugins that support the development of robotics software product lines, a family of similar applications that are built reusing a set of software components and share the same reference architecture. The SPL life cycle consists in three main phases: domain analysis, product line development, and product derivation.
    • Domain Analysis: HyperFlex provides a graphical tool for the analysis and the modeling of the variability in terms of Feature Models.
    • Product line Development: HyperFlex provides a set of graphical tools, which allow the design of software product line reference architectures (aka the Template System Model) for ROS, Orocos and Rapyuta. Additionally HyperFlex provides a tool for defining variability resolution patterns (aka the Resolution Model).
    • Product Derivation HyperFlex provides a tool for selecting the desired functionalities of an application and automatically generating its architectural model (aka the Configured System Model).
  • JOrocos. JOrocos provides the possibility of developing heterogeneous systems designed with one of the most spread component-based robotics software framework (Orocos) and the Service Component Architecture (SCA). SCA facilitate the access to the World Wide Web by means of the web services, which allows the access to information that is useful for the robot, for example maps of environments, 3D models of furnitures or images of objects commonly available at home. JOrocos is an open source Java library based on CORBA, which is discussed in the paper “Service Component Architecture in Robotics: the SCA-Orocos integration”. This work has been supported by a performance comparison study between Java and C++, which aimed to sustain the use of Java for non real-time robotics functionalities. The results have been reported in the paper “A Java vs. C++ performance evaluation: a 3D modeling benchmark”.