Propostas para Dissertação

Mestrados no Departamento de Informática

Consultar ficha completa de uma proposta de dissertação

proponente: Alcino Cunha e Nuno Macedo
instituição/empresa: Universidade do Minho
tema/título: Design Patterns for Supporting for Robotic Software Development
área científica: Software Engineering
local: Braga
curso de mestrado: Mestrado Integrado em Engenharia Informática
Developing robust robotic systems is a burdensome and error-prone task, since several complex and
heterogeneous subsystems must be integrated into a configurable and adaptable system. The Robot
Operating System (ROS, is a popular open-source framework for building and
deploying robotic applications, whose large community has contributed many valuable packages
ranging from proof-of-concept implementations to industrial-level drivers and capabilities.
Roughly, the architecture of a ROS-based robot consists on a set of independent nodes communicating
messages through topics in a publisher-subscriber paradigm. ROS is extremely flexible, providing primitives to abstract hardware and communication details, but
otherwise allowing the developers to encode behavior in general-purpose languages (usually C++ or
Python). Nonetheless, the overall structure of ROS nodes usually follows one of several
well-established patterns, meaning that such design patterns can be extracted and reused to solve
common problems in different applications. The usage design patterns is known to promote
productivity and help avoiding issues in later development stages by relying on proven solutions.
It also promotes code readability and maintainability, and renders the code more prone to being
analyzed by advanced static analysis techniques, crucial for the safety certification of robotic
systems. The goal of this thesis is to identify and explore common ROS design patterns, and provide support
for such patterns (e.g., conformance testing, skeleton generation or code refactoring) in the
development environments adopted by the ROS community (e.g., the Eclipse IDE or the QT Creator