Skip to content
Pranav Srinivas Kumar edited this page Apr 2, 2016 · 11 revisions

ROSMOD: A Toolsuite for Modeling, Generating, Deploying, and Managing Distributed Real time Component based Software using ROS

Introduction

In the field of Robotics, adoption of Robot Operating System (ROS) http://www.ros.org/about-ros/ has become widely prominent. ROS is a meta-operating system framework that facilitates robotic system development. ROS is widely used in various fields of robotics including industrial robotics, UAV swarms and low-power image processing devices. The open source multi-platform support of ROS has made it a requirement in several DARPA robotics projects including the DARPA Robotics Challenge.

Why ROSMOD?

ROSMOD is an open-source development tool suite and run-time software platform for rapid prototyping of component-based software applications using ROS. Using ROSMOD, an application developer can create, deploy and manage ROS applications for distributed real-time embedded systems. We define a strict component model, and present a model-driven development workflow with run-time management tools to build and deploy component-based software with ROS.

Software development using ROSMOD is influenced by the principles of Model Integrated Computing and Component-based Software Engineering. Large and complex systems can be built by assembling reusable software pieces called components. These components are specified by well defined execution semantics and interaction patterns. With this model of a component's behavior, more complex software can be created as the composition of multiple components and a mapping between the input/output ports of the components. ROSMOD components contain executable code that implement functions, manipulate state variables and interact with other components in applications. This model is inspired by our previous efforts with the F6COM Component Model.

Here, ROSMOD is focused on improving the software development workflow for ROS applications. ROS provides a light-weight middleware framework for a variety of interactions between processes via a communications broker. However, the development of ROS applications is neither model-driven nor component-based; ROS processes, called nodes, are assembled together into a package and interact using the supported set of ROS ports. ROS defines certain types of input and output ports that are available with either blocking or non-blocking semantics: publish-subscribe interactions enable non-blocking one-to-many one-way transport of data while client-server interactions enable blocking send/receive one-to-one interactions. In these interactions, the publishers and clients act as the output ports and therefore trigger subscriber and server input ports. In these interactions, input ports trigger operations which can execute arbitrary code. Such nodes can also be triggered by timers for time-triggered operations e.g. periodic camera feeds. It is important to note that ROS imposes no design constraints or principles on the nodes; they can be any process with any number of threads, shared memory, etc. The goals of ROSMOD are to provide a component model with clear execution semantics coupled with design principles for multi-threaded distributed code, and a model-driven development tool suite for rapid prototyping of ROS applications, while receiving the numerous benefits of component-based software engineering.